47 const char* p=s.
data();
52 if (c ==
'\'') t <<
'\\';
85 t <<
" " <<
prefix <<
"-member = {\n";
88 memPrefix.
append(
"-mem-" );
112 t << memPrefix <<
"kind = '" << memType <<
"';\n";
113 t << memPrefix <<
"id = '"
125 t << memPrefix <<
"type = <<_EnD_oF_dEf_TeXt_\n" << typeStr <<
"\n"
126 <<
"_EnD_oF_dEf_TeXt_;\n";
129 t << memPrefix <<
"name = '" << md->
name() <<
"';\n";
135 QCString fcnPrefix =
" " + memPrefix +
"param-";
137 auto defIt = defAl.
begin();
141 if (defIt!=defAl.
end())
146 t << memPrefix <<
"param = {\n";
147 if (!a.attrib.isEmpty())
149 t << fcnPrefix <<
"attributes = ";
153 if (!a.type.isEmpty())
155 t << fcnPrefix <<
"type = <<_EnD_oF_dEf_TeXt_\n"
156 << a.type <<
"\n_EnD_oF_dEf_TeXt_;\n";
158 if (!a.name.isEmpty())
160 t << fcnPrefix <<
"declname = ";
166 t << fcnPrefix <<
"defname = ";
170 if (!a.array.isEmpty())
172 t << fcnPrefix <<
"array = ";
176 if (!a.defval.isEmpty())
178 t << fcnPrefix <<
"defval = <<_EnD_oF_dEf_TeXt_\n"
179 << a.defval <<
"\n_EnD_oF_dEf_TeXt_;\n";
181 t <<
" }; /*" << fcnPrefix <<
"-param */\n";
187 QCString defPrefix =
" " + memPrefix +
"def-";
190 t << memPrefix <<
"param = {\n";
191 t << defPrefix <<
"name = '" << a.type <<
"';\n";
192 t <<
" }; /*" << defPrefix <<
"-param */\n";
198 t << memPrefix <<
"initializer = <<_EnD_oF_dEf_TeXt_\n"
206 t << memPrefix <<
"enum = { enum-name = " << emd->name() <<
';';
207 if (!emd->initializer().isEmpty())
209 t <<
" enum-value = ";
217 t << memPrefix <<
"desc-file = '" << md->
getDefFileName() <<
"';\n";
218 t << memPrefix <<
"desc-line = '" << md->
getDefLine() <<
"';\n";
219 t << memPrefix <<
"briefdesc = <<_EnD_oF_dEf_TeXt_\n"
221 t << memPrefix <<
"documentation = <<_EnD_oF_dEf_TeXt_\n"
226 QCString refPrefix =
" " + memPrefix +
"ref-";
228 for (
const auto &rmd : refList)
230 if (rmd->getStartBodyLine()!=-1 && rmd->getBodyDef())
232 t << memPrefix <<
"referenceto = {\n";
233 t << refPrefix <<
"id = '"
234 << rmd->getBodyDef()->getOutputFileBase()
236 << rmd->anchor() <<
"';\n";
238 t << refPrefix <<
"line = '"
239 << rmd->getStartBodyLine() <<
"';\n";
241 QCString scope = rmd->getScopeString();
248 t << refPrefix <<
"name = ";
250 t <<
';' <<
"\n };\n";
254 for (
const auto &rmd : refByList)
256 if (rmd->getStartBodyLine()!=-1 && rmd->getBodyDef())
258 t << memPrefix <<
"referencedby = {\n";
259 t << refPrefix <<
"id = '"
260 << rmd->getBodyDef()->getOutputFileBase()
262 << rmd->anchor() <<
"';\n";
264 t << refPrefix <<
"line = '"
265 << rmd->getStartBodyLine() <<
"';\n";
267 QCString scope = rmd->getScopeString();
274 t << refPrefix <<
"name = ";
276 t <<
';' <<
"\n };\n";
280 t <<
" }; /* " <<
prefix <<
"-member */\n";
289 if (cd && ml && !ml->
empty())
291 t <<
" cp-section = {\n";
292 t <<
" sec-kind = '" << kind <<
"';\n";
294 for (
const auto &md : *ml)
298 t <<
" }; /* cp-section */\n";
319 if (cd->
name().
find(
'@')!=-1)
return;
324 t <<
" cp-name = '" << cd->
name() <<
"';\n";
328 t <<
" cp-ref = {\n" <<
" ref-type = base;\n";
329 t <<
" ref-id = '" << bcd.classDef->getOutputFileBase() <<
"';\n";
337 t <<
" cp-ref = {\n" <<
" ref-type = derived;\n";
338 t <<
" ref-id = '" << bcd.classDef->getOutputFileBase() <<
"';\n";
344 size_t numMembers = 0;
347 if (!ml->listType().isDetailed())
349 numMembers+=ml->size();
382 t <<
" cp-fileline = '" << cd->
getDefLine() <<
"';\n";
383 t <<
" cp-briefdesc = <<_EnD_oF_dEf_TeXt_\n"
386 t <<
" cp-documentation = <<_EnD_oF_dEf_TeXt_\n"
392 t <<
" cp-inheritancegraph = <<_EnD_oF_dEf_TeXt_\n";
394 t <<
"\n_EnD_oF_dEf_TeXt_;\n";
399 t <<
" cp-collaborationgraph = <<_EnD_oF_dEf_TeXt_\n";
401 t <<
"\n_EnD_oF_dEf_TeXt_;\n";
411 if (ml && !ml->
empty())
413 t <<
" " << kind <<
" = {\n";
414 for (
const auto &md : *ml)
425 t <<
" namespace = {\n";
441 t <<
" ns-fileline = '" << nd->
getDefLine() <<
"';\n";
442 t <<
" ns-briefdesc = <<_EnD_oF_dEf_TeXt_\n"
445 t <<
" ns-documentation = <<_EnD_oF_dEf_TeXt_\n"
456 t <<
" file-name = ";
470 t <<
" file-first-line = '" << fd->
getDefLine() <<
"';\n";
472 t <<
" file-briefdesc = <<_EnD_oF_dEf_TeXt_\n"
475 t <<
" file-documentation = <<_EnD_oF_dEf_TeXt_\n"
478 t <<
"}; /* file */\n";
485 Dir defDir(outputDirectory.
str());
488 err(
"Could not create def directory in {}\n",outputDirectory);
492 QCString fileName=outputDirectory+
"/doxygen.def";
496 err(
"Cannot open file {} for writing!\n",fileName);
500 t <<
"AutoGen Definitions dummy;\n";
512 for (
const auto &fd : *fn)
524 t <<
"dummy_value = true;\n";
This class represents an function or template argument list.
A abstract class representing of a compound symbol.
virtual QCString compoundTypeString() const =0
Returns the type of compound as a string.
virtual const MemberLists & getMemberLists() const =0
Returns the list containing the list of members sorted per type.
virtual const BaseClassList & baseClasses() const =0
Returns the list of base classes from which this class directly inherits.
virtual MemberList * getMemberList(MemberListType lt) const =0
Returns the members in the list identified by lt.
virtual bool isImplicitTemplateInstance() const =0
virtual const BaseClassList & subClasses() const =0
Returns the list of sub classes that directly derive from this class.
The common base class of all entity definitions found in the sources.
virtual SrcLangExt getLanguage() const =0
Returns the programming language this definition was written in.
virtual QCString getDefFileName() const =0
virtual int getDefLine() const =0
virtual QCString anchor() const =0
virtual QCString briefDescription(bool abbreviate=FALSE) const =0
virtual QCString documentation() const =0
virtual QCString getOutputFileBase() const =0
virtual const MemberVector & getReferencedByMembers() const =0
virtual bool isReference() const =0
virtual const MemberVector & getReferencesMembers() const =0
virtual const QCString & name() const =0
Class representing a directory in the file system.
bool mkdir(const std::string &path, bool acceptsAbsPath=true) const
Representation of a class inheritance or dependency graph.
void writeDEF(TextStream &t)
static NamespaceLinkedMap * namespaceLinkedMap
static FileNameLinkedMap * inputNameLinkedMap
static ClassLinkedMap * classLinkedMap
A model of a file symbol.
virtual MemberList * getMemberList(MemberListType lt) const =0
A model of a class/file/namespace member symbol.
virtual QCString typeString() const =0
virtual const ClassDef * getClassDef() const =0
virtual const MemberVector & enumFieldList() const =0
virtual const ArgumentList & argumentList() const =0
virtual const NamespaceDef * getNamespaceDef() const =0
virtual Protection protection() const =0
virtual MemberType memberType() const =0
virtual QCString argsString() const =0
virtual Specifier virtualness(int count=0) const =0
virtual const QCString & initializer() const =0
A list of MemberDef objects as shown in documentation sections.
bool empty() const noexcept
An abstract interface of a namespace symbol.
virtual MemberList * getMemberList(MemberListType lt) const =0
This is an alternative implementation of QCString.
int find(char c, int index=0, bool cs=TRUE) const
QCString & prepend(const char *s)
bool isEmpty() const
Returns TRUE iff the string is empty.
const std::string & str() const
QCString & append(char c)
const char * data() const
Returns a pointer to the contents of the string in the form of a 0-terminated C string.
Text streaming class that buffers data.
#define Config_getString(name)
std::unique_ptr< ArgumentList > stringToArgumentList(SrcLangExt lang, const QCString &argsString, QCString *extraTypeChars=nullptr)
static void generateDEFClassSection(const ClassDef *cd, TextStream &t, const MemberList *ml, const QCString &kind)
static void generateDEFForClass(const ClassDef *cd, TextStream &t)
static void generateDEFForMember(const MemberDef *md, TextStream &t, const Definition *def, const QCString &prefix)
static void writeDEFString(TextStream &t, const QCString &s)
static void generateDEFSection(const Definition *d, TextStream &t, const MemberList *ml, const QCString &kind)
static void generateDEFForFile(const FileDef *fd, TextStream &t)
static void generateDEFForNamespace(const NamespaceDef *nd, TextStream &t)
std::ofstream openOutputStream(const QCString &name, bool append=false)
Portable versions of functions that are platform dependent.
This class contains the information about the argument of a function or template.
static const char * to_string_lower_class(Protection prot)
static const char * to_string_lower(Protection prot)
QCString replaceAnonymousScopes(const QCString &s, const QCString &replacement)
A bunch of utility functions.