/* WARNING: This file is generated!
 * Do not edit this file, but edit /cygdrive/d/a/scallywag/doxygen/doxygen-1.18.0-1.x86_64/src/doxygen-1.18.0/src/config.xml instead and run
 * python configgen.py -maph /cygdrive/d/a/scallywag/doxygen/doxygen-1.18.0-1.x86_64/src/doxygen-1.18.0/src/config.xml to regenerate this file!
 */
#ifndef CONFIGVALUES_H
#define CONFIGVALUES_H

#include <string>
#include <unordered_map>
#include "dstring.h"
#include "containers.h"
#include "settings.h"

enum class OUTPUT_LANGUAGE_t
{
  Afrikaans,
  Arabic,
  Armenian,
  Brazilian,
  Bulgarian,
  Catalan,
  Chinese,
  Chinese_Traditional,
  Croatian,
  Czech,
  Danish,
  Dutch,
  English,
  Esperanto,
  Farsi,
  Finnish,
  French,
  German,
  Greek,
  Hindi,
  Hungarian,
  Indonesian,
  Italian,
  Japanese,
  Japanese_en,
  Korean,
  Korean_en,
  Latvian,
  Lithuanian,
  Macedonian,
  Norwegian,
  Persian,
  Polish,
  Portuguese,
  Romanian,
  Russian,
  Serbian,
  Serbian_Cyrillic,
  Slovak,
  Slovene,
  Spanish,
  Swedish,
  Turkish,
  Ukrainian,
  Vietnamese,
};

inline OUTPUT_LANGUAGE_t OUTPUT_LANGUAGE_str2enum(const DString &s)
{
  DString lc = s.lower();
  static const std::unordered_map<std::string,OUTPUT_LANGUAGE_t> map =
  {
    { "afrikaans", OUTPUT_LANGUAGE_t::Afrikaans },
    { "arabic", OUTPUT_LANGUAGE_t::Arabic },
    { "armenian", OUTPUT_LANGUAGE_t::Armenian },
    { "brazilian", OUTPUT_LANGUAGE_t::Brazilian },
    { "bulgarian", OUTPUT_LANGUAGE_t::Bulgarian },
    { "catalan", OUTPUT_LANGUAGE_t::Catalan },
    { "chinese", OUTPUT_LANGUAGE_t::Chinese },
    { "chinese-traditional", OUTPUT_LANGUAGE_t::Chinese_Traditional },
    { "croatian", OUTPUT_LANGUAGE_t::Croatian },
    { "czech", OUTPUT_LANGUAGE_t::Czech },
    { "danish", OUTPUT_LANGUAGE_t::Danish },
    { "dutch", OUTPUT_LANGUAGE_t::Dutch },
    { "english", OUTPUT_LANGUAGE_t::English },
    { "esperanto", OUTPUT_LANGUAGE_t::Esperanto },
    { "farsi", OUTPUT_LANGUAGE_t::Farsi },
    { "finnish", OUTPUT_LANGUAGE_t::Finnish },
    { "french", OUTPUT_LANGUAGE_t::French },
    { "german", OUTPUT_LANGUAGE_t::German },
    { "greek", OUTPUT_LANGUAGE_t::Greek },
    { "hindi", OUTPUT_LANGUAGE_t::Hindi },
    { "hungarian", OUTPUT_LANGUAGE_t::Hungarian },
    { "indonesian", OUTPUT_LANGUAGE_t::Indonesian },
    { "italian", OUTPUT_LANGUAGE_t::Italian },
    { "japanese", OUTPUT_LANGUAGE_t::Japanese },
    { "japanese-en", OUTPUT_LANGUAGE_t::Japanese_en },
    { "korean", OUTPUT_LANGUAGE_t::Korean },
    { "korean-en", OUTPUT_LANGUAGE_t::Korean_en },
    { "latvian", OUTPUT_LANGUAGE_t::Latvian },
    { "lithuanian", OUTPUT_LANGUAGE_t::Lithuanian },
    { "macedonian", OUTPUT_LANGUAGE_t::Macedonian },
    { "norwegian", OUTPUT_LANGUAGE_t::Norwegian },
    { "persian", OUTPUT_LANGUAGE_t::Persian },
    { "polish", OUTPUT_LANGUAGE_t::Polish },
    { "portuguese", OUTPUT_LANGUAGE_t::Portuguese },
    { "romanian", OUTPUT_LANGUAGE_t::Romanian },
    { "russian", OUTPUT_LANGUAGE_t::Russian },
    { "serbian", OUTPUT_LANGUAGE_t::Serbian },
    { "serbian-cyrillic", OUTPUT_LANGUAGE_t::Serbian_Cyrillic },
    { "slovak", OUTPUT_LANGUAGE_t::Slovak },
    { "slovene", OUTPUT_LANGUAGE_t::Slovene },
    { "spanish", OUTPUT_LANGUAGE_t::Spanish },
    { "swedish", OUTPUT_LANGUAGE_t::Swedish },
    { "turkish", OUTPUT_LANGUAGE_t::Turkish },
    { "ukrainian", OUTPUT_LANGUAGE_t::Ukrainian },
    { "vietnamese", OUTPUT_LANGUAGE_t::Vietnamese },
  };
  auto it = map.find(lc.str());
  return it!=map.end() ? it->second : OUTPUT_LANGUAGE_t::English;
}

inline DString OUTPUT_LANGUAGE_enum2str(OUTPUT_LANGUAGE_t v)
{
  switch(v)
  {
    case OUTPUT_LANGUAGE_t::Afrikaans: return "Afrikaans";
    case OUTPUT_LANGUAGE_t::Arabic: return "Arabic";
    case OUTPUT_LANGUAGE_t::Armenian: return "Armenian";
    case OUTPUT_LANGUAGE_t::Brazilian: return "Brazilian";
    case OUTPUT_LANGUAGE_t::Bulgarian: return "Bulgarian";
    case OUTPUT_LANGUAGE_t::Catalan: return "Catalan";
    case OUTPUT_LANGUAGE_t::Chinese: return "Chinese";
    case OUTPUT_LANGUAGE_t::Chinese_Traditional: return "Chinese-Traditional";
    case OUTPUT_LANGUAGE_t::Croatian: return "Croatian";
    case OUTPUT_LANGUAGE_t::Czech: return "Czech";
    case OUTPUT_LANGUAGE_t::Danish: return "Danish";
    case OUTPUT_LANGUAGE_t::Dutch: return "Dutch";
    case OUTPUT_LANGUAGE_t::English: return "English";
    case OUTPUT_LANGUAGE_t::Esperanto: return "Esperanto";
    case OUTPUT_LANGUAGE_t::Farsi: return "Farsi";
    case OUTPUT_LANGUAGE_t::Finnish: return "Finnish";
    case OUTPUT_LANGUAGE_t::French: return "French";
    case OUTPUT_LANGUAGE_t::German: return "German";
    case OUTPUT_LANGUAGE_t::Greek: return "Greek";
    case OUTPUT_LANGUAGE_t::Hindi: return "Hindi";
    case OUTPUT_LANGUAGE_t::Hungarian: return "Hungarian";
    case OUTPUT_LANGUAGE_t::Indonesian: return "Indonesian";
    case OUTPUT_LANGUAGE_t::Italian: return "Italian";
    case OUTPUT_LANGUAGE_t::Japanese: return "Japanese";
    case OUTPUT_LANGUAGE_t::Japanese_en: return "Japanese-en";
    case OUTPUT_LANGUAGE_t::Korean: return "Korean";
    case OUTPUT_LANGUAGE_t::Korean_en: return "Korean-en";
    case OUTPUT_LANGUAGE_t::Latvian: return "Latvian";
    case OUTPUT_LANGUAGE_t::Lithuanian: return "Lithuanian";
    case OUTPUT_LANGUAGE_t::Macedonian: return "Macedonian";
    case OUTPUT_LANGUAGE_t::Norwegian: return "Norwegian";
    case OUTPUT_LANGUAGE_t::Persian: return "Persian";
    case OUTPUT_LANGUAGE_t::Polish: return "Polish";
    case OUTPUT_LANGUAGE_t::Portuguese: return "Portuguese";
    case OUTPUT_LANGUAGE_t::Romanian: return "Romanian";
    case OUTPUT_LANGUAGE_t::Russian: return "Russian";
    case OUTPUT_LANGUAGE_t::Serbian: return "Serbian";
    case OUTPUT_LANGUAGE_t::Serbian_Cyrillic: return "Serbian-Cyrillic";
    case OUTPUT_LANGUAGE_t::Slovak: return "Slovak";
    case OUTPUT_LANGUAGE_t::Slovene: return "Slovene";
    case OUTPUT_LANGUAGE_t::Spanish: return "Spanish";
    case OUTPUT_LANGUAGE_t::Swedish: return "Swedish";
    case OUTPUT_LANGUAGE_t::Turkish: return "Turkish";
    case OUTPUT_LANGUAGE_t::Ukrainian: return "Ukrainian";
    case OUTPUT_LANGUAGE_t::Vietnamese: return "Vietnamese";
  }
  return "English";
}

enum class MARKDOWN_ID_STYLE_t
{
  DOXYGEN,
  GITHUB,
};

inline MARKDOWN_ID_STYLE_t MARKDOWN_ID_STYLE_str2enum(const DString &s)
{
  DString lc = s.lower();
  static const std::unordered_map<std::string,MARKDOWN_ID_STYLE_t> map =
  {
    { "doxygen", MARKDOWN_ID_STYLE_t::DOXYGEN },
    { "github", MARKDOWN_ID_STYLE_t::GITHUB },
  };
  auto it = map.find(lc.str());
  return it!=map.end() ? it->second : MARKDOWN_ID_STYLE_t::DOXYGEN;
}

inline DString MARKDOWN_ID_STYLE_enum2str(MARKDOWN_ID_STYLE_t v)
{
  switch(v)
  {
    case MARKDOWN_ID_STYLE_t::DOXYGEN: return "DOXYGEN";
    case MARKDOWN_ID_STYLE_t::GITHUB: return "GITHUB";
  }
  return "DOXYGEN";
}

enum class TIMESTAMP_t
{
  YES,
  NO,
  DATETIME,
  DATE,
};

inline TIMESTAMP_t TIMESTAMP_str2enum(const DString &s)
{
  DString lc = s.lower();
  static const std::unordered_map<std::string,TIMESTAMP_t> map =
  {
    { "yes", TIMESTAMP_t::YES },
    { "no", TIMESTAMP_t::NO },
    { "datetime", TIMESTAMP_t::DATETIME },
    { "date", TIMESTAMP_t::DATE },
  };
  auto it = map.find(lc.str());
  return it!=map.end() ? it->second : TIMESTAMP_t::NO;
}

inline DString TIMESTAMP_enum2str(TIMESTAMP_t v)
{
  switch(v)
  {
    case TIMESTAMP_t::YES: return "YES";
    case TIMESTAMP_t::NO: return "NO";
    case TIMESTAMP_t::DATETIME: return "DATETIME";
    case TIMESTAMP_t::DATE: return "DATE";
  }
  return "NO";
}

enum class CASE_SENSE_NAMES_t
{
  SYSTEM,
  NO,
  YES,
};

inline CASE_SENSE_NAMES_t CASE_SENSE_NAMES_str2enum(const DString &s)
{
  DString lc = s.lower();
  static const std::unordered_map<std::string,CASE_SENSE_NAMES_t> map =
  {
    { "system", CASE_SENSE_NAMES_t::SYSTEM },
    { "no", CASE_SENSE_NAMES_t::NO },
    { "yes", CASE_SENSE_NAMES_t::YES },
  };
  auto it = map.find(lc.str());
  return it!=map.end() ? it->second : CASE_SENSE_NAMES_t::SYSTEM;
}

inline DString CASE_SENSE_NAMES_enum2str(CASE_SENSE_NAMES_t v)
{
  switch(v)
  {
    case CASE_SENSE_NAMES_t::SYSTEM: return "SYSTEM";
    case CASE_SENSE_NAMES_t::NO: return "NO";
    case CASE_SENSE_NAMES_t::YES: return "YES";
  }
  return "SYSTEM";
}

enum class REQ_TRACEABILITY_INFO_t
{
  YES,
  NO,
  UNSATISFIED_ONLY,
  UNVERIFIED_ONLY,
};

inline REQ_TRACEABILITY_INFO_t REQ_TRACEABILITY_INFO_str2enum(const DString &s)
{
  DString lc = s.lower();
  static const std::unordered_map<std::string,REQ_TRACEABILITY_INFO_t> map =
  {
    { "yes", REQ_TRACEABILITY_INFO_t::YES },
    { "no", REQ_TRACEABILITY_INFO_t::NO },
    { "unsatisfied_only", REQ_TRACEABILITY_INFO_t::UNSATISFIED_ONLY },
    { "unverified_only", REQ_TRACEABILITY_INFO_t::UNVERIFIED_ONLY },
  };
  auto it = map.find(lc.str());
  return it!=map.end() ? it->second : REQ_TRACEABILITY_INFO_t::YES;
}

inline DString REQ_TRACEABILITY_INFO_enum2str(REQ_TRACEABILITY_INFO_t v)
{
  switch(v)
  {
    case REQ_TRACEABILITY_INFO_t::YES: return "YES";
    case REQ_TRACEABILITY_INFO_t::NO: return "NO";
    case REQ_TRACEABILITY_INFO_t::UNSATISFIED_ONLY: return "UNSATISFIED_ONLY";
    case REQ_TRACEABILITY_INFO_t::UNVERIFIED_ONLY: return "UNVERIFIED_ONLY";
  }
  return "YES";
}

enum class WARN_AS_ERROR_t
{
  NO,
  YES,
  FAIL_ON_WARNINGS,
  FAIL_ON_WARNINGS_PRINT,
};

inline WARN_AS_ERROR_t WARN_AS_ERROR_str2enum(const DString &s)
{
  DString lc = s.lower();
  static const std::unordered_map<std::string,WARN_AS_ERROR_t> map =
  {
    { "no", WARN_AS_ERROR_t::NO },
    { "yes", WARN_AS_ERROR_t::YES },
    { "fail_on_warnings", WARN_AS_ERROR_t::FAIL_ON_WARNINGS },
    { "fail_on_warnings_print", WARN_AS_ERROR_t::FAIL_ON_WARNINGS_PRINT },
  };
  auto it = map.find(lc.str());
  return it!=map.end() ? it->second : WARN_AS_ERROR_t::NO;
}

inline DString WARN_AS_ERROR_enum2str(WARN_AS_ERROR_t v)
{
  switch(v)
  {
    case WARN_AS_ERROR_t::NO: return "NO";
    case WARN_AS_ERROR_t::YES: return "YES";
    case WARN_AS_ERROR_t::FAIL_ON_WARNINGS: return "FAIL_ON_WARNINGS";
    case WARN_AS_ERROR_t::FAIL_ON_WARNINGS_PRINT: return "FAIL_ON_WARNINGS_PRINT";
  }
  return "NO";
}

enum class HTML_COLORSTYLE_t
{
  LIGHT,
  DARK,
  AUTO_LIGHT,
  AUTO_DARK,
  TOGGLE,
};

inline HTML_COLORSTYLE_t HTML_COLORSTYLE_str2enum(const DString &s)
{
  DString lc = s.lower();
  static const std::unordered_map<std::string,HTML_COLORSTYLE_t> map =
  {
    { "light", HTML_COLORSTYLE_t::LIGHT },
    { "dark", HTML_COLORSTYLE_t::DARK },
    { "auto_light", HTML_COLORSTYLE_t::AUTO_LIGHT },
    { "auto_dark", HTML_COLORSTYLE_t::AUTO_DARK },
    { "toggle", HTML_COLORSTYLE_t::TOGGLE },
  };
  auto it = map.find(lc.str());
  return it!=map.end() ? it->second : HTML_COLORSTYLE_t::AUTO_LIGHT;
}

inline DString HTML_COLORSTYLE_enum2str(HTML_COLORSTYLE_t v)
{
  switch(v)
  {
    case HTML_COLORSTYLE_t::LIGHT: return "LIGHT";
    case HTML_COLORSTYLE_t::DARK: return "DARK";
    case HTML_COLORSTYLE_t::AUTO_LIGHT: return "AUTO_LIGHT";
    case HTML_COLORSTYLE_t::AUTO_DARK: return "AUTO_DARK";
    case HTML_COLORSTYLE_t::TOGGLE: return "TOGGLE";
  }
  return "AUTO_LIGHT";
}

enum class HTML_FORMULA_FORMAT_t
{
  png,
  svg,
};

inline HTML_FORMULA_FORMAT_t HTML_FORMULA_FORMAT_str2enum(const DString &s)
{
  DString lc = s.lower();
  static const std::unordered_map<std::string,HTML_FORMULA_FORMAT_t> map =
  {
    { "png", HTML_FORMULA_FORMAT_t::png },
    { "svg", HTML_FORMULA_FORMAT_t::svg },
  };
  auto it = map.find(lc.str());
  return it!=map.end() ? it->second : HTML_FORMULA_FORMAT_t::png;
}

inline DString HTML_FORMULA_FORMAT_enum2str(HTML_FORMULA_FORMAT_t v)
{
  switch(v)
  {
    case HTML_FORMULA_FORMAT_t::png: return "png";
    case HTML_FORMULA_FORMAT_t::svg: return "svg";
  }
  return "png";
}

enum class MATHJAX_VERSION_t
{
  MathJax_2,
  MathJax_3,
  MathJax_4,
};

inline MATHJAX_VERSION_t MATHJAX_VERSION_str2enum(const DString &s)
{
  DString lc = s.lower();
  static const std::unordered_map<std::string,MATHJAX_VERSION_t> map =
  {
    { "mathjax_2", MATHJAX_VERSION_t::MathJax_2 },
    { "mathjax_3", MATHJAX_VERSION_t::MathJax_3 },
    { "mathjax_4", MATHJAX_VERSION_t::MathJax_4 },
  };
  auto it = map.find(lc.str());
  return it!=map.end() ? it->second : MATHJAX_VERSION_t::MathJax_2;
}

inline DString MATHJAX_VERSION_enum2str(MATHJAX_VERSION_t v)
{
  switch(v)
  {
    case MATHJAX_VERSION_t::MathJax_2: return "MathJax_2";
    case MATHJAX_VERSION_t::MathJax_3: return "MathJax_3";
    case MATHJAX_VERSION_t::MathJax_4: return "MathJax_4";
  }
  return "MathJax_2";
}

enum class MATHJAX_FORMAT_t
{
  HTML_CSS,
  NativeMML,
  chtml,
  SVG,
};

