doxmlintf.h 17.1 KB
Newer Older
Dimitri van Heesch's avatar
Dimitri van Heesch committed
1 2 3 4 5 6 7
#ifndef _DOXMLINTF_H
#define _DOXMLINTF_H

#include <qstring.h>

class IMember;
class IDocIterator;
8 9
class ICompound;
class ISection;
Dimitri van Heesch's avatar
Dimitri van Heesch committed
10 11 12 13 14 15

class ILinkedText
{
  public:
    enum Kind { Kind_Text, Kind_Ref };
    virtual Kind kind() const = 0;
16
    virtual ~ILinkedText() {}
Dimitri van Heesch's avatar
Dimitri van Heesch committed
17 18 19 20 21 22 23 24 25 26 27
};

class ILT_Text : public ILinkedText
{
  public:
    virtual QString text() const = 0;
};

class ILT_Ref : public ILinkedText
{
  public:
Dimitri van Heesch's avatar
Dimitri van Heesch committed
28
    enum TargetKind { Member, Compound };
Dimitri van Heesch's avatar
Dimitri van Heesch committed
29
    virtual QString id() const = 0;
Dimitri van Heesch's avatar
Dimitri van Heesch committed
30
    virtual TargetKind targetKind() const = 0;
Dimitri van Heesch's avatar
Dimitri van Heesch committed
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
    virtual QString external() const = 0;
    virtual QString text() const = 0;
};

class ILinkedTextIterator 
{
  public:
    virtual ILinkedText *toFirst() = 0;
    virtual ILinkedText *toLast() = 0;
    virtual ILinkedText *toNext() = 0;
    virtual ILinkedText *toPrev() = 0;
    virtual ILinkedText *current() const = 0;
    virtual void release() = 0;
};

class IParam 
{
  public:
    virtual ILinkedTextIterator *type() const = 0;
    virtual QString declarationName() const = 0;
    virtual QString definitionName() const = 0;
    virtual QString attrib() const = 0;
    virtual QString arraySpecifier() const = 0;
    virtual ILinkedTextIterator *defaultValue() const = 0;
55
    virtual ~IParam() {}
Dimitri van Heesch's avatar
Dimitri van Heesch committed
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
};

class IParamIterator
{
  public:
    virtual IParam *toFirst() = 0;
    virtual IParam *toLast() = 0;
    virtual IParam *toNext() = 0;
    virtual IParam *toPrev() = 0;
    virtual IParam *current() const = 0;
    virtual void release() = 0;
};

class IMemberReference 
{
  public:
    virtual IMember *member() const = 0;
    virtual QString memberName() const = 0;
74
    virtual ~IMemberReference() {}
Dimitri van Heesch's avatar
Dimitri van Heesch committed
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
};

class IMemberReferenceIterator 
{
  public:
    virtual IMemberReference *toFirst() = 0;
    virtual IMemberReference *toLast() = 0;
    virtual IMemberReference *toNext() = 0;
    virtual IMemberReference *toPrev() = 0;
    virtual IMemberReference *current() const = 0;
    virtual void release() = 0;
};

class IEnumValue
{
  public:
    virtual QString name() const = 0;
    virtual QString initializer() const = 0;
93
    virtual ~IEnumValue() {}
Dimitri van Heesch's avatar
Dimitri van Heesch committed
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
};

class IEnumValueIterator 
{
  public:
    virtual IEnumValue *toFirst() = 0;
    virtual IEnumValue *toLast() = 0;
    virtual IEnumValue *toNext() = 0;
    virtual IEnumValue *toPrev() = 0;
    virtual IEnumValue *current() const = 0;
    virtual void release() = 0;
};

class IDoc
{
  public:
    enum Kind 
    { 
112
      Invalid = 0,        //  0
113 114
      Para = 1,           //  1 -> IDocPara
      Text = 2,           //  2 -> IDocText
115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133
      MarkupModifier,     //  3 -> IDocMarkupModifier
      ItemizedList,       //  4 -> IDocItemizedList
      OrderedList,        //  5 -> IDocOrderedList
      ListItem,           //  6 -> IDocListItem
      ParameterList,      //  7 -> IDocParameterList
      Parameter,          //  8 -> IDocParameter
      SimpleSect,         //  9 -> IDocSimpleSect
      Title,              // 10 -> IDocTitle
      Ref,                // 11 -> IDocRef
      VariableList,       // 12 -> IDocVariableList
      VariableListEntry,  // 13 -> IDocVariableListEntry
      HRuler,             // 14 -> IDocHRuler
      LineBreak,          // 15 -> IDocLineBreak
      ULink,              // 16 -> IDocULink
      EMail,              // 17 -> IDocEMail
      Link,               // 18 -> IDocLink
      ProgramListing,     // 19 -> IDocProgramListing
      CodeLine,           // 20 -> IDocCodeLine
      Highlight,          // 21 -> IDocHighlight
Dimitri van Heesch's avatar
Dimitri van Heesch committed
134 135 136 137 138 139 140 141 142 143 144
      Formula,            // 22 -> IDocFormula
      Image,              // 23 -> IDocImage
      DotFile,            // 24 -> IDocDotFile
      IndexEntry,         // 25 -> IDocIndexEntry
      Table,              // 26 -> IDocTable
      Row,                // 27 -> IDocRow
      Entry,              // 28 -> IDocEntry
      Section,            // 29 -> IDocSection
      Root                // 30 -> IDocRoot
    };
    virtual Kind kind() const = 0;
145
    virtual ~IDoc() {}
Dimitri van Heesch's avatar
Dimitri van Heesch committed
146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179
};

class IDocMarkup : public IDoc
{
  public:
    enum Markup 
    { 
      Normal         = 0x00,
      Bold           = 0x01,
      Emphasis       = 0x02,
      ComputerOutput = 0x04,
      Subscript      = 0x08,
      Superscript    = 0x10,
      SmallFont      = 0x20,
      Center         = 0x40
    };

};

class IDocPara : public IDoc
{
  public:
    virtual IDocIterator *contents() const = 0; 
};

class IDocText : public IDocMarkup
{
  public:
    virtual QString text() const = 0;
    virtual int markup() const = 0;
};

class IDocMarkupModifier : public IDoc
{
Dimitri van Heesch's avatar
Dimitri van Heesch committed
180 181 182 183 184 185 186 187 188
  public:
    virtual bool enabled() const = 0;
    virtual int markup() const = 0;
};

class IDocItemizedList : public IDoc
{
  public:
    virtual IDocIterator *elements() const = 0;
Dimitri van Heesch's avatar
Dimitri van Heesch committed
189 190
};

Dimitri van Heesch's avatar
Dimitri van Heesch committed
191
class IDocOrderedList : public IDoc
Dimitri van Heesch's avatar
Dimitri van Heesch committed
192
{
Dimitri van Heesch's avatar
Dimitri van Heesch committed
193 194
  public:
    virtual IDocIterator *elements() const = 0;
Dimitri van Heesch's avatar
Dimitri van Heesch committed
195 196 197 198
};

class IDocListItem : public IDoc
{
Dimitri van Heesch's avatar
Dimitri van Heesch committed
199 200
  public:
    virtual IDocIterator *contents() const = 0;
Dimitri van Heesch's avatar
Dimitri van Heesch committed
201 202 203 204
};

class IDocParameterList : public IDoc
{
Dimitri van Heesch's avatar
Dimitri van Heesch committed
205 206 207 208
  public:
    enum Types { Param, RetVal, Exception };
    virtual Types listType() const = 0;
    virtual IDocIterator *params() const = 0;
Dimitri van Heesch's avatar
Dimitri van Heesch committed
209 210 211 212
};

class IDocParameter : public IDoc
{
Dimitri van Heesch's avatar
Dimitri van Heesch committed
213 214 215
  public:
    virtual QString name() const = 0;
    virtual IDocPara *description() const = 0;
Dimitri van Heesch's avatar
Dimitri van Heesch committed
216 217
};

Dimitri van Heesch's avatar
Dimitri van Heesch committed
218
class IDocTitle : public IDoc
Dimitri van Heesch's avatar
Dimitri van Heesch committed
219
{
Dimitri van Heesch's avatar
Dimitri van Heesch committed
220 221
  public:
    virtual IDocIterator *title() const = 0;
Dimitri van Heesch's avatar
Dimitri van Heesch committed
222 223
};

