diff options
Diffstat (limited to 'addon/doxmlparser/test')
-rw-r--r-- | addon/doxmlparser/test/main.cpp | 226 |
1 files changed, 156 insertions, 70 deletions
diff --git a/addon/doxmlparser/test/main.cpp b/addon/doxmlparser/test/main.cpp index 457d881..a6b867d 100644 --- a/addon/doxmlparser/test/main.cpp +++ b/addon/doxmlparser/test/main.cpp @@ -14,8 +14,12 @@ */ #include <stdio.h> +#include <stdlib.h> #include <doxmlintf.h> +/*! Dumps the contents of a hyperlinked text fragment as plain text to the + * output. + */ QString linkedTextToString(ILinkedTextIterator *ti) { QString result; @@ -24,106 +28,116 @@ QString linkedTextToString(ILinkedTextIterator *ti) { switch (lt->kind()) { - case ILinkedText::Kind_Text: - result+=dynamic_cast<ILT_Text*>(lt)->text(); break; - case ILinkedText::Kind_Ref: - result+=dynamic_cast<ILT_Ref *>(lt)->text(); break; + 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; } -void DumpDoc(IDoc *doc) +/*! 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) { - printf(" doc node kind=`%d'\n",doc->kind()); + QString indent; + indent.fill(' ',level); + //printf(" doc node kind=`%d'\n",doc->kind()); switch (doc->kind()) { case IDoc::Para: { - printf(" --- par --- \n"); + 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); + DumpDoc(pdoc,level+1); } di->release(); - printf(" --- end par --- \n"); + InPrint(("</para>\n")); } break; case IDoc::Text: { IDocText *txt = dynamic_cast<IDocText*>(doc); ASSERT(txt!=0); - printf(" --- text `%s' markup=%d --- \n",txt->text().data(),txt->markup()); + InPrint(("<text value=`%s' markup=%d/>\n",txt->text()->latin1(),txt->markup())); } break; case IDoc::MarkupModifier: { IDocMarkupModifier *md = dynamic_cast<IDocMarkupModifier*>(doc); ASSERT(md!=0); - printf(" --- markup modifier enabled=%d markup=%d\n",md->enabled(),md->markup()); + InPrint(("<markup modifier enabled=%d markup=%d/>\n",md->enabled(),md->markup())); } break; case IDoc::ItemizedList: { - printf(" --- itemized list --- \n"); + 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); + DumpDoc(pdoc,level+1); } di->release(); - printf(" --- end itemized list --- \n"); + InPrint(("</itemized list>\n")); } break; case IDoc::OrderedList: { - printf(" --- ordered list --- \n"); + 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); + DumpDoc(pdoc,level+1); } di->release(); - printf(" --- end ordered list --- \n"); + InPrint(("</ordered list>\n")); } break; case IDoc::ListItem: { - printf(" --- list item --- \n"); + 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); + DumpDoc(pdoc,level+1); } di->release(); - printf(" --- end list item --- \n"); + InPrint(("</list item>\n")); } break; case IDoc::ParameterList: { IDocParameterList *list = dynamic_cast<IDocParameterList*>(doc); - printf(" --- parameter list type=%d --- \n",list->listType()); + InPrint(("<parameter list type=%d>\n",list->listType())); IDocIterator *di = list->params(); IDoc *pdoc; for (di->toFirst();(pdoc=di->current());di->toNext()) { - DumpDoc(pdoc); + DumpDoc(pdoc,level+1); } di->release(); - printf(" --- parameter list item --- \n"); + InPrint(("</parameter list>\n")); ASSERT(list!=0); } break; @@ -131,187 +145,248 @@ void DumpDoc(IDoc *doc) { IDocParameter *par = dynamic_cast<IDocParameter*>(doc); ASSERT(par!=0); - printf(" --- parameter name=%s --- \n",par->name().data()); - DumpDoc(par->description()); - printf(" --- end parameter --- \n"); + InPrint(("<parameter name=%s>\n",par->name()->latin1())); + DumpDoc(par->description(),level+1); + InPrint(("<parameter/>\n")); } break; case IDoc::SimpleSect: { IDocSimpleSect *ss = dynamic_cast<IDocSimpleSect*>(doc); ASSERT(ss!=0); - printf(" --- simplesect type=%s --- \n",ss->typeString().data()); - DumpDoc(ss->title()); - DumpDoc(ss->description()); - printf(" --- end simplesect --- \n"); + 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: { - printf(" --- title --- \n"); + 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); + DumpDoc(pdoc,level+1); } - printf(" --- end title --- \n"); + InPrint(("<title/>\n")); } break; case IDoc::Ref: { IDocRef *ref = dynamic_cast<IDocRef*>(doc); ASSERT(ref!=0); - printf(" ref=%p\n",ref); - printf(" --- ref id=%s text=%s --- \n", - ref->refId().data(),ref->text().data()); - printf(" --- end ref --- \n"); + InPrint(("<ref id=%s text=%s/>\n", + ref->refId()->latin1(),ref->text()->latin1())); } break; case IDoc::VariableList: { - printf(" --- start variablelist --- \n"); + 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); + DumpDoc(pdoc,level+1); } di->release(); - printf(" --- end variablelist --- \n"); + InPrint(("<variablelist/>\n")); } break; case IDoc::VariableListEntry: { IDocVariableListEntry *vle = dynamic_cast<IDocVariableListEntry*>(doc); ASSERT(vle!=0); - printf(" --- start variablelistentry term=%s --- \n",vle->term().data()); - DumpDoc(vle->description()); - printf(" --- end variablelistentry --- \n"); + InPrint(("<variablelistentry term=%s>\n",vle->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")); } break; case IDoc::Section: { IDocSection *sec = dynamic_cast<IDocSection*>(doc); ASSERT(sec!=0); - printf(" --- section id=`%s' level=%d --- \n", - sec->id().data(),sec->level()); + InPrint(("<section id=`%s' level=%d>\n", + sec->id()->latin1(),sec->level())); IDocIterator *di = sec->title(); IDoc *pdoc; for (di->toFirst();(pdoc=di->current());di->toNext()) { - DumpDoc(pdoc); + DumpDoc(pdoc,level+1); } - printf(" --- end section --- \n"); + InPrint(("<section/>\n")); } break; case IDoc::Root: { - printf(" --- root --- \n"); + InPrint(("<root>\n")); IDocRoot *root = dynamic_cast<IDocRoot*>(doc); ASSERT(root!=0); IDocIterator *di = root->contents(); IDoc *pdoc; for (di->toFirst();(pdoc=di->current());di->toNext()) { - DumpDoc(pdoc); + DumpDoc(pdoc,level+1); } di->release(); - printf(" --- end root --- \n"); + InPrint(("<root/>\n")); } break; @@ -329,24 +404,24 @@ void DumpGraph(IGraph *graph) for (ni->toFirst();(node=ni->current());ni->toNext()) { printf(" --- node id=%s label=%s linkId=%s\n", - node->id().data(), - node->label().data(), - node->linkId().data() + node->id()->latin1(), + node->label()->latin1(), + node->linkId()->latin1() ); IChildNodeIterator *cni = node->children(); IChildNode *cn; for (cni->toFirst();(cn=cni->current());cni->toNext()) { printf(" + child id=%s label=%s relation=%s\n", - cn->node()->id().data(), - cn->node()->label().data(), - cn->relationString().data() + cn->node()->id()->latin1(), + cn->node()->label()->latin1(), + cn->relationString()->latin1() ); IEdgeLabelIterator *eli = cn->edgeLabels(); IEdgeLabel *el; for (eli->toFirst();(el=eli->current());eli->toNext()) { - printf(" edgeLabel=%s\n",el->label().data()); + printf(" edgeLabel=%s\n",el->label()->latin1()); } eli->release(); } @@ -381,19 +456,19 @@ int main(int argc,char **argv) for (cli->toFirst();(comp=cli->current());cli->toNext()) { printf("Compound name=%s id=%s kind=%s\n", - comp->name().data(),comp->id().data(),comp->kindString().data()); + comp->name()->latin1(),comp->id()->latin1(),comp->kindString()->latin1()); ISectionIterator *sli = comp->sections(); ISection *sec; for (sli->toFirst();(sec=sli->current());sli->toNext()) { - printf(" Section kind=%s\n",sec->kindString().data()); + printf(" Section kind=%s\n",sec->kindString()->latin1()); IMemberIterator *mli = sec->members(); IMember *mem; for (mli->toFirst();(mem=mli->current());mli->toNext()) { ILinkedTextIterator *lti = mem->type(); printf(" Member type=%s name=%s\n", - linkedTextToString(lti).data(),mem->name().data()); + linkedTextToString(lti).latin1(),mem->name()->latin1()); lti->release(); IParamIterator *pli = mem->params(); @@ -407,7 +482,7 @@ int main(int argc,char **argv) QString defVal = linkedTextToString(lti); lti->release(); printf(" Param type=%s name=%s defvalue=%s\n", - parType.data(), par->definitionName().data(),defVal.data()); + parType.latin1(), par->definitionName()->latin1(),defVal.latin1()); } pli->release(); IMemberReferenceIterator *mri = mem->references(); @@ -416,7 +491,7 @@ int main(int argc,char **argv) { IMember *memr = mr->member(); printf(" References %s at line %d\n", - mr->memberName().data(),memr->bodyStart()); + mr->memberName()->latin1(),memr->bodyStart()); } mri->release(); @@ -425,7 +500,7 @@ int main(int argc,char **argv) { IMember *memr = mr->member(); printf(" ReferencedBy %s at line %d\n", - mr->memberName().data(),memr->bodyStart()); + mr->memberName()->latin1(),memr->bodyStart()); } mri->release(); @@ -434,7 +509,7 @@ int main(int argc,char **argv) for (evi->toFirst();(ev=evi->current());evi->toNext()) { printf(" Enum value `%s' init=`%s'\n", - ev->name().data(),ev->initializer().data()); + ev->name()->latin1(),ev->initializer()->latin1()); } evi->release(); @@ -442,14 +517,14 @@ int main(int argc,char **argv) if (doc) { printf("===== brief description ==== \n"); - DumpDoc(doc); + DumpDoc(doc,0); } doc = mem->detailedDescription(); if (doc) { printf("===== detailed description ==== \n"); - DumpDoc(doc); + DumpDoc(doc,0); } } mli->release(); @@ -460,14 +535,14 @@ int main(int argc,char **argv) if (doc) { printf("===== brief description ==== \n"); - DumpDoc(doc); + DumpDoc(doc,0); } doc = comp->detailedDescription(); if (doc) { printf("===== detailed description ==== \n"); - DumpDoc(doc); + DumpDoc(doc,0); } if (comp->kind()==ICompound::Class) @@ -487,7 +562,7 @@ int main(int argc,char **argv) for (bcli->toFirst();(bClass=bcli->current());bcli->toNext()) { ICompound *bc = bClass->compound(); - printf(" + class %s\n",bc->name().data()); + printf(" + class %s\n",bc->name()->latin1()); bc->release(); } bcli->release(); @@ -498,11 +573,22 @@ int main(int argc,char **argv) for (dcli->toFirst();(dClass=dcli->current());dcli->toNext()) { ICompound *dc = dClass->compound(); - printf(" + class %s\n",dc->name().data()); + printf(" + class %s\n",dc->name()->latin1()); dc->release(); } dcli->release(); } + else if (comp->kind()==ICompound::File) + { + IFile *file = dynamic_cast<IFile*>(comp); + ASSERT(file!=0); + + printf("==== include dependency graph ==== \n"); + DumpGraph(file->includeDependencyGraph()); + + printf("==== included by dependency graph ==== \n"); + DumpGraph(file->includedByDependencyGraph()); + } comp->release(); } |