inline MATHJAX_FORMAT_t MATHJAX_FORMAT_str2enum(const DString &s)
{
  DString lc = s.lower();
  static const std::unordered_map<std::string,MATHJAX_FORMAT_t> map =
  {
    { "html-css", MATHJAX_FORMAT_t::HTML_CSS },
    { "nativemml", MATHJAX_FORMAT_t::NativeMML },
    { "chtml", MATHJAX_FORMAT_t::chtml },
    { "svg", MATHJAX_FORMAT_t::SVG },
  };
  auto it = map.find(lc.str());
  return it!=map.end() ? it->second : MATHJAX_FORMAT_t::HTML_CSS;
}

inline DString MATHJAX_FORMAT_enum2str(MATHJAX_FORMAT_t v)
{
  switch(v)
  {
    case MATHJAX_FORMAT_t::HTML_CSS: return "HTML-CSS";
    case MATHJAX_FORMAT_t::NativeMML: return "NativeMML";
    case MATHJAX_FORMAT_t::chtml: return "chtml";
    case MATHJAX_FORMAT_t::SVG: return "SVG";
  }
  return "HTML-CSS";
}

enum class PAPER_TYPE_t
{
  a4,
  letter,
  legal,
  executive,
};

inline PAPER_TYPE_t PAPER_TYPE_str2enum(const DString &s)
{
  DString lc = s.lower();
  static const std::unordered_map<std::string,PAPER_TYPE_t> map =
  {
    { "a4", PAPER_TYPE_t::a4 },
    { "letter", PAPER_TYPE_t::letter },
    { "legal", PAPER_TYPE_t::legal },
    { "executive", PAPER_TYPE_t::executive },
  };
  auto it = map.find(lc.str());
  return it!=map.end() ? it->second : PAPER_TYPE_t::a4;
}

inline DString PAPER_TYPE_enum2str(PAPER_TYPE_t v)
{
  switch(v)
  {
    case PAPER_TYPE_t::a4: return "a4";
    case PAPER_TYPE_t::letter: return "letter";
    case PAPER_TYPE_t::legal: return "legal";
    case PAPER_TYPE_t::executive: return "executive";
  }
  return "a4";
}

enum class LATEX_BATCHMODE_t
{
  NO,
  YES,
  BATCH,
  NON_STOP,
  SCROLL,
  ERROR_STOP,
};

inline LATEX_BATCHMODE_t LATEX_BATCHMODE_str2enum(const DString &s)
{
  DString lc = s.lower();
  static const std::unordered_map<std::string,LATEX_BATCHMODE_t> map =
  {
    { "no", LATEX_BATCHMODE_t::NO },
    { "yes", LATEX_BATCHMODE_t::YES },
    { "batch", LATEX_BATCHMODE_t::BATCH },
    { "non_stop", LATEX_BATCHMODE_t::NON_STOP },
    { "scroll", LATEX_BATCHMODE_t::SCROLL },
    { "error_stop", LATEX_BATCHMODE_t::ERROR_STOP },
  };
  auto it = map.find(lc.str());
  return it!=map.end() ? it->second : LATEX_BATCHMODE_t::NO;
}

inline DString LATEX_BATCHMODE_enum2str(LATEX_BATCHMODE_t v)
{
  switch(v)
  {
    case LATEX_BATCHMODE_t::NO: return "NO";
    case LATEX_BATCHMODE_t::YES: return "YES";
    case LATEX_BATCHMODE_t::BATCH: return "BATCH";
    case LATEX_BATCHMODE_t::NON_STOP: return "NON_STOP";
    case LATEX_BATCHMODE_t::SCROLL: return "SCROLL";
    case LATEX_BATCHMODE_t::ERROR_STOP: return "ERROR_STOP";
  }
  return "NO";
}

enum class CLASS_GRAPH_t
{
  NO,
  YES,
  TEXT,
  GRAPH,
  BUILTIN,
};

inline CLASS_GRAPH_t CLASS_GRAPH_str2enum(const DString &s)
{
  DString lc = s.lower();
  static const std::unordered_map<std::string,CLASS_GRAPH_t> map =
  {
    { "no", CLASS_GRAPH_t::NO },
    { "yes", CLASS_GRAPH_t::YES },
    { "text", CLASS_GRAPH_t::TEXT },
    { "graph", CLASS_GRAPH_t::GRAPH },
    { "builtin", CLASS_GRAPH_t::BUILTIN },
  };
  auto it = map.find(lc.str());
  return it!=map.end() ? it->second : CLASS_GRAPH_t::YES;
}

inline DString CLASS_GRAPH_enum2str(CLASS_GRAPH_t v)
{
  switch(v)
  {
    case CLASS_GRAPH_t::NO: return "NO";
    case CLASS_GRAPH_t::YES: return "YES";
    case CLASS_GRAPH_t::TEXT: return "TEXT";
    case CLASS_GRAPH_t::GRAPH: return "GRAPH";
    case CLASS_GRAPH_t::BUILTIN: return "BUILTIN";
  }
  return "YES";
}

enum class DOT_UML_DETAILS_t
{
  NO,
  YES,
  NONE,
};

inline DOT_UML_DETAILS_t DOT_UML_DETAILS_str2enum(const DString &s)
{
  DString lc = s.lower();
  static const std::unordered_map<std::string,DOT_UML_DETAILS_t> map =
  {
    { "no", DOT_UML_DETAILS_t::NO },
    { "yes", DOT_UML_DETAILS_t::YES },
    { "none", DOT_UML_DETAILS_t::NONE },
  };
  auto it = map.find(lc.str());
  return it!=map.end() ? it->second : DOT_UML_DETAILS_t::NO;
}

inline DString DOT_UML_DETAILS_enum2str(DOT_UML_DETAILS_t v)
{
  switch(v)
  {
    case DOT_UML_DETAILS_t::NO: return "NO";
    case DOT_UML_DETAILS_t::YES: return "YES";
    case DOT_UML_DETAILS_t::NONE: return "NONE";
  }
  return "NO";
}

enum class DOT_IMAGE_FORMAT_t
{
  png,
  jpg,
  gif,
  svg,
  png_gd,
  png_gd_gd,
  png_cairo,
  png_cairo_gd,
  png_cairo_cairo,
  png_cairo_gdiplus,
  png_gdiplus,
  png_gdiplus_gdiplus,
  svg_cairo,
  svg_cairo_cairo,
  svg_svg,
  svg_svg_core,
  gif_cairo,
  gif_cairo_gd,
  gif_cairo_gdiplus,
  gif_gdiplus,
  gif_gdiplus_gdiplus,
  gif_gd,
  gif_gd_gd,
  jpg_cairo,
  jpg_cairo_gd,
  jpg_cairo_gdiplus,
  jpg_gd,
  jpg_gd_gd,
  jpg_gdiplus,
  jpg_gdiplus_gdiplus,
};

inline DOT_IMAGE_FORMAT_t DOT_IMAGE_FORMAT_str2enum(const DString &s)
{
  DString lc = s.lower();
  static const std::unordered_map<std::string,DOT_IMAGE_FORMAT_t> map =
  {
    { "png", DOT_IMAGE_FORMAT_t::png },
    { "jpg", DOT_IMAGE_FORMAT_t::jpg },
    { "gif", DOT_IMAGE_FORMAT_t::gif },
    { "svg", DOT_IMAGE_FORMAT_t::svg },
    { "png:gd", DOT_IMAGE_FORMAT_t::png_gd },
    { "png:gd:gd", DOT_IMAGE_FORMAT_t::png_gd_gd },
    { "png:cairo", DOT_IMAGE_FORMAT_t::png_cairo },
    { "png:cairo:gd", DOT_IMAGE_FORMAT_t::png_cairo_gd },
    { "png:cairo:cairo", DOT_IMAGE_FORMAT_t::png_cairo_cairo },
    { "png:cairo:gdiplus", DOT_IMAGE_FORMAT_t::png_cairo_gdiplus },
    { "png:gdiplus", DOT_IMAGE_FORMAT_t::png_gdiplus },
    { "png:gdiplus:gdiplus", DOT_IMAGE_FORMAT_t::png_gdiplus_gdiplus },
    { "svg:cairo", DOT_IMAGE_FORMAT_t::svg_cairo },
    { "svg:cairo:cairo", DOT_IMAGE_FORMAT_t::svg_cairo_cairo },
    { "svg:svg", DOT_IMAGE_FORMAT_t::svg_svg },
    { "svg:svg:core", DOT_IMAGE_FORMAT_t::svg_svg_core },
    { "gif:cairo", DOT_IMAGE_FORMAT_t::gif_cairo },
    { "gif:cairo:gd", DOT_IMAGE_FORMAT_t::gif_cairo_gd },
    { "gif:cairo:gdiplus", DOT_IMAGE_FORMAT_t::gif_cairo_gdiplus },
    { "gif:gdiplus", DOT_IMAGE_FORMAT_t::gif_gdiplus },
    { "gif:gdiplus:gdiplus", DOT_IMAGE_FORMAT_t::gif_gdiplus_gdiplus },
    { "gif:gd", DOT_IMAGE_FORMAT_t::gif_gd },
    { "gif:gd:gd", DOT_IMAGE_FORMAT_t::gif_gd_gd },
    { "jpg:cairo", DOT_IMAGE_FORMAT_t::jpg_cairo },
    { "jpg:cairo:gd", DOT_IMAGE_FORMAT_t::jpg_cairo_gd },
    { "jpg:cairo:gdiplus", DOT_IMAGE_FORMAT_t::jpg_cairo_gdiplus },
    { "jpg:gd", DOT_IMAGE_FORMAT_t::jpg_gd },
    { "jpg:gd:gd", DOT_IMAGE_FORMAT_t::jpg_gd_gd },
    { "jpg:gdiplus", DOT_IMAGE_FORMAT_t::jpg_gdiplus },
    { "jpg:gdiplus:gdiplus", DOT_IMAGE_FORMAT_t::jpg_gdiplus_gdiplus },
  };
  auto it = map.find(lc.str());
  return it!=map.end() ? it->second : DOT_IMAGE_FORMAT_t::png;
}

inline DString DOT_IMAGE_FORMAT_enum2str(DOT_IMAGE_FORMAT_t v)
{
  switch(v)
  {
    case DOT_IMAGE_FORMAT_t::png: return "png";
    case DOT_IMAGE_FORMAT_t::jpg: return "jpg";
    case DOT_IMAGE_FORMAT_t::gif: return "gif";
    case DOT_IMAGE_FORMAT_t::svg: return "svg";
    case DOT_IMAGE_FORMAT_t::png_gd: return "png:gd";
    case DOT_IMAGE_FORMAT_t::png_gd_gd: return "png:gd:gd";
    case DOT_IMAGE_FORMAT_t::png_cairo: return "png:cairo";
    case DOT_IMAGE_FORMAT_t::png_cairo_gd: return "png:cairo:gd";
    case DOT_IMAGE_FORMAT_t::png_cairo_cairo: return "png:cairo:cairo";
    case DOT_IMAGE_FORMAT_t::png_cairo_gdiplus: return "png:cairo:gdiplus";
    case DOT_IMAGE_FORMAT_t::png_gdiplus: return "png:gdiplus";
    case DOT_IMAGE_FORMAT_t::png_gdiplus_gdiplus: return "png:gdiplus:gdiplus";
    case DOT_IMAGE_FORMAT_t::svg_cairo: return "svg:cairo";
    case DOT_IMAGE_FORMAT_t::svg_cairo_cairo: return "svg:cairo:cairo";
    case DOT_IMAGE_FORMAT_t::svg_svg: return "svg:svg";
    case DOT_IMAGE_FORMAT_t::svg_svg_core: return "svg:svg:core";
    case DOT_IMAGE_FORMAT_t::gif_cairo: return "gif:cairo";
    case DOT_IMAGE_FORMAT_t::gif_cairo_gd: return "gif:cairo:gd";
    case DOT_IMAGE_FORMAT_t::gif_cairo_gdiplus: return "gif:cairo:gdiplus";
    case DOT_IMAGE_FORMAT_t::gif_gdiplus: return "gif:gdiplus";
    case DOT_IMAGE_FORMAT_t::gif_gdiplus_gdiplus: return "gif:gdiplus:gdiplus";
    case DOT_IMAGE_FORMAT_t::gif_gd: return "gif:gd";
    case DOT_IMAGE_FORMAT_t::gif_gd_gd: return "gif:gd:gd";
    case DOT_IMAGE_FORMAT_t::jpg_cairo: return "jpg:cairo";
    case DOT_IMAGE_FORMAT_t::jpg_cairo_gd: return "jpg:cairo:gd";
    case DOT_IMAGE_FORMAT_t::jpg_cairo_gdiplus: return "jpg:cairo:gdiplus";
    case DOT_IMAGE_FORMAT_t::jpg_gd: return "jpg:gd";
    case DOT_IMAGE_FORMAT_t::jpg_gd_gd: return "jpg:gd:gd";
    case DOT_IMAGE_FORMAT_t::jpg_gdiplus: return "jpg:gdiplus";
    case DOT_IMAGE_FORMAT_t::jpg_gdiplus_gdiplus: return "jpg:gdiplus:gdiplus";
  }
  return "png";
}

enum class MERMAID_RENDER_MODE_t
{
  AUTO,
  CLI,
  CLIENT_SIDE,
};

inline MERMAID_RENDER_MODE_t MERMAID_RENDER_MODE_str2enum(const DString &s)
{
  DString lc = s.lower();
  static const std::unordered_map<std::string,MERMAID_RENDER_MODE_t> map =
  {
    { "auto", MERMAID_RENDER_MODE_t::AUTO },
    { "cli", MERMAID_RENDER_MODE_t::CLI },
    { "client_side", MERMAID_RENDER_MODE_t::CLIENT_SIDE },
  };
  auto it = map.find(lc.str());
  return it!=map.end() ? it->second : MERMAID_RENDER_MODE_t::AUTO;
}

inline DString MERMAID_RENDER_MODE_enum2str(MERMAID_RENDER_MODE_t v)
{
  switch(v)
  {
    case MERMAID_RENDER_MODE_t::AUTO: return "AUTO";
    case MERMAID_RENDER_MODE_t::CLI: return "CLI";
    case MERMAID_RENDER_MODE_t::CLIENT_SIDE: return "CLIENT_SIDE";
  }
  return "AUTO";
}

