⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filedef.cpp

📁 doxygen(一个自动从源代码生成文档的工具)的源代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
  //int dl=doc.length();  if ((!briefDescription().isEmpty() && Config_getBool("REPEAT_BRIEF")) ||       !documentation().isEmpty()       /* || startBodyLine!=-1 */     )  {    ol.writeRuler();    ol.pushGeneratorState();    //bool latexOn = ol.isEnabled(OutputGenerator::Latex);    //if (latexOn) ol.disable(OutputGenerator::Latex);    ol.disable(OutputGenerator::Latex);    ol.disable(OutputGenerator::RTF);    ol.writeAnchor(0,"_details");     //if (latexOn) ol.enable(OutputGenerator::Latex);    ol.popGeneratorState();    ol.startGroupHeader();    parseText(ol,theTranslator->trDetailedDescription());    ol.endGroupHeader();    if (!briefDescription().isEmpty() && Config_getBool("REPEAT_BRIEF"))    {      ol+=briefOutput;    }    if (!briefDescription().isEmpty() && Config_getBool("REPEAT_BRIEF") &&         !documentation().isEmpty())    {      ol.newParagraph();    }    if (!documentation().isEmpty())    {      //if (doc.at(dl-1)!='.' && doc.at(dl-1)!='!' && doc.at(dl-1)!='?')       //  doc+='.';      parseDoc(ol,filepath,1,0,0,documentation()+"\n");    }    //printf("Writing source ref for file %s\n",name().data());    if (Config_getBool("SOURCE_BROWSER"))     {      ol.newParagraph();      QCString refText = theTranslator->trDefinedInSourceFile();      int fileMarkerPos = refText.find("@0");      if (fileMarkerPos!=-1) // should always pass this.      {        parseText(ol,refText.left(fileMarkerPos)); //text left from marker 1        ol.writeObjectLink(0,getSourceFileBase(),            0,name());        parseText(ol,refText.right(              refText.length()-fileMarkerPos-2)); // text right from marker 2      }    }  }  docDefineMembers.writeDocumentation(ol,name(),this,                            theTranslator->trDefineDocumentation());    docProtoMembers.writeDocumentation(ol,name(),this,                            theTranslator->trFunctionPrototypeDocumentation());  docTypedefMembers.writeDocumentation(ol,name(),this,                            theTranslator->trTypedefDocumentation());    docEnumMembers.writeDocumentation(ol,name(),this,                            theTranslator->trEnumerationTypeDocumentation());  docFuncMembers.writeDocumentation(ol,name(),this,                            theTranslator->trFunctionDocumentation());    docVarMembers.writeDocumentation(ol,name(),this,                            theTranslator->trVariableDocumentation());    // write Author section (Man only)  ol.disableAllBut(OutputGenerator::Man);  ol.startGroupHeader();  parseText(ol,theTranslator->trAuthor(TRUE,TRUE));  ol.endGroupHeader();  parseText(ol,theTranslator->trGeneratedAutomatically(Config_getString("PROJECT_NAME")));  ol.enableAll();  if (!Config_getString("GENERATE_TAGFILE").isEmpty())   {    writeDocAnchorsToTagFile();    Doxygen::tagFile << "  </compound>" << endl;  }  endFile(ol);}/*! Write a source listing of this file to the output */void FileDef::writeSource(OutputList &ol){  ol.disableAllBut(OutputGenerator::Html);  startFile(ol,getSourceFileBase(),0,docname+" Source File");  startTitle(ol,0);  parseText(ol,docname);  endTitle(ol,0,0);  if (isLinkable())  {    ol.startTextLink(getOutputFileBase(),0);    parseText(ol,theTranslator->trGotoDocumentation());    ol.endTextLink();  }  initParseCodeContext();  ol.startCodeFragment();  //if (name().left(9)=="memory.c")  //{  parseCode(ol,0,            fileToString(absFilePath(),Config_getBool("FILTER_SOURCE_FILES")),            FALSE,0,this           );  //}  ol.endCodeFragment();  endFile(ol);  ol.enableAll();}void FileDef::addMembersToMemberGroup(){  ::addMembersToMemberGroup(&decDefineMembers,memberGroupDict,memberGroupList);  ::addMembersToMemberGroup(&decProtoMembers,memberGroupDict,memberGroupList);  ::addMembersToMemberGroup(&decTypedefMembers,memberGroupDict,memberGroupList);  ::addMembersToMemberGroup(&decEnumMembers,memberGroupDict,memberGroupList);  ::addMembersToMemberGroup(&decFuncMembers,memberGroupDict,memberGroupList);  ::addMembersToMemberGroup(&decVarMembers,memberGroupDict,memberGroupList);}/*! Adds member definition \a md to the list of all members of this file */void FileDef::insertMember(MemberDef *md){  //printf("%s:FileDef::insertMember(%s)\n",name().data(),md->name().data());  allMemberList.append(md);   bool sortMemberDocs = Config_getBool("SORT_MEMBER_DOCS");  switch(md->memberType())  {    case MemberDef::Variable:         case MemberDef::Property:           decVarMembers.append(md);      if (sortMemberDocs)        docVarMembers.inSort(md);       else        docVarMembers.append(md);      break;    case MemberDef::Function:       decFuncMembers.append(md);      if (sortMemberDocs)            docFuncMembers.inSort(md);       else        docFuncMembers.append(md);      break;    case MemberDef::Typedef:            decTypedefMembers.append(md);      if (sortMemberDocs)        docTypedefMembers.inSort(md);       else        docTypedefMembers.append(md);      break;    case MemberDef::Enumeration:        decEnumMembers.append(md);      if (sortMemberDocs)        docEnumMembers.inSort(md);       else        docEnumMembers.append(md);      break;    case MemberDef::EnumValue:    // enum values are shown inside their enums      break;    case MemberDef::Prototype:          decProtoMembers.append(md);      if (sortMemberDocs)        docProtoMembers.inSort(md);       else        docProtoMembers.append(md);      break;    case MemberDef::Define:             decDefineMembers.append(md);      if (sortMemberDocs)        docDefineMembers.inSort(md);       else        docDefineMembers.append(md);      break;    default:       err("FileDef::insertMembers(): "           "member `%s' with class scope `%s' inserted in file scope `%s'!\n",           md->name().data(),           md->getClassDef() ? md->getClassDef()->name().data() : "",           name().data());  }  //addMemberToGroup(md,groupId);}/*! Adds compound definition \a cd to the list of all compounds of this file */void FileDef::insertClass(ClassDef *cd){  if (Config_getBool("SORT_MEMBER_DOCS"))    classSDict->inSort(cd->name(),cd);  else    classSDict->append(cd->name(),cd);}/*! Adds namespace definition \a nd to the list of all compounds of this file */void FileDef::insertNamespace(NamespaceDef *nd){  if (!nd->name().isEmpty() && namespaceDict->find(nd->name())==0)  {    if (Config_getBool("SORT_MEMBER_DOCS"))      namespaceList->inSort(nd);    else      namespaceList->append(nd);    namespaceDict->insert(nd->name(),nd);  }}void FileDef::addSourceRef(int line,Definition *d,MemberDef *md){  if (d)  {    if (srcDefDict==0)    srcDefDict    = new QIntDict<Definition>(257);    if (srcMemberDict==0) srcMemberDict = new QIntDict<MemberDef>(257);    srcDefDict->insert(line,d);    if (md) srcMemberDict->insert(line,md);    //printf("Adding member %s with anchor %s at line %d to file %s\n",    //    d->name().data(),anchor,line,name().data());  }}Definition *FileDef::getSourceDefinition(int lineNr){  Definition *result=0;  if (srcDefDict)  {    result = srcDefDict->find(lineNr);  }  return result;}MemberDef *FileDef::getSourceMember(int lineNr){  MemberDef *result=0;  if (srcMemberDict)  {    result = srcMemberDict->find(lineNr);  }  return result;}void FileDef::addUsingDirective(NamespaceDef *nd){  if (usingDirList==0)  {    usingDirList = new NamespaceList;  }  usingDirList->append(nd);}void FileDef::addUsingDeclaration(ClassDef *cd){  if (usingDeclList==0)  {    usingDeclList = new ClassList;  }  usingDeclList->append(cd);}void FileDef::addIncludeDependency(FileDef *fd,const char *incName,bool local){  //printf("FileDef::addIncludeDependency(%p,%s,%d)\n",fd,incName,local);  QCString iName = fd ? fd->absFilePath().data() : incName;  if (!iName.isEmpty() && includeDict->find(iName)==0)  {    IncludeInfo *ii = new IncludeInfo;    ii->fileDef     = fd;    ii->includeName = incName;    ii->local       = local;    includeList->append(ii);    includeDict->insert(iName,ii);  }}void FileDef::addIncludedByDependency(FileDef *fd,const char *incName,bool local){  //printf("FileDef::addIncludedByDependency(%p,%s,%d)\n",fd,incName,local);  QCString iName = fd ? fd->absFilePath().data() : incName;  if (!iName.isEmpty() && includedByDict->find(iName)==0)  {    IncludeInfo *ii = new IncludeInfo;    ii->fileDef     = fd;    ii->includeName = incName;    ii->local       = local;    includedByList->append(ii);    includedByDict->insert(iName,ii);  }}bool FileDef::generateSourceFile() const {   QCString extension = name().right(4);  return !isReference() &&          (Config_getBool("SOURCE_BROWSER") ||            (Config_getBool("VERBATIM_HEADERS") && guessSection(name())==Entry::HEADER_SEC)          ) &&         extension!=".doc" && extension!=".txt" && extension!=".dox"; }void FileDef::addListReferences(){  addRefItem(todoId(),testId(),bugId(),             theTranslator->trFile(TRUE,TRUE),             getOutputFileBase(),name()            );  MemberGroupListIterator mgli(*memberGroupList);  MemberGroup *mg;  for (;(mg=mgli.current());++mgli)  {    mg->addListReferences(this);  }  docDefineMembers.addListReferences(this);  docProtoMembers.addListReferences(this);  docTypedefMembers.addListReferences(this);  docEnumMembers.addListReferences(this);  docFuncMembers.addListReferences(this);  docVarMembers.addListReferences(this);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -