Doxygen
Loading...
Searching...
No Matches
ConceptDefImpl Class Referencefinal
Inheritance diagram for ConceptDefImpl:
Collaboration diagram for ConceptDefImpl:

Public Member Functions

 ConceptDefImpl (const DString &fileName, int startLine, int startColumn, const DString &name, const DString &tagRef=DString(), const DString &tagFile=DString())
 ~ConceptDefImpl () override
DefType definitionType () const override
CodeSymbolType codeSymbolType () const override
DString getOutputFileBase () const override
bool hasDetailedDescription () const override
DString displayName (bool includeScope=true) const override
const IncludeInfoincludeInfo () const override
ArgumentList getTemplateParameterList () const override
DString anchor () const override
bool isLinkableInProject () const override
bool isLinkable () const override
DString initializer () const override
void writeDeclarationLink (OutputList &ol, bool &found, const DString &header, bool localNames) const override
const NamespaceDefgetNamespaceDef () const override
const FileDefgetFileDef () const override
const ModuleDefgetModuleDef () const override
DString title () const override
int groupId () const override
Parts conceptParts () const override
void setIncludeFile (FileDef *fd, const DString &incName, bool local, bool force) override
void setTemplateArguments (const ArgumentList &al) override
void setNamespace (NamespaceDef *nd) override
void setFileDef (FileDef *fd) override
void setModuleDef (ModuleDef *mod) override
void writeTagFile (TextStream &) override
void writeDocumentation (OutputList &) override
void setInitializer (const DString &init) override
void findSectionsInDocumentation () override
void setGroupId (int id) override
void addDocPart (const DString &doc, int lineNr, int colNr) override
void addCodePart (const DString &code, int lineNr, int colNr) override
void addListReferences () override
void addRequirementReferences () override
void writeBriefDescription (OutputList &) const
void writeAuthorSection (OutputList &ol) const
void writeIncludeFiles (OutputList &ol) const
void writeDetailedDescription (OutputList &ol, const DString &title) const
void writeDefinition (OutputList &ol, const DString &title) const
void addConceptAttributes (OutputList &ol) const
Public Member Functions inherited from DefinitionMixin< ConceptDefMutable >
 DefinitionMixin (const DString &defFileName, int defLine, int defColumn, const DString &name, const char *b=nullptr, const char *d=nullptr, bool isSymbol=true)
DefinitionMixinoperator= (const DefinitionMixin &other)
 ~DefinitionMixin () override=default
bool isAlias () const override
const DStringname () const override
bool isAnonymous () const override
const DStringlocalName () const override
DString qualifiedName () const override
DString symbolName () const override
DString getSourceFileBase () const override
DString getSourceAnchor () const override
DString documentation () const override
int docLine () const override
DString docFile () const override
DString briefDescription (bool abbreviate=false) const override
DString briefDescriptionAsTooltip () const override
int briefLine () const override
DString inbodyDocumentation () const override
DString inbodyFile () const override
int inbodyLine () const override
DString briefFile () const override
DString getDefFileName () const override
DString getDefFileExtension () const override
int getDefLine () const override
int getDefColumn () const override
bool hasDocumentation () const override
bool hasUserDocumentation () const override
bool isVisibleInProject () const override
bool isVisible () const override
bool isHidden () const override
bool isArtificial () const override
bool isExported () const override
DString getReference () const override
bool isReference () const override
DString externalReference (const DString &relPath) const override
int getStartDefLine () const override
int getStartBodyLine () const override
int getEndBodyLine () const override
const FileDefgetBodyDef () const override
SrcLangExt getLanguage () const override
const GroupListpartOfGroups () const override
bool isLinkableViaGroup () const override
const RefItemVectorxrefListItems () const override
const RequirementRefsrequirementReferences () const override
const DefinitionfindInnerCompound (const DString &name) const override
DefinitiongetOuterScope () const override
const MemberVectorgetReferencesMembers () const override
const MemberVectorgetReferencedByMembers () const override
bool hasSections () const override
bool hasSources () const override
bool hasBriefDescription () const override
DString id () const override
const SectionRefsgetSectionRefs () const override
void setName (const DString &name) override
void setId (const DString &name) override
void setDefFile (const DString &df, int defLine, int defColumn) override
void setDocumentation (const DString &doc, const DString &docFile, int docLine, bool stripWhiteSpace=true) override
void setBriefDescription (const DString &brief, const DString &briefFile, int briefLine) override
void setInbodyDocumentation (const DString &doc, const DString &docFile, int docLine) override
void setReference (const DString &r) override
void addSectionsToDefinition (const std::vector< const SectionInfo * > &anchorList) override
void setBodySegment (int defLine, int bls, int ble) override
void setBodyDef (const FileDef *fd) override
void addSourceReferencedBy (MemberDef *md, const DString &sourceRefName) override
void addSourceReferences (MemberDef *md, const DString &sourceRefName) override
void setRefItems (const RefItemVector &sli) override
void setRequirementReferences (const RequirementRefs &rqli) override
void mergeRefItems (Definition *def) override
void mergeReferences (const Definition *other) override
void mergeReferencedBy (const Definition *other) override
void addInnerCompound (Definition *def) override
void setOuterScope (Definition *def) override
void setHidden (bool b) override
void setArtificial (bool b) override
void setExported (bool b) override
void setLanguage (SrcLangExt lang) override
void writeSourceDef (OutputList &ol) const override
void writeInlineCode (OutputList &ol, const DString &scopeName) const override
bool hasSourceRefs () const override
bool hasSourceReffedBy () const override
void writeSourceRefs (OutputList &ol, const DString &scopeName) const override
void writeSourceReffedBy (OutputList &ol, const DString &scopeName) const override
bool hasRequirementRefs () const override
void writeRequirementRefs (OutputList &ol) const override
void makePartOfGroup (GroupDef *gd) override
void writeNavigationPath (OutputList &ol) const override
DString navigationPathAsString () const override
void writeQuickMemberLinks (OutputList &ol, const MemberDef *md) const override
void writeSummaryLinks (OutputList &ol) const override
void writePageNavigation (OutputList &ol) const override
DString pathFragment () const override
void writeDocAnchorsToTagFile (TextStream &fs) const override
void setLocalName (const DString &name) override
void writeToc (OutputList &ol, const LocalToc &lt) const override
void computeTooltip () override
void _setSymbolName (const DString &name) override
DString _symbolName () const override

Private Attributes

DString m_fileName
std::unique_ptr< IncludeInfom_incInfo
NamespaceDefm_nspace = nullptr
FileDefm_fileDef = nullptr
ModuleDefm_moduleDef = nullptr
ArgumentList m_tArgList
DString m_initializer
int m_groupId = -1
Parts m_parts

Additional Inherited Members

Public Types inherited from ConceptDef
enum class  PartType { Code , Doc }
using Parts = std::vector<Part>
Public Types inherited from Definition
enum  DefType {
  TypeClass = 0 , TypeFile = 1 , TypeNamespace = 2 , TypeModule = 3 ,
  TypeMember = 4 , TypeGroup = 5 , TypePackage = 6 , TypePage = 7 ,
  TypeDir = 8 , TypeConcept = 9
}

Detailed Description

Definition at line 31 of file conceptdef.cpp.

Constructor & Destructor Documentation

◆ ConceptDefImpl()

ConceptDefImpl::ConceptDefImpl ( const DString & fileName,
int startLine,
int startColumn,
const DString & name,
const DString & tagRef = DString(),
const DString & tagFile = DString() )

Definition at line 164 of file conceptdef.cpp.

165 : DefinitionMixin(fileName,startLine,startColumn,name)
166{
167 if (!tagFile.empty())
168 {
169 if (!tagRef.empty())
170 {
171 m_fileName = stripExtension(tagFile);
172 }
173 else
174 {
176 }
177 }
178 else
179 {
181 }
182 setReference(tagRef);
183}
DString m_fileName
DString()=default
bool empty() const
Returns true iff the string is empty (std::string compatible alias for isEmpty()).
Definition dstring.h:153
virtual const DString & name() const =0
DefinitionMixin(const DString &defFileName, int defLine, int defColumn, const DString &name, const char *b=nullptr, const char *d=nullptr, bool isSymbol=true)
virtual void setReference(const DString &r)=0
DString stripExtension(const DString &fName)
Definition util.cpp:4993
DString convertNameToFile(const DString &name, bool allowDots, bool allowUnderscore)
Definition util.cpp:3551

References DefinitionMixin< ConceptDefMutable >::DefinitionMixin(), DString::empty(), and DefinitionMixin< ConceptDefMutable >::name().

◆ ~ConceptDefImpl()

ConceptDefImpl::~ConceptDefImpl ( )
override

Definition at line 185 of file conceptdef.cpp.

186{
187}

Member Function Documentation

◆ addCodePart()

void ConceptDefImpl::addCodePart ( const DString & code,
int lineNr,
int colNr )
overridevirtual

Implements ConceptDefMutable.

Definition at line 785 of file conceptdef.cpp.

786{
787 m_parts.emplace_back(PartType::Code,code,lineNr,colNr);
788}

References ConceptDef::Code, and m_parts.

◆ addConceptAttributes()

void ConceptDefImpl::addConceptAttributes ( OutputList & ol) const

Definition at line 575 of file conceptdef.cpp.

576{
577 if (isExported())
578 {
581 ol.startLabels();
582 ol.writeLabel("export",false);
583 ol.endLabels();
585 }
586}
virtual bool isExported() const =0
void pushGeneratorState()
void disableAllBut(OutputType o)
void popGeneratorState()
void writeLabel(const DString &l, bool isLast)
Definition outputlist.h:740
void endLabels()
Definition outputlist.h:742
void startLabels()
Definition outputlist.h:738

References OutputList::disableAllBut(), OutputList::endLabels(), Html, DefinitionMixin< ConceptDefMutable >::isExported(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), OutputList::startLabels(), and OutputList::writeLabel().

Referenced by writeDocumentation().

◆ addDocPart()

void ConceptDefImpl::addDocPart ( const DString & doc,
int lineNr,
int colNr )
overridevirtual

Implements ConceptDefMutable.

Definition at line 780 of file conceptdef.cpp.

781{
782 m_parts.emplace_back(PartType::Doc,doc,lineNr,colNr);
783}

References ConceptDef::Doc, and m_parts.

◆ addListReferences()

void ConceptDefImpl::addListReferences ( )
overridevirtual

Implements ConceptDefMutable.

Definition at line 317 of file conceptdef.cpp.

318{
321 theTranslator->trConcept(true,true),
323 displayName(),
324 DString(),
325 this
326 );
327}
DString getOutputFileBase() const override
DString displayName(bool includeScope=true) const override
virtual const RefItemVector & xrefListItems() const =0
virtual DString qualifiedName() const =0
virtual DString trConcept(bool first_capital, bool singular)=0
Translator * theTranslator
Definition language.cpp:71
void addRefItem(const RefItemVector &sli, const DString &key, const DString &prefix, const DString &name, const DString &title, const DString &args, const Definition *scope)
Definition util.cpp:4872

References addRefItem(), displayName(), DString::DString(), getOutputFileBase(), DefinitionMixin< ConceptDefMutable >::qualifiedName(), theTranslator, Translator::trConcept(), and DefinitionMixin< ConceptDefMutable >::xrefListItems().

◆ addRequirementReferences()

void ConceptDefImpl::addRequirementReferences ( )
overridevirtual

Implements ConceptDefMutable.

Definition at line 329 of file conceptdef.cpp.

330{
332}
static RequirementManager & instance()
void addRequirementRefsForSymbol(const Definition *symbol)

References RequirementManager::addRequirementRefsForSymbol(), and RequirementManager::instance().

◆ anchor()

DString ConceptDefImpl::anchor ( ) const
overridevirtual

Returns the anchor within a page where this item can be found

Implements Definition.

Definition at line 209 of file conceptdef.cpp.

210{
211 return "";
212}

Referenced by writeDeclarationLink().

◆ codeSymbolType()

CodeSymbolType ConceptDefImpl::codeSymbolType ( ) const
inlineoverridevirtual

Used for syntax highlighting symbol class

Implements Definition.

Definition at line 41 of file conceptdef.cpp.

References Concept.

◆ conceptParts()

Parts ConceptDefImpl::conceptParts ( ) const
inlineoverridevirtual

Implements ConceptDef.

Definition at line 58 of file conceptdef.cpp.

58{ return m_parts; }

References m_parts.

◆ definitionType()

Definition::DefType ConceptDefImpl::definitionType ( ) const
overridevirtual

Use this for dynamic inspection of the type of the derived class

Implements Definition.

Definition at line 189 of file conceptdef.cpp.

190{
191 return TypeConcept;
192}

References Definition::TypeConcept.

◆ displayName()

DString ConceptDefImpl::displayName ( bool includeScope = true) const
overridevirtual

Returns the name of the definition as it appears in the output

Implements Definition.

Definition at line 214 of file conceptdef.cpp.

215{
216 return includeScope ? name() : localName();
217}
virtual const DString & localName() const =0

References DefinitionMixin< ConceptDefMutable >::localName(), and DefinitionMixin< ConceptDefMutable >::name().

Referenced by addListReferences(), title(), writeDeclarationLink(), and writeDocumentation().

◆ findSectionsInDocumentation()

void ConceptDefImpl::findSectionsInDocumentation ( )
overridevirtual

Implements ConceptDefMutable.

Definition at line 773 of file conceptdef.cpp.

774{
778}
virtual DString briefDescription(bool abbreviate=false) const =0
virtual DString documentation() const =0
virtual DString inbodyDocumentation() const =0
virtual DString docFile() const =0
void docFindSections(const DString &input, const Definition *d, const DString &fileName)

References DefinitionMixin< ConceptDefMutable >::briefDescription(), DefinitionMixin< ConceptDefMutable >::docFile(), docFindSections(), DefinitionMixin< ConceptDefMutable >::documentation(), and DefinitionMixin< ConceptDefMutable >::inbodyDocumentation().

◆ getFileDef()

const FileDef * ConceptDefImpl::getFileDef ( ) const
overridevirtual

Implements ConceptDef.

Definition at line 285 of file conceptdef.cpp.

286{
287 return m_fileDef;
288}
FileDef * m_fileDef

References m_fileDef.

◆ getModuleDef()

const ModuleDef * ConceptDefImpl::getModuleDef ( ) const
overridevirtual

Implements ConceptDef.

Definition at line 290 of file conceptdef.cpp.

291{
292 return m_moduleDef;
293}
ModuleDef * m_moduleDef

References m_moduleDef.

◆ getNamespaceDef()

const NamespaceDef * ConceptDefImpl::getNamespaceDef ( ) const
overridevirtual

Implements ConceptDef.

Definition at line 270 of file conceptdef.cpp.

271{
272 return m_nspace;
273}
NamespaceDef * m_nspace

References m_nspace.

◆ getOutputFileBase()

DString ConceptDefImpl::getOutputFileBase ( ) const
overridevirtual

Returns the base file name (without extension) of this definition. as it is referenced to/written to disk.

Implements Definition.

Definition at line 194 of file conceptdef.cpp.

195{
196 return m_fileName;
197}

References m_fileName.

Referenced by addListReferences(), writeBriefDescription(), writeDeclarationLink(), writeDocumentation(), and writeTagFile().

◆ getTemplateParameterList()

ArgumentList ConceptDefImpl::getTemplateParameterList ( ) const
overridevirtual

Implements ConceptDef.

Definition at line 224 of file conceptdef.cpp.

225{
226 return m_tArgList;
227}
ArgumentList m_tArgList

References m_tArgList.

◆ groupId()

int ConceptDefImpl::groupId ( ) const
overridevirtual

Implements ConceptDef.

Definition at line 307 of file conceptdef.cpp.

308{
309 return m_groupId;
310}

References m_groupId.

◆ hasDetailedDescription()

bool ConceptDefImpl::hasDetailedDescription ( ) const
overridevirtual

Implements ConceptDef.

Definition at line 199 of file conceptdef.cpp.

200{
201 bool repeatBrief = Config_getBool(REPEAT_BRIEF);
202 bool sourceBrowser = Config_getBool(SOURCE_BROWSER);
203 return ((!briefDescription().empty() && repeatBrief) ||
204 !documentation().empty() ||
205 (sourceBrowser && getStartBodyLine()!=-1 && getBodyDef())) ||
207}
virtual const FileDef * getBodyDef() const =0
virtual int getStartBodyLine() const =0
virtual bool hasRequirementRefs() const =0
#define Config_getBool(name)
Definition config.h:33

References DefinitionMixin< ConceptDefMutable >::briefDescription(), Config_getBool, DefinitionMixin< ConceptDefMutable >::documentation(), DefinitionMixin< ConceptDefMutable >::getBodyDef(), DefinitionMixin< ConceptDefMutable >::getStartBodyLine(), and DefinitionMixin< ConceptDefMutable >::hasRequirementRefs().

Referenced by writeBriefDescription(), and writeDetailedDescription().

◆ includeInfo()

const IncludeInfo * ConceptDefImpl::includeInfo ( ) const
overridevirtual

Implements ConceptDef.

Definition at line 219 of file conceptdef.cpp.

220{
221 return m_incInfo.get();
222}
std::unique_ptr< IncludeInfo > m_incInfo

References m_incInfo.

◆ initializer()

DString ConceptDefImpl::initializer ( ) const
overridevirtual

Implements ConceptDef.

Definition at line 456 of file conceptdef.cpp.

457{
458 return m_initializer;
459}
DString m_initializer

References m_initializer.

◆ isLinkable()

bool ConceptDefImpl::isLinkable ( ) const
overridevirtual

Returns true iff it is possible to link to this item. This can be a link to another project imported via a tag file.

Implements Definition.

Definition at line 237 of file conceptdef.cpp.