Dimitri van Heesch's avatar
Dimitri van Heesch committed
224
class IDocSimpleSect : public IDoc
Dimitri van Heesch's avatar
Dimitri van Heesch committed
225 226
{
  public:
Dimitri van Heesch's avatar
Dimitri van Heesch committed
227 228 229 230 231 232 233 234 235 236 237
    enum Types { Invalid = 0,
                 See, Return, Author, Version, 
                 Since, Date, Bug, Note,
                 Warning, Par, Deprecated, Pre, 
                 Post, Invar, Remark, Attention,
                 Todo, Test, RCS, EnumValues, 
                 Examples
    };
    virtual Types sectionType() const = 0;
    virtual IDocTitle *title() const = 0;
    virtual IDocPara *description() const = 0;
Dimitri van Heesch's avatar
Dimitri van Heesch committed
238 239 240 241
};

class IDocRef : public IDoc
{
Dimitri van Heesch's avatar
Dimitri van Heesch committed
242 243
  public:
    enum TargetKind { Member, Compound };
244
    virtual QString refId() const = 0;
Dimitri van Heesch's avatar
Dimitri van Heesch committed
245 246 247
    virtual TargetKind targetKind() const = 0;
    virtual QString external() const = 0;
    virtual QString text() const = 0;
Dimitri van Heesch's avatar
Dimitri van Heesch committed
248 249 250 251
};

class IDocVariableList : public IDoc
{
Dimitri van Heesch's avatar
Dimitri van Heesch committed
252 253
  public:
    virtual IDocIterator *entries() const = 0;
Dimitri van Heesch's avatar
Dimitri van Heesch committed
254 255 256 257
};

class IDocVariableListEntry : public IDoc
{
Dimitri van Heesch's avatar
Dimitri van Heesch committed
258 259 260
  public:
    virtual QString term() const = 0;
    virtual IDocPara *description() const = 0;
Dimitri van Heesch's avatar
Dimitri van Heesch committed
261 262 263 264 265 266 267 268 269 270 271 272
};

class IDocHRuler : public IDoc
{
};

class IDocLineBreak : public IDoc
{
};

class IDocULink : public IDoc
{
273
  public:
274 275
    virtual QString url() const = 0;
    virtual QString text() const = 0;
Dimitri van Heesch's avatar
Dimitri van Heesch committed
276 277 278 279
};

class IDocEMail : public IDoc
{
280
  public:
281
    virtual QString address() const = 0;
Dimitri van Heesch's avatar
Dimitri van Heesch committed
282 283 284 285
};

class IDocLink : public IDoc
{
286
  public:
287 288
    virtual QString refId() const = 0;
    virtual QString text() const = 0;
Dimitri van Heesch's avatar
Dimitri van Heesch committed
289 290 291 292
};

class IDocProgramListing : public IDoc
{
293
  public:
294
    virtual IDocIterator *codeLines() const = 0;
Dimitri van Heesch's avatar
Dimitri van Heesch committed
295 296 297 298
};

class IDocCodeLine : public IDoc
{
299
  public:
300 301 302
    virtual int lineNumber() const = 0;
    virtual QString refId() const = 0;
    virtual IDocIterator *codeElements() const = 0;
Dimitri van Heesch's avatar
Dimitri van Heesch committed
303 304 305 306
};

class IDocHighlight : public IDoc
{
307 308 309 310 311 312 313
  public:
    enum HighlightKind 
    { Invalid=0,
      Comment, Keyword, 
      KeywordType, KeywordFlow, CharLiteral, 
      StringLiteral, Preprocessor
    };
314 315
    virtual HighlightKind highlightKind() const = 0;
    virtual IDocIterator *codeElements() const = 0;
Dimitri van Heesch's avatar
Dimitri van Heesch committed
316 317 318 319
};

class IDocFormula : public IDoc
{
320
  public:
321 322
    virtual QString id() const = 0;
    virtual QString text() const = 0;
Dimitri van Heesch's avatar
Dimitri van Heesch committed
323 324 325 326
};

class IDocImage : public IDoc
{
327
  public:
328 329
    virtual QString name() const = 0;
    virtual QString caption() const = 0;
Dimitri van Heesch's avatar
Dimitri van Heesch committed
330 331 332 333
};