class ConfigValues
{
  public:
    static ConfigValues &instance() { static ConfigValues theInstance; return theInstance; }
    DString                DOXYFILE_ENCODING()            const                  { return m_DOXYFILE_ENCODING; }
    DString                PROJECT_NAME()                 const                  { return m_PROJECT_NAME; }
    DString                PROJECT_NUMBER()               const                  { return m_PROJECT_NUMBER; }
    DString                PROJECT_BRIEF()                const                  { return m_PROJECT_BRIEF; }
    DString                PROJECT_LOGO()                 const                  { return m_PROJECT_LOGO; }
    DString                PROJECT_ICON()                 const                  { return m_PROJECT_ICON; }
    DString                OUTPUT_DIRECTORY()             const                  { return m_OUTPUT_DIRECTORY; }
    bool                   CREATE_SUBDIRS()               const                  { return m_CREATE_SUBDIRS; }
    int                    CREATE_SUBDIRS_LEVEL()         const                  { return m_CREATE_SUBDIRS_LEVEL; }
    bool                   ALLOW_UNICODE_NAMES()          const                  { return m_ALLOW_UNICODE_NAMES; }
    OUTPUT_LANGUAGE_t      OUTPUT_LANGUAGE()              const                  { return OUTPUT_LANGUAGE_str2enum(m_OUTPUT_LANGUAGE); }
    DString                OUTPUT_LANGUAGE_str()          const                  { return m_OUTPUT_LANGUAGE; }
    bool                   BRIEF_MEMBER_DESC()            const                  { return m_BRIEF_MEMBER_DESC; }
    bool                   REPEAT_BRIEF()                 const                  { return m_REPEAT_BRIEF; }
    StringVector           ABBREVIATE_BRIEF()             const                  { return m_ABBREVIATE_BRIEF; }
    bool                   ALWAYS_DETAILED_SEC()          const                  { return m_ALWAYS_DETAILED_SEC; }
    bool                   INLINE_INHERITED_MEMB()        const                  { return m_INLINE_INHERITED_MEMB; }
    bool                   FULL_PATH_NAMES()              const                  { return m_FULL_PATH_NAMES; }
    StringVector           STRIP_FROM_PATH()              const                  { return m_STRIP_FROM_PATH; }
    StringVector           STRIP_FROM_INC_PATH()          const                  { return m_STRIP_FROM_INC_PATH; }
    bool                   SHORT_NAMES()                  const                  { return m_SHORT_NAMES; }
    bool                   JAVADOC_AUTOBRIEF()            const                  { return m_JAVADOC_AUTOBRIEF; }
    bool                   JAVADOC_BANNER()               const                  { return m_JAVADOC_BANNER; }
    bool                   QT_AUTOBRIEF()                 const                  { return m_QT_AUTOBRIEF; }
    bool                   MULTILINE_CPP_IS_BRIEF()       const                  { return m_MULTILINE_CPP_IS_BRIEF; }
    bool                   PYTHON_DOCSTRING()             const                  { return m_PYTHON_DOCSTRING; }
    bool                   INHERIT_DOCS()                 const                  { return m_INHERIT_DOCS; }
    bool                   SEPARATE_MEMBER_PAGES()        const                  { return m_SEPARATE_MEMBER_PAGES; }
    int                    TAB_SIZE()                     const                  { return m_TAB_SIZE; }
    StringVector           ALIASES()                      const                  { return m_ALIASES; }
    bool                   OPTIMIZE_OUTPUT_FOR_C()        const                  { return m_OPTIMIZE_OUTPUT_FOR_C; }
    bool                   OPTIMIZE_OUTPUT_JAVA()         const                  { return m_OPTIMIZE_OUTPUT_JAVA; }
    bool                   OPTIMIZE_FOR_FORTRAN()         const                  { return m_OPTIMIZE_FOR_FORTRAN; }
    bool                   OPTIMIZE_OUTPUT_VHDL()         const                  { return m_OPTIMIZE_OUTPUT_VHDL; }
    bool                   OPTIMIZE_OUTPUT_SLICE()        const                  { return m_OPTIMIZE_OUTPUT_SLICE; }
    StringVector           EXTENSION_MAPPING()            const                  { return m_EXTENSION_MAPPING; }
    bool                   MARKDOWN_SUPPORT()             const                  { return m_MARKDOWN_SUPPORT; }
    bool                   MARKDOWN_STRICT()              const                  { return m_MARKDOWN_STRICT; }
    int                    TOC_INCLUDE_HEADINGS()         const                  { return m_TOC_INCLUDE_HEADINGS; }
    MARKDOWN_ID_STYLE_t    MARKDOWN_ID_STYLE()            const                  { return MARKDOWN_ID_STYLE_str2enum(m_MARKDOWN_ID_STYLE); }
    DString                MARKDOWN_ID_STYLE_str()        const                  { return m_MARKDOWN_ID_STYLE; }
    bool                   AUTOLINK_SUPPORT()             const                  { return m_AUTOLINK_SUPPORT; }
    StringVector           AUTOLINK_IGNORE_WORDS()        const                  { return m_AUTOLINK_IGNORE_WORDS; }
    bool                   BUILTIN_STL_SUPPORT()          const                  { return m_BUILTIN_STL_SUPPORT; }
    bool                   CPP_CLI_SUPPORT()              const                  { return m_CPP_CLI_SUPPORT; }
    bool                   SIP_SUPPORT()                  const                  { return m_SIP_SUPPORT; }
    bool                   IDL_PROPERTY_SUPPORT()         const                  { return m_IDL_PROPERTY_SUPPORT; }
    bool                   DISTRIBUTE_GROUP_DOC()         const                  { return m_DISTRIBUTE_GROUP_DOC; }
    bool                   GROUP_NESTED_COMPOUNDS()       const                  { return m_GROUP_NESTED_COMPOUNDS; }
    bool                   SUBGROUPING()                  const                  { return m_SUBGROUPING; }
    bool                   INLINE_GROUPED_CLASSES()       const                  { return m_INLINE_GROUPED_CLASSES; }
    bool                   INLINE_SIMPLE_STRUCTS()        const                  { return m_INLINE_SIMPLE_STRUCTS; }
    bool                   TYPEDEF_HIDES_STRUCT()         const                  { return m_TYPEDEF_HIDES_STRUCT; }
    int                    LOOKUP_CACHE_SIZE()            const                  { return m_LOOKUP_CACHE_SIZE; }
    int                    NUM_PROC_THREADS()             const                  { return m_NUM_PROC_THREADS; }
    TIMESTAMP_t            TIMESTAMP()                    const                  { return TIMESTAMP_str2enum(m_TIMESTAMP); }
    DString                TIMESTAMP_str()                const                  { return m_TIMESTAMP; }
    bool                   EXTRACT_ALL()                  const                  { return m_EXTRACT_ALL; }
    bool                   EXTRACT_PRIVATE()              const                  { return m_EXTRACT_PRIVATE; }
    bool                   EXTRACT_PRIV_VIRTUAL()         const                  { return m_EXTRACT_PRIV_VIRTUAL; }
    bool                   EXTRACT_PACKAGE()              const                  { return m_EXTRACT_PACKAGE; }
    bool                   EXTRACT_STATIC()               const                  { return m_EXTRACT_STATIC; }
    bool                   EXTRACT_LOCAL_CLASSES()        const                  { return m_EXTRACT_LOCAL_CLASSES; }
    bool                   EXTRACT_LOCAL_METHODS()        const                  { return m_EXTRACT_LOCAL_METHODS; }
    bool                   EXTRACT_ANON_NSPACES()         const                  { return m_EXTRACT_ANON_NSPACES; }
    bool                   RESOLVE_UNNAMED_PARAMS()       const                  { return m_RESOLVE_UNNAMED_PARAMS; }
    bool                   HIDE_UNDOC_MEMBERS()           const                  { return m_HIDE_UNDOC_MEMBERS; }
    bool                   HIDE_UNDOC_CLASSES()           const                  { return m_HIDE_UNDOC_CLASSES; }
    bool                   HIDE_UNDOC_NAMESPACES()        const                  { return m_HIDE_UNDOC_NAMESPACES; }
    bool                   HIDE_FRIEND_COMPOUNDS()        const                  { return m_HIDE_FRIEND_COMPOUNDS; }
    bool                   HIDE_IN_BODY_DOCS()            const                  { return m_HIDE_IN_BODY_DOCS; }
    bool                   INTERNAL_DOCS()                const                  { return m_INTERNAL_DOCS; }
    CASE_SENSE_NAMES_t     CASE_SENSE_NAMES()             const                  { return CASE_SENSE_NAMES_str2enum(m_CASE_SENSE_NAMES); }
    DString                CASE_SENSE_NAMES_str()         const                  { return m_CASE_SENSE_NAMES; }
    bool                   HIDE_SCOPE_NAMES()             const                  { return m_HIDE_SCOPE_NAMES; }
    bool                   HIDE_COMPOUND_REFERENCE()      const                  { return m_HIDE_COMPOUND_REFERENCE; }
    bool                   SHOW_HEADERFILE()              const                  { return m_SHOW_HEADERFILE; }
    bool                   SHOW_INCLUDE_FILES()           const                  { return m_SHOW_INCLUDE_FILES; }
    bool                   SHOW_GROUPED_MEMB_INC()        const                  { return m_SHOW_GROUPED_MEMB_INC; }
    bool                   FORCE_LOCAL_INCLUDES()         const                  { return m_FORCE_LOCAL_INCLUDES; }
    bool                   INLINE_INFO()                  const                  { return m_INLINE_INFO; }
    bool                   SORT_MEMBER_DOCS()             const                  { return m_SORT_MEMBER_DOCS; }
    bool                   SORT_BRIEF_DOCS()              const                  { return m_SORT_BRIEF_DOCS; }
    bool                   SORT_MEMBERS_CTORS_1ST()       const                  { return m_SORT_MEMBERS_CTORS_1ST; }
    bool                   SORT_GROUP_NAMES()             const                  { return m_SORT_GROUP_NAMES; }
    bool                   SORT_BY_SCOPE_NAME()           const                  { return m_SORT_BY_SCOPE_NAME; }
    bool                   STRICT_PROTO_MATCHING()        const                  { return m_STRICT_PROTO_MATCHING; }
    bool                   GENERATE_TODOLIST()            const                  { return m_GENERATE_TODOLIST; }
    bool                   GENERATE_TESTLIST()            const                  { return m_GENERATE_TESTLIST; }
    bool                   GENERATE_BUGLIST()             const                  { return m_GENERATE_BUGLIST; }
    bool                   GENERATE_DEPRECATEDLIST()      const                  { return m_GENERATE_DEPRECATEDLIST; }
    bool                   GENERATE_REQUIREMENTS()        const                  { return m_GENERATE_REQUIREMENTS; }
    REQ_TRACEABILITY_INFO_t REQ_TRACEABILITY_INFO()        const                  { return REQ_TRACEABILITY_INFO_str2enum(m_REQ_TRACEABILITY_INFO); }
    DString                REQ_TRACEABILITY_INFO_str()    const                  { return m_REQ_TRACEABILITY_INFO; }
    StringVector           ENABLED_SECTIONS()             const                  { return m_ENABLED_SECTIONS; }
    int                    MAX_INITIALIZER_LINES()        const                  { return m_MAX_INITIALIZER_LINES; }
    bool                   SHOW_USED_FILES()              const                  { return m_SHOW_USED_FILES; }
    bool                   SHOW_FILES()                   const                  { return m_SHOW_FILES; }
    bool                   SHOW_NAMESPACES()              const                  { return m_SHOW_NAMESPACES; }
    DString                FILE_VERSION_FILTER()          const                  { return m_FILE_VERSION_FILTER; }
    DString                LAYOUT_FILE()                  const                  { return m_LAYOUT_FILE; }
    StringVector           CITE_BIB_FILES()               const                  { return m_CITE_BIB_FILES; }
    StringVector           EXTERNAL_TOOL_PATH()           const                  { return m_EXTERNAL_TOOL_PATH; }
    bool                   QUIET()                        const                  { return m_QUIET; }
    bool                   WARNINGS()                     const                  { return m_WARNINGS; }
    bool                   WARN_IF_UNDOCUMENTED()         const                  { return m_WARN_IF_UNDOCUMENTED; }
    bool                   WARN_IF_DOC_ERROR()            const                  { return m_WARN_IF_DOC_ERROR; }
    bool                   WARN_IF_INCOMPLETE_DOC()       const                  { return m_WARN_IF_INCOMPLETE_DOC; }
    bool                   WARN_NO_PARAMDOC()             const                  { return m_WARN_NO_PARAMDOC; }
    bool                   WARN_IF_UNDOC_ENUM_VAL()       const                  { return m_WARN_IF_UNDOC_ENUM_VAL; }
    bool                   WARN_LAYOUT_FILE()             const                  { return m_WARN_LAYOUT_FILE; }
    WARN_AS_ERROR_t        WARN_AS_ERROR()                const                  { return WARN_AS_ERROR_str2enum(m_WARN_AS_ERROR); }
    DString                WARN_AS_ERROR_str()            const                  { return m_WARN_AS_ERROR; }
    DString                WARN_FORMAT()                  const                  { return m_WARN_FORMAT; }
    DString                WARN_LINE_FORMAT()             const                  { return m_WARN_LINE_FORMAT; }
    DString                WARN_LOGFILE()                 const                  { return m_WARN_LOGFILE; }
    StringVector           INPUT()                        const                  { return m_INPUT; }
    DString                INPUT_ENCODING()               const                  { return m_INPUT_ENCODING; }
    StringVector           INPUT_FILE_ENCODING()          const                  { return m_INPUT_FILE_ENCODING; }
    StringVector           FILE_PATTERNS()                const                  { return m_FILE_PATTERNS; }
    bool                   RECURSIVE()                    const                  { return m_RECURSIVE; }
    StringVector           EXCLUDE()                      const                  { return m_EXCLUDE; }
    bool                   EXCLUDE_SYMLINKS()             const                  { return m_EXCLUDE_SYMLINKS; }
    StringVector           EXCLUDE_PATTERNS()             const                  { return m_EXCLUDE_PATTERNS; }
    StringVector           EXCLUDE_SYMBOLS()              const                  { return m_EXCLUDE_SYMBOLS; }
    StringVector           EXAMPLE_PATH()                 const                  { return m_EXAMPLE_PATH; }
    StringVector           EXAMPLE_PATTERNS()             const                  { return m_EXAMPLE_PATTERNS; }
    bool                   EXAMPLE_RECURSIVE()            const                  { return m_EXAMPLE_RECURSIVE; }
    StringVector           IMAGE_PATH()                   const                  { return m_IMAGE_PATH; }
    DString                INPUT_FILTER()                 const                  { return m_INPUT_FILTER; }
    StringVector           FILTER_PATTERNS()              const                  { return m_FILTER_PATTERNS; }
    bool                   FILTER_SOURCE_FILES()          const                  { return m_FILTER_SOURCE_FILES; }
    StringVector           FILTER_SOURCE_PATTERNS()       const                  { return m_FILTER_SOURCE_PATTERNS; }
    DString                USE_MDFILE_AS_MAINPAGE()       const                  { return m_USE_MDFILE_AS_MAINPAGE; }
    bool                   IMPLICIT_DIR_DOCS()            const                  { return m_IMPLICIT_DIR_DOCS; }
    int                    FORTRAN_COMMENT_AFTER()        const                  { return m_FORTRAN_COMMENT_AFTER; }
    bool                   SOURCE_BROWSER()               const                  { return m_SOURCE_BROWSER; }
    bool                   INLINE_SOURCES()               const                  { return m_INLINE_SOURCES; }
    bool                   STRIP_CODE_COMMENTS()          const                  { return m_STRIP_CODE_COMMENTS; }
    bool                   REFERENCED_BY_RELATION()       const                  { return m_REFERENCED_BY_RELATION; }
    bool                   REFERENCES_RELATION()          const                  { return m_REFERENCES_RELATION; }
    bool                   REFERENCES_LINK_SOURCE()       const                  { return m_REFERENCES_LINK_SOURCE; }
    bool                   SOURCE_TOOLTIPS()              const                  { return m_SOURCE_TOOLTIPS; }
    bool                   USE_HTAGS()                    const                  { return m_USE_HTAGS; }
    bool                   VERBATIM_HEADERS()             const                  { return m_VERBATIM_HEADERS; }
#if USE_LIBCLANG
    bool                   CLANG_ASSISTED_PARSING()       const                  { return m_CLANG_ASSISTED_PARSING; }
#endif
#if USE_LIBCLANG
    bool                   CLANG_ADD_INC_PATHS()          const                  { return m_CLANG_ADD_INC_PATHS; }
#endif
#if USE_LIBCLANG
    StringVector           CLANG_OPTIONS()                const                  { return m_CLANG_OPTIONS; }
#endif
#if USE_LIBCLANG
    DString                CLANG_DATABASE_PATH()          const                  { return m_CLANG_DATABASE_PATH; }
#endif
    bool                   ALPHABETICAL_INDEX()           const                  { return m_ALPHABETICAL_INDEX; }
    StringVector           IGNORE_PREFIX()                const                  { return m_IGNORE_PREFIX; }
    bool                   GENERATE_HTML()                const                  { return m_GENERATE_HTML; }
    DString                HTML_OUTPUT()                  const                  { return m_HTML_OUTPUT; }
    DString                HTML_FILE_EXTENSION()          const                  { return m_HTML_FILE_EXTENSION; }
    DString                HTML_HEADER()                  const                  { return m_HTML_HEADER; }
    DString                HTML_FOOTER()                  const                  { return m_HTML_FOOTER; }
    DString                HTML_STYLESHEET()              const                  { return m_HTML_STYLESHEET; }
    StringVector           HTML_EXTRA_STYLESHEET()        const                  { return m_HTML_EXTRA_STYLESHEET; }
    StringVector           HTML_EXTRA_FILES()             const                  { return m_HTML_EXTRA_FILES; }
    HTML_COLORSTYLE_t      HTML_COLORSTYLE()              const                  { return HTML_COLORSTYLE_str2enum(m_HTML_COLORSTYLE); }
    DString                HTML_COLORSTYLE_str()          const                  { return m_HTML_COLORSTYLE; }
    int                    HTML_COLORSTYLE_HUE()          const                  { return m_HTML_COLORSTYLE_HUE; }
    int                    HTML_COLORSTYLE_SAT()          const                  { return m_HTML_COLORSTYLE_SAT; }
    int                    HTML_COLORSTYLE_GAMMA()        const                  { return m_HTML_COLORSTYLE_GAMMA; }
    bool                   HTML_DYNAMIC_MENUS()           const                  { return m_HTML_DYNAMIC_MENUS; }
    bool                   HTML_DYNAMIC_SECTIONS()        const                  { return m_HTML_DYNAMIC_SECTIONS; }
    bool                   HTML_CODE_FOLDING()            const                  { return m_HTML_CODE_FOLDING; }
    bool                   HTML_COPY_CLIPBOARD()          const                  { return m_HTML_COPY_CLIPBOARD; }
    DString                HTML_PROJECT_COOKIE()          const                  { return m_HTML_PROJECT_COOKIE; }
    int                    HTML_INDEX_NUM_ENTRIES()       const                  { return m_HTML_INDEX_NUM_ENTRIES; }
    bool                   GENERATE_DOCSET()              const                  { return m_GENERATE_DOCSET; }
    DString                DOCSET_FEEDNAME()              const                  { return m_DOCSET_FEEDNAME; }
    DString                DOCSET_FEEDURL()               const                  { return m_DOCSET_FEEDURL; }
    DString                DOCSET_BUNDLE_ID()             const                  { return m_DOCSET_BUNDLE_ID; }
    DString                DOCSET_PUBLISHER_ID()          const                  { return m_DOCSET_PUBLISHER_ID; }
    DString                DOCSET_PUBLISHER_NAME()        const                  { return m_DOCSET_PUBLISHER_NAME; }
    bool                   GENERATE_HTMLHELP()            const                  { return m_GENERATE_HTMLHELP; }
    DString                CHM_FILE()                     const                  { return m_CHM_FILE; }
    DString                HHC_LOCATION()                 const                  { return m_HHC_LOCATION; }
    bool                   GENERATE_CHI()                 const                  { return m_GENERATE_CHI; }
    DString                CHM_INDEX_ENCODING()           const                  { return m_CHM_INDEX_ENCODING; }
    bool                   BINARY_TOC()                   const                  { return m_BINARY_TOC; }
    bool                   TOC_EXPAND()                   const                  { return m_TOC_EXPAND; }
    DString                SITEMAP_URL()                  const                  { return m_SITEMAP_URL; }
    bool                   GENERATE_QHP()                 const                  { return m_GENERATE_QHP; }
    DString                QCH_FILE()                     const                  { return m_QCH_FILE; }
    DString                QHP_NAMESPACE()                const                  { return m_QHP_NAMESPACE; }
    DString                QHP_VIRTUAL_FOLDER()           const                  { return m_QHP_VIRTUAL_FOLDER; }
    DString                QHP_CUST_FILTER_NAME()         const                  { return m_QHP_CUST_FILTER_NAME; }
    DString                QHP_CUST_FILTER_ATTRS()        const                  { return m_QHP_CUST_FILTER_ATTRS; }
    DString                QHP_SECT_FILTER_ATTRS()        const                  { return m_QHP_SECT_FILTER_ATTRS; }
    DString                QHG_LOCATION()                 const                  { return m_QHG_LOCATION; }
    bool                   GENERATE_ECLIPSEHELP()         const                  { return m_GENERATE_ECLIPSEHELP; }
    DString                ECLIPSE_DOC_ID()               const                  { return m_ECLIPSE_DOC_ID; }
    bool                   DISABLE_INDEX()                const                  { return m_DISABLE_INDEX; }
    bool                   GENERATE_TREEVIEW()            const                  { return m_GENERATE_TREEVIEW; }
    bool                   PAGE_OUTLINE_PANEL()           const                  { return m_PAGE_OUTLINE_PANEL; }
    bool                   FULL_SIDEBAR()                 const                  { return m_FULL_SIDEBAR; }
    int                    ENUM_VALUES_PER_LINE()         const                  { return m_ENUM_VALUES_PER_LINE; }
    bool                   SHOW_ENUM_VALUES()             const                  { return m_SHOW_ENUM_VALUES; }
    int                    TREEVIEW_WIDTH()               const                  { return m_TREEVIEW_WIDTH; }
    bool                   EXT_LINKS_IN_WINDOW()          const                  { return m_EXT_LINKS_IN_WINDOW; }
    bool                   OBFUSCATE_EMAILS()             const                  { return m_OBFUSCATE_EMAILS; }
    HTML_FORMULA_FORMAT_t  HTML_FORMULA_FORMAT()          const                  { return HTML_FORMULA_FORMAT_str2enum(m_HTML_FORMULA_FORMAT); }
    DString                HTML_FORMULA_FORMAT_str()      const                  { return m_HTML_FORMULA_FORMAT; }
    int                    FORMULA_FONTSIZE()             const                  { return m_FORMULA_FONTSIZE; }
    DString                FORMULA_MACROFILE()            const                  { return m_FORMULA_MACROFILE; }
    bool                   USE_MATHJAX()                  const                  { return m_USE_MATHJAX; }
    MATHJAX_VERSION_t      MATHJAX_VERSION()              const                  { return MATHJAX_VERSION_str2enum(m_MATHJAX_VERSION); }
    DString                MATHJAX_VERSION_str()          const                  { return m_MATHJAX_VERSION; }
    MATHJAX_FORMAT_t       MATHJAX_FORMAT()               const                  { return MATHJAX_FORMAT_str2enum(m_MATHJAX_FORMAT); }
    DString                MATHJAX_FORMAT_str()           const                  { return m_MATHJAX_FORMAT; }
    DString                MATHJAX_RELPATH()              const                  { return m_MATHJAX_RELPATH; }
    StringVector           MATHJAX_EXTENSIONS()           const                  { return m_MATHJAX_EXTENSIONS; }
    DString                MATHJAX_CODEFILE()             const                  { return m_MATHJAX_CODEFILE; }
    bool                   SEARCHENGINE()                 const                  { return m_SEARCHENGINE; }
    bool                   SERVER_BASED_SEARCH()          const                  { return m_SERVER_BASED_SEARCH; }
    bool                   EXTERNAL_SEARCH()              const                  { return m_EXTERNAL_SEARCH; }
    DString                SEARCHENGINE_URL()             const                  { return m_SEARCHENGINE_URL; }
    DString                SEARCHDATA_FILE()              const                  { return m_SEARCHDATA_FILE; }
    DString                EXTERNAL_SEARCH_ID()           const                  { return m_EXTERNAL_SEARCH_ID; }
    StringVector           EXTRA_SEARCH_MAPPINGS()        const                  { return m_EXTRA_SEARCH_MAPPINGS; }
    bool                   GENERATE_LATEX()               const                  { return m_GENERATE_LATEX; }
    DString                LATEX_OUTPUT()                 const                  { return m_LATEX_OUTPUT; }
    DString                LATEX_CMD_NAME()               const                  { return m_LATEX_CMD_NAME; }
    DString                MAKEINDEX_CMD_NAME()           const                  { return m_MAKEINDEX_CMD_NAME; }
    DString                LATEX_MAKEINDEX_CMD()          const                  { return m_LATEX_MAKEINDEX_CMD; }
    bool                   COMPACT_LATEX()                const                  { return m_COMPACT_LATEX; }
    PAPER_TYPE_t           PAPER_TYPE()                   const                  { return PAPER_TYPE_str2enum(m_PAPER_TYPE); }
    DString                PAPER_TYPE_str()               const                  { return m_PAPER_TYPE; }
    StringVector           EXTRA_PACKAGES()               const                  { return m_EXTRA_PACKAGES; }
    DString                LATEX_HEADER()                 const                  { return m_LATEX_HEADER; }
    DString                LATEX_FOOTER()                 const                  { return m_LATEX_FOOTER; }
    StringVector           LATEX_EXTRA_STYLESHEET()       const                  { return m_LATEX_EXTRA_STYLESHEET; }
    StringVector           LATEX_EXTRA_FILES()            const                  { return m_LATEX_EXTRA_FILES; }
    bool                   PDF_HYPERLINKS()               const                  { return m_PDF_HYPERLINKS; }
    bool                   USE_PDFLATEX()                 const                  { return m_USE_PDFLATEX; }
    LATEX_BATCHMODE_t      LATEX_BATCHMODE()              const                  { return LATEX_BATCHMODE_str2enum(m_LATEX_BATCHMODE); }
    DString                LATEX_BATCHMODE_str()          const                  { return m_LATEX_BATCHMODE; }
    bool                   LATEX_HIDE_INDICES()           const                  { return m_LATEX_HIDE_INDICES; }
    DString                LATEX_BIB_STYLE()              const                  { return m_LATEX_BIB_STYLE; }
    DString                LATEX_EMOJI_DIRECTORY()        const                  { return m_LATEX_EMOJI_DIRECTORY; }
    bool                   GENERATE_RTF()                 const                  { return m_GENERATE_RTF; }
    DString                RTF_OUTPUT()                   const                  { return m_RTF_OUTPUT; }
    bool                   COMPACT_RTF()                  const                  { return m_COMPACT_RTF; }
    bool                   RTF_HYPERLINKS()               const                  { return m_RTF_HYPERLINKS; }
    DString                RTF_STYLESHEET_FILE()          const                  { return m_RTF_STYLESHEET_FILE; }
    DString                RTF_EXTENSIONS_FILE()          const                  { return m_RTF_EXTENSIONS_FILE; }
    StringVector           RTF_EXTRA_FILES()              const                  { return m_RTF_EXTRA_FILES; }
    bool                   GENERATE_MAN()                 const                  { return m_GENERATE_MAN; }
    DString                MAN_OUTPUT()                   const                  { return m_MAN_OUTPUT; }
    DString                MAN_EXTENSION()                const                  { return m_MAN_EXTENSION; }
    DString                MAN_SUBDIR()                   const                  { return m_MAN_SUBDIR; }
    bool                   MAN_LINKS()                    const                  { return m_MAN_LINKS; }
    bool                   GENERATE_XML()                 const                  { return m_GENERATE_XML; }
    DString                XML_OUTPUT()                   const                  { return m_XML_OUTPUT; }
    bool                   XML_PROGRAMLISTING()           const                  { return m_XML_PROGRAMLISTING; }
    bool                   XML_NS_MEMB_FILE_SCOPE()       const                  { return m_XML_NS_MEMB_FILE_SCOPE; }
    bool                   GENERATE_DOCBOOK()             const                  { return m_GENERATE_DOCBOOK; }
    DString                DOCBOOK_OUTPUT()               const                  { return m_DOCBOOK_OUTPUT; }
    bool                   GENERATE_AUTOGEN_DEF()         const                  { return m_GENERATE_AUTOGEN_DEF; }
    bool                   GENERATE_SQLITE3()             const                  { return m_GENERATE_SQLITE3; }
    DString                SQLITE3_OUTPUT()               const                  { return m_SQLITE3_OUTPUT; }
    bool                   SQLITE3_RECREATE_DB()          const                  { return m_SQLITE3_RECREATE_DB; }
    bool                   GENERATE_PERLMOD()             const                  { return m_GENERATE_PERLMOD; }
    bool                   PERLMOD_LATEX()                const                  { return m_PERLMOD_LATEX; }
    bool                   PERLMOD_PRETTY()               const                  { return m_PERLMOD_PRETTY; }
    DString                PERLMOD_MAKEVAR_PREFIX()       const                  { return m_PERLMOD_MAKEVAR_PREFIX; }
    bool                   ENABLE_PREPROCESSING()         const                  { return m_ENABLE_PREPROCESSING; }
    bool                   MACRO_EXPANSION()              const                  { return m_MACRO_EXPANSION; }
    bool                   EXPAND_ONLY_PREDEF()           const                  { return m_EXPAND_ONLY_PREDEF; }
    bool                   SEARCH_INCLUDES()              const                  { return m_SEARCH_INCLUDES; }
    StringVector           INCLUDE_PATH()                 const                  { return m_INCLUDE_PATH; }
    StringVector           INCLUDE_FILE_PATTERNS()        const                  { return m_INCLUDE_FILE_PATTERNS; }
    StringVector           PREDEFINED()                   const                  { return m_PREDEFINED; }
    StringVector           EXPAND_AS_DEFINED()            const                  { return m_EXPAND_AS_DEFINED; }
    bool                   SKIP_FUNCTION_MACROS()         const                  { return m_SKIP_FUNCTION_MACROS; }
    StringVector           TAGFILES()                     const                  { return m_TAGFILES; }
    DString                GENERATE_TAGFILE()             const                  { return m_GENERATE_TAGFILE; }
    bool                   ALLEXTERNALS()                 const                  { return m_ALLEXTERNALS; }
    bool                   EXTERNAL_GROUPS()              const                  { return m_EXTERNAL_GROUPS; }
    bool                   EXTERNAL_PAGES()               const                  { return m_EXTERNAL_PAGES; }
    bool                   HIDE_UNDOC_RELATIONS()         const                  { return m_HIDE_UNDOC_RELATIONS; }
    bool                   HAVE_DOT()                     const                  { return m_HAVE_DOT; }
    int                    DOT_NUM_THREADS()              const                  { return m_DOT_NUM_THREADS; }
    int                    DOT_BATCH_SIZE()               const                  { return m_DOT_BATCH_SIZE; }
    DString                DOT_COMMON_ATTR()              const                  { return m_DOT_COMMON_ATTR; }
    DString                DOT_EDGE_ATTR()                const                  { return m_DOT_EDGE_ATTR; }
    DString                DOT_NODE_ATTR()                const                  { return m_DOT_NODE_ATTR; }
    DString                DOT_FONTPATH()                 const                  { return m_DOT_FONTPATH; }
    CLASS_GRAPH_t          CLASS_GRAPH()                  const                  { return CLASS_GRAPH_str2enum(m_CLASS_GRAPH); }
    DString                CLASS_GRAPH_str()              const                  { return m_CLASS_GRAPH; }
    bool                   COLLABORATION_GRAPH()          const                  { return m_COLLABORATION_GRAPH; }
    bool                   GROUP_GRAPHS()                 const                  { return m_GROUP_GRAPHS; }
    bool                   UML_LOOK()                     const                  { return m_UML_LOOK; }
    int                    UML_LIMIT_NUM_FIELDS()         const                  { return m_UML_LIMIT_NUM_FIELDS; }
    int                    UML_MAX_EDGE_LABELS()          const                  { return m_UML_MAX_EDGE_LABELS; }
    DOT_UML_DETAILS_t      DOT_UML_DETAILS()              const                  { return DOT_UML_DETAILS_str2enum(m_DOT_UML_DETAILS); }
    DString                DOT_UML_DETAILS_str()          const                  { return m_DOT_UML_DETAILS; }
    int                    DOT_WRAP_THRESHOLD()           const                  { return m_DOT_WRAP_THRESHOLD; }
    bool                   TEMPLATE_RELATIONS()           const                  { return m_TEMPLATE_RELATIONS; }
    bool                   INCLUDE_GRAPH()                const                  { return m_INCLUDE_GRAPH; }
    bool                   INCLUDED_BY_GRAPH()            const                  { return m_INCLUDED_BY_GRAPH; }
    bool                   CALL_GRAPH()                   const                  { return m_CALL_GRAPH; }
    bool                   CALLER_GRAPH()                 const                  { return m_CALLER_GRAPH; }
    bool                   GRAPHICAL_HIERARCHY()          const                  { return m_GRAPHICAL_HIERARCHY; }
    bool                   DIRECTORY_GRAPH()              const                  { return m_DIRECTORY_GRAPH; }
    int                    DIR_GRAPH_MAX_DEPTH()          const                  { return m_DIR_GRAPH_MAX_DEPTH; }
    DOT_IMAGE_FORMAT_t     DOT_IMAGE_FORMAT()             const                  { return DOT_IMAGE_FORMAT_str2enum(m_DOT_IMAGE_FORMAT); }
    DString                DOT_IMAGE_FORMAT_str()         const                  { return m_DOT_IMAGE_FORMAT; }
    bool                   INTERACTIVE_SVG()              const                  { return m_INTERACTIVE_SVG; }
    DString                DOT_PATH()                     const                  { return m_DOT_PATH; }
    StringVector           DOTFILE_DIRS()                 const                  { return m_DOTFILE_DIRS; }
    DString                DIA_PATH()                     const                  { return m_DIA_PATH; }
    StringVector           DIAFILE_DIRS()                 const                  { return m_DIAFILE_DIRS; }
    DString                PLANTUML_JAR_PATH()            const                  { return m_PLANTUML_JAR_PATH; }
    DString                PLANTUML_CFG_FILE()            const                  { return m_PLANTUML_CFG_FILE; }
    StringVector           PLANTUML_INCLUDE_PATH()        const                  { return m_PLANTUML_INCLUDE_PATH; }
    StringVector           PLANTUMLFILE_DIRS()            const                  { return m_PLANTUMLFILE_DIRS; }
    DString                MERMAID_PATH()                 const                  { return m_MERMAID_PATH; }
    DString                MERMAID_CONFIG_FILE()          const                  { return m_MERMAID_CONFIG_FILE; }
    MERMAID_RENDER_MODE_t  MERMAID_RENDER_MODE()          const                  { return MERMAID_RENDER_MODE_str2enum(m_MERMAID_RENDER_MODE); }
    DString                MERMAID_RENDER_MODE_str()      const                  { return m_MERMAID_RENDER_MODE; }
    DString                MERMAID_JS_URL()               const                  { return m_MERMAID_JS_URL; }
    StringVector           MERMAIDFILE_DIRS()             const                  { return m_MERMAIDFILE_DIRS; }
    int                    DOT_GRAPH_MAX_NODES()          const                  { return m_DOT_GRAPH_MAX_NODES; }
    int                    MAX_DOT_GRAPH_DEPTH()          const                  { return m_MAX_DOT_GRAPH_DEPTH; }
    bool                   GENERATE_LEGEND()              const                  { return m_GENERATE_LEGEND; }
    bool                   DOT_CLEANUP()                  const                  { return m_DOT_CLEANUP; }
    DString                MSCGEN_TOOL()                  const                  { return m_MSCGEN_TOOL; }
    StringVector           MSCFILE_DIRS()                 const                  { return m_MSCFILE_DIRS; }
    [[maybe_unused]] DString                update_DOXYFILE_ENCODING(const DString & v)           { m_DOXYFILE_ENCODING = v; return m_DOXYFILE_ENCODING; }
    [[maybe_unused]] DString                update_PROJECT_NAME(const DString & v)                { m_PROJECT_NAME = v; return m_PROJECT_NAME; }
    [[maybe_unused]] DString                update_PROJECT_NUMBER(const DString & v)              { m_PROJECT_NUMBER = v; return m_PROJECT_NUMBER; }
    [[maybe_unused]] DString                update_PROJECT_BRIEF(const DString & v)               { m_PROJECT_BRIEF = v; return m_PROJECT_BRIEF; }
    [[maybe_unused]] DString                update_PROJECT_LOGO(const DString & v)                { m_PROJECT_LOGO = v; return m_PROJECT_LOGO; }
    [[maybe_unused]] DString                update_PROJECT_ICON(const DString & v)                { m_PROJECT_ICON = v; return m_PROJECT_ICON; }
    [[maybe_unused]] DString                update_OUTPUT_DIRECTORY(const DString & v)            { m_OUTPUT_DIRECTORY = v; return m_OUTPUT_DIRECTORY; }
    [[maybe_unused]] bool                   update_CREATE_SUBDIRS(bool v)                         { m_CREATE_SUBDIRS = v; return m_CREATE_SUBDIRS; }
    [[maybe_unused]] int                    update_CREATE_SUBDIRS_LEVEL(int v)                    { m_CREATE_SUBDIRS_LEVEL = v; return m_CREATE_SUBDIRS_LEVEL; }
    [[maybe_unused]] bool                   update_ALLOW_UNICODE_NAMES(bool v)                    { m_ALLOW_UNICODE_NAMES = v; return m_ALLOW_UNICODE_NAMES; }
    [[maybe_unused]] OUTPUT_LANGUAGE_t      update_OUTPUT_LANGUAGE(OUTPUT_LANGUAGE_t  v)          { m_OUTPUT_LANGUAGE = OUTPUT_LANGUAGE_enum2str(v); return v; }
    [[maybe_unused]] bool                   update_BRIEF_MEMBER_DESC(bool v)                      { m_BRIEF_MEMBER_DESC = v; return m_BRIEF_MEMBER_DESC; }
    [[maybe_unused]] bool                   update_REPEAT_BRIEF(bool v)                           { m_REPEAT_BRIEF = v; return m_REPEAT_BRIEF; }
    [[maybe_unused]] StringVector           update_ABBREVIATE_BRIEF(const StringVector & v)       { m_ABBREVIATE_BRIEF = v; return m_ABBREVIATE_BRIEF; }
    [[maybe_unused]] bool                   update_ALWAYS_DETAILED_SEC(bool v)                    { m_ALWAYS_DETAILED_SEC = v; return m_ALWAYS_DETAILED_SEC; }
    [[maybe_unused]] bool                   update_INLINE_INHERITED_MEMB(bool v)                  { m_INLINE_INHERITED_MEMB = v; return m_INLINE_INHERITED_MEMB; }
    [[maybe_unused]] bool                   update_FULL_PATH_NAMES(bool v)                        { m_FULL_PATH_NAMES = v; return m_FULL_PATH_NAMES; }
    [[maybe_unused]] StringVector           update_STRIP_FROM_PATH(const StringVector & v)        { m_STRIP_FROM_PATH = v; return m_STRIP_FROM_PATH; }
    [[maybe_unused]] StringVector           update_STRIP_FROM_INC_PATH(const StringVector & v)    { m_STRIP_FROM_INC_PATH = v; return m_STRIP_FROM_INC_PATH; }
    [[maybe_unused]] bool                   update_SHORT_NAMES(bool v)                            { m_SHORT_NAMES = v; return m_SHORT_NAMES; }
    [[maybe_unused]] bool                   update_JAVADOC_AUTOBRIEF(bool v)                      { m_JAVADOC_AUTOBRIEF = v; return m_JAVADOC_AUTOBRIEF; }
    [[maybe_unused]] bool                   update_JAVADOC_BANNER(bool v)                         { m_JAVADOC_BANNER = v; return m_JAVADOC_BANNER; }
    [[maybe_unused]] bool                   update_QT_AUTOBRIEF(bool v)                           { m_QT_AUTOBRIEF = v; return m_QT_AUTOBRIEF; }
    [[maybe_unused]] bool                   update_MULTILINE_CPP_IS_BRIEF(bool v)                 { m_MULTILINE_CPP_IS_BRIEF = v; return m_MULTILINE_CPP_IS_BRIEF; }
    [[maybe_unused]] bool                   update_PYTHON_DOCSTRING(bool v)                       { m_PYTHON_DOCSTRING = v; return m_PYTHON_DOCSTRING; }
    [[maybe_unused]] bool                   update_INHERIT_DOCS(bool v)                           { m_INHERIT_DOCS = v; return m_INHERIT_DOCS; }
    [[maybe_unused]] bool                   update_SEPARATE_MEMBER_PAGES(bool v)                  { m_SEPARATE_MEMBER_PAGES = v; return m_SEPARATE_MEMBER_PAGES; }
    [[maybe_unused]] int                    update_TAB_SIZE(int v)                                { m_TAB_SIZE = v; return m_TAB_SIZE; }
    [[maybe_unused]] StringVector           update_ALIASES(const StringVector & v)                { m_ALIASES = v; return m_ALIASES; }
    [[maybe_unused]] bool                   update_OPTIMIZE_OUTPUT_FOR_C(bool v)                  { m_OPTIMIZE_OUTPUT_FOR_C = v; return m_OPTIMIZE_OUTPUT_FOR_C; }
    [[maybe_unused]] bool                   update_OPTIMIZE_OUTPUT_JAVA(bool v)                   { m_OPTIMIZE_OUTPUT_JAVA = v; return m_OPTIMIZE_OUTPUT_JAVA; }
    [[maybe_unused]] bool                   update_OPTIMIZE_FOR_FORTRAN(bool v)                   { m_OPTIMIZE_FOR_FORTRAN = v; return m_OPTIMIZE_FOR_FORTRAN; }
    [[maybe_unused]] bool                   update_OPTIMIZE_OUTPUT_VHDL(bool v)                   { m_OPTIMIZE_OUTPUT_VHDL = v; return m_OPTIMIZE_OUTPUT_VHDL; }
    [[maybe_unused]] bool                   update_OPTIMIZE_OUTPUT_SLICE(bool v)                  { m_OPTIMIZE_OUTPUT_SLICE = v; return m_OPTIMIZE_OUTPUT_SLICE; }
    [[maybe_unused]] StringVector           update_EXTENSION_MAPPING(const StringVector & v)      { m_EXTENSION_MAPPING = v; return m_EXTENSION_MAPPING; }
    [[maybe_unused]] bool                   update_MARKDOWN_SUPPORT(bool v)                       { m_MARKDOWN_SUPPORT = v; return m_MARKDOWN_SUPPORT; }
    [[maybe_unused]] bool                   update_MARKDOWN_STRICT(bool v)                        { m_MARKDOWN_STRICT = v; return m_MARKDOWN_STRICT; }
    [[maybe_unused]] int                    update_TOC_INCLUDE_HEADINGS(int v)                    { m_TOC_INCLUDE_HEADINGS = v; return m_TOC_INCLUDE_HEADINGS; }
    [[maybe_unused]] MARKDOWN_ID_STYLE_t    update_MARKDOWN_ID_STYLE(MARKDOWN_ID_STYLE_t  v)      { m_MARKDOWN_ID_STYLE = MARKDOWN_ID_STYLE_enum2str(v); return v; }
    [[maybe_unused]] bool                   update_AUTOLINK_SUPPORT(bool v)                       { m_AUTOLINK_SUPPORT = v; return m_AUTOLINK_SUPPORT; }
    [[maybe_unused]] StringVector           update_AUTOLINK_IGNORE_WORDS(const StringVector & v)  { m_AUTOLINK_IGNORE_WORDS = v; return m_AUTOLINK_IGNORE_WORDS; }
    [[maybe_unused]] bool                   update_BUILTIN_STL_SUPPORT(bool v)                    { m_BUILTIN_STL_SUPPORT = v; return m_BUILTIN_STL_SUPPORT; }
    [[maybe_unused]] bool                   update_CPP_CLI_SUPPORT(bool v)                        { m_CPP_CLI_SUPPORT = v; return m_CPP_CLI_SUPPORT; }
    [[maybe_unused]] bool                   update_SIP_SUPPORT(bool v)                            { m_SIP_SUPPORT = v; return m_SIP_SUPPORT; }
    [[maybe_unused]] bool                   update_IDL_PROPERTY_SUPPORT(bool v)                   { m_IDL_PROPERTY_SUPPORT = v; return m_IDL_PROPERTY_SUPPORT; }
    [[maybe_unused]] bool                   update_DISTRIBUTE_GROUP_DOC(bool v)                   { m_DISTRIBUTE_GROUP_DOC = v; return m_DISTRIBUTE_GROUP_DOC; }
    [[maybe_unused]] bool                   update_GROUP_NESTED_COMPOUNDS(bool v)                 { m_GROUP_NESTED_COMPOUNDS = v; return m_GROUP_NESTED_COMPOUNDS; }
    [[maybe_unused]] bool                   update_SUBGROUPING(bool v)                            { m_SUBGROUPING = v; return m_SUBGROUPING; }
    [[maybe_unused]] bool                   update_INLINE_GROUPED_CLASSES(bool v)                 { m_INLINE_GROUPED_CLASSES = v; return m_INLINE_GROUPED_CLASSES; }
    [[maybe_unused]] bool                   update_INLINE_SIMPLE_STRUCTS(bool v)                  { m_INLINE_SIMPLE_STRUCTS = v; return m_INLINE_SIMPLE_STRUCTS; }
    [[maybe_unused]] bool                   update_TYPEDEF_HIDES_STRUCT(bool v)                   { m_TYPEDEF_HIDES_STRUCT = v; return m_TYPEDEF_HIDES_STRUCT; }
    [[maybe_unused]] int                    update_LOOKUP_CACHE_SIZE(int v)                       { m_LOOKUP_CACHE_SIZE = v; return m_LOOKUP_CACHE_SIZE; }
    [[maybe_unused]] int                    update_NUM_PROC_THREADS(int v)                        { m_NUM_PROC_THREADS = v; return m_NUM_PROC_THREADS; }
    [[maybe_unused]] TIMESTAMP_t            update_TIMESTAMP(TIMESTAMP_t  v)                      { m_TIMESTAMP = TIMESTAMP_enum2str(v); return v; }
    [[maybe_unused]] bool                   update_EXTRACT_ALL(bool v)                            { m_EXTRACT_ALL = v; return m_EXTRACT_ALL; }
    [[maybe_unused]] bool                   update_EXTRACT_PRIVATE(bool v)                        { m_EXTRACT_PRIVATE = v; return m_EXTRACT_PRIVATE; }
    [[maybe_unused]] bool                   update_EXTRACT_PRIV_VIRTUAL(bool v)                   { m_EXTRACT_PRIV_VIRTUAL = v; return m_EXTRACT_PRIV_VIRTUAL; }
    [[maybe_unused]] bool                   update_EXTRACT_PACKAGE(bool v)                        { m_EXTRACT_PACKAGE = v; return m_EXTRACT_PACKAGE; }
    [[maybe_unused]] bool                   update_EXTRACT_STATIC(bool v)                         { m_EXTRACT_STATIC = v; return m_EXTRACT_STATIC; }
    [[maybe_unused]] bool                   update_EXTRACT_LOCAL_CLASSES(bool v)                  { m_EXTRACT_LOCAL_CLASSES = v; return m_EXTRACT_LOCAL_CLASSES; }
    [[maybe_unused]] bool                   update_EXTRACT_LOCAL_METHODS(bool v)                  { m_EXTRACT_LOCAL_METHODS = v; return m_EXTRACT_LOCAL_METHODS; }
    [[maybe_unused]] bool                   update_EXTRACT_ANON_NSPACES(bool v)                   { m_EXTRACT_ANON_NSPACES = v; return m_EXTRACT_ANON_NSPACES; }
    [[maybe_unused]] bool                   update_RESOLVE_UNNAMED_PARAMS(bool v)                 { m_RESOLVE_UNNAMED_PARAMS = v; return m_RESOLVE_UNNAMED_PARAMS; }
    [[maybe_unused]] bool                   update_HIDE_UNDOC_MEMBERS(bool v)                     { m_HIDE_UNDOC_MEMBERS = v; return m_HIDE_UNDOC_MEMBERS; }
    [[maybe_unused]] bool                   update_HIDE_UNDOC_CLASSES(bool v)                     { m_HIDE_UNDOC_CLASSES = v; return m_HIDE_UNDOC_CLASSES; }
    [[maybe_unused]] bool                   update_HIDE_UNDOC_NAMESPACES(bool v)                  { m_HIDE_UNDOC_NAMESPACES = v; return m_HIDE_UNDOC_NAMESPACES; }
    [[maybe_unused]] bool                   update_HIDE_FRIEND_COMPOUNDS(bool v)                  { m_HIDE_FRIEND_COMPOUNDS = v; return m_HIDE_FRIEND_COMPOUNDS; }
    [[maybe_unused]] bool                   update_HIDE_IN_BODY_DOCS(bool v)                      { m_HIDE_IN_BODY_DOCS = v; return m_HIDE_IN_BODY_DOCS; }
    [[maybe_unused]] bool                   update_INTERNAL_DOCS(bool v)                          { m_INTERNAL_DOCS = v; return m_INTERNAL_DOCS; }
    [[maybe_unused]] CASE_SENSE_NAMES_t     update_CASE_SENSE_NAMES(CASE_SENSE_NAMES_t  v)        { m_CASE_SENSE_NAMES = CASE_SENSE_NAMES_enum2str(v); return v; }
    [[maybe_unused]] bool                   update_HIDE_SCOPE_NAMES(bool v)                       { m_HIDE_SCOPE_NAMES = v; return m_HIDE_SCOPE_NAMES; }
    [[maybe_unused]] bool                   update_HIDE_COMPOUND_REFERENCE(bool v)                { m_HIDE_COMPOUND_REFERENCE = v; return m_HIDE_COMPOUND_REFERENCE; }
    [[maybe_unused]] bool                   update_SHOW_HEADERFILE(bool v)                        { m_SHOW_HEADERFILE = v; return m_SHOW_HEADERFILE; }
    [[maybe_unused]] bool                   update_SHOW_INCLUDE_FILES(bool v)                     { m_SHOW_INCLUDE_FILES = v; return m_SHOW_INCLUDE_FILES; }
    [[maybe_unused]] bool                   update_SHOW_GROUPED_MEMB_INC(bool v)                  { m_SHOW_GROUPED_MEMB_INC = v; return m_SHOW_GROUPED_MEMB_INC; }
    [[maybe_unused]] bool                   update_FORCE_LOCAL_INCLUDES(bool v)                   { m_FORCE_LOCAL_INCLUDES = v; return m_FORCE_LOCAL_INCLUDES; }
    [[maybe_unused]] bool                   update_INLINE_INFO(bool v)                            { m_INLINE_INFO = v; return m_INLINE_INFO; }
    [[maybe_unused]] bool                   update_SORT_MEMBER_DOCS(bool v)                       { m_SORT_MEMBER_DOCS = v; return m_SORT_MEMBER_DOCS; }
    [[maybe_unused]] bool                   update_SORT_BRIEF_DOCS(bool v)                        { m_SORT_BRIEF_DOCS = v; return m_SORT_BRIEF_DOCS; }
    [[maybe_unused]] bool                   update_SORT_MEMBERS_CTORS_1ST(bool v)                 { m_SORT_MEMBERS_CTORS_1ST = v; return m_SORT_MEMBERS_CTORS_1ST; }
    [[maybe_unused]] bool                   update_SORT_GROUP_NAMES(bool v)                       { m_SORT_GROUP_NAMES = v; return m_SORT_GROUP_NAMES; }
    [[maybe_unused]] bool                   update_SORT_BY_SCOPE_NAME(bool v)                     { m_SORT_BY_SCOPE_NAME = v; return m_SORT_BY_SCOPE_NAME; }
    [[maybe_unused]] bool                   update_STRICT_PROTO_MATCHING(bool v)                  { m_STRICT_PROTO_MATCHING = v; return m_STRICT_PROTO_MATCHING; }
    [[maybe_unused]] bool                   update_GENERATE_TODOLIST(bool v)                      { m_GENERATE_TODOLIST = v; return m_GENERATE_TODOLIST; }
    [[maybe_unused]] bool                   update_GENERATE_TESTLIST(bool v)                      { m_GENERATE_TESTLIST = v; return m_GENERATE_TESTLIST; }
    [[maybe_unused]] bool                   update_GENERATE_BUGLIST(bool v)                       { m_GENERATE_BUGLIST = v; return m_GENERATE_BUGLIST; }
    [[maybe_unused]] bool                   update_GENERATE_DEPRECATEDLIST(bool v)                { m_GENERATE_DEPRECATEDLIST = v; return m_GENERATE_DEPRECATEDLIST; }
    [[maybe_unused]] bool                   update_GENERATE_REQUIREMENTS(bool v)                  { m_GENERATE_REQUIREMENTS = v; return m_GENERATE_REQUIREMENTS; }
    [[maybe_unused]] REQ_TRACEABILITY_INFO_t update_REQ_TRACEABILITY_INFO(REQ_TRACEABILITY_INFO_t  v) { m_REQ_TRACEABILITY_INFO = REQ_TRACEABILITY_INFO_enum2str(v); return v; }
    [[maybe_unused]] StringVector           update_ENABLED_SECTIONS(const StringVector & v)       { m_ENABLED_SECTIONS = v; return m_ENABLED_SECTIONS; }
    [[maybe_unused]] int                    update_MAX_INITIALIZER_LINES(int v)                   { m_MAX_INITIALIZER_LINES = v; return m_MAX_INITIALIZER_LINES; }
    [[maybe_unused]] bool                   update_SHOW_USED_FILES(bool v)                        { m_SHOW_USED_FILES = v; return m_SHOW_USED_FILES; }
    [[maybe_unused]] bool                   update_SHOW_FILES(bool v)                             { m_SHOW_FILES = v; return m_SHOW_FILES; }
    [[maybe_unused]] bool                   update_SHOW_NAMESPACES(bool v)                        { m_SHOW_NAMESPACES = v; return m_SHOW_NAMESPACES; }
    [[maybe_unused]] DString                update_FILE_VERSION_FILTER(const DString & v)         { m_FILE_VERSION_FILTER = v; return m_FILE_VERSION_FILTER; }
    [[maybe_unused]] DString                update_LAYOUT_FILE(const DString & v)                 { m_LAYOUT_FILE = v; return m_LAYOUT_FILE; }
    [[maybe_unused]] StringVector           update_CITE_BIB_FILES(const StringVector & v)         { m_CITE_BIB_FILES = v; return m_CITE_BIB_FILES; }
    [[maybe_unused]] StringVector           update_EXTERNAL_TOOL_PATH(const StringVector & v)     { m_EXTERNAL_TOOL_PATH = v; return m_EXTERNAL_TOOL_PATH; }
    [[maybe_unused]] bool                   update_QUIET(bool v)                                  { m_QUIET = v; return m_QUIET; }
    [[maybe_unused]] bool                   update_WARNINGS(bool v)                               { m_WARNINGS = v; return m_WARNINGS; }
    [[maybe_unused]] bool                   update_WARN_IF_UNDOCUMENTED(bool v)                   { m_WARN_IF_UNDOCUMENTED = v; return m_WARN_IF_UNDOCUMENTED; }
    [[maybe_unused]] bool                   update_WARN_IF_DOC_ERROR(bool v)                      { m_WARN_IF_DOC_ERROR = v; return m_WARN_IF_DOC_ERROR; }
    [[maybe_unused]] bool                   update_WARN_IF_INCOMPLETE_DOC(bool v)                 { m_WARN_IF_INCOMPLETE_DOC = v; return m_WARN_IF_INCOMPLETE_DOC; }
    [[maybe_unused]] bool                   update_WARN_NO_PARAMDOC(bool v)                       { m_WARN_NO_PARAMDOC = v; return m_WARN_NO_PARAMDOC; }
    [[maybe_unused]] bool                   update_WARN_IF_UNDOC_ENUM_VAL(bool v)                 { m_WARN_IF_UNDOC_ENUM_VAL = v; return m_WARN_IF_UNDOC_ENUM_VAL; }
    [[maybe_unused]] bool                   update_WARN_LAYOUT_FILE(bool v)                       { m_WARN_LAYOUT_FILE = v; return m_WARN_LAYOUT_FILE; }
    [[maybe_unused]] WARN_AS_ERROR_t        update_WARN_AS_ERROR(WARN_AS_ERROR_t  v)              { m_WARN_AS_ERROR = WARN_AS_ERROR_enum2str(v); return v; }
    [[maybe_unused]] DString                update_WARN_FORMAT(const DString & v)                 { m_WARN_FORMAT = v; return m_WARN_FORMAT; }
    [[maybe_unused]] DString                update_WARN_LINE_FORMAT(const DString & v)            { m_WARN_LINE_FORMAT = v; return m_WARN_LINE_FORMAT; }
    [[maybe_unused]] DString                update_WARN_LOGFILE(const DString & v)                { m_WARN_LOGFILE = v; return m_WARN_LOGFILE; }
    [[maybe_unused]] StringVector           update_INPUT(const StringVector & v)                  { m_INPUT = v; return m_INPUT; }
    [[maybe_unused]] DString                update_INPUT_ENCODING(const DString & v)              { m_INPUT_ENCODING = v; return m_INPUT_ENCODING; }
    [[maybe_unused]] StringVector           update_INPUT_FILE_ENCODING(const StringVector & v)    { m_INPUT_FILE_ENCODING = v; return m_INPUT_FILE_ENCODING; }
    [[maybe_unused]] StringVector           update_FILE_PATTERNS(const StringVector & v)          { m_FILE_PATTERNS = v; return m_FILE_PATTERNS; }
    [[maybe_unused]] bool                   update_RECURSIVE(bool v)                              { m_RECURSIVE = v; return m_RECURSIVE; }
    [[maybe_unused]] StringVector           update_EXCLUDE(const StringVector & v)                { m_EXCLUDE = v; return m_EXCLUDE; }
    [[maybe_unused]] bool                   update_EXCLUDE_SYMLINKS(bool v)                       { m_EXCLUDE_SYMLINKS = v; return m_EXCLUDE_SYMLINKS; }
    [[maybe_unused]] StringVector           update_EXCLUDE_PATTERNS(const StringVector & v)       { m_EXCLUDE_PATTERNS = v; return m_EXCLUDE_PATTERNS; }
    [[maybe_unused]] StringVector           update_EXCLUDE_SYMBOLS(const StringVector & v)        { m_EXCLUDE_SYMBOLS = v; return m_EXCLUDE_SYMBOLS; }
    [[maybe_unused]] StringVector           update_EXAMPLE_PATH(const StringVector & v)           { m_EXAMPLE_PATH = v; return m_EXAMPLE_PATH; }
    [[maybe_unused]] StringVector           update_EXAMPLE_PATTERNS(const StringVector & v)       { m_EXAMPLE_PATTERNS = v; return m_EXAMPLE_PATTERNS; }
    [[maybe_unused]] bool                   update_EXAMPLE_RECURSIVE(bool v)                      { m_EXAMPLE_RECURSIVE = v; return m_EXAMPLE_RECURSIVE; }
    [[maybe_unused]] StringVector           update_IMAGE_PATH(const StringVector & v)             { m_IMAGE_PATH = v; return m_IMAGE_PATH; }
    [[maybe_unused]] DString                update_INPUT_FILTER(const DString & v)                { m_INPUT_FILTER = v; return m_INPUT_FILTER; }
    [[maybe_unused]] StringVector           update_FILTER_PATTERNS(const StringVector & v)        { m_FILTER_PATTERNS = v; return m_FILTER_PATTERNS; }
    [[maybe_unused]] bool                   update_FILTER_SOURCE_FILES(bool v)                    { m_FILTER_SOURCE_FILES = v; return m_FILTER_SOURCE_FILES; }
    [[maybe_unused]] StringVector           update_FILTER_SOURCE_PATTERNS(const StringVector & v) { m_FILTER_SOURCE_PATTERNS = v; return m_FILTER_SOURCE_PATTERNS; }
    [[maybe_unused]] DString                update_USE_MDFILE_AS_MAINPAGE(const DString & v)      { m_USE_MDFILE_AS_MAINPAGE = v; return m_USE_MDFILE_AS_MAINPAGE; }
    [[maybe_unused]] bool                   update_IMPLICIT_DIR_DOCS(bool v)                      { m_IMPLICIT_DIR_DOCS = v; return m_IMPLICIT_DIR_DOCS; }
    [[maybe_unused]] int                    update_FORTRAN_COMMENT_AFTER(int v)                   { m_FORTRAN_COMMENT_AFTER = v; return m_FORTRAN_COMMENT_AFTER; }
    [[maybe_unused]] bool                   update_SOURCE_BROWSER(bool v)                         { m_SOURCE_BROWSER = v; return m_SOURCE_BROWSER; }
    [[maybe_unused]] bool                   update_INLINE_SOURCES(bool v)                         { m_INLINE_SOURCES = v; return m_INLINE_SOURCES; }
    [[maybe_unused]] bool                   update_STRIP_CODE_COMMENTS(bool v)                    { m_STRIP_CODE_COMMENTS = v; return m_STRIP_CODE_COMMENTS; }
    [[maybe_unused]] bool                   update_REFERENCED_BY_RELATION(bool v)                 { m_REFERENCED_BY_RELATION = v; return m_REFERENCED_BY_RELATION; }
    [[maybe_unused]] bool                   update_REFERENCES_RELATION(bool v)                    { m_REFERENCES_RELATION = v; return m_REFERENCES_RELATION; }
    [[maybe_unused]] bool                   update_REFERENCES_LINK_SOURCE(bool v)                 { m_REFERENCES_LINK_SOURCE = v; return m_REFERENCES_LINK_SOURCE; }
    [[maybe_unused]] bool                   update_SOURCE_TOOLTIPS(bool v)                        { m_SOURCE_TOOLTIPS = v; return m_SOURCE_TOOLTIPS; }
    [[maybe_unused]] bool                   update_USE_HTAGS(bool v)                              { m_USE_HTAGS = v; return m_USE_HTAGS; }
    [[maybe_unused]] bool                   update_VERBATIM_HEADERS(bool v)                       { m_VERBATIM_HEADERS = v; return m_VERBATIM_HEADERS; }
#if USE_LIBCLANG
    [[maybe_unused]] bool                   update_CLANG_ASSISTED_PARSING(bool v)                 { m_CLANG_ASSISTED_PARSING = v; return m_CLANG_ASSISTED_PARSING; }
#endif
#if USE_LIBCLANG
    [[maybe_unused]] bool                   update_CLANG_ADD_INC_PATHS(bool v)                    { m_CLANG_ADD_INC_PATHS = v; return m_CLANG_ADD_INC_PATHS; }
#endif
#if USE_LIBCLANG
    [[maybe_unused]] StringVector           update_CLANG_OPTIONS(const StringVector & v)          { m_CLANG_OPTIONS = v; return m_CLANG_OPTIONS; }
#endif
#if USE_LIBCLANG
    [[maybe_unused]] DString                update_CLANG_DATABASE_PATH(const DString & v)         { m_CLANG_DATABASE_PATH = v; return m_CLANG_DATABASE_PATH; }
#endif
    [[maybe_unused]] bool                   update_ALPHABETICAL_INDEX(bool v)                     { m_ALPHABETICAL_INDEX = v; return m_ALPHABETICAL_INDEX; }
    [[maybe_unused]] StringVector           update_IGNORE_PREFIX(const StringVector & v)          { m_IGNORE_PREFIX = v; return m_IGNORE_PREFIX; }
    [[maybe_unused]] bool                   update_GENERATE_HTML(bool v)                          { m_GENERATE_HTML = v; return m_GENERATE_HTML; }
    [[maybe_unused]] DString                update_HTML_OUTPUT(const DString & v)                 { m_HTML_OUTPUT = v; return m_HTML_OUTPUT; }
    [[maybe_unused]] DString                update_HTML_FILE_EXTENSION(const DString & v)         { m_HTML_FILE_EXTENSION = v; return m_HTML_FILE_EXTENSION; }
    [[maybe_unused]] DString                update_HTML_HEADER(const DString & v)                 { m_HTML_HEADER = v; return m_HTML_HEADER; }
    [[maybe_unused]] DString                update_HTML_FOOTER(const DString & v)                 { m_HTML_FOOTER = v; return m_HTML_FOOTER; }
    [[maybe_unused]] DString                update_HTML_STYLESHEET(const DString & v)             { m_HTML_STYLESHEET = v; return m_HTML_STYLESHEET; }
    [[maybe_unused]] StringVector           update_HTML_EXTRA_STYLESHEET(const StringVector & v)  { m_HTML_EXTRA_STYLESHEET = v; return m_HTML_EXTRA_STYLESHEET; }
    [[maybe_unused]] StringVector           update_HTML_EXTRA_FILES(const StringVector & v)       { m_HTML_EXTRA_FILES = v; return m_HTML_EXTRA_FILES; }
    [[maybe_unused]] HTML_COLORSTYLE_t      update_HTML_COLORSTYLE(HTML_COLORSTYLE_t  v)          { m_HTML_COLORSTYLE = HTML_COLORSTYLE_enum2str(v); return v; }
    [[maybe_unused]] int                    update_HTML_COLORSTYLE_HUE(int v)                     { m_HTML_COLORSTYLE_HUE = v; return m_HTML_COLORSTYLE_HUE; }
    [[maybe_unused]] int                    update_HTML_COLORSTYLE_SAT(int v)                     { m_HTML_COLORSTYLE_SAT = v; return m_HTML_COLORSTYLE_SAT; }
    [[maybe_unused]] int                    update_HTML_COLORSTYLE_GAMMA(int v)                   { m_HTML_COLORSTYLE_GAMMA = v; return m_HTML_COLORSTYLE_GAMMA; }
    [[maybe_unused]] bool                   update_HTML_DYNAMIC_MENUS(bool v)                     { m_HTML_DYNAMIC_MENUS = v; return m_HTML_DYNAMIC_MENUS; }
    [[maybe_unused]] bool                   update_HTML_DYNAMIC_SECTIONS(bool v)                  { m_HTML_DYNAMIC_SECTIONS = v; return m_HTML_DYNAMIC_SECTIONS; }
    [[maybe_unused]] bool                   update_HTML_CODE_FOLDING(bool v)                      { m_HTML_CODE_FOLDING = v; return m_HTML_CODE_FOLDING; }
    [[maybe_unused]] bool                   update_HTML_COPY_CLIPBOARD(bool v)                    { m_HTML_COPY_CLIPBOARD = v; return m_HTML_COPY_CLIPBOARD; }
    [[maybe_unused]] DString                update_HTML_PROJECT_COOKIE(const DString & v)         { m_HTML_PROJECT_COOKIE = v; return m_HTML_PROJECT_COOKIE; }
    [[maybe_unused]] int                    update_HTML_INDEX_NUM_ENTRIES(int v)                  { m_HTML_INDEX_NUM_ENTRIES = v; return m_HTML_INDEX_NUM_ENTRIES; }
    [[maybe_unused]] bool                   update_GENERATE_DOCSET(bool v)                        { m_GENERATE_DOCSET = v; return m_GENERATE_DOCSET; }
    [[maybe_unused]] DString                update_DOCSET_FEEDNAME(const DString & v)             { m_DOCSET_FEEDNAME = v; return m_DOCSET_FEEDNAME; }
    [[maybe_unused]] DString                update_DOCSET_FEEDURL(const DString & v)              { m_DOCSET_FEEDURL = v; return m_DOCSET_FEEDURL; }
    [[maybe_unused]] DString                update_DOCSET_BUNDLE_ID(const DString & v)            { m_DOCSET_BUNDLE_ID = v; return m_DOCSET_BUNDLE_ID; }
    [[maybe_unused]] DString                update_DOCSET_PUBLISHER_ID(const DString & v)         { m_DOCSET_PUBLISHER_ID = v; return m_DOCSET_PUBLISHER_ID; }
    [[maybe_unused]] DString                update_DOCSET_PUBLISHER_NAME(const DString & v)       { m_DOCSET_PUBLISHER_NAME = v; return m_DOCSET_PUBLISHER_NAME; }
    [[maybe_unused]] bool                   update_GENERATE_HTMLHELP(bool v)                      { m_GENERATE_HTMLHELP = v; return m_GENERATE_HTMLHELP; }
    [[maybe_unused]] DString                update_CHM_FILE(const DString & v)                    { m_CHM_FILE = v; return m_CHM_FILE; }
    [[maybe_unused]] DString                update_HHC_LOCATION(const DString & v)                { m_HHC_LOCATION = v; return m_HHC_LOCATION; }
    [[maybe_unused]] bool                   update_GENERATE_CHI(bool v)                           { m_GENERATE_CHI = v; return m_GENERATE_CHI; }
    [[maybe_unused]] DString                update_CHM_INDEX_ENCODING(const DString & v)          { m_CHM_INDEX_ENCODING = v; return m_CHM_INDEX_ENCODING; }
    [[maybe_unused]] bool                   update_BINARY_TOC(bool v)                             { m_BINARY_TOC = v; return m_BINARY_TOC; }
    [[maybe_unused]] bool                   update_TOC_EXPAND(bool v)                             { m_TOC_EXPAND = v; return m_TOC_EXPAND; }
    [[maybe_unused]] DString                update_SITEMAP_URL(const DString & v)                 { m_SITEMAP_URL = v; return m_SITEMAP_URL; }
    [[maybe_unused]] bool                   update_GENERATE_QHP(bool v)                           { m_GENERATE_QHP = v; return m_GENERATE_QHP; }
    [[maybe_unused]] DString                update_QCH_FILE(const DString & v)                    { m_QCH_FILE = v; return m_QCH_FILE; }
    [[maybe_unused]] DString                update_QHP_NAMESPACE(const DString & v)               { m_QHP_NAMESPACE = v; return m_QHP_NAMESPACE; }
    [[maybe_unused]] DString                update_QHP_VIRTUAL_FOLDER(const DString & v)          { m_QHP_VIRTUAL_FOLDER = v; return m_QHP_VIRTUAL_FOLDER; }
    [[maybe_unused]] DString                update_QHP_CUST_FILTER_NAME(const DString & v)        { m_QHP_CUST_FILTER_NAME = v; return m_QHP_CUST_FILTER_NAME; }
    [[maybe_unused]] DString                update_QHP_CUST_FILTER_ATTRS(const DString & v)       { m_QHP_CUST_FILTER_ATTRS = v; return m_QHP_CUST_FILTER_ATTRS; }
    [[maybe_unused]] DString                update_QHP_SECT_FILTER_ATTRS(const DString & v)       { m_QHP_SECT_FILTER_ATTRS = v; return m_QHP_SECT_FILTER_ATTRS; }
    [[maybe_unused]] DString                update_QHG_LOCATION(const DString & v)                { m_QHG_LOCATION = v; return m_QHG_LOCATION; }
    [[maybe_unused]] bool                   update_GENERATE_ECLIPSEHELP(bool v)                   { m_GENERATE_ECLIPSEHELP = v; return m_GENERATE_ECLIPSEHELP; }
    [[maybe_unused]] DString                update_ECLIPSE_DOC_ID(const DString & v)              { m_ECLIPSE_DOC_ID = v; return m_ECLIPSE_DOC_ID; }
    [[maybe_unused]] bool                   update_DISABLE_INDEX(bool v)                          { m_DISABLE_INDEX = v; return m_DISABLE_INDEX; }
    [[maybe_unused]] bool                   update_GENERATE_TREEVIEW(bool v)                      { m_GENERATE_TREEVIEW = v; return m_GENERATE_TREEVIEW; }
    [[maybe_unused]] bool                   update_PAGE_OUTLINE_PANEL(bool v)                     { m_PAGE_OUTLINE_PANEL = v; return m_PAGE_OUTLINE_PANEL; }
    [[maybe_unused]] bool                   update_FULL_SIDEBAR(bool v)                           { m_FULL_SIDEBAR = v; return m_FULL_SIDEBAR; }
    [[maybe_unused]] int                    update_ENUM_VALUES_PER_LINE(int v)                    { m_ENUM_VALUES_PER_LINE = v; return m_ENUM_VALUES_PER_LINE; }
    [[maybe_unused]] bool                   update_SHOW_ENUM_VALUES(bool v)                       { m_SHOW_ENUM_VALUES = v; return m_SHOW_ENUM_VALUES; }
    [[maybe_unused]] int                    update_TREEVIEW_WIDTH(int v)                          { m_TREEVIEW_WIDTH = v; return m_TREEVIEW_WIDTH; }
    [[maybe_unused]] bool                   update_EXT_LINKS_IN_WINDOW(bool v)                    { m_EXT_LINKS_IN_WINDOW = v; return m_EXT_LINKS_IN_WINDOW; }
    [[maybe_unused]] bool                   update_OBFUSCATE_EMAILS(bool v)                       { m_OBFUSCATE_EMAILS = v; return m_OBFUSCATE_EMAILS; }
    [[maybe_unused]] HTML_FORMULA_FORMAT_t  update_HTML_FORMULA_FORMAT(HTML_FORMULA_FORMAT_t  v)  { m_HTML_FORMULA_FORMAT = HTML_FORMULA_FORMAT_enum2str(v); return v; }
    [[maybe_unused]] int                    update_FORMULA_FONTSIZE(int v)                        { m_FORMULA_FONTSIZE = v; return m_FORMULA_FONTSIZE; }
    [[maybe_unused]] DString                update_FORMULA_MACROFILE(const DString & v)           { m_FORMULA_MACROFILE = v; return m_FORMULA_MACROFILE; }
    [[maybe_unused]] bool                   update_USE_MATHJAX(bool v)                            { m_USE_MATHJAX = v; return m_USE_MATHJAX; }
    [[maybe_unused]] MATHJAX_VERSION_t      update_MATHJAX_VERSION(MATHJAX_VERSION_t  v)          { m_MATHJAX_VERSION = MATHJAX_VERSION_enum2str(v); return v; }
    [[maybe_unused]] MATHJAX_FORMAT_t       update_MATHJAX_FORMAT(MATHJAX_FORMAT_t  v)            { m_MATHJAX_FORMAT = MATHJAX_FORMAT_enum2str(v); return v; }
    [[maybe_unused]] DString                update_MATHJAX_RELPATH(const DString & v)             { m_MATHJAX_RELPATH = v; return m_MATHJAX_RELPATH; }
    [[maybe_unused]] StringVector           update_MATHJAX_EXTENSIONS(const StringVector & v)     { m_MATHJAX_EXTENSIONS = v; return m_MATHJAX_EXTENSIONS; }
    [[maybe_unused]] DString                update_MATHJAX_CODEFILE(const DString & v)            { m_MATHJAX_CODEFILE = v; return m_MATHJAX_CODEFILE; }
    [[maybe_unused]] bool                   update_SEARCHENGINE(bool v)                           { m_SEARCHENGINE = v; return m_SEARCHENGINE; }
    [[maybe_unused]] bool                   update_SERVER_BASED_SEARCH(bool v)                    { m_SERVER_BASED_SEARCH = v; return m_SERVER_BASED_SEARCH; }
    [[maybe_unused]] bool                   update_EXTERNAL_SEARCH(bool v)                        { m_EXTERNAL_SEARCH = v; return m_EXTERNAL_SEARCH; }
    [[maybe_unused]] DString                update_SEARCHENGINE_URL(const DString & v)            { m_SEARCHENGINE_URL = v; return m_SEARCHENGINE_URL; }
    [[maybe_unused]] DString                update_SEARCHDATA_FILE(const DString & v)             { m_SEARCHDATA_FILE = v; return m_SEARCHDATA_FILE; }
    [[maybe_unused]] DString                update_EXTERNAL_SEARCH_ID(const DString & v)          { m_EXTERNAL_SEARCH_ID = v; return m_EXTERNAL_SEARCH_ID; }
    [[maybe_unused]] StringVector           update_EXTRA_SEARCH_MAPPINGS(const StringVector & v)  { m_EXTRA_SEARCH_MAPPINGS = v; return m_EXTRA_SEARCH_MAPPINGS; }
    [[maybe_unused]] bool                   update_GENERATE_LATEX(bool v)                         { m_GENERATE_LATEX = v; return m_GENERATE_LATEX; }
    [[maybe_unused]] DString                update_LATEX_OUTPUT(const DString & v)                { m_LATEX_OUTPUT = v; return m_LATEX_OUTPUT; }
    [[maybe_unused]] DString                update_LATEX_CMD_NAME(const DString & v)              { m_LATEX_CMD_NAME = v; return m_LATEX_CMD_NAME; }
    [[maybe_unused]] DString                update_MAKEINDEX_CMD_NAME(const DString & v)          { m_MAKEINDEX_CMD_NAME = v; return m_MAKEINDEX_CMD_NAME; }
    [[maybe_unused]] DString                update_LATEX_MAKEINDEX_CMD(const DString & v)         { m_LATEX_MAKEINDEX_CMD = v; return m_LATEX_MAKEINDEX_CMD; }
    [[maybe_unused]] bool                   update_COMPACT_LATEX(bool v)                          { m_COMPACT_LATEX = v; return m_COMPACT_LATEX; }
    [[maybe_unused]] PAPER_TYPE_t           update_PAPER_TYPE(PAPER_TYPE_t  v)                    { m_PAPER_TYPE = PAPER_TYPE_enum2str(v); return v; }
    [[maybe_unused]] StringVector           update_EXTRA_PACKAGES(const StringVector & v)         { m_EXTRA_PACKAGES = v; return m_EXTRA_PACKAGES; }
    [[maybe_unused]] DString                update_LATEX_HEADER(const DString & v)                { m_LATEX_HEADER = v; return m_LATEX_HEADER; }
    [[maybe_unused]] DString                update_LATEX_FOOTER(const DString & v)                { m_LATEX_FOOTER = v; return m_LATEX_FOOTER; }
    [[maybe_unused]] StringVector           update_LATEX_EXTRA_STYLESHEET(const StringVector & v) { m_LATEX_EXTRA_STYLESHEET = v; return m_LATEX_EXTRA_STYLESHEET; }
    [[maybe_unused]] StringVector           update_LATEX_EXTRA_FILES(const StringVector & v)      { m_LATEX_EXTRA_FILES = v; return m_LATEX_EXTRA_FILES; }
    [[maybe_unused]] bool                   update_PDF_HYPERLINKS(bool v)                         { m_PDF_HYPERLINKS = v; return m_PDF_HYPERLINKS; }
    [[maybe_unused]] bool                   update_USE_PDFLATEX(bool v)                           { m_USE_PDFLATEX = v; return m_USE_PDFLATEX; }
    [[maybe_unused]] LATEX_BATCHMODE_t      update_LATEX_BATCHMODE(LATEX_BATCHMODE_t  v)          { m_LATEX_BATCHMODE = LATEX_BATCHMODE_enum2str(v); return v; }
    [[maybe_unused]] bool                   update_LATEX_HIDE_INDICES(bool v)                     { m_LATEX_HIDE_INDICES = v; return m_LATEX_HIDE_INDICES; }
    [[maybe_unused]] DString                update_LATEX_BIB_STYLE(const DString & v)             { m_LATEX_BIB_STYLE = v; return m_LATEX_BIB_STYLE; }
    [[maybe_unused]] DString                update_LATEX_EMOJI_DIRECTORY(const DString & v)       { m_LATEX_EMOJI_DIRECTORY = v; return m_LATEX_EMOJI_DIRECTORY; }
    [[maybe_unused]] bool                   update_GENERATE_RTF(bool v)                           { m_GENERATE_RTF = v; return m_GENERATE_RTF; }
    [[maybe_unused]] DString                update_RTF_OUTPUT(const DString & v)                  { m_RTF_OUTPUT = v; return m_RTF_OUTPUT; }
    [[maybe_unused]] bool                   update_COMPACT_RTF(bool v)                            { m_COMPACT_RTF = v; return m_COMPACT_RTF; }
    [[maybe_unused]] bool                   update_RTF_HYPERLINKS(bool v)                         { m_RTF_HYPERLINKS = v; return m_RTF_HYPERLINKS; }
    [[maybe_unused]] DString                update_RTF_STYLESHEET_FILE(const DString & v)         { m_RTF_STYLESHEET_FILE = v; return m_RTF_STYLESHEET_FILE; }
    [[maybe_unused]] DString                update_RTF_EXTENSIONS_FILE(const DString & v)         { m_RTF_EXTENSIONS_FILE = v; return m_RTF_EXTENSIONS_FILE; }
    [[maybe_unused]] StringVector           update_RTF_EXTRA_FILES(const StringVector & v)        { m_RTF_EXTRA_FILES = v; return m_RTF_EXTRA_FILES; }
    [[maybe_unused]] bool                   update_GENERATE_MAN(bool v)                           { m_GENERATE_MAN = v; return m_GENERATE_MAN; }
    [[maybe_unused]] DString                update_MAN_OUTPUT(const DString & v)                  { m_MAN_OUTPUT = v; return m_MAN_OUTPUT; }
    [[maybe_unused]] DString                update_MAN_EXTENSION(const DString & v)               { m_MAN_EXTENSION = v; return m_MAN_EXTENSION; }
    [[maybe_unused]] DString                update_MAN_SUBDIR(const DString & v)                  { m_MAN_SUBDIR = v; return m_MAN_SUBDIR; }
    [[maybe_unused]] bool                   update_MAN_LINKS(bool v)                              { m_MAN_LINKS = v; return m_MAN_LINKS; }
    [[maybe_unused]] bool                   update_GENERATE_XML(bool v)                           { m_GENERATE_XML = v; return m_GENERATE_XML; }
    [[maybe_unused]] DString                update_XML_OUTPUT(const DString & v)                  { m_XML_OUTPUT = v; return m_XML_OUTPUT; }
    [[maybe_unused]] bool                   update_XML_PROGRAMLISTING(bool v)                     { m_XML_PROGRAMLISTING = v; return m_XML_PROGRAMLISTING; }
    [[maybe_unused]] bool                   update_XML_NS_MEMB_FILE_SCOPE(bool v)                 { m_XML_NS_MEMB_FILE_SCOPE = v; return m_XML_NS_MEMB_FILE_SCOPE; }
    [[maybe_unused]] bool                   update_GENERATE_DOCBOOK(bool v)                       { m_GENERATE_DOCBOOK = v; return m_GENERATE_DOCBOOK; }
    [[maybe_unused]] DString                update_DOCBOOK_OUTPUT(const DString & v)              { m_DOCBOOK_OUTPUT = v; return m_DOCBOOK_OUTPUT; }
    [[maybe_unused]] bool                   update_GENERATE_AUTOGEN_DEF(bool v)                   { m_GENERATE_AUTOGEN_DEF = v; return m_GENERATE_AUTOGEN_DEF; }
    [[maybe_unused]] bool                   update_GENERATE_SQLITE3(bool v)                       { m_GENERATE_SQLITE3 = v; return m_GENERATE_SQLITE3; }
    [[maybe_unused]] DString                update_SQLITE3_OUTPUT(const DString & v)              { m_SQLITE3_OUTPUT = v; return m_SQLITE3_OUTPUT; }
    [[maybe_unused]] bool                   update_SQLITE3_RECREATE_DB(bool v)                    { m_SQLITE3_RECREATE_DB = v; return m_SQLITE3_RECREATE_DB; }
    [[maybe_unused]] bool                   update_GENERATE_PERLMOD(bool v)                       { m_GENERATE_PERLMOD = v; return m_GENERATE_PERLMOD; }
    [[maybe_unused]] bool                   update_PERLMOD_LATEX(bool v)                          { m_PERLMOD_LATEX = v; return m_PERLMOD_LATEX; }
    [[maybe_unused]] bool                   update_PERLMOD_PRETTY(bool v)                         { m_PERLMOD_PRETTY = v; return m_PERLMOD_PRETTY; }
    [[maybe_unused]] DString                update_PERLMOD_MAKEVAR_PREFIX(const DString & v)      { m_PERLMOD_MAKEVAR_PREFIX = v; return m_PERLMOD_MAKEVAR_PREFIX; }
    [[maybe_unused]] bool                   update_ENABLE_PREPROCESSING(bool v)                   { m_ENABLE_PREPROCESSING = v; return m_ENABLE_PREPROCESSING; }
    [[maybe_unused]] bool                   update_MACRO_EXPANSION(bool v)                        { m_MACRO_EXPANSION = v; return m_MACRO_EXPANSION; }
    [[maybe_unused]] bool                   update_EXPAND_ONLY_PREDEF(bool v)                     { m_EXPAND_ONLY_PREDEF = v; return m_EXPAND_ONLY_PREDEF; }
    [[maybe_unused]] bool                   update_SEARCH_INCLUDES(bool v)                        { m_SEARCH_INCLUDES = v; return m_SEARCH_INCLUDES; }
    [[maybe_unused]] StringVector           update_INCLUDE_PATH(const StringVector & v)           { m_INCLUDE_PATH = v; return m_INCLUDE_PATH; }
    [[maybe_unused]] StringVector           update_INCLUDE_FILE_PATTERNS(const StringVector & v)  { m_INCLUDE_FILE_PATTERNS = v; return m_INCLUDE_FILE_PATTERNS; }
    [[maybe_unused]] StringVector           update_PREDEFINED(const StringVector & v)             { m_PREDEFINED = v; return m_PREDEFINED; }
    [[maybe_unused]] StringVector           update_EXPAND_AS_DEFINED(const StringVector & v)      { m_EXPAND_AS_DEFINED = v; return m_EXPAND_AS_DEFINED; }
    [[maybe_unused]] bool                   update_SKIP_FUNCTION_MACROS(bool v)                   { m_SKIP_FUNCTION_MACROS = v; return m_SKIP_FUNCTION_MACROS; }
    [[maybe_unused]] StringVector           update_TAGFILES(const StringVector & v)               { m_TAGFILES = v; return m_TAGFILES; }
    [[maybe_unused]] DString                update_GENERATE_TAGFILE(const DString & v)            { m_GENERATE_TAGFILE = v; return m_GENERATE_TAGFILE; }
    [[maybe_unused]] bool                   update_ALLEXTERNALS(bool v)                           { m_ALLEXTERNALS = v; return m_ALLEXTERNALS; }
    [[maybe_unused]] bool                   update_EXTERNAL_GROUPS(bool v)                        { m_EXTERNAL_GROUPS = v; return m_EXTERNAL_GROUPS; }
    [[maybe_unused]] bool                   update_EXTERNAL_PAGES(bool v)                         { m_EXTERNAL_PAGES = v; return m_EXTERNAL_PAGES; }
    [[maybe_unused]] bool                   update_HIDE_UNDOC_RELATIONS(bool v)                   { m_HIDE_UNDOC_RELATIONS = v; return m_HIDE_UNDOC_RELATIONS; }
    [[maybe_unused]] bool                   update_HAVE_DOT(bool v)                               { m_HAVE_DOT = v; return m_HAVE_DOT; }
    [[maybe_unused]] int                    update_DOT_NUM_THREADS(int v)                         { m_DOT_NUM_THREADS = v; return m_DOT_NUM_THREADS; }
    [[maybe_unused]] int                    update_DOT_BATCH_SIZE(int v)                          { m_DOT_BATCH_SIZE = v; return m_DOT_BATCH_SIZE; }
    [[maybe_unused]] DString                update_DOT_COMMON_ATTR(const DString & v)             { m_DOT_COMMON_ATTR = v; return m_DOT_COMMON_ATTR; }
    [[maybe_unused]] DString                update_DOT_EDGE_ATTR(const DString & v)               { m_DOT_EDGE_ATTR = v; return m_DOT_EDGE_ATTR; }
    [[maybe_unused]] DString                update_DOT_NODE_ATTR(const DString & v)               { m_DOT_NODE_ATTR = v; return m_DOT_NODE_ATTR; }
    [[maybe_unused]] DString                update_DOT_FONTPATH(const DString & v)                { m_DOT_FONTPATH = v; return m_DOT_FONTPATH; }
    [[maybe_unused]] CLASS_GRAPH_t          update_CLASS_GRAPH(CLASS_GRAPH_t  v)                  { m_CLASS_GRAPH = CLASS_GRAPH_enum2str(v); return v; }
    [[maybe_unused]] bool                   update_COLLABORATION_GRAPH(bool v)                    { m_COLLABORATION_GRAPH = v; return m_COLLABORATION_GRAPH; }
    [[maybe_unused]] bool                   update_GROUP_GRAPHS(bool v)                           { m_GROUP_GRAPHS = v; return m_GROUP_GRAPHS; }
    [[maybe_unused]] bool                   update_UML_LOOK(bool v)                               { m_UML_LOOK = v; return m_UML_LOOK; }
    [[maybe_unused]] int                    update_UML_LIMIT_NUM_FIELDS(int v)                    { m_UML_LIMIT_NUM_FIELDS = v; return m_UML_LIMIT_NUM_FIELDS; }
    [[maybe_unused]] int                    update_UML_MAX_EDGE_LABELS(int v)                     { m_UML_MAX_EDGE_LABELS = v; return m_UML_MAX_EDGE_LABELS; }
    [[maybe_unused]] DOT_UML_DETAILS_t      update_DOT_UML_DETAILS(DOT_UML_DETAILS_t  v)          { m_DOT_UML_DETAILS = DOT_UML_DETAILS_enum2str(v); return v; }
    [[maybe_unused]] int                    update_DOT_WRAP_THRESHOLD(int v)                      { m_DOT_WRAP_THRESHOLD = v; return m_DOT_WRAP_THRESHOLD; }
    [[maybe_unused]] bool                   update_TEMPLATE_RELATIONS(bool v)                     { m_TEMPLATE_RELATIONS = v; return m_TEMPLATE_RELATIONS; }
    [[maybe_unused]] bool                   update_INCLUDE_GRAPH(bool v)                          { m_INCLUDE_GRAPH = v; return m_INCLUDE_GRAPH; }
    [[maybe_unused]] bool                   update_INCLUDED_BY_GRAPH(bool v)                      { m_INCLUDED_BY_GRAPH = v; return m_INCLUDED_BY_GRAPH; }
    [[maybe_unused]] bool                   update_CALL_GRAPH(bool v)                             { m_CALL_GRAPH = v; return m_CALL_GRAPH; }
    [[maybe_unused]] bool                   update_CALLER_GRAPH(bool v)                           { m_CALLER_GRAPH = v; return m_CALLER_GRAPH; }
    [[maybe_unused]] bool                   update_GRAPHICAL_HIERARCHY(bool v)                    { m_GRAPHICAL_HIERARCHY = v; return m_GRAPHICAL_HIERARCHY; }
    [[maybe_unused]] bool                   update_DIRECTORY_GRAPH(bool v)                        { m_DIRECTORY_GRAPH = v; return m_DIRECTORY_GRAPH; }
    [[maybe_unused]] int                    update_DIR_GRAPH_MAX_DEPTH(int v)                     { m_DIR_GRAPH_MAX_DEPTH = v; return m_DIR_GRAPH_MAX_DEPTH; }
    [[maybe_unused]] DOT_IMAGE_FORMAT_t     update_DOT_IMAGE_FORMAT(DOT_IMAGE_FORMAT_t  v)        { m_DOT_IMAGE_FORMAT = DOT_IMAGE_FORMAT_enum2str(v); return v; }
    [[maybe_unused]] bool                   update_INTERACTIVE_SVG(bool v)                        { m_INTERACTIVE_SVG = v; return m_INTERACTIVE_SVG; }
    [[maybe_unused]] DString                update_DOT_PATH(const DString & v)                    { m_DOT_PATH = v; return m_DOT_PATH; }
    [[maybe_unused]] StringVector           update_DOTFILE_DIRS(const StringVector & v)           { m_DOTFILE_DIRS = v; return m_DOTFILE_DIRS; }
    [[maybe_unused]] DString                update_DIA_PATH(const DString & v)                    { m_DIA_PATH = v; return m_DIA_PATH; }
    [[maybe_unused]] StringVector           update_DIAFILE_DIRS(const StringVector & v)           { m_DIAFILE_DIRS = v; return m_DIAFILE_DIRS; }
    [[maybe_unused]] DString                update_PLANTUML_JAR_PATH(const DString & v)           { m_PLANTUML_JAR_PATH = v; return m_PLANTUML_JAR_PATH; }
    [[maybe_unused]] DString                update_PLANTUML_CFG_FILE(const DString & v)           { m_PLANTUML_CFG_FILE = v; return m_PLANTUML_CFG_FILE; }
    [[maybe_unused]] StringVector           update_PLANTUML_INCLUDE_PATH(const StringVector & v)  { m_PLANTUML_INCLUDE_PATH = v; return m_PLANTUML_INCLUDE_PATH; }
    [[maybe_unused]] StringVector           update_PLANTUMLFILE_DIRS(const StringVector & v)      { m_PLANTUMLFILE_DIRS = v; return m_PLANTUMLFILE_DIRS; }
    [[maybe_unused]] DString                update_MERMAID_PATH(const DString & v)                { m_MERMAID_PATH = v; return m_MERMAID_PATH; }
    [[maybe_unused]] DString                update_MERMAID_CONFIG_FILE(const DString & v)         { m_MERMAID_CONFIG_FILE = v; return m_MERMAID_CONFIG_FILE; }
    [[maybe_unused]] MERMAID_RENDER_MODE_t  update_MERMAID_RENDER_MODE(MERMAID_RENDER_MODE_t  v)  { m_MERMAID_RENDER_MODE = MERMAID_RENDER_MODE_enum2str(v); return v; }
    [[maybe_unused]] DString                update_MERMAID_JS_URL(const DString & v)              { m_MERMAID_JS_URL = v; return m_MERMAID_JS_URL; }
    [[maybe_unused]] StringVector           update_MERMAIDFILE_DIRS(const StringVector & v)       { m_MERMAIDFILE_DIRS = v; return m_MERMAIDFILE_DIRS; }
    [[maybe_unused]] int                    update_DOT_GRAPH_MAX_NODES(int v)                     { m_DOT_GRAPH_MAX_NODES = v; return m_DOT_GRAPH_MAX_NODES; }
    [[maybe_unused]] int                    update_MAX_DOT_GRAPH_DEPTH(int v)                     { m_MAX_DOT_GRAPH_DEPTH = v; return m_MAX_DOT_GRAPH_DEPTH; }
    [[maybe_unused]] bool                   update_GENERATE_LEGEND(bool v)                        { m_GENERATE_LEGEND = v; return m_GENERATE_LEGEND; }
    [[maybe_unused]] bool                   update_DOT_CLEANUP(bool v)                            { m_DOT_CLEANUP = v; return m_DOT_CLEANUP; }
    [[maybe_unused]] DString                update_MSCGEN_TOOL(const DString & v)                 { m_MSCGEN_TOOL = v; return m_MSCGEN_TOOL; }
    [[maybe_unused]] StringVector           update_MSCFILE_DIRS(const StringVector & v)           { m_MSCFILE_DIRS = v; return m_MSCFILE_DIRS; }
    bool                   isAvailable_OUTPUT_LANGUAGE(DString v)                { return v.lower() == OUTPUT_LANGUAGE_enum2str(OUTPUT_LANGUAGE_str2enum(v)).lower(); }
    bool                   isAvailable_MARKDOWN_ID_STYLE(DString v)              { return v.lower() == MARKDOWN_ID_STYLE_enum2str(MARKDOWN_ID_STYLE_str2enum(v)).lower(); }
    bool                   isAvailable_TIMESTAMP(DString v)                      { return v.lower() == TIMESTAMP_enum2str(TIMESTAMP_str2enum(v)).lower(); }
    bool                   isAvailable_CASE_SENSE_NAMES(DString v)               { return v.lower() == CASE_SENSE_NAMES_enum2str(CASE_SENSE_NAMES_str2enum(v)).lower(); }
    bool                   isAvailable_REQ_TRACEABILITY_INFO(DString v)          { return v.lower() == REQ_TRACEABILITY_INFO_enum2str(REQ_TRACEABILITY_INFO_str2enum(v)).lower(); }
    bool                   isAvailable_WARN_AS_ERROR(DString v)                  { return v.lower() == WARN_AS_ERROR_enum2str(WARN_AS_ERROR_str2enum(v)).lower(); }
    bool                   isAvailable_HTML_COLORSTYLE(DString v)                { return v.lower() == HTML_COLORSTYLE_enum2str(HTML_COLORSTYLE_str2enum(v)).lower(); }
    bool                   isAvailable_HTML_FORMULA_FORMAT(DString v)            { return v.lower() == HTML_FORMULA_FORMAT_enum2str(HTML_FORMULA_FORMAT_str2enum(v)).lower(); }
    bool                   isAvailable_MATHJAX_VERSION(DString v)                { return v.lower() == MATHJAX_VERSION_enum2str(MATHJAX_VERSION_str2enum(v)).lower(); }
    bool                   isAvailable_MATHJAX_FORMAT(DString v)                 { return v.lower() == MATHJAX_FORMAT_enum2str(MATHJAX_FORMAT_str2enum(v)).lower(); }
    bool                   isAvailable_PAPER_TYPE(DString v)                     { return v.lower() == PAPER_TYPE_enum2str(PAPER_TYPE_str2enum(v)).lower(); }
    bool                   isAvailable_LATEX_BATCHMODE(DString v)                { return v.lower() == LATEX_BATCHMODE_enum2str(LATEX_BATCHMODE_str2enum(v)).lower(); }
    bool                   isAvailable_CLASS_GRAPH(DString v)                    { return v.lower() == CLASS_GRAPH_enum2str(CLASS_GRAPH_str2enum(v)).lower(); }
    bool                   isAvailable_DOT_UML_DETAILS(DString v)                { return v.lower() == DOT_UML_DETAILS_enum2str(DOT_UML_DETAILS_str2enum(v)).lower(); }
    bool                   isAvailable_DOT_IMAGE_FORMAT(DString v)               { return v.lower() == DOT_IMAGE_FORMAT_enum2str(DOT_IMAGE_FORMAT_str2enum(v)).lower(); }
    bool                   isAvailable_MERMAID_RENDER_MODE(DString v)            { return v.lower() == MERMAID_RENDER_MODE_enum2str(MERMAID_RENDER_MODE_str2enum(v)).lower(); }
    void init();
    StringVector fields() const;
    struct Info
    {
      enum Type { Bool, Int, String, List, Unknown };
      using Enum2BoolMap = std::unordered_map<std::string,bool>;
      Info(Type t,bool         ConfigValues::*b) : type(t), value(b) {}
      Info(Type t,int          ConfigValues::*i) : type(t), value(i) {}
      Info(Type t,DString     ConfigValues::*s, const Enum2BoolMap &boolMap = {}) : type(t), value(s), m_boolMap(boolMap) {}
      Info(Type t,StringVector ConfigValues::*l) : type(t), value(l) {}
      Type type;
      union Item
      {
        Item(bool         ConfigValues::*v) : b(v) {}
        Item(int          ConfigValues::*v) : i(v) {}
        Item(DString     ConfigValues::*v) : s(v) {}
        Item(StringVector ConfigValues::*v) : l(v) {}
        bool         ConfigValues::*b;
        int          ConfigValues::*i;
        DString     ConfigValues::*s;
        StringVector ConfigValues::*l;
      } value;
      bool getBooleanRepresentation() const;
    private:
      Enum2BoolMap m_boolMap;
    };
    const Info *get(const DString &tag) const;