238{
239 return isLinkableInProject() || isReference();
240}
bool isLinkableInProject() const override
virtual bool isReference() const =0

References isLinkableInProject(), and DefinitionMixin< ConceptDefMutable >::isReference().

Referenced by writeDeclarationLink().

◆ isLinkableInProject()

bool ConceptDefImpl::isLinkableInProject ( ) const
overridevirtual

Returns true iff it is possible to link to this item within this project.

Implements Definition.

Definition at line 229 of file conceptdef.cpp.

230{
231 bool hideUndoc = Config_getBool(HIDE_UNDOC_CLASSES);
232 return (hasDocumentation() || !hideUndoc) && /* documented */
233 !isHidden() && /* not hidden */
234 !isReference(); /* not an external reference */
235}
virtual bool hasDocumentation() const =0
virtual bool isHidden() const =0

References Config_getBool, DefinitionMixin< ConceptDefMutable >::hasDocumentation(), DefinitionMixin< ConceptDefMutable >::isHidden(), and DefinitionMixin< ConceptDefMutable >::isReference().

Referenced by isLinkable().

◆ setFileDef()

void ConceptDefImpl::setFileDef ( FileDef * fd)
overridevirtual

Implements ConceptDefMutable.

Definition at line 275 of file conceptdef.cpp.

276{
277 m_fileDef=fd;
278}

References m_fileDef.

Referenced by writeDefinition().

◆ setGroupId()

void ConceptDefImpl::setGroupId ( int id)
overridevirtual

Implements ConceptDefMutable.

Definition at line 312 of file conceptdef.cpp.

313{
314 m_groupId = id;
315}
virtual DString id() const =0

References DefinitionMixin< ConceptDefMutable >::id(), and m_groupId.

◆ setIncludeFile()

void ConceptDefImpl::setIncludeFile ( FileDef * fd,
const DString & incName,
bool local,
bool force )
overridevirtual

Implements ConceptDefMutable.

Definition at line 242 of file conceptdef.cpp.

243{
244 if (!m_incInfo) m_incInfo = std::make_unique<IncludeInfo>();
245 if ((!incName.empty() && m_incInfo->includeName.empty()) ||
246 (fd!=nullptr && m_incInfo->fileDef==nullptr)
247 )
248 {
249 m_incInfo->fileDef = fd;
250 m_incInfo->includeName = incName;
252 }
253 if (force && !incName.empty())
254 {
255 m_incInfo->includeName = incName;
257 }
258}
@ IncludeLocal
Definition filedef.h:50
@ IncludeSystem
Definition filedef.h:49

References DString::empty(), IncludeLocal, IncludeSystem, and m_incInfo.

◆ setInitializer()

void ConceptDefImpl::setInitializer ( const DString & init)
overridevirtual

Implements ConceptDefMutable.

Definition at line 451 of file conceptdef.cpp.

452{
453 m_initializer = templateSpec(m_tArgList)+"\nconcept "+name()+" = "+init;
454}
static DString templateSpec(const ArgumentList &al)
void init()

References m_initializer, m_tArgList, DefinitionMixin< ConceptDefMutable >::name(), and templateSpec().

◆ setModuleDef()

void ConceptDefImpl::setModuleDef ( ModuleDef * mod)
overridevirtual

Implements ConceptDefMutable.

Definition at line 280 of file conceptdef.cpp.

281{
282 m_moduleDef=mod;
283}

References m_moduleDef.

◆ setNamespace()

void ConceptDefImpl::setNamespace ( NamespaceDef * nd)
overridevirtual

Implements ConceptDefMutable.

Definition at line 265 of file conceptdef.cpp.

266{
267 m_nspace = nd;
268}

References m_nspace.

◆ setTemplateArguments()

void ConceptDefImpl::setTemplateArguments ( const ArgumentList & al)
overridevirtual

Implements ConceptDefMutable.

Definition at line 260 of file conceptdef.cpp.

261{
262 m_tArgList = al;
263}

References m_tArgList.

◆ title()

DString ConceptDefImpl::title ( ) const
overridevirtual

Implements ConceptDef.

Definition at line 295 of file conceptdef.cpp.

296{
297 if (Config_getBool(HIDE_COMPOUND_REFERENCE))
298 {
299 return displayName();
300 }
301 else
302 {
304 }
305}
virtual DString trConceptReference(const DString &conceptName)=0

References Config_getBool, displayName(), theTranslator, and Translator::trConceptReference().

Referenced by writeDefinition(), and writeDetailedDescription().

◆ writeAuthorSection()

void ConceptDefImpl::writeAuthorSection ( OutputList & ol) const

Definition at line 563 of file conceptdef.cpp.

564{
565 // write Author section (Man only)
568 ol.startGroupHeader();
569 ol.parseText(theTranslator->trAuthor(true,true));
570 ol.endGroupHeader();
573}
void parseText(const DString &textStr)
void endGroupHeader(int extraLevels=0)
Definition outputlist.h:455
void startGroupHeader(const DString &id=DString(), int extraLevels=0)
Definition outputlist.h:453
virtual DString trAuthor(bool first_capital, bool singular)=0
virtual DString trGeneratedAutomatically(const DString &s)=0
#define Config_getString(name)
Definition config.h:32

References Config_getString, OutputList::disableAllBut(), OutputList::endGroupHeader(), Man, OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), OutputList::startGroupHeader(), theTranslator, Translator::trAuthor(), and Translator::trGeneratedAutomatically().

Referenced by writeDocumentation().

◆ writeBriefDescription()

void ConceptDefImpl::writeBriefDescription ( OutputList & ol) const

Definition at line 350 of file conceptdef.cpp.