class IDocDotFile : public IDoc
{
334
  public:
335 336
    virtual QString name() const = 0;
    virtual QString caption() const = 0;
Dimitri van Heesch's avatar
Dimitri van Heesch committed
337 338 339 340
};

class IDocIndexEntry : public IDoc
{
341
  public:
342 343
    virtual QString primary() const = 0;
    virtual QString secondary() const = 0;
Dimitri van Heesch's avatar
Dimitri van Heesch committed
344 345 346 347
};

class IDocTable : public IDoc
{
348
  public:
349 350 351
    virtual IDocIterator *rows() const = 0;
    virtual int numColumns() const = 0;
    virtual QString caption() const = 0;
Dimitri van Heesch's avatar
Dimitri van Heesch committed
352 353 354 355
};

class IDocRow : public IDoc
{
356
  public:
357
    virtual IDocIterator *entries() const = 0;
Dimitri van Heesch's avatar
Dimitri van Heesch committed
358 359 360 361
};

class IDocEntry : public IDoc
{
362
  public:
363
    virtual IDocIterator *contents() const = 0;
Dimitri van Heesch's avatar
Dimitri van Heesch committed
364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390
};

class IDocSection : public IDoc
{
  public:
    virtual QString id() const = 0; 
    virtual int level() const = 0;
    virtual IDocIterator *title() const = 0;
};

class IDocRoot : public IDoc
{
  public:
    virtual IDocIterator *contents() const = 0; 
};

class IDocIterator 
{
  public:
    virtual IDoc *toFirst() = 0;
    virtual IDoc *toLast() = 0;
    virtual IDoc *toNext() = 0;
    virtual IDoc *toPrev() = 0;
    virtual IDoc *current() const = 0;
    virtual void release() = 0;
};

391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456
class IEdgeLabel
{
  public:
    virtual QString label() = 0;
};

class IEdgeLabelIterator 
{
  public:
    virtual IEdgeLabel *toFirst() = 0;
    virtual IEdgeLabel *toLast() = 0;
    virtual IEdgeLabel *toNext() = 0;
    virtual IEdgeLabel *toPrev() = 0;
    virtual IEdgeLabel *current() const = 0;
    virtual void release() = 0;
};

class IChildNode
{
  public:
    enum NodeRelation { PublicInheritance, ProtectedInheritance,
                        PrivateInheritance, Usage, TemplateInstace
                      };
    virtual QString id() const = 0;
    virtual NodeRelation relation() const = 0;
    virtual IEdgeLabelIterator *edgeLabels() const = 0;
};

class IChildNodeIterator 
{
  public:
    virtual IChildNode *toFirst() = 0;
    virtual IChildNode *toLast() = 0;
    virtual IChildNode *toNext() = 0;
    virtual IChildNode *toPrev() = 0;
    virtual IChildNode *current() const = 0;
    virtual void release() = 0;
};

class INode
{
  public:
    virtual QString id() const = 0;
    virtual QString label() const = 0;
    virtual QString linkId() const = 0;
    virtual IChildNodeIterator *children() const = 0;
};

class INodeIterator 
{
  public:
    virtual INode *toFirst() = 0;
    virtual INode *toLast() = 0;
    virtual INode *toNext() = 0;
    virtual INode *toPrev() = 0;
    virtual INode *current() const = 0;
    virtual void release() = 0;
};

class IGraph
{
  public:
    virtual INodeIterator *nodes() const = 0;
    virtual ~IGraph() {}
};