  private:
    DString      m_DOXYFILE_ENCODING;
    DString      m_PROJECT_NAME;
    DString      m_PROJECT_NUMBER;
    DString      m_PROJECT_BRIEF;
    DString      m_PROJECT_LOGO;
    DString      m_PROJECT_ICON;
    DString      m_OUTPUT_DIRECTORY;
    bool         m_CREATE_SUBDIRS;
    int          m_CREATE_SUBDIRS_LEVEL;
    bool         m_ALLOW_UNICODE_NAMES;
    DString      m_OUTPUT_LANGUAGE;
    bool         m_BRIEF_MEMBER_DESC;
    bool         m_REPEAT_BRIEF;
    StringVector m_ABBREVIATE_BRIEF;
    bool         m_ALWAYS_DETAILED_SEC;
    bool         m_INLINE_INHERITED_MEMB;
    bool         m_FULL_PATH_NAMES;
    StringVector m_STRIP_FROM_PATH;
    StringVector m_STRIP_FROM_INC_PATH;
    bool         m_SHORT_NAMES;
    bool         m_JAVADOC_AUTOBRIEF;
    bool         m_JAVADOC_BANNER;
    bool         m_QT_AUTOBRIEF;
    bool         m_MULTILINE_CPP_IS_BRIEF;
    bool         m_PYTHON_DOCSTRING;
    bool         m_INHERIT_DOCS;
    bool         m_SEPARATE_MEMBER_PAGES;
    int          m_TAB_SIZE;
    StringVector m_ALIASES;
    bool         m_OPTIMIZE_OUTPUT_FOR_C;
    bool         m_OPTIMIZE_OUTPUT_JAVA;
    bool         m_OPTIMIZE_FOR_FORTRAN;
    bool         m_OPTIMIZE_OUTPUT_VHDL;
    bool         m_OPTIMIZE_OUTPUT_SLICE;
    StringVector m_EXTENSION_MAPPING;
    bool         m_MARKDOWN_SUPPORT;
    bool         m_MARKDOWN_STRICT;
    int          m_TOC_INCLUDE_HEADINGS;
    DString      m_MARKDOWN_ID_STYLE;
    bool         m_AUTOLINK_SUPPORT;
    StringVector m_AUTOLINK_IGNORE_WORDS;
    bool         m_BUILTIN_STL_SUPPORT;
    bool         m_CPP_CLI_SUPPORT;
    bool         m_SIP_SUPPORT;
    bool         m_IDL_PROPERTY_SUPPORT;
    bool         m_DISTRIBUTE_GROUP_DOC;
    bool         m_GROUP_NESTED_COMPOUNDS;
    bool         m_SUBGROUPING;
    bool         m_INLINE_GROUPED_CLASSES;
    bool         m_INLINE_SIMPLE_STRUCTS;
    bool         m_TYPEDEF_HIDES_STRUCT;
    int          m_LOOKUP_CACHE_SIZE;
    int          m_NUM_PROC_THREADS;
    DString      m_TIMESTAMP;
    bool         m_EXTRACT_ALL;
    bool         m_EXTRACT_PRIVATE;
    bool         m_EXTRACT_PRIV_VIRTUAL;
    bool         m_EXTRACT_PACKAGE;
    bool         m_EXTRACT_STATIC;
    bool         m_EXTRACT_LOCAL_CLASSES;
    bool         m_EXTRACT_LOCAL_METHODS;
    bool         m_EXTRACT_ANON_NSPACES;
    bool         m_RESOLVE_UNNAMED_PARAMS;
    bool         m_HIDE_UNDOC_MEMBERS;
    bool         m_HIDE_UNDOC_CLASSES;
    bool         m_HIDE_UNDOC_NAMESPACES;
    bool         m_HIDE_FRIEND_COMPOUNDS;
    bool         m_HIDE_IN_BODY_DOCS;
    bool         m_INTERNAL_DOCS;
    DString      m_CASE_SENSE_NAMES;
    bool         m_HIDE_SCOPE_NAMES;
    bool         m_HIDE_COMPOUND_REFERENCE;
    bool         m_SHOW_HEADERFILE;
    bool         m_SHOW_INCLUDE_FILES;
    bool         m_SHOW_GROUPED_MEMB_INC;
    bool         m_FORCE_LOCAL_INCLUDES;
    bool         m_INLINE_INFO;
    bool         m_SORT_MEMBER_DOCS;
    bool         m_SORT_BRIEF_DOCS;
    bool         m_SORT_MEMBERS_CTORS_1ST;
    bool         m_SORT_GROUP_NAMES;
    bool         m_SORT_BY_SCOPE_NAME;
    bool         m_STRICT_PROTO_MATCHING;
    bool         m_GENERATE_TODOLIST;
    bool         m_GENERATE_TESTLIST;
    bool         m_GENERATE_BUGLIST;
    bool         m_GENERATE_DEPRECATEDLIST;
    bool         m_GENERATE_REQUIREMENTS;
    DString      m_REQ_TRACEABILITY_INFO;
    StringVector m_ENABLED_SECTIONS;
    int          m_MAX_INITIALIZER_LINES;
    bool         m_SHOW_USED_FILES;
    bool         m_SHOW_FILES;
    bool         m_SHOW_NAMESPACES;
    DString      m_FILE_VERSION_FILTER;
    DString      m_LAYOUT_FILE;
    StringVector m_CITE_BIB_FILES;
    StringVector m_EXTERNAL_TOOL_PATH;
    bool         m_QUIET;
    bool         m_WARNINGS;
    bool         m_WARN_IF_UNDOCUMENTED;
    bool         m_WARN_IF_DOC_ERROR;
    bool         m_WARN_IF_INCOMPLETE_DOC;
    bool         m_WARN_NO_PARAMDOC;
    bool         m_WARN_IF_UNDOC_ENUM_VAL;
    bool         m_WARN_LAYOUT_FILE;
    DString      m_WARN_AS_ERROR;
    DString      m_WARN_FORMAT;
    DString      m_WARN_LINE_FORMAT;
    DString      m_WARN_LOGFILE;
    StringVector m_INPUT;
    DString      m_INPUT_ENCODING;
    StringVector m_INPUT_FILE_ENCODING;
    StringVector m_FILE_PATTERNS;
    bool         m_RECURSIVE;
    StringVector m_EXCLUDE;
    bool         m_EXCLUDE_SYMLINKS;
    StringVector m_EXCLUDE_PATTERNS;
    StringVector m_EXCLUDE_SYMBOLS;
    StringVector m_EXAMPLE_PATH;
    StringVector m_EXAMPLE_PATTERNS;
    bool         m_EXAMPLE_RECURSIVE;
    StringVector m_IMAGE_PATH;
    DString      m_INPUT_FILTER;
    StringVector m_FILTER_PATTERNS;
    bool         m_FILTER_SOURCE_FILES;
    StringVector m_FILTER_SOURCE_PATTERNS;
    DString      m_USE_MDFILE_AS_MAINPAGE;
    bool         m_IMPLICIT_DIR_DOCS;
    int          m_FORTRAN_COMMENT_AFTER;
    bool         m_SOURCE_BROWSER;
    bool         m_INLINE_SOURCES;
    bool         m_STRIP_CODE_COMMENTS;
    bool         m_REFERENCED_BY_RELATION;
    bool         m_REFERENCES_RELATION;
    bool         m_REFERENCES_LINK_SOURCE;
    bool         m_SOURCE_TOOLTIPS;
    bool         m_USE_HTAGS;
    bool         m_VERBATIM_HEADERS;
#if USE_LIBCLANG
    bool         m_CLANG_ASSISTED_PARSING;
#endif
#if USE_LIBCLANG
    bool         m_CLANG_ADD_INC_PATHS;
#endif
#if USE_LIBCLANG
    StringVector m_CLANG_OPTIONS;
#endif
#if USE_LIBCLANG
    DString      m_CLANG_DATABASE_PATH;
#endif
    bool         m_ALPHABETICAL_INDEX;
    StringVector m_IGNORE_PREFIX;
    bool         m_GENERATE_HTML;
    DString      m_HTML_OUTPUT;
    DString      m_HTML_FILE_EXTENSION;
    DString      m_HTML_HEADER;
    DString      m_HTML_FOOTER;
    DString      m_HTML_STYLESHEET;
    StringVector m_HTML_EXTRA_STYLESHEET;
    StringVector m_HTML_EXTRA_FILES;
    DString      m_HTML_COLORSTYLE;
    int          m_HTML_COLORSTYLE_HUE;
    int          m_HTML_COLORSTYLE_SAT;
    int          m_HTML_COLORSTYLE_GAMMA;
    bool         m_HTML_DYNAMIC_MENUS;
    bool         m_HTML_DYNAMIC_SECTIONS;
    bool         m_HTML_CODE_FOLDING;
    bool         m_HTML_COPY_CLIPBOARD;
    DString      m_HTML_PROJECT_COOKIE;
    int          m_HTML_INDEX_NUM_ENTRIES;
    bool         m_GENERATE_DOCSET;
    DString      m_DOCSET_FEEDNAME;
    DString      m_DOCSET_FEEDURL;
    DString      m_DOCSET_BUNDLE_ID;
    DString      m_DOCSET_PUBLISHER_ID;
    DString      m_DOCSET_PUBLISHER_NAME;
    bool         m_GENERATE_HTMLHELP;
    DString      m_CHM_FILE;
    DString      m_HHC_LOCATION;
    bool         m_GENERATE_CHI;
    DString      m_CHM_INDEX_ENCODING;
    bool         m_BINARY_TOC;
    bool         m_TOC_EXPAND;
    DString      m_SITEMAP_URL;
    bool         m_GENERATE_QHP;
    DString      m_QCH_FILE;
    DString      m_QHP_NAMESPACE;
    DString      m_QHP_VIRTUAL_FOLDER;
    DString      m_QHP_CUST_FILTER_NAME;
    DString      m_QHP_CUST_FILTER_ATTRS;
    DString      m_QHP_SECT_FILTER_ATTRS;
    DString      m_QHG_LOCATION;
    bool         m_GENERATE_ECLIPSEHELP;
    DString      m_ECLIPSE_DOC_ID;
    bool         m_DISABLE_INDEX;
    bool         m_GENERATE_TREEVIEW;
    bool         m_PAGE_OUTLINE_PANEL;
    bool         m_FULL_SIDEBAR;
    int          m_ENUM_VALUES_PER_LINE;
    bool         m_SHOW_ENUM_VALUES;
    int          m_TREEVIEW_WIDTH;
    bool         m_EXT_LINKS_IN_WINDOW;
    bool         m_OBFUSCATE_EMAILS;
    DString      m_HTML_FORMULA_FORMAT;
    int          m_FORMULA_FONTSIZE;
    DString      m_FORMULA_MACROFILE;
    bool         m_USE_MATHJAX;
    DString      m_MATHJAX_VERSION;
    DString      m_MATHJAX_FORMAT;
    DString      m_MATHJAX_RELPATH;
    StringVector m_MATHJAX_EXTENSIONS;
    DString      m_MATHJAX_CODEFILE;
    bool         m_SEARCHENGINE;
    bool         m_SERVER_BASED_SEARCH;
    bool         m_EXTERNAL_SEARCH;
    DString      m_SEARCHENGINE_URL;
    DString      m_SEARCHDATA_FILE;
    DString      m_EXTERNAL_SEARCH_ID;
    StringVector m_EXTRA_SEARCH_MAPPINGS;
    bool         m_GENERATE_LATEX;
    DString      m_LATEX_OUTPUT;
    DString      m_LATEX_CMD_NAME;
    DString      m_MAKEINDEX_CMD_NAME;
    DString      m_LATEX_MAKEINDEX_CMD;
    bool         m_COMPACT_LATEX;
    DString      m_PAPER_TYPE;
    StringVector m_EXTRA_PACKAGES;
    DString      m_LATEX_HEADER;
    DString      m_LATEX_FOOTER;
    StringVector m_LATEX_EXTRA_STYLESHEET;
    StringVector m_LATEX_EXTRA_FILES;
    bool         m_PDF_HYPERLINKS;
    bool         m_USE_PDFLATEX;
    DString      m_LATEX_BATCHMODE;
    bool         m_LATEX_HIDE_INDICES;
    DString      m_LATEX_BIB_STYLE;
    DString      m_LATEX_EMOJI_DIRECTORY;
    bool         m_GENERATE_RTF;
    DString      m_RTF_OUTPUT;
    bool         m_COMPACT_RTF;
    bool         m_RTF_HYPERLINKS;
    DString      m_RTF_STYLESHEET_FILE;
    DString      m_RTF_EXTENSIONS_FILE;
    StringVector m_RTF_EXTRA_FILES;
    bool         m_GENERATE_MAN;
    DString      m_MAN_OUTPUT;
    DString      m_MAN_EXTENSION;
    DString      m_MAN_SUBDIR;
    bool         m_MAN_LINKS;
    bool         m_GENERATE_XML;
    DString      m_XML_OUTPUT;
    bool         m_XML_PROGRAMLISTING;
    bool         m_XML_NS_MEMB_FILE_SCOPE;
    bool         m_GENERATE_DOCBOOK;
    DString      m_DOCBOOK_OUTPUT;
    bool         m_GENERATE_AUTOGEN_DEF;
    bool         m_GENERATE_SQLITE3;
    DString      m_SQLITE3_OUTPUT;
    bool         m_SQLITE3_RECREATE_DB;
    bool         m_GENERATE_PERLMOD;
    bool         m_PERLMOD_LATEX;
    bool         m_PERLMOD_PRETTY;
    DString      m_PERLMOD_MAKEVAR_PREFIX;
    bool         m_ENABLE_PREPROCESSING;
    bool         m_MACRO_EXPANSION;
    bool         m_EXPAND_ONLY_PREDEF;
    bool         m_SEARCH_INCLUDES;
    StringVector m_INCLUDE_PATH;
    StringVector m_INCLUDE_FILE_PATTERNS;
    StringVector m_PREDEFINED;
    StringVector m_EXPAND_AS_DEFINED;
    bool         m_SKIP_FUNCTION_MACROS;
    StringVector m_TAGFILES;
    DString      m_GENERATE_TAGFILE;
    bool         m_ALLEXTERNALS;
    bool         m_EXTERNAL_GROUPS;
    bool         m_EXTERNAL_PAGES;
    bool         m_HIDE_UNDOC_RELATIONS;
    bool         m_HAVE_DOT;
    int          m_DOT_NUM_THREADS;
    int          m_DOT_BATCH_SIZE;
    DString      m_DOT_COMMON_ATTR;
    DString      m_DOT_EDGE_ATTR;
    DString      m_DOT_NODE_ATTR;
    DString      m_DOT_FONTPATH;
    DString      m_CLASS_GRAPH;
    bool         m_COLLABORATION_GRAPH;
    bool         m_GROUP_GRAPHS;
    bool         m_UML_LOOK;
    int          m_UML_LIMIT_NUM_FIELDS;
    int          m_UML_MAX_EDGE_LABELS;
    DString      m_DOT_UML_DETAILS;
    int          m_DOT_WRAP_THRESHOLD;
    bool         m_TEMPLATE_RELATIONS;
    bool         m_INCLUDE_GRAPH;
    bool         m_INCLUDED_BY_GRAPH;
    bool         m_CALL_GRAPH;
    bool         m_CALLER_GRAPH;
    bool         m_GRAPHICAL_HIERARCHY;
    bool         m_DIRECTORY_GRAPH;
    int          m_DIR_GRAPH_MAX_DEPTH;
    DString      m_DOT_IMAGE_FORMAT;
    bool         m_INTERACTIVE_SVG;
    DString      m_DOT_PATH;
    StringVector m_DOTFILE_DIRS;
    DString      m_DIA_PATH;
    StringVector m_DIAFILE_DIRS;
    DString      m_PLANTUML_JAR_PATH;
    DString      m_PLANTUML_CFG_FILE;
    StringVector m_PLANTUML_INCLUDE_PATH;
    StringVector m_PLANTUMLFILE_DIRS;
    DString      m_MERMAID_PATH;
    DString      m_MERMAID_CONFIG_FILE;
    DString      m_MERMAID_RENDER_MODE;
    DString      m_MERMAID_JS_URL;
    StringVector m_MERMAIDFILE_DIRS;
    int          m_DOT_GRAPH_MAX_NODES;
    int          m_MAX_DOT_GRAPH_DEPTH;
    bool         m_GENERATE_LEGEND;
    bool         m_DOT_CLEANUP;
    DString      m_MSCGEN_TOOL;
    StringVector m_MSCFILE_DIRS;
};

#endif