351{
353 {
354 auto parser { createDocParser() };
355 auto ast { validatingParseDoc(*parser.get(),
356 briefFile(),
357 briefLine(),
358 this,
359 nullptr,
361 DocOptions()
362 .setIndexWords(true)
363 .setSingleLine(true))
364 };
365 if (!ast->empty())
366 {
367 ol.startParagraph();
370 ol.writeString(" - ");
372 ol.writeDoc(ast.get(),this,nullptr);
375 ol.writeString(" \n");
377
379 {
381 ol.startTextLink(getOutputFileBase(),"details");
383 ol.endTextLink();
384 }
386 ol.endParagraph();
387 }
388 }
389 ol.writeSynopsis();
390}
bool hasDetailedDescription() const override
virtual DString briefFile() const =0
virtual bool hasBriefDescription() const =0
returns true if this class has a brief description
virtual int briefLine() const =0
void writeDoc(const IDocNodeAST *ast, const Definition *ctx, const MemberDef *md, int sectionLevel=-1)
Definition outputlist.h:383
void disable(OutputType o)
void startParagraph(const DString &classDef=DString())
Definition outputlist.h:407
void enable(OutputType o)
void writeString(const DString &text)
Definition outputlist.h:411
void endParagraph()
Definition outputlist.h:409
void endTextLink()
Definition outputlist.h:444
void writeSynopsis()
Definition outputlist.h:592
void startTextLink(const DString &file, const DString &anchor)
Definition outputlist.h:442
virtual DString trMore()=0
IDocParserPtr createDocParser()
factory function to create a parser
Definition docparser.cpp:55
IDocNodeASTPtr validatingParseDoc(IDocParser &parserIntf, const DString &fileName, int startLine, const Definition *ctx, const MemberDef *md, const DString &input, const DocOptions &options)

References DefinitionMixin< ConceptDefMutable >::briefDescription(), DefinitionMixin< ConceptDefMutable >::briefFile(), DefinitionMixin< ConceptDefMutable >::briefLine(), createDocParser(), OutputList::disable(), OutputList::disableAllBut(), OutputList::enable(), OutputList::endParagraph(), OutputList::endTextLink(), getOutputFileBase(), DefinitionMixin< ConceptDefMutable >::hasBriefDescription(), hasDetailedDescription(), Html, Man, OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), RTF, OutputList::startParagraph(), OutputList::startTextLink(), theTranslator, Translator::trMore(), validatingParseDoc(), OutputList::writeDoc(), OutputList::writeString(), and OutputList::writeSynopsis().

Referenced by writeDocumentation().

◆ writeDeclarationLink()

void ConceptDefImpl::writeDeclarationLink ( OutputList & ol,
bool & found,
const DString & header,
bool localNames ) const
overridevirtual

Implements ConceptDef.

Definition at line 708 of file conceptdef.cpp.

709{
710 if (isLinkable())
711 {
712 if (!found) // first concept
713 {
714 ol.startMemberHeader("concepts");
715 if (!header.empty())
716 {
717 ol.parseText(header);
718 }
719 else
720 {
721 theTranslator->trConcept(true,false);
722 }
723 ol.endMemberHeader();
724 ol.startMemberList();
725 found=true;
726 }
728 DString cname = displayName(!localNames);
729 DString anc=anchor();
730 if (anc.empty()) anc=cname; else anc.prepend(cname+"_");
732 ol.writeString("concept ");
734 if (isLinkable())
735 {
738 anchor(),
739 cname
740 );
741 }
742 else
743 {
744 ol.startBold();
745 ol.docify(cname);
746 ol.endBold();
747 }
749 // add the brief description if available
750 if (!briefDescription().empty() && Config_getBool(BRIEF_MEMBER_DESC))
751 {
752 auto parser { createDocParser() };
753 auto ast { validatingParseDoc(*parser.get(),
754 briefFile(),
755 briefLine(),
756 this,
757 nullptr,
759 DocOptions()
760 .setSingleLine(true))
761 };
762 if (!ast->empty())
763 {
765 ol.writeDoc(ast.get(),this,nullptr);
767 }
768 }
770 }
771}
DString anchor() const override
bool isLinkable() const override
DString & prepend(const char *s)
Definition dstring.h:504
virtual DString getReference() const =0
void startMemberDeclaration()
Definition outputlist.h:569
void writeObjectLink(const DString &ref, const DString &file, const DString &anchor, const DString &name)
Definition outputlist.h:439
void endMemberDescription()
Definition outputlist.h:567
void endMemberDeclaration(const DString &anchor, const DString &inheritId)
Definition outputlist.h:571
void docify(const DString &s)
Definition outputlist.h:437
void startMemberHeader(const DString &anchor, int typ=2)
Definition outputlist.h:469
void insertMemberAlign(bool templ=false)
Definition outputlist.h:517
void startMemberList()
Definition outputlist.h:481
void startBold()
Definition outputlist.h:561
void endMemberItem(OutputGenerator::MemberItemType type)
Definition outputlist.h:495
void endBold()
Definition outputlist.h:563
void startMemberItem(const DString &anchor, OutputGenerator::MemberItemType type, const DString &id=DString())
Definition outputlist.h:493
void startMemberDescription(const DString &anchor, const DString &inheritId=DString(), bool typ=false)
Definition outputlist.h:565
void endMemberHeader()
Definition outputlist.h:471

References anchor(), DefinitionMixin< ConceptDefMutable >::briefDescription(), DefinitionMixin< ConceptDefMutable >::briefFile(), DefinitionMixin< ConceptDefMutable >::briefLine(), Config_getBool, createDocParser(), displayName(), OutputList::docify(), DString::DString(), DString::empty(), OutputList::endBold(), OutputList::endMemberDeclaration(), OutputList::endMemberDescription(), OutputList::endMemberHeader(), OutputList::endMemberItem(), getOutputFileBase(), DefinitionMixin< ConceptDefMutable >::getReference(), OutputList::insertMemberAlign(), isLinkable(), OutputGenerator::Normal, OutputList::parseText(), DString::prepend(), OutputList::startBold(), OutputList::startMemberDeclaration(), OutputList::startMemberDescription(), OutputList::startMemberHeader(), OutputList::startMemberItem(), OutputList::startMemberList(), theTranslator, Translator::trConcept(), validatingParseDoc(), OutputList::writeDoc(), OutputList::writeObjectLink(), and OutputList::writeString().

◆ writeDefinition()

