Exemple #1
0
void GroupDef::writeDocumentation(OutputList &ol)
{
  //static bool generateTreeView = Config_getBool("GENERATE_TREEVIEW");
  ol.pushGeneratorState();
  startFile(ol,getOutputFileBase(),name(),title,HLI_None);

  ol.startHeaderSection();
  writeSummaryLinks(ol);
  ol.startTitleHead(getOutputFileBase());
  ol.pushGeneratorState();
  ol.disable(OutputGenerator::Man);
  ol.parseText(title);
  ol.popGeneratorState();
  ol.endTitleHead(getOutputFileBase(),title);
  addGroupListToTitle(ol,this);
  ol.endHeaderSection();
  ol.startContents();

  if (Doxygen::searchIndex)
  {
    Doxygen::searchIndex->setCurrentDoc(title,getOutputFileBase());
    static QRegExp we("[a-zA-Z_][-a-zA-Z_0-9]*");
    int i=0,p=0,l=0;
    while ((i=we.match(title,p,&l))!=-1) // foreach word in the title
    {
      Doxygen::searchIndex->addWord(title.mid(i,l),TRUE);
      p=i+l;
    }
  }

  Doxygen::indexList.addIndexItem(this,0,title);

  if (!Config_getString("GENERATE_TAGFILE").isEmpty()) 
  {
    Doxygen::tagFile << "  <compound kind=\"group\">" << endl;
    Doxygen::tagFile << "    <name>" << convertToXML(name()) << "</name>" << endl;
    Doxygen::tagFile << "    <title>" << convertToXML(title) << "</title>" << endl;
    Doxygen::tagFile << "    <filename>" << convertToXML(getOutputFileBase()) << Doxygen::htmlFileExtension << "</filename>" << endl;
  }
  

  //---------------------------------------- start flexible part -------------------------------

  QListIterator<LayoutDocEntry> eli(
      LayoutDocManager::instance().docEntries(LayoutDocManager::Group));
  LayoutDocEntry *lde;
  for (eli.toFirst();(lde=eli.current());++eli)
  {
    switch (lde->kind())
    {
      case LayoutDocEntry::BriefDesc: 
        writeBriefDescription(ol);
        break; 
      case LayoutDocEntry::MemberDeclStart: 
        startMemberDeclarations(ol);
        break; 
      case LayoutDocEntry::GroupClasses: 
        {
          LayoutDocEntrySection *ls = (LayoutDocEntrySection*)lde;
          writeClasses(ol,ls->title);
        }
        break; 
      case LayoutDocEntry::GroupInlineClasses: 
        {
          writeInlineClasses(ol);
        }
        break;
      case LayoutDocEntry::GroupNamespaces: 
        {
          LayoutDocEntrySection *ls = (LayoutDocEntrySection*)lde;
          writeNamespaces(ol,ls->title);
        }
        break; 
      case LayoutDocEntry::MemberGroups: 
        writeMemberGroups(ol);
        break; 
      case LayoutDocEntry::MemberDecl: 
        {
          LayoutDocEntryMemberDecl *lmd = (LayoutDocEntryMemberDecl*)lde;
          writeMemberDeclarations(ol,lmd->type,lmd->title);
        }
        break; 
      case LayoutDocEntry::MemberDeclEnd: 
        endMemberDeclarations(ol);
        break;
      case LayoutDocEntry::DetailedDesc: 
        {
          LayoutDocEntrySection *ls = (LayoutDocEntrySection*)lde;
          writeDetailedDescription(ol,ls->title);
        }
        break;
      case LayoutDocEntry::MemberDefStart: 
        startMemberDocumentation(ol);
        break; 
      case LayoutDocEntry::MemberDef: 
        {
          LayoutDocEntryMemberDef *lmd = (LayoutDocEntryMemberDef*)lde;
          writeMemberDocumentation(ol,lmd->type,lmd->title);
        }
        break;
      case LayoutDocEntry::MemberDefEnd: 
        endMemberDocumentation(ol);
        break;
      case LayoutDocEntry::GroupNestedGroups: 
        {
          LayoutDocEntrySection *ls = (LayoutDocEntrySection*)lde;
          writeNestedGroups(ol,ls->title);
        }
        break;
      case LayoutDocEntry::GroupPageDocs: 
        writePageDocumentation(ol);
        break;
      case LayoutDocEntry::GroupDirs: 
        {
          LayoutDocEntrySection *ls = (LayoutDocEntrySection*)lde;
          writeDirs(ol,ls->title);
        }
        break;
      case LayoutDocEntry::GroupFiles: 
        {
          LayoutDocEntrySection *ls = (LayoutDocEntrySection*)lde;
          writeFiles(ol,ls->title);
        }
        break;
      case LayoutDocEntry::GroupGraph: 
        writeGroupGraph(ol);
        break;
      case LayoutDocEntry::AuthorSection: 
        writeAuthorSection(ol);
        break;
      case LayoutDocEntry::ClassIncludes:
      case LayoutDocEntry::ClassInheritanceGraph:
      case LayoutDocEntry::ClassNestedClasses:
      case LayoutDocEntry::ClassCollaborationGraph:
      case LayoutDocEntry::ClassAllMembersLink:
      case LayoutDocEntry::ClassUsedFiles:
      case LayoutDocEntry::ClassInlineClasses:
      case LayoutDocEntry::NamespaceNestedNamespaces:
      case LayoutDocEntry::NamespaceClasses:
      case LayoutDocEntry::NamespaceInlineClasses:
      case LayoutDocEntry::FileClasses:
      case LayoutDocEntry::FileNamespaces:
      case LayoutDocEntry::FileIncludes:
      case LayoutDocEntry::FileIncludeGraph:
      case LayoutDocEntry::FileIncludedByGraph: 
      case LayoutDocEntry::FileSourceLink:
      case LayoutDocEntry::FileInlineClasses:
      case LayoutDocEntry::DirSubDirs:
      case LayoutDocEntry::DirFiles:
      case LayoutDocEntry::DirGraph:
        err("Internal inconsistency: member %d should not be part of "
            "LayoutDocManager::Group entry list\n",lde->kind());
        break;
    }
  }

  //---------------------------------------- end flexible part -------------------------------

  endFile(ol); 

  ol.popGeneratorState();

  if (!Config_getString("GENERATE_TAGFILE").isEmpty()) 
  {
    writeDocAnchorsToTagFile();
    Doxygen::tagFile << "  </compound>" << endl;
  }

  if (Config_getBool("SEPARATE_MEMBER_PAGES"))
  {
    allMemberList->sort();
    writeMemberPages(ol);
  }

}
Exemple #2
0
void NamespaceDef::writeDocumentation(OutputList &ol)
{
    static bool generateTreeView = Config_getBool("GENERATE_TREEVIEW");
    //static bool outputJava = Config_getBool("OPTIMIZE_OUTPUT_JAVA");
    //static bool fortranOpt = Config_getBool("OPTIMIZE_FOR_FORTRAN");

    QCString pageTitle = title();
    startFile(ol,getOutputFileBase(),name(),pageTitle,HLI_NamespaceVisible,!generateTreeView);

    if (!generateTreeView)
    {
        if (getOuterScope()!=Doxygen::globalScope)
        {
            writeNavigationPath(ol);
        }
        ol.endQuickIndices();
    }

    startTitle(ol,getOutputFileBase(),this);
    ol.parseText(pageTitle);
    addGroupListToTitle(ol,this);
    addNamespaceAttributes(ol);
    endTitle(ol,getOutputFileBase(),displayName());
    ol.startContents();

    if (Doxygen::searchIndex)
    {
        Doxygen::searchIndex->setCurrentDoc(this,anchor(),FALSE);
        Doxygen::searchIndex->addWord(localName(),TRUE);
    }

    Doxygen::indexList->addIndexItem(this,0);

    //---------------------------------------- start flexible part -------------------------------

    SrcLangExt lang = getLanguage();
    QListIterator<LayoutDocEntry> eli(
        LayoutDocManager::instance().docEntries(LayoutDocManager::Namespace));
    LayoutDocEntry *lde;
    for (eli.toFirst(); (lde=eli.current()); ++eli)
    {
        switch (lde->kind())
        {
        case LayoutDocEntry::BriefDesc:
            writeBriefDescription(ol);
            break;
        case LayoutDocEntry::MemberDeclStart:
            startMemberDeclarations(ol);
            break;
        case LayoutDocEntry::NamespaceClasses:
        {
            LayoutDocEntrySection *ls = (LayoutDocEntrySection*)lde;
            writeClassDeclarations(ol,ls->title(lang));
        }
        break;
        case LayoutDocEntry::NamespaceNestedNamespaces:
        {
            LayoutDocEntrySection *ls = (LayoutDocEntrySection*)lde;
            writeNamespaceDeclarations(ol,ls->title(lang),false);
        }
        break;
        case LayoutDocEntry::NamespaceNestedConstantGroups:
        {
            LayoutDocEntrySection *ls = (LayoutDocEntrySection*)lde;
            writeNamespaceDeclarations(ol,ls->title(lang),true);
        }
        break;
        case LayoutDocEntry::MemberGroups:
            writeMemberGroups(ol);
            break;
        case LayoutDocEntry::MemberDecl:
        {
            LayoutDocEntryMemberDecl *lmd = (LayoutDocEntryMemberDecl*)lde;
            writeMemberDeclarations(ol,lmd->type,lmd->title(lang));
        }
        break;
        case LayoutDocEntry::MemberDeclEnd:
            endMemberDeclarations(ol);
            break;
        case LayoutDocEntry::DetailedDesc:
        {
            LayoutDocEntrySection *ls = (LayoutDocEntrySection*)lde;
            writeDetailedDescription(ol,ls->title(lang));
        }
        break;
        case LayoutDocEntry::MemberDefStart:
            startMemberDocumentation(ol);
            break;
        case LayoutDocEntry::NamespaceInlineClasses:
            writeInlineClasses(ol);
            break;
        case LayoutDocEntry::MemberDef:
        {
            LayoutDocEntryMemberDef *lmd = (LayoutDocEntryMemberDef*)lde;
            writeMemberDocumentation(ol,lmd->type,lmd->title(lang));
        }
        break;
        case LayoutDocEntry::MemberDefEnd:
            endMemberDocumentation(ol);
            break;
        case LayoutDocEntry::AuthorSection:
            writeAuthorSection(ol);
            break;
        case LayoutDocEntry::ClassIncludes:
        case LayoutDocEntry::ClassInheritanceGraph:
        case LayoutDocEntry::ClassNestedClasses:
        case LayoutDocEntry::ClassCollaborationGraph:
        case LayoutDocEntry::ClassAllMembersLink:
        case LayoutDocEntry::ClassUsedFiles:
        case LayoutDocEntry::ClassInlineClasses:
        case LayoutDocEntry::FileClasses:
        case LayoutDocEntry::FileNamespaces:
        case LayoutDocEntry::FileConstantGroups:
        case LayoutDocEntry::FileIncludes:
        case LayoutDocEntry::FileIncludeGraph:
        case LayoutDocEntry::FileIncludedByGraph:
        case LayoutDocEntry::FileSourceLink:
        case LayoutDocEntry::FileInlineClasses:
        case LayoutDocEntry::GroupClasses:
        case LayoutDocEntry::GroupInlineClasses:
        case LayoutDocEntry::GroupNamespaces:
        case LayoutDocEntry::GroupDirs:
        case LayoutDocEntry::GroupNestedGroups:
        case LayoutDocEntry::GroupFiles:
        case LayoutDocEntry::GroupGraph:
        case LayoutDocEntry::GroupPageDocs:
        case LayoutDocEntry::DirSubDirs:
        case LayoutDocEntry::DirFiles:
        case LayoutDocEntry::DirGraph:
            err("Internal inconsistency: member %d should not be part of "
                "LayoutDocManager::Namespace entry list\n",lde->kind());
            break;
        }
    }

    //---------------------------------------- end flexible part -------------------------------

    ol.endContents();

    endFileWithNavPath(this,ol);

    if (Config_getBool("SEPARATE_MEMBER_PAGES"))
    {
        MemberList *allMemberList = getMemberList(MemberListType_allMembersList);
        if (allMemberList) allMemberList->sort();
        writeMemberPages(ol);
    }
}
void NamespaceDef::writeDocumentation(OutputList &ol)
{
  QCString pageTitle;
  if (Config_getBool("OPTIMIZE_OUTPUT_JAVA"))
  {
    pageTitle = theTranslator->trPackage(displayName());
  }
  else
  {
    pageTitle = theTranslator->trNamespaceReference(displayName());
  }
  startFile(ol,getOutputFileBase(),name(),pageTitle,HLI_NamespaceVisible);
  if (getOuterScope()!=Doxygen::globalScope)
  {
    writeNavigationPath(ol);
  }
  startTitle(ol,getOutputFileBase());
  ol.parseText(pageTitle);
  addGroupListToTitle(ol,this);
  endTitle(ol,getOutputFileBase(),displayName());
  
  if (Config_getBool("SEARCHENGINE"))
  {
    Doxygen::searchIndex->setCurrentDoc(pageTitle,getOutputFileBase());
    Doxygen::searchIndex->addWord(localName(),TRUE);
  }

  if (!Config_getString("GENERATE_TAGFILE").isEmpty())
  {
    Doxygen::tagFile << "  <compound kind=\"namespace\">" << endl;
    Doxygen::tagFile << "    <name>" << convertToXML(name()) << "</name>" << endl;
    Doxygen::tagFile << "    <filename>" << convertToXML(getOutputFileBase()) << Doxygen::htmlFileExtension << "</filename>" << endl;
  }
  
  ol.startTextBlock();
    
  if (Config_getBool("DETAILS_AT_TOP"))
  {
    writeDetailedDocumentation(ol);
    ol.newParagraph();
  }
  else if (!briefDescription().isEmpty()) 
  {
    ol.parseDoc(briefFile(),briefLine(),this,0,briefDescription(),TRUE,FALSE);
    ol.writeString(" \n");
    ol.pushGeneratorState();
    ol.disableAllBut(OutputGenerator::Html);
    ol.startTextLink(0,"_details");
    ol.parseText(theTranslator->trMore());
    ol.endTextLink();
    ol.enableAll();
    ol.disableAllBut(OutputGenerator::Man);
    ol.newParagraph();
    ol.popGeneratorState();
  }
  ol.disable(OutputGenerator::Man);
  ol.newParagraph();
  ol.enable(OutputGenerator::Man);
  ol.writeSynopsis();

  ol.endTextBlock();
  
  ol.startMemberSections();
  classSDict->writeDeclaration(ol,0,0,TRUE);

  namespaceSDict->writeDeclaration(ol,TRUE);

  /* write user defined member groups */
  MemberGroupSDict::Iterator mgli(*memberGroupSDict);
  MemberGroup *mg;
  for (;(mg=mgli.current());++mgli)
  {
    mg->writeDeclarations(ol,0,this,0,0);
  }

  //allMemberList.writeDeclarations(ol,0,this,0,0,0,0);
  decDefineMembers.writeDeclarations(ol,0,this,0,0,theTranslator->trDefines(),0);
  decProtoMembers.writeDeclarations(ol,0,this,0,0,theTranslator->trFuncProtos(),0);
  decTypedefMembers.writeDeclarations(ol,0,this,0,0,theTranslator->trTypedefs(),0);
  decEnumMembers.writeDeclarations(ol,0,this,0,0,theTranslator->trEnumerations(),0);
  decFuncMembers.writeDeclarations(ol,0,this,0,0,theTranslator->trFunctions(),0);
  decVarMembers.writeDeclarations(ol,0,this,0,0,theTranslator->trVariables(),0);
  ol.endMemberSections();
  
  if (!Config_getBool("DETAILS_AT_TOP"))
  {
    writeDetailedDocumentation(ol);
  }

  writeMemberDocumentation(ol);

  // write Author section (Man only)
  ol.pushGeneratorState();
  ol.disableAllBut(OutputGenerator::Man);
  ol.startGroupHeader();
  ol.parseText(theTranslator->trAuthor(TRUE,TRUE));
  ol.endGroupHeader();
  ol.parseText(theTranslator->trGeneratedAutomatically(Config_getString("PROJECT_NAME")));

  if (!Config_getString("GENERATE_TAGFILE").isEmpty()) 
  {
    writeDocAnchorsToTagFile();
    Doxygen::tagFile << "  </compound>" << endl;
  }

  ol.popGeneratorState();
  endFile(ol);

  if (Config_getBool("SEPARATE_MEMBER_PAGES"))
  {
    allMemberList.sort();
    writeMemberPages(ol);
  }
}
Exemple #4
0
void GroupDef::writeDocumentation(OutputList &ol)
{
    ol.pushGeneratorState();
    startFile(ol,getOutputFileBase(),name(),title);
    startTitle(ol,getOutputFileBase());
    ol.parseText(title);
    addGroupListToTitle(ol,this);
    endTitle(ol,getOutputFileBase(),title);

    if (Config_getBool("SEARCHENGINE"))
    {
        Doxygen::searchIndex->setCurrentDoc(title,getOutputFileBase());
        static QRegExp we("[a-zA-Z_][a-zA-Z_0-9]*");
        int i=0,p=0,l=0;
        while ((i=we.match(title,p,&l))!=-1) // foreach word in the title
        {
            Doxygen::searchIndex->addWord(title.mid(i,l),TRUE);
            p=i+l;
        }
    }

    if (Config_getBool("HAVE_DOT") && Config_getBool("GROUP_GRAPHS") )
    {
        DotGroupCollaboration graph(this);
        if (!graph.isTrivial())
        {
            msg("Generating dependency graph for group %s\n",qualifiedName().data());
            ol.pushGeneratorState();
            ol.disable(OutputGenerator::Man);
            ol.newParagraph();
            ol.startGroupCollaboration();
            ol.parseText(theTranslator->trCollaborationDiagram(title));
            ol.endGroupCollaboration(graph);
            ol.popGeneratorState();
        }
    }


    if (Config_getBool("DETAILS_AT_TOP"))
    {
        writeDetailedDocumentation(ol);
        ol.newParagraph();
    }
    else if (!briefDescription().isEmpty())
    {
        ol.parseDoc(briefFile(),briefLine(),this,0,briefDescription(),TRUE,FALSE);
        ol.writeString(" \n");
        ol.pushGeneratorState();
        ol.disable(OutputGenerator::Latex);
        ol.disable(OutputGenerator::RTF);
        ol.disable(OutputGenerator::Man);
        ol.startTextLink(0,"_details");
        ol.parseText(theTranslator->trMore());
        ol.endTextLink();
        ol.enableAll();
        ol.disableAllBut(OutputGenerator::Man);
        ol.newParagraph();
        ol.popGeneratorState();
    }

    if (!Config_getString("GENERATE_TAGFILE").isEmpty())
    {
        Doxygen::tagFile << "  <compound kind=\"group\">" << endl;
        Doxygen::tagFile << "    <name>" << convertToXML(name()) << "</name>" << endl;
        Doxygen::tagFile << "    <title>" << convertToXML(title) << "</title>" << endl;
        Doxygen::tagFile << "    <filename>" << convertToXML(getOutputFileBase()) << Doxygen::htmlFileExtension << "</filename>" << endl;
    }

    ol.startMemberSections();

    // write list of files
    if (fileList->count()>0)
    {
        ol.startMemberHeader();
        ol.parseText(theTranslator->trFile(TRUE,FALSE));
        ol.endMemberHeader();
        ol.startMemberList();
        FileDef *fd=fileList->first();
        while (fd)
        {
            ol.startMemberItem(0);
            ol.docify(theTranslator->trFile(FALSE,TRUE)+" ");
            ol.insertMemberAlign();
            ol.writeObjectLink(fd->getReference(),fd->getOutputFileBase(),0,fd->name());
            if (!Config_getString("GENERATE_TAGFILE").isEmpty())
            {
                Doxygen::tagFile << "    <file>" << convertToXML(fd->name()) << "</file>" << endl;
            }
            ol.endMemberItem();
            if (!fd->briefDescription().isEmpty() && Config_getBool("BRIEF_MEMBER_DESC"))
            {
                ol.startMemberDescription();
                ol.parseDoc(briefFile(),briefLine(),fd,0,fd->briefDescription(),FALSE,FALSE);
                ol.endMemberDescription();
                ol.newParagraph();
            }
            fd=fileList->next();
        }
        ol.endMemberList();
    }

    // write list of namespaces
    namespaceSDict->writeDeclaration(ol);

    // write list of groups
    if (groupList->count()>0)
    {
        ol.startMemberHeader();
        ol.parseText(theTranslator->trModules());
        ol.endMemberHeader();
        ol.startMemberList();
        GroupDef *gd=groupList->first();
        while (gd)
        {
            ol.startMemberItem(0);
            //ol.docify(theTranslator->trGroup(FALSE,TRUE));
            //ol.docify(" ");
            ol.insertMemberAlign();
            ol.writeObjectLink(gd->getReference(),gd->getOutputFileBase(),0,gd->groupTitle());
            if (!Config_getString("GENERATE_TAGFILE").isEmpty())
            {
                Doxygen::tagFile << "    <subgroup>" << convertToXML(gd->name()) << "</subgroup>" << endl;
            }
            ol.endMemberItem();
            if (!gd->briefDescription().isEmpty() && Config_getBool("BRIEF_MEMBER_DESC"))
            {
                ol.startMemberDescription();
                ol.parseDoc(briefFile(),briefLine(),gd,0,gd->briefDescription(),FALSE,FALSE);
                ol.endMemberDescription();
                ol.newParagraph();
            }
            gd=groupList->next();
        }
        ol.endMemberList();
    }

    // write list of directories
    if (dirList->count()>0)
    {
        ol.startMemberHeader();
        ol.parseText(theTranslator->trDirectories());
        ol.endMemberHeader();
        ol.startMemberList();
        DirDef *dd=dirList->first();
        while (dd)
        {
            ol.startMemberItem(0);
            ol.parseText(theTranslator->trDir(FALSE,TRUE));
            ol.insertMemberAlign();
            ol.writeObjectLink(dd->getReference(),dd->getOutputFileBase(),0,dd->shortName());
            ol.endMemberItem();
            if (!Config_getString("GENERATE_TAGFILE").isEmpty())
            {
                Doxygen::tagFile << "    <dir>" << convertToXML(dd->displayName()) << "</dir>" << endl;
            }
            if (!dd->briefDescription().isEmpty() && Config_getBool("BRIEF_MEMBER_DESC"))
            {
                ol.startMemberDescription();
                ol.parseDoc(briefFile(),briefLine(),dd,0,dd->briefDescription(),FALSE,FALSE);
                ol.endMemberDescription();
                ol.newParagraph();
            }
            dd=dirList->next();
        }

        ol.endMemberList();
    }

    // write list of classes
    classSDict->writeDeclaration(ol);

    // write list of members
    if (allMemberList->count()>0)
    {
        /* write user defined member groups */
        MemberGroupSDict::Iterator mgli(*memberGroupSDict);
        MemberGroup *mg;
        for (; (mg=mgli.current()); ++mgli)
        {
            mg->writeDeclarations(ol,0,0,0,this);
        }

        //allMemberList->writeDeclarations(ol,0,0,0,this,0,0);
        decDefineMembers.writeDeclarations(ol,0,0,0,this,theTranslator->trDefines(),0);
        decProtoMembers.writeDeclarations(ol,0,0,0,this,theTranslator->trFuncProtos(),0);
        decTypedefMembers.writeDeclarations(ol,0,0,0,this,theTranslator->trTypedefs(),0);
        decEnumMembers.writeDeclarations(ol,0,0,0,this,theTranslator->trEnumerations(),0);
        decFuncMembers.writeDeclarations(ol,0,0,0,this,theTranslator->trFunctions(),0);
        decVarMembers.writeDeclarations(ol,0,0,0,this,theTranslator->trVariables(),0);
    }
    ol.endMemberSections();

    if (!Config_getBool("DETAILS_AT_TOP"))
    {
        writeDetailedDocumentation(ol);
    }

    PageDef *pd=0;
    PageSDict::Iterator pdi(*pageDict);
    for (pdi.toFirst(); (pd=pdi.current()); ++pdi)
    {
        if (!pd->isReference())
        {
            QCString pageName = pd->getOutputFileBase();

            if (!Config_getString("GENERATE_TAGFILE").isEmpty())
            {
                Doxygen::tagFile << "    <page>" << convertToXML(pageName) << "</page>" << endl;
            }

            SectionInfo *si=0;
            if (!pd->title().isEmpty() && !pd->name().isEmpty() &&
                    (si=Doxygen::sectionDict[pd->name()])!=0)
            {
                ol.startSection(si->label,si->title,SectionInfo::Subsection);
                ol.docify(si->title);
                ol.endSection(si->label,SectionInfo::Subsection);
            }
            ol.startTextBlock();
            ol.parseDoc(pd->docFile(),pd->docLine(),pd,0,pd->documentation(),TRUE,FALSE);
            ol.endTextBlock();
        }
    }

    writeMemberDocumentation(ol);

    if (!Config_getString("GENERATE_TAGFILE").isEmpty())
    {
        writeDocAnchorsToTagFile();
        Doxygen::tagFile << "  </compound>" << endl;
    }

    endFile(ol);
    ol.popGeneratorState();

    if (Config_getBool("SEPARATE_MEMBER_PAGES"))
    {
        allMemberList->sort();
        writeMemberPages(ol);
    }

}
Exemple #5
0
/*! Write the documentation page for this file to the file of output
    generators \a ol. 
*/
void FileDef::writeDocumentation(OutputList &ol)
{
  static bool generateTreeView = Config_getBool("GENERATE_TREEVIEW");
  //funcList->countDecMembers();
  
  //QCString fn = name();
  //if (Config_getBool("FULL_PATH_NAMES"))
  //{
  //  fn.prepend(stripFromPath(getPath().copy()));
  //}

  //printf("WriteDocumentation diskname=%s\n",diskname.data());
  
  QCString versionTitle;
  if (!fileVersion.isEmpty())
  {
    versionTitle=("("+fileVersion+")");
  }
  QCString title = docname+versionTitle;
  QCString pageTitle=theTranslator->trFileReference(docname);

  if (Config_getBool("SHOW_DIRECTORIES") && getDirDef())
  {
    startFile(ol,getOutputFileBase(),name(),pageTitle,HLI_FileVisible,!generateTreeView);
    if (!generateTreeView)
    {
      getDirDef()->writeNavigationPath(ol);
      ol.endQuickIndices();
    }
    QCString pageTitleShort=theTranslator->trFileReference(name());
    startTitle(ol,getOutputFileBase(),this);
    ol.pushGeneratorState();
      ol.disableAllBut(OutputGenerator::Html);
      ol.parseText(pageTitleShort); // Html only
      ol.enableAll();
      ol.disable(OutputGenerator::Html);
      ol.parseText(pageTitle); // other output formats
    ol.popGeneratorState();
    addGroupListToTitle(ol,this);
    endTitle(ol,getOutputFileBase(),title);
  }
  else
  {
    startFile(ol,getOutputFileBase(),name(),pageTitle,HLI_FileVisible,!generateTreeView);
    if (!generateTreeView)
    {
      ol.endQuickIndices();
    }
    startTitle(ol,getOutputFileBase(),this);
    ol.parseText(pageTitle);
    addGroupListToTitle(ol,this);
    endTitle(ol,getOutputFileBase(),title);
  }

  ol.startContents();

  if (!fileVersion.isEmpty())
  {
    ol.disableAllBut(OutputGenerator::Html);
    ol.startProjectNumber();
    ol.docify(versionTitle);
    ol.endProjectNumber();
    ol.enableAll();
  }
  
  if (Doxygen::searchIndex)
  {
    Doxygen::searchIndex->setCurrentDoc(pageTitle,getOutputFileBase());
    Doxygen::searchIndex->addWord(localName(),TRUE);
  }
  
  if (!Config_getString("GENERATE_TAGFILE").isEmpty()) 
  {
    Doxygen::tagFile << "  <compound kind=\"file\">" << endl;
    Doxygen::tagFile << "    <name>" << convertToXML(name()) << "</name>" << endl;
    Doxygen::tagFile << "    <path>" << convertToXML(getPath()) << "</path>" << endl;
    Doxygen::tagFile << "    <filename>" 
                     << convertToXML(getOutputFileBase()) 
                     << "</filename>" << endl;
  }

  //---------------------------------------- start flexible part -------------------------------
  
  QListIterator<LayoutDocEntry> eli(
      LayoutDocManager::instance().docEntries(LayoutDocManager::File));
  LayoutDocEntry *lde;
  for (eli.toFirst();(lde=eli.current());++eli)
  {
    switch (lde->kind())
    {
      case LayoutDocEntry::BriefDesc: 
        writeBriefDescription(ol);
        break; 
      case LayoutDocEntry::MemberDeclStart: 
        startMemberDeclarations(ol);
        break; 
      case LayoutDocEntry::FileIncludes:
        writeIncludeFiles(ol);
        break;
      case LayoutDocEntry::FileIncludeGraph:
        writeIncludeGraph(ol);
        break;
      case LayoutDocEntry::FileIncludedByGraph:
        writeIncludedByGraph(ol);
        break;
      case LayoutDocEntry::FileSourceLink:
        writeSourceLink(ol);
        break;
      case LayoutDocEntry::FileClasses: 
        {
          LayoutDocEntrySection *ls = (LayoutDocEntrySection*)lde;
          writeClassDeclarations(ol,ls->title);
        }
        break; 
      case LayoutDocEntry::FileNamespaces: 
        {
          LayoutDocEntrySection *ls = (LayoutDocEntrySection*)lde;
          writeNamespaceDeclarations(ol,ls->title);
        }
        break; 
      case LayoutDocEntry::MemberGroups: 
        writeMemberGroups(ol);
        break; 
      case LayoutDocEntry::MemberDecl: 
        {
          LayoutDocEntryMemberDecl *lmd = (LayoutDocEntryMemberDecl*)lde;
          writeMemberDeclarations(ol,lmd->type,lmd->title);
        }
        break; 
      case LayoutDocEntry::MemberDeclEnd: 
        endMemberDeclarations(ol);
        break;
      case LayoutDocEntry::DetailedDesc: 
        {
          LayoutDocEntrySection *ls = (LayoutDocEntrySection*)lde;
          writeDetailedDescription(ol,ls->title);
        }
        break;
      case LayoutDocEntry::MemberDefStart: 
        startMemberDocumentation(ol);
        break; 
      case LayoutDocEntry::FileInlineClasses:
        writeInlineClasses(ol);
        break;
      case LayoutDocEntry::MemberDef: 
        {
          LayoutDocEntryMemberDef *lmd = (LayoutDocEntryMemberDef*)lde;
          writeMemberDocumentation(ol,lmd->type,lmd->title);
        }
        break;
      case LayoutDocEntry::MemberDefEnd: 
        endMemberDocumentation(ol);
        break;
      case LayoutDocEntry::AuthorSection: 
        writeAuthorSection(ol);
        break;
      case LayoutDocEntry::ClassIncludes:
      case LayoutDocEntry::ClassInheritanceGraph:
      case LayoutDocEntry::ClassNestedClasses:
      case LayoutDocEntry::ClassCollaborationGraph:
      case LayoutDocEntry::ClassAllMembersLink:
      case LayoutDocEntry::ClassUsedFiles:
      case LayoutDocEntry::ClassInlineClasses:
      case LayoutDocEntry::NamespaceNestedNamespaces:
      case LayoutDocEntry::NamespaceClasses:
      case LayoutDocEntry::NamespaceInlineClasses:
      case LayoutDocEntry::GroupClasses: 
      case LayoutDocEntry::GroupInlineClasses: 
      case LayoutDocEntry::GroupNamespaces:
      case LayoutDocEntry::GroupDirs: 
      case LayoutDocEntry::GroupNestedGroups: 
      case LayoutDocEntry::GroupFiles:
      case LayoutDocEntry::GroupGraph: 
      case LayoutDocEntry::GroupPageDocs:
      case LayoutDocEntry::DirSubDirs:
      case LayoutDocEntry::DirFiles:
      case LayoutDocEntry::DirGraph:
        err("Internal inconsistency: member %d should not be part of "
            "LayoutDocManager::File entry list\n",lde->kind());
        break;
    }
  }

  //---------------------------------------- end flexible part -------------------------------

  if (!Config_getString("GENERATE_TAGFILE").isEmpty()) 
  {
    writeDocAnchorsToTagFile();
    Doxygen::tagFile << "  </compound>" << endl;
  }

  ol.endContents();

  if (generateTreeView)
  {
    writeNavigationPath(ol);
  }

  endFile(ol,TRUE);

  if (Config_getBool("SEPARATE_MEMBER_PAGES"))
  {
    MemberList *ml = getMemberList(MemberList::allMembersList);
    if (ml) ml->sort();
    writeMemberPages(ol);
  }
}
void NamespaceDef::writeDocumentation(OutputList &ol)
{
  static bool fortranOpt = Config_getBool("OPTIMIZE_FOR_FORTRAN");
  static bool generateTreeView = Config_getBool("GENERATE_TREEVIEW");
  static bool outputJava = Config_getBool("OPTIMIZE_OUTPUT_JAVA");

  QCString pageTitle;
  if (outputJava)
  {
    pageTitle = theTranslator->trPackage(displayName());
  }
  else if (fortranOpt)
  {
    pageTitle = theTranslator->trModuleReference(displayName());
  }
  else
  {
    pageTitle = theTranslator->trNamespaceReference(displayName());
  }
  startFile(ol,getOutputFileBase(),name(),pageTitle,HLI_NamespaceVisible,!generateTreeView);

  if (!generateTreeView)
  {
    if (getOuterScope()!=Doxygen::globalScope)
    {
      writeNavigationPath(ol);
    }
    ol.endQuickIndices();
  }

  startTitle(ol,getOutputFileBase(),this);
  ol.parseText(pageTitle,TRUE);
  addGroupListToTitle(ol,this);
  endTitle(ol,getOutputFileBase(),displayName());
  ol.startContents();
  
  if (Doxygen::searchIndex)
  {
    Doxygen::searchIndex->setCurrentDoc(pageTitle,getOutputFileBase());
    Doxygen::searchIndex->addWord(localName(),TRUE);
  }

  bool generateTagFile = !Config_getString("GENERATE_TAGFILE").isEmpty();
  if (generateTagFile)
  {
    Doxygen::tagFile << "  <compound kind=\"namespace\">" << endl;
    Doxygen::tagFile << "    <name>" << convertToXML(name()) << "</name>" << endl;
    Doxygen::tagFile << "    <filename>" << convertToXML(getOutputFileBase()) << Doxygen::htmlFileExtension << "</filename>" << endl;
  }

  Doxygen::indexList.addIndexItem(this,0);

  //---------------------------------------- start flexible part -------------------------------

  QListIterator<LayoutDocEntry> eli(
      LayoutDocManager::instance().docEntries(LayoutDocManager::Namespace));
  LayoutDocEntry *lde;
  for (eli.toFirst();(lde=eli.current());++eli)
  {
    switch (lde->kind())
    {
      case LayoutDocEntry::BriefDesc: 
        writeBriefDescription(ol);
        break; 
      case LayoutDocEntry::MemberDeclStart: 
        startMemberDeclarations(ol);
        break; 
      case LayoutDocEntry::NamespaceClasses: 
        {
          LayoutDocEntrySection *ls = (LayoutDocEntrySection*)lde;
          writeClassDeclarations(ol,ls->title);
        }
        break; 
      case LayoutDocEntry::NamespaceNestedNamespaces: 
        {
          LayoutDocEntrySection *ls = (LayoutDocEntrySection*)lde;
          writeNamespaceDeclarations(ol,ls->title);
        }
        break; 
      case LayoutDocEntry::MemberGroups: 
        writeMemberGroups(ol);
        break; 
      case LayoutDocEntry::MemberDecl: 
        {
          LayoutDocEntryMemberDecl *lmd = (LayoutDocEntryMemberDecl*)lde;
          writeMemberDeclarations(ol,lmd->type,lmd->title);
        }
        break; 
      case LayoutDocEntry::MemberDeclEnd: 
        endMemberDeclarations(ol);
        break;
      case LayoutDocEntry::DetailedDesc: 
        {
          LayoutDocEntrySection *ls = (LayoutDocEntrySection*)lde;
          writeDetailedDescription(ol,ls->title);
        }
        break;
      case LayoutDocEntry::MemberDefStart: 
        startMemberDocumentation(ol);
        break; 
      case LayoutDocEntry::MemberDef: 
        {
          LayoutDocEntryMemberDef *lmd = (LayoutDocEntryMemberDef*)lde;
          writeMemberDocumentation(ol,lmd->type,lmd->title);
        }
        break;
      case LayoutDocEntry::MemberDefEnd: 
        endMemberDocumentation(ol);
        break;
      case LayoutDocEntry::AuthorSection: 
        writeAuthorSection(ol);
        break;
      case LayoutDocEntry::ClassIncludes:
      case LayoutDocEntry::ClassInheritanceGraph:
      case LayoutDocEntry::ClassNestedClasses:
      case LayoutDocEntry::ClassCollaborationGraph:
      case LayoutDocEntry::ClassAllMembersLink:
      case LayoutDocEntry::ClassUsedFiles:
      case LayoutDocEntry::FileClasses:
      case LayoutDocEntry::FileNamespaces:
      case LayoutDocEntry::FileIncludes:
      case LayoutDocEntry::FileIncludeGraph:
      case LayoutDocEntry::FileIncludedByGraph: 
      case LayoutDocEntry::FileSourceLink:
      case LayoutDocEntry::GroupClasses: 
      case LayoutDocEntry::GroupInlineClasses: 
      case LayoutDocEntry::GroupNamespaces:
      case LayoutDocEntry::GroupDirs: 
      case LayoutDocEntry::GroupNestedGroups: 
      case LayoutDocEntry::GroupFiles:
      case LayoutDocEntry::GroupGraph: 
      case LayoutDocEntry::GroupPageDocs:
      case LayoutDocEntry::DirSubDirs:
      case LayoutDocEntry::DirFiles:
      case LayoutDocEntry::DirGraph:
        err("Internal inconsistency: member %d should not be part of "
            "LayoutDocManager::Namespace entry list\n",lde->kind());
        break;
    }
  }

  //---------------------------------------- end flexible part -------------------------------

  ol.endContents();

  if (generateTreeView)
  {
    writeNavigationPath(ol);
  }

  endFile(ol,TRUE);

  if (generateTagFile)
  {
    writeDocAnchorsToTagFile();
    Doxygen::tagFile << "  </compound>" << endl;
  }

  if (Config_getBool("SEPARATE_MEMBER_PAGES"))
  {
    MemberList *allMemberList = getMemberList(MemberList::allMembersList);
    if (allMemberList) allMemberList->sort();
    writeMemberPages(ol);
  }
}