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

📄 main.cpp

📁 Doxygen的词根来源于Document(文档)和Oxygen(氧气)
💻 CPP
📖 第 1 页 / 共 2 页
字号:
/****************************************************************************** * * $Id: $ * * * Copyright (C) 1997-2006 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby  * granted. No representations are made about the suitability of this software  * for any purpose. It is provided "as is" without express or implied warranty. * See the GNU General Public License for more details. * */#include <stdio.h>#include <stdlib.h>#include <doxmlintf.h>#include <qstring.h>/*! Dumps the contents of a hyperlinked text fragment as plain text to the *  output. */QString linkedTextToString(ILinkedTextIterator *ti){  QString result;  ILinkedText *lt=0;  for (ti->toFirst();(lt=ti->current());ti->toNext())  {    switch (lt->kind())    {      case ILinkedText::Kind_Text: // plain text        result+=dynamic_cast<ILT_Text*>(lt)->text()->latin1(); break;      case ILinkedText::Kind_Ref:  // a link        result+=dynamic_cast<ILT_Ref *>(lt)->text()->latin1(); break;    }  }  return result;}/*! Macro for printing an indented  message. */#define InPrint(x) printf("%s",indent.latin1()), printf x;/*! Dumps the contents of a documentation block to stdout. *  @note This function will call itself recursively. *  @param doc The root of the documentation tree. *  @param level The indent level. */void DumpDoc(IDoc *doc,int level){  if (doc==0) return;  QString indent;  indent.fill(' ',level);  //printf("      doc node kind=`%d'\n",doc->kind());  switch (doc->kind())  {    case IDoc::Para:       {        InPrint(("<para>\n"));        IDocPara *par = dynamic_cast<IDocPara*>(doc);        ASSERT(par!=0);        IDocIterator *di = par->contents();        IDoc *pdoc;        for (di->toFirst();(pdoc=di->current());di->toNext())        {          DumpDoc(pdoc,level+1);        }        di->release();        InPrint(("</para>\n"));      }      break;    case IDoc::Text:      {        IDocText *txt = dynamic_cast<IDocText*>(doc);        ASSERT(txt!=0);        InPrint(("<text value=`%s' markup=%d headingLevel=%d/>\n",              txt->text()->latin1(),txt->markup(),txt->headingLevel()));      }      break;    case IDoc::MarkupModifier:      {        IDocMarkupModifier *md = dynamic_cast<IDocMarkupModifier*>(doc);        ASSERT(md!=0);        InPrint(("<markup modifier enabled=%d markup=%d headingLevel=%d/>\n",              md->enabled(),md->markup(),md->headingLevel()));      }      break;    case IDoc::ItemizedList:      {        InPrint(("<itemized list>\n"));        IDocItemizedList *list = dynamic_cast<IDocItemizedList*>(doc);        ASSERT(list!=0);        IDocIterator *di = list->elements();        IDoc *pdoc;        for (di->toFirst();(pdoc=di->current());di->toNext())        {          DumpDoc(pdoc,level+1);        }        di->release();        InPrint(("</itemized list>\n"));      }      break;    case IDoc::OrderedList:      {        InPrint(("<ordered list>\n"));        IDocOrderedList *list = dynamic_cast<IDocOrderedList*>(doc);        ASSERT(list!=0);        IDocIterator *di = list->elements();        IDoc *pdoc;        for (di->toFirst();(pdoc=di->current());di->toNext())        {          DumpDoc(pdoc,level+1);        }        di->release();        InPrint(("</ordered list>\n"));      }      break;    case IDoc::ListItem:      {        InPrint(("<list item>\n"));        IDocListItem *li = dynamic_cast<IDocListItem*>(doc);        ASSERT(li!=0);        IDocIterator *di = li->contents();        IDoc *pdoc;        for (di->toFirst();(pdoc=di->current());di->toNext())        {          DumpDoc(pdoc,level+1);        }        di->release();        InPrint(("</list item>\n"));      }      break;    case IDoc::ParameterItem:      {        IDocParameterItem *item = dynamic_cast<IDocParameterItem*>(doc);        InPrint(("<parameter item>\n"));        IDocIterator *di = item->paramNames();        IDoc *pdoc;        for (di->toFirst();(pdoc=di->current());di->toNext())        {          DumpDoc(pdoc,level+1);        }        di->release();        DumpDoc(item->description(),level+1);        InPrint(("</parameter item>\n"));      }      break;    case IDoc::ParameterList:      {        IDocParameterList *list = dynamic_cast<IDocParameterList*>(doc);        InPrint(("<parameter list type=%d>\n",list->sectType()));        IDocIterator *di = list->params();        IDoc *pdoc;        for (di->toFirst();(pdoc=di->current());di->toNext())        {          DumpDoc(pdoc,level+1);        }        di->release();        InPrint(("</parameter list>\n"));        ASSERT(list!=0);      }      break;    case IDoc::Parameter:      {        IDocParameter *par = dynamic_cast<IDocParameter*>(doc);        ASSERT(par!=0);        InPrint(("<parameter name=%s/>\n",par->name()->latin1()));      }      break;    case IDoc::SimpleSect:      {        IDocSimpleSect *ss = dynamic_cast<IDocSimpleSect*>(doc);        ASSERT(ss!=0);        InPrint(("<simplesect type=%s>\n",ss->typeString()->latin1()));        DumpDoc(ss->title(),level+1);        DumpDoc(ss->description(),level+1);        InPrint(("<simplesect/>\n"));      }      break;    case IDoc::Title:      {        InPrint(("<title>\n"));        IDocTitle *t = dynamic_cast<IDocTitle*>(doc);        ASSERT(t!=0);        IDocIterator *di = t->title();        IDoc *pdoc;        for (di->toFirst();(pdoc=di->current());di->toNext())        {          DumpDoc(pdoc,level+1);        }        InPrint(("<title/>\n"));      }      break;    case IDoc::Ref:      {        IDocRef *ref = dynamic_cast<IDocRef*>(doc);        ASSERT(ref!=0);        InPrint(("<ref id=%s text=%s/>\n",            ref->refId()->latin1(),ref->text()->latin1()));      }      break;    case IDoc::VariableList:      {        InPrint(("<variablelist>\n"));        IDocVariableList *vl = dynamic_cast<IDocVariableList*>(doc);        ASSERT(vl!=0);        IDocIterator *di = vl->entries();        IDoc *pdoc;        for (di->toFirst();(pdoc=di->current());di->toNext())        {          DumpDoc(pdoc,level+1);        }        di->release();        InPrint(("<variablelist/>\n"));      }      break;    case IDoc::VariableListEntry:      {        IDocVariableListEntry *vle = dynamic_cast<IDocVariableListEntry*>(doc);        ASSERT(vle!=0);        ILinkedTextIterator *lti = vle->term();        QString term = linkedTextToString(lti);        lti->release();        InPrint(("<variablelistentry term=%s>\n",term.latin1()));        DumpDoc(vle->description(),level+1);        InPrint(("<variablelistentry/>\n"));      }      break;    case IDoc::HRuler:      {        IDocHRuler *hr = dynamic_cast<IDocHRuler*>(doc);        ASSERT(hr!=0);        InPrint(("<hruler/>\n"));      }      break;    case IDoc::LineBreak:      {        IDocLineBreak *lb = dynamic_cast<IDocLineBreak*>(doc);        ASSERT(lb!=0);        InPrint(("<linebreak/>\n"));      }      break;    case IDoc::ULink:      {        IDocULink *ul = dynamic_cast<IDocULink*>(doc);        ASSERT(ul!=0);        InPrint(("<ulink url=`%s' text=`%s'/>\n",ul->url()->latin1(),ul->text()->latin1()));      }      break;    case IDoc::EMail:      {        IDocEMail *em = dynamic_cast<IDocEMail*>(doc);        ASSERT(em!=0);        InPrint(("<email address=`%s'/>\n",em->address()->latin1()));      }      break;    case IDoc::Link:      {        IDocLink *lk = dynamic_cast<IDocLink*>(doc);        ASSERT(lk!=0);        InPrint(("<link refid=`%s' text=`%s'/>\n",lk->refId()->latin1(),lk->text()->latin1()));      }      break;    case IDoc::ProgramListing:      {        IDocProgramListing *pl = dynamic_cast<IDocProgramListing*>(doc);        ASSERT(pl!=0);        InPrint(("<programlisting>\n"));        IDocIterator *cli = pl->codeLines();        IDoc *cl;        for (cli->toFirst();(cl=cli->current());cli->toNext())        {          DumpDoc(cl,level+1);        }        cli->release();        InPrint(("</programlisting>\n"));      }      break;    case IDoc::CodeLine:      {        IDocCodeLine *cl = dynamic_cast<IDocCodeLine*>(doc);        ASSERT(cl!=0);        InPrint(("<codeline lineNumber=%d refId=`%s'>\n",cl->lineNumber(),cl->refId()->latin1()));        IDocIterator *cei = cl->codeElements();        IDoc *ce;        for (cei->toFirst();(ce=cei->current());cei->toNext())        {          DumpDoc(ce,level+1);        }        cei->release();        InPrint(("</codeline>\n"));      }      break;    case IDoc::Highlight:      {        IDocHighlight *hl = dynamic_cast<IDocHighlight*>(doc);        ASSERT(hl!=0);        InPrint(("<highlight kind=%d>\n",hl->kind()));        IDocIterator *cei = hl->codeElements();        IDoc *ce;        for (cei->toFirst();(ce=cei->current());cei->toNext())        {          DumpDoc(ce,level+1);        }        cei->release();        InPrint(("</highlight>\n"));      }      break;    case IDoc::Formula:      {        IDocFormula *fm = dynamic_cast<IDocFormula*>(doc);        ASSERT(fm!=0);        InPrint(("<formula id=`%s' text=`%s'/>\n",fm->id()->latin1(),fm->text()->latin1()));      }      break;    case IDoc::Image:      {        IDocImage *img = dynamic_cast<IDocImage*>(doc);        ASSERT(img!=0);        InPrint(("<image name=`%s' caption=`%s'/>\n",img->name()->latin1(),img->caption()->latin1()));      }      break;    case IDoc::DotFile:      {        IDocDotFile *df = dynamic_cast<IDocDotFile*>(doc);        ASSERT(df!=0);        InPrint(("<dotfile name=`%s' caption=`%s'/>\n",df->name()->latin1(),df->caption()->latin1()));      }      break;    case IDoc::IndexEntry:      {        IDocIndexEntry *ie = dynamic_cast<IDocIndexEntry*>(doc);        ASSERT(ie!=0);        InPrint(("<indexentry primary=`%s' secondary=`%s'/>\n",ie->primary()->latin1(),ie->secondary()->latin1()));      }      break;    case IDoc::Table:      {        IDocTable *tbl = dynamic_cast<IDocTable*>(doc);        ASSERT(tbl!=0);        InPrint(("<table numcols=%d caption=`%s'>\n",tbl->numColumns(),tbl->caption()->latin1()));        IDocIterator *ri = tbl->rows();        IDoc *row;        for (ri->toFirst();(row=ri->current());ri->toNext())        {          DumpDoc(row,level+1);        }        ri->release();        InPrint(("</table>\n"));      }      break;    case IDoc::Row:      {        IDocRow *row = dynamic_cast<IDocRow*>(doc);        ASSERT(row!=0);        InPrint(("<row>\n"));        IDocIterator *ei = row->entries();        IDoc *e;        for (ei->toFirst();(e=ei->current());ei->toNext())        {          DumpDoc(e,level+1);        }        ei->release();        InPrint(("</row>\n"));      }      break;    case IDoc::Entry:      {        IDocEntry *ent = dynamic_cast<IDocEntry*>(doc);        ASSERT(ent!=0);        InPrint(("<entry>\n"));        IDocIterator *di = ent->contents();        IDoc *pdoc;        for (di->toFirst();(pdoc=di->current());di->toNext())        {          DumpDoc(pdoc,level+1);        }        di->release();        InPrint(("</entry>\n"));      }

⌨️ 快捷键说明

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