void ConceptDefImpl::writeDefinition ( OutputList & ol,
const DString & title ) const

Definition at line 461 of file conceptdef.cpp.

462{
463 ol.startGroupHeader("conceptdef");
464 ol.parseText(title);
465 ol.endGroupHeader();
466
467 auto intf = Doxygen::parserManager->getCodeParser(".cpp");
468 intf->resetCodeParserState();
469 auto &codeOL = ol.codeGenerators();
470 for (const auto &part : m_parts)
471 {
472 if (part.type==PartType::Code)
473 {
474 codeOL.startCodeFragment("DoxyCode");
475 DString scopeName;
477 //printf("concept=[%s]\n",qPrint(m_initializer));
478 intf->parseCode(codeOL,
479 scopeName,
480 part.content,
481 SrcLangExt::Cpp,
482 false, // stripCodeComments
483 CodeParserOptions()
485 .setInlineFragment(true)
486 .setShowLineNumbers(false)
487 .setSearchCtx(this)
488 );
489 codeOL.endCodeFragment("DoxyCode");
490 }
491 else if (part.type==PartType::Doc)
492 {
493 //printf("rendering part [[%s]] at %d\n",qPrint(part.content),part.lineNr);
494 ol.startEmbeddedDoc(part.colNr);
496 part.lineNr,
497 this,
498 nullptr,
499 part.content,
500 DocOptions());
501 ol.endEmbeddedDoc();
502 }
503 }
504}
DString title() const override
void setFileDef(FileDef *fd) override
virtual DString getDefFileName() const =0
virtual Definition * getOuterScope() const =0
static ParserManager * parserManager
Definition doxygen.h:129
static NamespaceDefMutable * globalScope
Definition doxygen.h:121
void startEmbeddedDoc(int indent)
Definition outputlist.h:758
const OutputCodeList & codeGenerators() const
Definition outputlist.h:358
void endEmbeddedDoc()
Definition outputlist.h:760
void generateDoc(const DString &fileName, int startLine, const Definition *ctx, const MemberDef *md, const DString &docStr, const DocOptions &options)
std::unique_ptr< CodeParserInterface > getCodeParser(const DString &extension)
Gets the interface to the parser associated with a given extension.
Definition parserintf.h:254

References ConceptDef::Code, OutputList::codeGenerators(), ConceptDef::Doc, OutputList::endEmbeddedDoc(), OutputList::endGroupHeader(), OutputList::generateDoc(), ParserManager::getCodeParser(), DefinitionMixin< ConceptDefMutable >::getDefFileName(), DefinitionMixin< ConceptDefMutable >::getOuterScope(), Doxygen::globalScope, m_fileDef, m_parts, Definition::name(), Doxygen::parserManager, OutputList::parseText(), setFileDef(), OutputList::startEmbeddedDoc(), OutputList::startGroupHeader(), and title().

Referenced by writeDocumentation().

◆ writeDetailedDescription()

void ConceptDefImpl::writeDetailedDescription ( OutputList & ol,
const DString & title ) const

Definition at line 506 of file conceptdef.cpp.

507{
508 bool repeatBrief = Config_getBool(REPEAT_BRIEF);
510 {
513 ol.writeRuler();
515
518 ol.writeAnchor(DString(),"details");
520
521 ol.startGroupHeader("details");
522 ol.parseText(title);
523 ol.endGroupHeader();
524
525 ol.startTextBlock();
526 // repeat brief description
527 if (!briefDescription().empty() && repeatBrief)
528 {
530 briefLine(),
531 this,
532 nullptr,
534 DocOptions());
535 }
536 if (!briefDescription().empty() && repeatBrief &&
537 !documentation().empty())
538 {
541 ol.writeString("\n\n");
543 }
544
545 // write documentation
546 if (!documentation().empty())
547 {
548 ol.generateDoc(docFile(),
549 docLine(),
550 this,
551 nullptr,
553 DocOptions()
554 .setIndexWords(true));
555 }
556
557 writeSourceDef(ol);
559 ol.endTextBlock();
560 }
561}
virtual int docLine() const =0
virtual void writeSourceDef(OutputList &ol) const =0
virtual void writeRequirementRefs(OutputList &ol) const =0
void writeRuler()
Definition outputlist.h:521
void endTextBlock(bool paraBreak=false)
Definition outputlist.h:672
void writeAnchor(const DString &fileName, const DString &name)
Definition outputlist.h:523
void startTextBlock(bool dense=false)
Definition outputlist.h:670

References DefinitionMixin< ConceptDefMutable >::briefDescription(), DefinitionMixin< ConceptDefMutable >::briefFile(), DefinitionMixin< ConceptDefMutable >::briefLine(), Config_getBool, OutputList::disable(), OutputList::disableAllBut(), DefinitionMixin< ConceptDefMutable >::docFile(), DefinitionMixin< ConceptDefMutable >::docLine(), DefinitionMixin< ConceptDefMutable >::documentation(), DString::DString(), OutputList::endGroupHeader(), OutputList::endTextBlock(), OutputList::generateDoc(), hasDetailedDescription(), DefinitionMixin< ConceptDefMutable >::hasRequirementRefs(), Html, OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), OutputList::startGroupHeader(), OutputList::startTextBlock(), title(), OutputList::writeAnchor(), DefinitionMixin< ConceptDefMutable >::writeRequirementRefs(), OutputList::writeRuler(), DefinitionMixin< ConceptDefMutable >::writeSourceDef(), and OutputList::writeString().

Referenced by writeDocumentation().

◆ writeDocumentation()

void ConceptDefImpl::writeDocumentation ( OutputList & ol)
overridevirtual

Implements ConceptDefMutable.

Definition at line 588 of file conceptdef.cpp.

589{
590 bool generateTreeView = Config_getBool(GENERATE_TREEVIEW);
591 DString pageTitle;
592 if (Config_getBool(HIDE_COMPOUND_REFERENCE))
593 {
594 pageTitle = displayName();
595 }
596 else
597 {
599 }
600 startFile(ol,getOutputFileBase(),false,name(),pageTitle,HighlightedItem::ConceptVisible,!generateTreeView);
601
602 // ---- navigation part
603 if (!generateTreeView)
604 {
606 {
608 }
609 ol.endQuickIndices();
610 }
611
612 // ---- title part
613 startTitle(ol,getOutputFileBase(),this);
614 ol.parseText(pageTitle);
616 addGroupListToTitle(ol,this);
618
619 // ---- contents part
620
621 ol.startContents();
622
623 //---------------------------------------- start flexible part -------------------------------
624
625 for (const auto &lde : LayoutDocManager::instance().docEntries(LayoutDocManager::Concept))
626 {
627 const LayoutDocEntrySection *ls = dynamic_cast<const LayoutDocEntrySection*>(lde.get());
628 switch (lde->kind())
629 {
630 case LayoutDocEntry::BriefDesc:
632 break;
633 case LayoutDocEntry::ConceptDefinition:
634 if (ls) writeDefinition(ol,ls->title(getLanguage()));
635 break;
636 case LayoutDocEntry::DetailedDesc:
637 if (ls) writeDetailedDescription(ol,ls->title(getLanguage()));
638 break;
639 case LayoutDocEntry::AuthorSection:
641 break;
642 case LayoutDocEntry::ClassIncludes:
644 break;
645 case LayoutDocEntry::MemberDeclStart:
646 case LayoutDocEntry::NamespaceClasses:
647 case LayoutDocEntry::NamespaceInterfaces:
648 case LayoutDocEntry::NamespaceStructs:
649 case LayoutDocEntry::NamespaceExceptions:
650 case LayoutDocEntry::NamespaceConcepts:
651 case LayoutDocEntry::NamespaceNestedNamespaces:
652 case LayoutDocEntry::NamespaceNestedConstantGroups:
653 case LayoutDocEntry::MemberGroups:
654 case LayoutDocEntry::MemberDecl:
655 case LayoutDocEntry::MemberDeclEnd:
656 case LayoutDocEntry::MemberDefStart:
657 case LayoutDocEntry::NamespaceInlineClasses:
658 case LayoutDocEntry::MemberDef:
659 case LayoutDocEntry::MemberDefEnd:
660 case LayoutDocEntry::ClassInheritanceGraph:
661 case LayoutDocEntry::ClassNestedClasses:
662 case LayoutDocEntry::ClassCollaborationGraph:
663 case LayoutDocEntry::ClassAllMembersLink:
664 case LayoutDocEntry::ClassUsedFiles:
665 case LayoutDocEntry::ClassInlineClasses:
666 case LayoutDocEntry::FileClasses:
667 case LayoutDocEntry::FileConcepts:
668 case LayoutDocEntry::FileInterfaces:
669 case LayoutDocEntry::FileStructs:
670 case LayoutDocEntry::FileExceptions:
671 case LayoutDocEntry::FileNamespaces:
672 case LayoutDocEntry::FileConstantGroups:
673 case LayoutDocEntry::FileIncludes:
674 case LayoutDocEntry::FileIncludeGraph:
675 case LayoutDocEntry::FileIncludedByGraph:
676 case LayoutDocEntry::FileInlineClasses:
677 case LayoutDocEntry::FileSourceLink:
678 case LayoutDocEntry::GroupClasses:
679 case LayoutDocEntry::GroupConcepts:
680 case LayoutDocEntry::GroupModules:
681 case LayoutDocEntry::GroupInlineClasses:
682 case LayoutDocEntry::GroupNamespaces:
683 case LayoutDocEntry::GroupDirs:
684 case LayoutDocEntry::GroupNestedGroups:
685 case LayoutDocEntry::GroupFiles:
686 case LayoutDocEntry::GroupGraph:
687 case LayoutDocEntry::GroupPageDocs:
688 case LayoutDocEntry::ModuleExports:
689 case LayoutDocEntry::ModuleClasses:
690 case LayoutDocEntry::ModuleConcepts:
691 case LayoutDocEntry::ModuleUsedFiles:
692 case LayoutDocEntry::DirSubDirs:
693 case LayoutDocEntry::DirFiles:
694 case LayoutDocEntry::DirGraph:
695 err("Internal inconsistency: member '{}' should not be part of "
696 "LayoutDocManager::Concept entry list\n",lde->entryToString());
697 break;
698 }
699 }
700
701 //---------------------------------------- end flexible part -------------------------------
702
703 ol.endContents();
704
705 endFileWithNavPath(ol,this);
706}
void writeIncludeFiles(OutputList &ol) const
void addConceptAttributes(OutputList &ol) const
void writeBriefDescription(OutputList &) const
void writeDetailedDescription(OutputList &ol, const DString &title) const
void writeAuthorSection(OutputList &ol) const
void writeDefinition(OutputList &ol, const DString &title) const
virtual SrcLangExt getLanguage() const =0
Returns the programming language this definition was written in.
virtual void writeNavigationPath(OutputList &ol) const =0
static LayoutDocManager & instance()
Returns a reference to this singleton.
Definition layout.cpp:1435
void endContents()
Definition outputlist.h:620
void endQuickIndices()
Definition outputlist.h:604
void startContents()
Definition outputlist.h:618
void endTitle(OutputList &ol, const DString &fileName, const DString &name)
Definition index.cpp:396
void endFileWithNavPath(OutputList &ol, const DefinitionMutable *d, bool showPageNavigation)
Definition index.cpp:450
void startTitle(OutputList &ol, const DString &fileName, const DefinitionMutable *def)
Definition index.cpp:386
void startFile(OutputList &ol, const DString &name, bool isSource, const DString &manName, const DString &title, HighlightedItem hli, bool additionalIndices, const DString &altSidebarName, int hierarchyLevel, const DString &allMembersFile)
Definition index.cpp:403
#define err(fmt,...)
Definition message.h:127
DString title(SrcLangExt lang) const
Definition layout.cpp:1779
void addGroupListToTitle(OutputList &ol, const Definition *d)
Definition util.cpp:4959