Dimitri van Heesch's avatar
Dimitri van Heesch committed
457 458 459
class IMember 
{
  public:
460 461 462 463 464 465 466 467
    enum MemberKind { Invalid=0,
                      Define, Property, Variable, Typedef, Enum,
                      Function, Signal, Prototype, Friend, DCOP, Slot
                    };
    virtual ICompound *compound() const = 0;
    virtual ISection *section() const = 0;
    virtual MemberKind kind() const = 0;
    virtual QString kindString() const = 0;
Dimitri van Heesch's avatar
Dimitri van Heesch committed
468 469 470 471
    virtual QString id() const = 0;
    virtual QString protection() const = 0;
    virtual QString virtualness() const = 0;
    virtual ILinkedTextIterator *type() const = 0;
472
    virtual QString typeString() const = 0;
Dimitri van Heesch's avatar
Dimitri van Heesch committed
473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489
    virtual QString name() const = 0;
    virtual bool isConst() const = 0;
    virtual bool isVolatile() const = 0;
    virtual IParamIterator *params() const = 0;
    virtual ILinkedTextIterator *initializer() const = 0;
    virtual ILinkedTextIterator *exceptions() const = 0;
    virtual IMemberReferenceIterator *references() const = 0; 
    virtual IMemberReferenceIterator *referencedBy() const = 0;
    virtual int bodyStart() const = 0;
    virtual int bodyEnd() const = 0;
    virtual QString definitionFile() const = 0;
    virtual int definitionLine() const = 0;
    virtual IMemberReference *reimplements() const = 0;
    virtual IMemberReferenceIterator *reimplementedBy() const = 0;
    virtual IEnumValueIterator *enumValues() const = 0;
    virtual IDocRoot *briefDescription() const = 0;
    virtual IDocRoot *detailedDescription() const = 0;
490
    virtual ~IMember() {}
Dimitri van Heesch's avatar
Dimitri van Heesch committed
491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506
};

class IMemberIterator 
{
  public:
    virtual IMember *toFirst() = 0;
    virtual IMember *toLast() = 0;
    virtual IMember *toNext() = 0;
    virtual IMember *toPrev() = 0;
    virtual IMember *current() const = 0;
    virtual void release() = 0;
};

class ISection 
{
  public:
507 508 509 510 511 512 513 514 515 516 517 518 519 520
    enum SectionKind { Invalid=0,
                       UserDefined,
                       PubTypes, PubFuncs, PubAttribs, PubSlots,
                       Signals, DCOPFuncs, Properties,
                       PubStatFuncs, PubStatAttribs,
                       ProTypes, ProFuncs, ProAttribs, ProSlots,
                       ProStatFuncs, ProStatAttribs,
                       PriTypes, PriFuncs, PriAttribs, PriSlots,
                       PriStatFuncs, PriStatAttribs, 
                       Friend, Related, Defines, Prototypes, Typedefs,
                       Enums, Functions, Variables
                     };
    virtual QString kindString() const = 0;
    virtual SectionKind kind() const = 0;
Dimitri van Heesch's avatar
Dimitri van Heesch committed
521
    virtual IMemberIterator *members() const = 0;
522 523 524 525 526
    virtual bool isStatic() const = 0;
    virtual bool isPublic() const = 0;
    virtual bool isPrivate() const = 0;
    virtual bool isProtected() const = 0;
    virtual ~ISection() {}
Dimitri van Heesch's avatar
Dimitri van Heesch committed
527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542
};

class ISectionIterator 
{
  public:
    virtual ISection *toFirst() = 0;
    virtual ISection *toLast() = 0;
    virtual ISection *toNext() = 0;
    virtual ISection *toPrev() = 0;
    virtual ISection *current() const = 0;
    virtual void release() = 0;
};

class ICompound 
{
  public:
543 544 545 546
    enum CompoundKind { Invalid=0,
                        Class, Struct, Union, Interface, Exception,
                        Namespace, File, Group, Page, Package 
                      };
Dimitri van Heesch's avatar
Dimitri van Heesch committed
547 548
    virtual QString name() const = 0;
    virtual QString id()   const = 0;
549 550
    virtual CompoundKind kind() const = 0;
    virtual QString kindString() const = 0;
Dimitri van Heesch's avatar
Dimitri van Heesch committed
551 552 553
    virtual ISectionIterator *sections() const = 0;
    virtual IDocRoot *briefDescription() const = 0;
    virtual IDocRoot *detailedDescription() const = 0;
554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569

    /*! Returns an interface to a member given its id. 
     *  @param id The member id.
     */
    virtual IMember *memberById(const QString &id) const = 0;

    /*! Returns a list of all members within the compound having a certain 
     *  name. Overloading is the reason why there can be more than one member. 
     *  @param name The name of the member.
     */
    virtual IMemberIterator *memberByName(const QString &name) const = 0;

