65 return compileOptions(def,langId1,value1,langId2,value2,langId3,value3)+
75 return compileOptions(def,langId1,value1,langId2,value2,langId3,value3,langId4,value4)+
83 if (visible.
isEmpty())
return defVal;
84 if (visible.
at(0)==
'$' && visible.
length()>1)
87 const ConfigValues::Info *opt = ConfigValues::instance().get(
id);
88 if (opt && opt->type==ConfigValues::Info::Bool)
90 return ConfigValues::instance().*(opt->value.b);
92 else if (opt && opt->type==ConfigValues::Info::String)
94 return opt->getBooleanRepresentation();
98 err(
"found unsupported value '{}' for visible attribute in layout file, reverting to '{}'\n",
99 visible,(defVal?
"yes":
"no"));
104 if (visibleLow==
"no" || visibleLow==
"false" || visibleLow==
"0")
return false;
105 else if (visibleLow==
"yes" || visibleLow==
"true" || visibleLow==
"1")
return true;
108 err(
"found unsupported value '{}' for visible attribute in layout file, reverting to '{}'\n",
109 visible,(defVal?
"yes":
"no"));
123 e->updateVisibility(
this);
129 e->updateVisibility(
this);
142 if (result)
return result;
143 if (entry->kind()==
kind && (file==
QCString() || entry->baseFile()==file))
154 if ((
kind()!=LayoutNavEntry::User &&
kind()!=LayoutNavEntry::UserGroup) ||
166 auto dfAstImpl =
dynamic_cast<const DocNodeAST*
>(dfAst.get());
167 const DocRef *df = std::get_if<DocRef>(&dfAstImpl->root);
185 msg(
"explicit link request to '{}' in layout file '{}' could not be resolved\n",
url.
mid(5),
Config_getString(LAYOUT_FILE));
204 void error(
const std::string &fileName,
int lineNr,
const std::string &
msg)
214 if (
m_part!=LayoutDocManager::Undefined)
216 auto elem = std::make_unique<LayoutDocEntrySimple>(k,
id,isVisible);
231 if (userTitle.
isEmpty()) userTitle = title;
232 if (
m_part!=LayoutDocManager::Undefined)
244 if (userTitle.
isEmpty()) userTitle = title;
245 if (userSubscript.
isEmpty()) userSubscript = subscript;
247 if (
m_part!=LayoutDocManager::Undefined)
257 if (userTitle.
isEmpty()) userTitle = title;
260 if (
m_part!=LayoutDocManager::Undefined)
270 static const reg::Ex re(R
"((\d+)\.(\d+))");
306 static struct NavEntryMap
317 LayoutNavEntry::MainPage,
324 LayoutNavEntry::Pages,
331 LayoutNavEntry::Topics,
338 LayoutNavEntry::Modules,
345 LayoutNavEntry::ModuleList,
352 LayoutNavEntry::ModuleMembers,
359 LayoutNavEntry::Namespaces,
366 LayoutNavEntry::NamespaceList,
372 {
"namespacemembers",
373 LayoutNavEntry::NamespaceMembers,
380 LayoutNavEntry::Concepts,
387 LayoutNavEntry::ClassIndex,
394 LayoutNavEntry::Classes,
401 LayoutNavEntry::ClassList,
408 LayoutNavEntry::ClassHierarchy,
412 hasGraphicalHierarchy ?
"inherits" :
"hierarchy"
415 LayoutNavEntry::ClassMembers,
422 LayoutNavEntry::InterfaceIndex,
429 LayoutNavEntry::Interfaces,
433 "annotatedinterfaces"
436 LayoutNavEntry::InterfaceList,
440 "annotatedinterfaces"
442 {
"interfacehierarchy",
443 LayoutNavEntry::InterfaceHierarchy,
447 hasGraphicalHierarchy ?
"interfaceinherits" :
"interfacehierarchy"
450 LayoutNavEntry::StructIndex,
457 LayoutNavEntry::Structs,
464 LayoutNavEntry::StructList,
471 LayoutNavEntry::ExceptionIndex,
478 LayoutNavEntry::Exceptions,
482 "annotatedexceptions"
485 LayoutNavEntry::ExceptionList,
489 "annotatedexceptions"
491 {
"exceptionhierarchy",
492 LayoutNavEntry::ExceptionHierarchy,
496 hasGraphicalHierarchy ?
"exceptioninherits" :
"exceptionhierarchy"
499 LayoutNavEntry::Files,
506 LayoutNavEntry::FileList,
513 LayoutNavEntry::FileGlobals,
520 LayoutNavEntry::Examples,
527 LayoutNavEntry::User,
534 LayoutNavEntry::UserGroup,
551 while (mapping[i].typeStr)
553 if (mapping[i].typeStr==type)
557 if (mapping[i].typeStr==
nullptr)
566 warn_layout(fileName,
m_locator->
lineNr(),
"the type '{}' is not supported for the entry tag within a navindex! Check your layout file!",type);
572 QCString baseFile = mapping[i].baseFile;
577 title = mapping[i].mainName;
580 title = mapping[i].subName;
587 intro = mapping[i].intro;
590 if (mapping[i].kind==LayoutNavEntry::User && !url.
isEmpty())
594 else if (kind==LayoutNavEntry::UserGroup)
635 m_part = LayoutDocManager::Undefined;
642 if (
m_part!=LayoutDocManager::Undefined)
655 bool isVisible =
true;
658 if (lde->kind() == LayoutDocEntry::MemberDefStart)
664 if (
m_part!=LayoutDocManager::Undefined)
675 if (
m_part!=LayoutDocManager::Undefined)
687 bool isVisible =
true;
690 if (lde->kind() == LayoutDocEntry::MemberDeclStart)
696 if (
m_part!=LayoutDocManager::Undefined)
732template<
class...Args>
738template<
class...Args>
746template<
class...Args>
749 const std::function<
QCString()> &title
755template<
class...Args>
758 const std::function<
QCString()> &title
764template<
class...Args>
767 const std::function<
QCString()> &title,
768 const std::function<
QCString()> &subtitle
774template<
class...Args>
784template<
class...Args>
787 return [=](
LayoutParser &parser,
const std::string &id) { (parser.*fn)(
id); };
1365 it->second.startCb(*
this,it->first,attrib);
1390 it->second.endCb(*
this,it->first+
" end");
1403 std::array<LayoutDocEntryList,LayoutDocManager::NrParts>
docEntries;
1422 handlers.
endElement = [&layoutParser](
const std::string &name) { layoutParser.
endElement(name); };
1423 handlers.
error = [&layoutParser](
const std::string &fileName,
int lineNr,
const std::string &
msg) { layoutParser.
error(fileName,lineNr,
msg); };
1426 constexpr auto layoutFile =
"layout_default.xml";
1429 [&]() { DebugLex::print(Debug::Lex_xml,
"Entering",
"libxml/xml.l",layoutFile); },
1430 [&]() { DebugLex::print(Debug::Lex_xml,
"Finished",
"libxml/xml.l",layoutFile); }
1445 return d->docEntries[
static_cast<int>(part)];
1458 auto ptr = std::make_unique<LayoutNavEntry>(
parent,k,vs,bf,tl,intro);
1459 auto child = ptr.get();
1460 parent->appendChild(std::move(ptr));
1466 auto &docEntry =
d->docEntries[
static_cast<int>(p)];
1467 docEntry.push_back(std::move(e));
1477 handlers.
endElement = [&layoutParser](
const std::string &name) { layoutParser.
endElement(name); };
1478 handlers.
error = [&layoutParser](
const std::string &fn,
int lineNr,
const std::string &
msg) { layoutParser.
error(fn,lineNr,
msg); };
1499 if (
d->majorVersion>=2)
1507 d->docEntries.swap(layoutDocManager.
d->docEntries);
1508 d->rootNav.swap(layoutDocManager.
d->rootNav);
1514 for (
auto &list :
d->docEntries)
1516 auto it = list.begin();
1517 while (it!=list.end())
1519 if (*it==
nullptr || !(*it)->visible())
1521 it = list.erase(it);
1533 return d->majorVersion;
1538 return d->minorVersion;
1546 if (root->
id()==
id)
return root;
1547 for (
auto &child : root->
children())
1550 if (childNavEntry)
return childNavEntry;
1559 using IdSet = std::unordered_set<std::string>;
1560 using IdMap = std::unordered_map<std::string,size_t>;
1563 for (
const auto &e : tree->
children())
1565 set.insert(e->id());
1569 auto prepareMap = [](
const LayoutNavEntry *tree,
const IdSet &set, IdMap &map) {
1570 for (
size_t i=0; i<tree->
children().size(); i++)
1572 std::string
id = tree->
children()[i]->id();
1573 auto it = set.find(
id);
1574 if (it != set.end())
1581 IdSet sourceSet, targetSet;
1582 prepareSet(sourceTree,sourceSet);
1583 prepareSet(targetTree,targetSet);
1585 IdMap sourceMap, targetMap;
1586 prepareMap(targetTree,sourceSet,targetMap);
1587 prepareMap(sourceTree,targetSet,sourceMap);
1590 std::vector<size_t> insertionList;
1591 for (
size_t i=0; i<sourceTree->
children().size(); i++)
1593 std::string
id = sourceTree->
children()[i]->id();
1597 size_t minIdx = targetTree->
children().size();
1598 for (
const auto &kv : sourceMap)
1602 size_t idx = targetMap[kv.first];
1609 insertionList.push_back(minIdx);
1614 size_t idx = sourceTree->
children().size()-1;
1615 for (
auto it=insertionList.rbegin(); it!=insertionList.rend(); ++it, idx--)
1617 std::string
id = sourceTree->
children()[idx]->id();
1618 if (targetSet.find(
id)==targetSet.end())
1625 for (
auto &targetChild : targetTree->
children())
1642 using IdSet = std::unordered_set<std::string>;
1643 using IdMap = std::unordered_map<std::string,size_t>;
1647 for (
const auto &e : list)
1650 set.insert(e->id());
1656 for (
size_t i=0; i<list.size(); i++)
1658 std::string
id = list[i]->id();
1659 auto it = set.find(
id);
1660 if (it != set.end())
1668 IdSet sourceSet, targetSet;
1670 prepareSet(sourceList,sourceSet);
1672 prepareSet(targetList,targetSet);
1674 IdMap sourceMap, targetMap;
1676 prepareMap(targetList,sourceSet,targetMap);
1678 prepareMap(sourceList,targetSet,sourceMap);
1681 std::vector<size_t> insertionList;
1682 for (
size_t i=0; i<sourceList.size(); i++)
1684 std::string
id = sourceList[i]->id();
1688 size_t minIdx = targetList.size();
1689 for (
const auto &kv : sourceMap)
1693 size_t idx = targetMap[kv.first];
1702 insertionList.push_back(minIdx);
1707 size_t idx = sourceList.size()-1;
1708 for (
auto it=insertionList.rbegin(); it!=insertionList.rend(); ++it, idx--)
1710 std::string
id = sourceList[idx]->id();
1712 if (targetSet.find(
id)==targetSet.end())
1716 warn_layout(fileName,1,
"User defined layout misses entry '{}'. Using default value.",
id);
1717 targetList.insert(targetList.begin()+*it, std::move(sourceList[idx]));
1725 for (
size_t i=0; i<
d->docEntries.size(); i++)
1741 t <<
substitute(layout_default,
"$doxygenversion",getDoxygenVersion());
1745 err(
"Failed to open file {} for writing!\n",fileName);
1760 int s=0,e=input.
find(
'|');
1761 if (e==-1)
return input;
1766 e=input.
find(
'|',s);
1767 int i=input.
find(
'=',s);
1772 if (e==-1) e=
static_cast<int>(input.
length());
1773 return input.
mid(i+1,e-i-1);
1776 return input.
left(e1);
1812 indentStr.
fill(
' ',indent);
1815 for (
const auto &e : root->
children())
1824 bool extraIndent =
false;
1830 for (
const auto &e : mgr.rootNavEntry()->children())
1835 for (
int i = 0; i < LayoutDocManager::NrParts; i++)
1842 if (lde->kind() == LayoutDocEntry::MemberDeclEnd || lde->kind() == LayoutDocEntry::MemberDefEnd) extraIndent =
false;
1844 extraIndent?
" " :
"",lde->entryToString(), ldes->visible());
1845 if (lde->kind() == LayoutDocEntry::MemberDeclStart || lde->kind() == LayoutDocEntry::MemberDefStart) extraIndent =
true;
1850 extraIndent?
" " :
"",lde->entryToString(),lmdecl->visible(),lmdecl->type.to_string());
1855 extraIndent?
" " :
"",lde->entryToString(),lmdef->visible(),lmdef->type.to_string());
static bool isFlagSet(const DebugMask mask)
static void print(DebugMask mask, int prio, fmt::format_string< Args... > fmt, Args &&... args)
static void print(Debug::DebugMask mask, const char *state, const char *lexName, const char *fileName)
Class representing the abstract syntax tree of a documentation block.
Node representing a reference to some item.
std::array< LayoutDocEntryList, LayoutDocManager::NrParts > docEntries
Singleton providing access to the (user configurable) layout of the documentation.
void mergeNavEntries(LayoutDocManager &manager)
static std::string partToString(int k)
std::unique_ptr< Private > d
LayoutNavEntry * createChildNavEntry(LayoutNavEntry *root, LayoutNavEntry::Kind k, bool vs, const QCString &bf, const QCString &tl, const QCString &intro)
append a new node as a child to root.
static LayoutDocManager & instance()
Returns a reference to this singleton.
void mergeDocEntries(const QCString &fileName, LayoutDocManager &manager)
void parse(const QCString &fileName, const char *data=nullptr)
Parses a user provided layout.
friend class LayoutParser
void addEntry(LayoutPart p, LayoutDocEntryPtr &&e)
LayoutNavEntry * rootNavEntry() const
returns the (invisible) root of the navigation tree.
void removeInvisibleDocEntries()
const LayoutDocEntryList & docEntries(LayoutPart part) const
Returns the list of LayoutDocEntry's in representation order for a given page identified by part.
void startMemberDefEntry(const std::string &id, const XMLHandlers::Attributes &attrib, MemberListType type, const QCString &title, const QCString &)
void endTop(const std::string &)
void endNavIndex(const std::string &)
void setDocumentLocator(const XMLLocator *locator)
static int m_userGroupCount
void startSimpleEntry(LayoutDocEntry::Kind k, const std::string &id, const XMLHandlers::Attributes &attrib)
void startNavIndex(const std::string &, const XMLHandlers::Attributes &)
void startSectionEntry(LayoutDocEntry::Kind k, const std::string &id, const XMLHandlers::Attributes &attrib, const QCString &title)
LayoutParser(LayoutDocManager &manager)
void error(const std::string &fileName, int lineNr, const std::string &msg)
void startTop(const std::string &, const XMLHandlers::Attributes &attrib, LayoutDocManager::LayoutPart part, const QCString &scope, LayoutNavEntry::Kind nav)
const XMLLocator * m_locator
void startMemberDecl(const std::string &id, const XMLHandlers::Attributes &attrib)
void endMemberDecl(const std::string &id)
void endMemberDef(const std::string &id)
void endNavEntry(const std::string &)
LayoutDocManager & m_layoutDocManager
void startNavEntry(const std::string &, const XMLHandlers::Attributes &attrib)
void startMemberDef(const std::string &id, const XMLHandlers::Attributes &attrib)
void endElement(const std::string &name)
LayoutNavEntry * m_rootNav
void startLayout(const std::string &, const XMLHandlers::Attributes &attrib)
void startElement(const std::string &name, const XMLHandlers::Attributes &attrib)
LayoutDocManager::LayoutPart m_part
void startMemberDeclEntry(const std::string &id, const XMLHandlers::Attributes &attrib, MemberListType type, const QCString &title, const QCString &subscript)
Wrapper class for the MemberListType type.
This is an alternative implementation of QCString.
size_t length() const
Returns the length of the string, not counting the 0-terminator.
bool startsWith(const char *s) const
QCString mid(size_t index, size_t len=static_cast< size_t >(-1)) const
char & at(size_t i)
Returns a reference to the character at index i.
int find(char c, int index=0, bool cs=true) const
bool isEmpty() const
Returns true iff the string is empty.
QCString stripWhiteSpace() const
returns a copy of this string with leading and trailing whitespace removed
QCString fill(char c, int len=-1)
Fills a string with a predefined character.
const std::string & str() const
QCString & setNum(short n)
QCString right(size_t len) const
QCString & sprintf(const char *format,...)
const char * data() const
Returns a pointer to the contents of the string in the form of a 0-terminated C string.
std::string_view view() const
int findRev(char c, int index=-1, bool cs=true) const
QCString left(size_t len) const
static ResourceMgr & instance()
Returns the one and only instance of this class.
QCString getAsString(const QCString &name) const
Gets the resource data as a C string.
Text streaming class that buffers data.
virtual QCString trStaticPrivateAttribs()=0
virtual QCString trCompoundListDescription()=0
virtual QCString trClassHierarchyDescription()=0
virtual QCString trTopics()=0
virtual QCString trPrivateTypes()=0
virtual QCString trDataTypes()=0
virtual QCString trMemberFunctionDocumentationFortran()=0
virtual QCString trPackageListDescription()=0
virtual QCString trExceptionHierarchy()=0
virtual QCString trPrivateMembers()=0
virtual QCString trDirectories()=0
virtual QCString trClasses()=0
virtual QCString trStaticPackageAttribs()=0
virtual QCString trPrivateSlots()=0
virtual QCString trStaticProtectedAttribs()=0
virtual QCString trPropertyDocumentation()=0
virtual QCString trSequences()=0
virtual QCString trExceptionListDescription()=0
virtual QCString trEventDocumentation()=0
virtual QCString trInterfaceIndex()=0
virtual QCString trDataMemberDocumentation()=0
virtual QCString trFunctionAndProc()=0
virtual QCString trModulesList()=0
virtual QCString trModules()=0
virtual QCString trFileListDescription(bool extractAll)=0
virtual QCString trConceptList()=0
virtual QCString trModulesDescription()=0
virtual QCString trFunctionDocumentation()=0
virtual QCString trMemberTypedefDocumentation()=0
virtual QCString trConcept(bool first_capital, bool singular)=0
virtual QCString trMethodDocumentation()=0
virtual QCString trConstantDocumentation()=0
virtual QCString trCompoundMembersDescription(bool extractAll)=0
virtual QCString trInterfaceList()=0
virtual QCString trVariables()=0
virtual QCString trProtectedMembers()=0
virtual QCString trStructs()=0
virtual QCString trPackageFunctions()=0
virtual QCString trFunctions()=0
virtual QCString trPublicMembers()=0
virtual QCString trExceptionHierarchyDescription()=0
virtual QCString trRelatedSymbolsSubscript()=0
virtual QCString trInstanceMethods()=0
virtual QCString trProtectedSlots()=0
virtual QCString trModulesListDescription(bool extractAll)=0
virtual QCString trPackageMembers()=0
virtual QCString trDataMembers()=0
virtual QCString trPublicTypes()=0
virtual QCString trConstantGroups()=0
virtual QCString trPackages()=0
virtual QCString trSliceInterfaces()=0
virtual QCString trEnumerationValues()=0
virtual QCString trOperationDocumentation()=0
virtual QCString trStaticPrivateMembers()=0
virtual QCString trPublicSlots()=0
virtual QCString trVariableDocumentation()=0
virtual QCString trExceptions()=0
virtual QCString trOperations()=0
virtual QCString trConstants()=0
virtual QCString trClassMethods()=0
virtual QCString trProtectedAttribs()=0
virtual QCString trSubprogramDocumentation()=0
virtual QCString trPrivateAttribs()=0
virtual QCString trEnumerationTypeDocumentation()=0
virtual QCString trRelatedPagesDescription()=0
virtual QCString trDesignUnitHierarchy()=0
virtual QCString trCompoundMembers()=0
virtual QCString trInterfaceHierarchyDescription()=0
virtual QCString trDetailedDescription()=0
virtual QCString trExamplesDescription()=0
virtual QCString trCompoundIndex()=0
virtual QCString trModulesMembers()=0
virtual QCString trTypedefDocumentation()=0
virtual QCString trModulesMemberDescription(bool extractAll)=0
virtual QCString trMemberDataDocumentation()=0
virtual QCString trInterfaceHierarchy()=0
virtual QCString trClassDocumentation()=0
virtual QCString trExportedModules()=0
virtual QCString trExceptionList()=0
virtual QCString trCompounds()=0
virtual QCString trRelatedPages()=0
virtual QCString trInterfaces()=0
virtual QCString trDefineDocumentation()=0
virtual QCString trTypeDocumentation()=0
virtual QCString trSignals()=0
virtual QCString trStaticProtectedMembers()=0
virtual QCString trClassHierarchy()=0
virtual QCString trNamespaceList()=0
virtual QCString trSequenceDocumentation()=0
virtual QCString trMemberEnumerationDocumentation()=0
virtual QCString trServices()=0
virtual QCString trCompoundListFortran()=0
virtual QCString trEnumerations()=0
virtual QCString trProtectedTypes()=0
virtual QCString trModule(bool first_capital, bool singular)=0
virtual QCString trMemberFunctionDocumentation()=0
virtual QCString trFriends()=0
virtual QCString trFileMembers()=0
virtual QCString trDesignUnitListDescription()=0
virtual QCString trNamespaceListDescription(bool extractAll)=0
virtual QCString trCompoundIndexFortran()=0
virtual QCString trStructIndex()=0
virtual QCString trDictionaryDocumentation()=0
virtual QCString trTopicListDescription()=0
virtual QCString trDesignUnitList()=0
virtual QCString trVhdlType(VhdlSpecifier type, bool single)=0
virtual QCString trFileList()=0
virtual QCString trPackageAttribs()=0
virtual QCString trConceptDefinition()=0
virtual QCString trEvents()=0
virtual QCString trFileMembersDescription(bool extractAll)=0
virtual QCString trNamespaceMemberDescription(bool extractAll)=0
virtual QCString trExamples()=0
virtual QCString trPackageTypes()=0
virtual QCString trNamespaceMembers()=0
virtual QCString trStructList()=0
virtual QCString trSubprograms()=0
virtual QCString trStructListDescription()=0
virtual QCString trPublicAttribs()=0
virtual QCString trFile(bool first_capital, bool singular)=0
virtual QCString trDictionaries()=0
virtual QCString trMainPage()=0
virtual QCString trInterfaceListDescription()=0
virtual QCString trStaticPublicMembers()=0
virtual QCString trEnumerationValueDocumentation()=0
virtual QCString trRelatedSymbols()=0
virtual QCString trNamespaces()=0
virtual QCString trCompoundListDescriptionFortran()=0
virtual QCString trCompoundMembersFortran()=0
virtual QCString trStaticPackageFunctions()=0
virtual QCString trConstructorDocumentation()=0
virtual QCString trDesignUnitMembers()=0
virtual QCString trExceptionIndex()=0
virtual QCString trStaticPublicAttribs()=0
virtual QCString trDesignUnits()=0
virtual QCString trCompoundList()=0
virtual QCString trRelatedSymbolDocumentation()=0
virtual QCString trDesignUnitIndex()=0
virtual QCString trProperties()=0
virtual QCString trConceptListDescription(bool extractAll)=0
virtual QCString trCompoundMembersDescriptionFortran(bool extractAll)=0
virtual QCString trPackageList()=0
virtual QCString trTypedefs()=0
virtual QCString trDefines()=0
Event handlers that can installed by the client and called while parsing a XML document.
std::unordered_map< std::string, std::string > Attributes
std::function< EndElementType > endElement
handler invoked when a closing tag has been found
std::function< StartElementType > startElement
handler invoked when an opening tag has been found
static std::string value(const Attributes &attrib, const std::string &key)
std::function< ErrorType > error
handler invoked when the parser encounters an error
virtual int lineNr() const =0
virtual std::string fileName() const =0
void parse(const char *fileName, const char *inputString, bool debugEnabled, std::function< void()> debugStart, std::function< void()> debugEnd, std::function< Transcode > transcoder=[](std::string &s, const char *){ return true;})
Class representing a regular expression.
Object representing the matching results.
#define Config_getBool(name)
#define Config_getString(name)
constexpr DocNodeVariant * parent(DocNodeVariant *n)
returns the parent node of a given node n or nullptr if the node has no parent.
IDocParserPtr createDocParser()
factory function to create a parser
IDocNodeASTPtr createRef(IDocParser &parserIntf, const QCString &target, const QCString &context, const QCString &srcFile, int srcLine)
Translator * theTranslator
static void mergeNavTreeNodesRec(LayoutNavEntry *targetTree, LayoutNavEntry *sourceTree)
static bool elemIsVisible(const XMLHandlers::Attributes &attrib, bool defVal=true)
static LayoutNavEntry * findNavEntryRec(LayoutNavEntry *root, const std::string &id)
void writeDefaultLayoutFile(const QCString &fileName)
QCString compileOptions(const QCString &def)
static void printNavLayout(LayoutNavEntry *root, int indent)
QCString extractLanguageSpecificTitle(const QCString &input, SrcLangExt lang)
static void mergeDocEntryLists(const QCString &fileName, LayoutDocEntryList &targetList, LayoutDocEntryList &sourceList)
std::unique_ptr< LayoutDocEntry > LayoutDocEntryPtr
std::vector< LayoutDocEntryPtr > LayoutDocEntryList
#define warn_layout(file, line, fmt,...)
static auto startCb(void(LayoutParser::*fn)(Args...))
static const std::map< std::string, ElementCallbacks > g_elementHandlers
static auto endCb(void(LayoutParser::*fn)(Args...))
bool match(std::string_view str, Match &match, const Ex &re)
Matches a given string str for a match against regular expression re.
QCString substitute(const QCString &s, const QCString &src, const QCString &dst)
substitute all occurrences of src in s by dst
const char * qPrint(const char *s)
Represents of a member declaration list with configurable title and subtitle.
QCString title(SrcLangExt lang) const
QCString subtitle(SrcLangExt lang) const
Represents of a member definition list with configurable title.
QCString title(SrcLangExt lang) const
QCString title(SrcLangExt lang) const
Represents of a piece of a documentation page without configurable parts.
bool visible() const override
Base class for the layout of a navigation item at the top of the HTML pages.
LayoutNavEntryList m_children
const LayoutNavEntryList & children() const
void updateVisibility(LayoutNavEntry *parent)
void appendChild(std::unique_ptr< LayoutNavEntry > &&e)
void insertChild(size_t pos, std::unique_ptr< LayoutNavEntry > &&e)
LayoutNavEntry * parent() const
QCString baseFile() const
LayoutNavEntry * find(LayoutNavEntry::Kind k, const QCString &file=QCString()) const
LayoutNavEntry(LayoutNavEntry *parent, Kind k, bool vs, const QCString &bf, const QCString &tl, const QCString &intro)
std::string navToString() const
std::function< void(LayoutParser &, const std::string &)> EndCallback
std::function< void(LayoutParser &, const std::string &, const XMLHandlers::Attributes &)> StartCallback
This file contains a number of basic enums and types.
QCString externalRef(const QCString &relPath, const QCString &ref, bool href)
bool transcodeCharacterStringToUTF8(std::string &input, const char *inputEncoding)
bool openOutputFile(const QCString &outFile, std::ofstream &f)
QCString fileToString(const QCString &name, bool filter, bool isSourceCode)
void addHtmlExtensionIfMissing(QCString &fName)
A bunch of utility functions.