References addConceptAttributes(), addGroupListToTitle(), ConceptVisible, Config_getBool, displayName(), OutputList::endContents(), endFileWithNavPath(), OutputList::endQuickIndices(), endTitle(), err, DefinitionMixin< ConceptDefMutable >::getLanguage(), DefinitionMixin< ConceptDefMutable >::getOuterScope(), getOutputFileBase(), Doxygen::globalScope, LayoutDocManager::instance(), DefinitionMixin< ConceptDefMutable >::name(), OutputList::parseText(), OutputList::startContents(), startFile(), startTitle(), theTranslator, LayoutDocEntrySection::title(), Translator::trConceptReference(), writeAuthorSection(), writeBriefDescription(), writeDefinition(), writeDetailedDescription(), writeIncludeFiles(), and DefinitionMixin< ConceptDefMutable >::writeNavigationPath().

◆ writeIncludeFiles()

void ConceptDefImpl::writeIncludeFiles ( OutputList & ol) const

Definition at line 392 of file conceptdef.cpp.

393{
394 if (m_incInfo)
395 {
396 DString nm=m_incInfo->includeName.empty() ?
397 (m_incInfo->fileDef ?
398 m_incInfo->fileDef->docName() : DString()
399 ) :
400 m_incInfo->includeName;
401 if (!nm.empty())
402 {
403 ol.startParagraph();
404 ol.startTypewriter();
405 ol.docify(::includeStatement(SrcLangExt::Cpp,m_incInfo->kind));
406 ol.docify(::includeOpen(SrcLangExt::Cpp,m_incInfo->kind));
409 ol.docify(nm);
412 if (m_incInfo->fileDef)
413 {
414 ol.writeObjectLink(DString(),m_incInfo->fileDef->includeName(),DString(),nm);
415 }
416 else
417 {
418 ol.docify(nm);
419 }
421 ol.docify(::includeClose(SrcLangExt::Cpp,m_incInfo->kind));
422 ol.endTypewriter();
423 ol.endParagraph();
424 }
425 }
426}
void startTypewriter()
Definition outputlist.h:449
void endTypewriter()
Definition outputlist.h:451
DString includeClose(SrcLangExt lang, IncludeKind kind)
Definition filedef.cpp:85
DString includeOpen(SrcLangExt lang, IncludeKind kind)
Definition filedef.cpp:72
DString includeStatement(SrcLangExt lang, IncludeKind kind)
Definition filedef.cpp:55

References OutputList::disable(), OutputList::disableAllBut(), OutputList::docify(), DString::DString(), DString::empty(), OutputList::enable(), OutputList::endParagraph(), OutputList::endTypewriter(), Html, includeClose(), includeOpen(), includeStatement(), m_incInfo, OutputList::popGeneratorState(), OutputList::pushGeneratorState(), OutputList::startParagraph(), OutputList::startTypewriter(), and OutputList::writeObjectLink().

Referenced by writeDocumentation().

◆ writeTagFile()

void ConceptDefImpl::writeTagFile ( TextStream & tagFile)
overridevirtual

Implements ConceptDefMutable.

Definition at line 334 of file conceptdef.cpp.

335{
336 tagFile << " <compound kind=\"concept\">\n";
337 tagFile << " <name>" << convertToXML(name()) << "</name>\n";
338 DString fn = getOutputFileBase();
340 tagFile << " <filename>" << convertToXML(fn) << "</filename>\n";
341 DString idStr = id();
342 if (!idStr.empty())
343 {
344 tagFile << " <clangid>" << convertToXML(idStr) << "</clangid>\n";
345 }
347 tagFile << " </compound>\n";
348}
virtual void writeDocAnchorsToTagFile(TextStream &) const =0
void addHtmlExtensionIfMissing(DString &fName)
Definition util.cpp:4969
DString convertToXML(const DString &s, bool keepEntities, const bool citeEntry)
Definition util.cpp:3956

References addHtmlExtensionIfMissing(), convertToXML(), DString::empty(), getOutputFileBase(), DefinitionMixin< ConceptDefMutable >::id(), DefinitionMixin< ConceptDefMutable >::name(), and DefinitionMixin< ConceptDefMutable >::writeDocAnchorsToTagFile().

Member Data Documentation

◆ m_fileDef

FileDef* ConceptDefImpl::m_fileDef = nullptr
private

Definition at line 88 of file conceptdef.cpp.

Referenced by getFileDef(), setFileDef(), and writeDefinition().

◆ m_fileName

DString ConceptDefImpl::m_fileName
private

Definition at line 85 of file conceptdef.cpp.

Referenced by getOutputFileBase().

◆ m_groupId

int ConceptDefImpl::m_groupId = -1
private

Definition at line 92 of file conceptdef.cpp.

Referenced by groupId(), and setGroupId().

◆ m_incInfo

std::unique_ptr<IncludeInfo> ConceptDefImpl::m_incInfo
private

Definition at line 86 of file conceptdef.cpp.

Referenced by includeInfo(), setIncludeFile(), and writeIncludeFiles().

◆ m_initializer

DString ConceptDefImpl::m_initializer
private

Definition at line 91 of file conceptdef.cpp.

Referenced by initializer(), and setInitializer().

◆ m_moduleDef

ModuleDef* ConceptDefImpl::m_moduleDef = nullptr
private

Definition at line 89 of file conceptdef.cpp.

Referenced by getModuleDef(), and setModuleDef().

◆ m_nspace

NamespaceDef* ConceptDefImpl::m_nspace = nullptr
private

Definition at line 87 of file conceptdef.cpp.

Referenced by getNamespaceDef(), and setNamespace().

◆ m_parts

Parts ConceptDefImpl::m_parts
private

Definition at line 93 of file conceptdef.cpp.

Referenced by addCodePart(), addDocPart(), conceptParts(), and writeDefinition().

◆ m_tArgList

ArgumentList ConceptDefImpl::m_tArgList
private

Definition at line 90 of file conceptdef.cpp.

Referenced by getTemplateParameterList(), setInitializer(), and setTemplateArguments().


The documentation for this class was generated from the following file: