24 Lox_Info(
"Reading doxygen ini file: ", filePath )
26 std::ifstream ifstream;
29 if ( !ifstream.is_open() || errno ) {
52 bool tmpCreateSubDirs=
false;
54 auto finalizeLogicalLine = [&](
Substring logical) {
56 bool inQuotes =
false;
58 for (
int i = 0; i < logical.Length(); ++i) {
59 nchar c = logical.CharAt(i);
60 if (c ==
'"') inQuotes = !inQuotes;
61 if (c ==
'#' && !inQuotes) { cutPos = i;
break; }
64 logical = logical.Substring(0, cutPos);
66 if (logical.IsEmpty())
70 integer eqPos = logical.IndexOf(
'=');
71 if (eqPos < 0)
return;
78 if (s.Length() >= 2 && s.CharAtStart() ==
'"' && s.CharAtEnd() ==
'"') {
81 s = s.Substring(0, s.Length()-1);
85 auto addListTokensStr = [&](
Substring src,
105 auto addListTokensPath = [&](
Substring src,
127 if (key.
Equals(
"OUTPUT_DIRECTORY")) {
129 tmpOutputDirectory = val;
131 else if (key.
Equals(
"HTML_OUTPUT")) {
137 else if (key.
Equals(
"CREATE_SUBDIRS")) { tmpCreateSubDirs = val.
Equals<
CHK,lang::Case::Ignore>(
"YES"); }
144 else if (key.
Equals(
"FILE_PATTERNS")) {
152 else if (key.
Equals(
"TAGFILES")) {
190 else if (key.
Equals(
"GENERATE_TAGFILE")) {
197 while( !reader.
IsEOF() ) {
198 reader.
Read(lineBuf);
217 finalizeLogicalLine(logical);
221 if (tmpTagFilePath.
IsEmpty()) {
241 if (!tmpCreateSubDirs)
247 p->Add(
"Dumping contents of doxyfile");
255 p->Add(
"{} {!ATab} {}\n", it.TagFilePath,
"->", it.BaseURL);
259 p->Add(
"InputPaths:");
267 p->Add(
"FilePatterns: " );
272 p->Add(
"ExcludePaths:");
280 p->Add(
"ExcludePatterns:");
#define ALIB_CALLER_NULLED
#define Lox_SetDomain(...)
constexpr const TChar * Terminate() const
void DbgDisableBufferReplacementWarning()
void SetLength(integer newLength)
constexpr integer Length() const
constexpr bool IsEmpty() const
TChar CharAtStart() const
constexpr bool IsNotNull() const
constexpr bool IsNotEmpty() const
integer IndexOf(const TString &needle, integer startIdx=0, integer endIdx=strings::MAX_LEN) const
TString< TChar > Substring(integer regionStart, integer regionLength=MAX_LEN) const
bool Equals(const TString< TChar > &rhs) const
TSubstring & TrimStart(const TCString< TChar > &whiteSpaces=CStringConstantsTraits< TChar >::DefaultWhitespaces())
integer ConsumeChars(integer regionLength, TAString< TChar, TAllocator > &target, integer separatorWidth=0)
bool ConsumeDec(std::integral auto &result, TNumberFormat< TChar > *numberFormat=nullptr)
TSubstring & Trim(const TCString< TChar > &whiteSpaces=CStringConstantsTraits< TChar >::DefaultWhitespaces())
TString< TChar > ConsumeToken(TChar separator=',', lang::Inclusion includeSeparator=lang::Inclusion::Include)
TSubstring & TrimEnd(const TCString< TChar > &whiteSpaces=CStringConstantsTraits< TChar >::DefaultWhitespaces())
void Read(NAString &target)
void SetStream(::std::istream *is)
static int IsAbsolute(const PathString &path)
strings::TString< PathCharType > PathString
constexpr PathCharType DIRECTORY_SEPARATOR
monomem::TMonoAllocator< lang::HeapAllocator > MonoAllocator
strings::compatibility::std::IStreamReader IStreamReader
containers::List< T, MonoAllocator, TRecycling > ListMA
LocalString< 4096 > String4K
strings::TString< character > String
strings::TSubstring< character > Substring
exceptions::Exception Exception
LocalString< 512 > String512
@ CantOpenDoxyfile
Doxygen INI-file (usually Doxyfile) not found.
@ NoTagfileGeneratedByDoxyfile
alib::system::PathString TagFilePath
Path to the tag-file.
alib::ListMA< alib::system::PathString > ExcludePaths
alib::String HtmlFileExtension
alib::String FilePatterns
alib::ListMA< TagFileInfo > TagFiles
unsigned HtmlSubfolderDepth
alib::system::PathString HTMLFilePath
alib::ListMA< alib::String > ExcludePatterns
alib::ListMA< alib::system::PathString > InputPaths
void Load(const alib::system::Path &filePath)
void Dump() const
Writes the contents of this file to the console.