    /*! Decreases the reference counter for this compound. If it reaches
     *  zero, the memory for the compound will be released.
     */
    virtual void release() = 0;
570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596

    // TODO:
    // class:
    //  IRelatedCompoundIterator *baseClasses()
    //  IRelatedCompoundIterator *derivedClasses()
    //  ICompoundIterator *innerClasses()
    //  ITemplateParamListIterator *templateParamLists()
    //  listOfAllMembers()
    //  IDotGraph *inheritanceGraph()
    //  IDotGraph *collaborationGraph()
    //  locationFile()
    //  locationLine()
    //  locationBodyStartLine()
    //  locationBodyEndLine()
    // namespace:
    //  ICompound *innerNamespaces()
    // file:
    //  includes()
    //  includedBy()
    //  IDotGraph *includeDependencyGraph()
    //  IDotGraph *includedByDependencyGraph()
    //  IDocProgramListing *source()
    // group:
    //  Title()
    //  innerFile()
    //  innerPage()
    // page:
Dimitri van Heesch's avatar
Dimitri van Heesch committed
597 598 599 600 601
};

class ICompoundIterator 
{
  public:
602 603 604 605
    virtual void toFirst() = 0;
    virtual void toLast() = 0;
    virtual void toNext() = 0;
    virtual void toPrev() = 0;
Dimitri van Heesch's avatar
Dimitri van Heesch committed
606 607 608 609 610 611 612 613
    virtual ICompound *current() const = 0;
    virtual void release() = 0;
};

/*! Root node of the object model. */
class IDoxygen 
{
  public:
614

Dimitri van Heesch's avatar
Dimitri van Heesch committed
615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630
    /*! Returns an iterator that can be used to iterate over the list
     *  of compounds found in the project.
     */
    virtual ICompoundIterator *compounds() const = 0;

    /*! Returns a compound given its unique \a id. If you have a
     *  compound id this function is much more efficient than iterating
     *  over the compound list. Returns 0 if the id is not valid.
     */
    virtual ICompound *compoundById(const QString &id) const = 0;

    /*! Returns a compound given its name (including the scope). 
     *  Returns 0 if the name is not found in the project.
     */
    virtual ICompound *compoundByName(const QString &name) const = 0;

631 632 633
    /*! Returns an interface to a compound containing a member given it the
     *  member's id. Given the ICompound interface one can use the same id
     *  to obtain the IMember interface.
Dimitri van Heesch's avatar
Dimitri van Heesch committed
634 635
     *  @param id The member id.
     */
636
    virtual ICompound *memberById(const QString &id) const = 0;
Dimitri van Heesch's avatar
Dimitri van Heesch committed
637

638 639 640
    /*! Returns a list of all compounds containing at least one members 
     *  with a certain name. Each compound can be asked to return the
     *  list of members with that name.
Dimitri van Heesch's avatar
Dimitri van Heesch committed
641 642
     *  @param name The name of the member.
     */
643 644
    virtual ICompoundIterator *memberByName(const QString &name) const = 0;

Dimitri van Heesch's avatar
Dimitri van Heesch committed
645 646 647 648 649
    /*! Releases the memory for the object hierarchy obtained by 
     *  createdObjecModelFromXML(). First release all iterators before calling
     *  this function.
     */
    virtual void release() = 0;
650 651 652 653 654 655 656 657 658 659 660 661

    /*! Sets the debug level.
     *  - 0 all debugging messages are disabled (the default).
     *  - 1 display important messages only
     *  - 2 display any messages.
     */
    virtual void setDebugLevel(int level) = 0;

    /*! Reads an XML directory produced by doxygen and builds up a data 
     *  structure representing the contents of the XML files in the directory. 
     */
    virtual bool readXMLDir(const char *xmlDirName) = 0;
Dimitri van Heesch's avatar
Dimitri van Heesch committed
662 663
};

664 665 666
/*! Factory method that creates an empty object model for a doxygen generated XML file.
 *  Use the readXMLDir() method to build the model from an XML output 
 *  directory containing doxygen output.
Dimitri van Heesch's avatar
Dimitri van Heesch committed
667
 */
668
IDoxygen *createObjectModel();
Dimitri van Heesch's avatar
Dimitri van Heesch committed
669 670

#endif