outputlist.h 23.8 KB
Newer Older
Dimitri van Heesch's avatar
Dimitri van Heesch committed
1 2
/******************************************************************************
 *
3
 * 
Dimitri van Heesch's avatar
Dimitri van Heesch committed
4
 *
Dimitri van Heesch's avatar
Dimitri van Heesch committed
5
 * Copyright (C) 1997-2013 by Dimitri van Heesch.
Dimitri van Heesch's avatar
Dimitri van Heesch committed
6 7 8 9 10 11 12
 *
 * 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.
 *
Dimitri van Heesch's avatar
Dimitri van Heesch committed
13 14
 * Documents produced by Doxygen are derivative works derived from the
 * input used in their production; they are not affected by this license.
Dimitri van Heesch's avatar
Dimitri van Heesch committed
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
 *
 */

#ifndef OUTPUTLIST_H
#define OUTPUTLIST_H

#include <qlist.h>
#include "index.h" // for IndexSections
#include "outputgen.h"

#define FORALLPROTO1(arg1) \
  void forall(void (OutputGenerator::*func)(arg1),arg1)
#define FORALLPROTO2(arg1,arg2) \
  void forall(void (OutputGenerator::*func)(arg1,arg2),arg1,arg2)
#define FORALLPROTO3(arg1,arg2,arg3) \
  void forall(void (OutputGenerator::*func)(arg1,arg2,arg3),arg1,arg2,arg3)
#define FORALLPROTO4(arg1,arg2,arg3,arg4) \
  void forall(void (OutputGenerator::*func)(arg1,arg2,arg3,arg4),arg1,arg2,arg3,arg4)
33 34
#define FORALLPROTO5(arg1,arg2,arg3,arg4,arg5) \
  void forall(void (OutputGenerator::*func)(arg1,arg2,arg3,arg4,arg5),arg1,arg2,arg3,arg4,arg5)
Dimitri van Heesch's avatar
Dimitri van Heesch committed
35 36
#define FORALLPROTO6(arg1,arg2,arg3,arg4,arg5,arg6) \
  void forall(void (OutputGenerator::*func)(arg1,arg2,arg3,arg4,arg5,arg6),arg1,arg2,arg3,arg4,arg5,arg6)
37 38 39 40
#define FORALLPROTO7(arg1,arg2,arg3,arg4,arg5,arg6,arg7) \
  void forall(void (OutputGenerator::*func)(arg1,arg2,arg3,arg4,arg5,arg6,arg7),arg1,arg2,arg3,arg4,arg5,arg6,arg7)
#define FORALLPROTO8(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8) \
  void forall(void (OutputGenerator::*func)(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8),arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8)
Dimitri van Heesch's avatar
Dimitri van Heesch committed
41 42
  
class ClassDiagram;
Dimitri van Heesch's avatar
Dimitri van Heesch committed
43
class DotClassGraph;
44
class DotDirDeps;
Dimitri van Heesch's avatar
Dimitri van Heesch committed
45 46
class DotInclDepGraph;
class DotGfxHierarchyTable;
47
class SectionDict;
48
class DotGroupCollaboration;
49
class DocRoot;
Dimitri van Heesch's avatar
Dimitri van Heesch committed
50

Dimitri van Heesch's avatar
Dimitri van Heesch committed
51 52 53
/** Class representing a list of output generators that are written to
 *  in parallel. 
 */
54
class OutputList : public OutputDocInterface
Dimitri van Heesch's avatar
Dimitri van Heesch committed
55 56 57
{
  public:
    OutputList(bool);
58
    virtual ~OutputList();
59

Dimitri van Heesch's avatar
Dimitri van Heesch committed
60
    void add(const OutputGenerator *);
Dimitri van Heesch's avatar
Dimitri van Heesch committed
61
    uint count() const { return outputs->count(); }
Dimitri van Heesch's avatar
Dimitri van Heesch committed
62 63 64
    
    void disableAllBut(OutputGenerator::OutputType o);
    void enableAll();
65
    void disableAll();
Dimitri van Heesch's avatar
Dimitri van Heesch committed
66 67 68
    void disable(OutputGenerator::OutputType o);
    void enable(OutputGenerator::OutputType o);
    bool isEnabled(OutputGenerator::OutputType o);
Dimitri van Heesch's avatar
Dimitri van Heesch committed
69 70
    void pushGeneratorState();
    void popGeneratorState();
71

72

73 74 75 76
    //////////////////////////////////////////////////
    // OutputDocInterface implementation
    //////////////////////////////////////////////////

77 78 79 80 81 82
    bool generateDoc(const char *fileName,int startLine,
                     Definition *ctx,MemberDef *md,const QCString &docStr,
                     bool indexWords,bool isExample,const char *exampleName=0,
                     bool singleLine=FALSE,bool linkFromIndex=FALSE);
    void writeDoc(DocRoot *root,Definition *ctx,MemberDef *md);
    bool parseText(const QCString &textStr);
83
    
84

Dimitri van Heesch's avatar
Dimitri van Heesch committed
85 86 87 88
    void startIndexSection(IndexSections is)
    { forall(&OutputGenerator::startIndexSection,is); }
    void endIndexSection(IndexSections is)
    { forall(&OutputGenerator::endIndexSection,is); }
89 90
    void writePageLink(const char *name,bool first)
    { forall(&OutputGenerator::writePageLink,name,first); }
Dimitri van Heesch's avatar
Dimitri van Heesch committed
91 92 93 94 95 96
    void startProjectNumber()
    { forall(&OutputGenerator::startProjectNumber); }
    void endProjectNumber()
    { forall(&OutputGenerator::endProjectNumber); }
    void writeStyleInfo(int part) 
    { forall(&OutputGenerator::writeStyleInfo,part); }
97 98
    void startFile(const char *name,const char *manName,const char *title)
    { forall(&OutputGenerator::startFile,name,manName,title); }
99 100
    void writeSearchInfo()
    { forall(&OutputGenerator::writeSearchInfo); }
101 102
    void writeFooter(const char *navPath)
    { forall(&OutputGenerator::writeFooter,navPath); }
Dimitri van Heesch's avatar
Dimitri van Heesch committed
103 104
    void endFile() 
    { forall(&OutputGenerator::endFile); }
105 106 107 108
    void startTitleHead(const char *fileName) 
    { forall(&OutputGenerator::startTitleHead,fileName); }
    void endTitleHead(const char *fileName,const char *name)
    { forall(&OutputGenerator::endTitleHead,fileName,name); }
Dimitri van Heesch's avatar
Dimitri van Heesch committed
109 110 111 112
    void startTitle() 
    { forall(&OutputGenerator::startTitle); }
    void endTitle() 
    { forall(&OutputGenerator::endTitle); }
113 114
    //void newParagraph() 
    //{ forall(&OutputGenerator::newParagraph); }
115 116 117 118
    void startParagraph() 
    { forall(&OutputGenerator::startParagraph); }
    void endParagraph() 
    { forall(&OutputGenerator::endParagraph); }
Dimitri van Heesch's avatar
Dimitri van Heesch committed
119 120
    void writeString(const char *text) 
    { forall(&OutputGenerator::writeString,text); }
121 122 123 124
    void startIndexListItem() 
    { forall(&OutputGenerator::startIndexListItem); }
    void endIndexListItem() 
    { forall(&OutputGenerator::endIndexListItem); }
Dimitri van Heesch's avatar
Dimitri van Heesch committed
125 126 127 128
    void startIndexList() 
    { forall(&OutputGenerator::startIndexList); }
    void endIndexList() 
    { forall(&OutputGenerator::endIndexList); }
129 130 131 132
    void startIndexKey()
    { forall(&OutputGenerator::startIndexKey); }
    void endIndexKey()
    { forall(&OutputGenerator::endIndexKey); }
133 134 135 136
    void startIndexValue(bool b)
    { forall(&OutputGenerator::startIndexValue,b); }
    void endIndexValue(const char *name,bool b)
    { forall(&OutputGenerator::endIndexValue,name,b); }
Dimitri van Heesch's avatar
Dimitri van Heesch committed
137 138 139 140
    void startItemList() 
    { forall(&OutputGenerator::startItemList); }
    void endItemList() 
    { forall(&OutputGenerator::endItemList); }
141 142 143 144
    void startIndexItem(const char *ref,const char *file)
    { forall(&OutputGenerator::startIndexItem,ref,file); }
    void endIndexItem(const char *ref,const char *file)
    { forall(&OutputGenerator::endIndexItem,ref,file); }
Dimitri van Heesch's avatar
Dimitri van Heesch committed
145 146 147 148 149
    void docify(const char *s)
    { forall(&OutputGenerator::docify,s); }
    void codify(const char *s)
    { forall(&OutputGenerator::codify,s); }
    void writeObjectLink(const char *ref,const char *file,
150 151
                         const char *anchor, const char *name)
    { forall(&OutputGenerator::writeObjectLink,ref,file,anchor,name); }
Dimitri van Heesch's avatar
Dimitri van Heesch committed
152
    void writeCodeLink(const char *ref,const char *file,
153 154 155
                       const char *anchor,const char *name,
                       const char *tooltip)
    { forall(&OutputGenerator::writeCodeLink,ref,file,anchor,name,tooltip); }
156 157 158
    void writeTooltip(const char *id, const DocLinkInfo &docInfo, const char *decl,
                      const char *desc, const SourceLinkInfo &defInfo, const SourceLinkInfo &declInfo)
    { forall(&OutputGenerator::writeTooltip,id,docInfo,decl,desc,defInfo,declInfo); }
Dimitri van Heesch's avatar
Dimitri van Heesch committed
159 160 161 162
    void startTextLink(const char *file,const char *anchor)
    { forall(&OutputGenerator::startTextLink,file,anchor); }
    void endTextLink()
    { forall(&OutputGenerator::endTextLink); }
Dimitri van Heesch's avatar
Dimitri van Heesch committed
163 164 165 166
    void startHtmlLink(const char *url)
    { forall(&OutputGenerator::startHtmlLink,url); }
    void endHtmlLink()
    { forall(&OutputGenerator::endHtmlLink); }
Dimitri van Heesch's avatar
Dimitri van Heesch committed
167 168 169 170 171 172 173 174 175
    void writeStartAnnoItem(const char *type,const char *file, 
                            const char *path,const char *name)
    { forall(&OutputGenerator::writeStartAnnoItem,type,file,path,name); }
    void writeEndAnnoItem(const char *name)
    { forall(&OutputGenerator::writeEndAnnoItem,name); }
    void startTypewriter() 
    { forall(&OutputGenerator::startTypewriter); }
    void endTypewriter() 
    { forall(&OutputGenerator::endTypewriter); }
Dimitri van Heesch's avatar
Dimitri van Heesch committed
176 177 178 179
    void startGroupHeader(int extraLevels=0)
    { forall(&OutputGenerator::startGroupHeader,extraLevels); }
    void endGroupHeader(int extraLevels=0)
    { forall(&OutputGenerator::endGroupHeader,extraLevels); }
180 181 182 183 184 185
    //void writeListItem() 
    //{ forall(&OutputGenerator::writeListItem); }
    void startItemListItem() 
    { forall(&OutputGenerator::startItemListItem); }
    void endItemListItem() 
    { forall(&OutputGenerator::endItemListItem); }
186 187 188 189
    void startMemberSections()
    { forall(&OutputGenerator::startMemberSections); }
    void endMemberSections()
    { forall(&OutputGenerator::endMemberSections); }
190 191 192 193 194 195
    void startHeaderSection()
    { forall(&OutputGenerator::startHeaderSection); }
    void endHeaderSection()
    { forall(&OutputGenerator::endHeaderSection); }
    void startMemberHeader(const char *anchor)
    { forall(&OutputGenerator::startMemberHeader,anchor); }
Dimitri van Heesch's avatar
Dimitri van Heesch committed
196 197
    void endMemberHeader()
    { forall(&OutputGenerator::endMemberHeader); }
198 199 200 201
    void startMemberSubtitle()
    { forall(&OutputGenerator::startMemberSubtitle); }
    void endMemberSubtitle()
    { forall(&OutputGenerator::endMemberSubtitle); }
202 203 204 205
    void startMemberDocList() 
    { forall(&OutputGenerator::startMemberDocList); }
    void endMemberDocList() 
    { forall(&OutputGenerator::endMemberDocList); }
Dimitri van Heesch's avatar
Dimitri van Heesch committed
206 207 208 209
    void startMemberList() 
    { forall(&OutputGenerator::startMemberList); }
    void endMemberList() 
    { forall(&OutputGenerator::endMemberList); }
Dimitri van Heesch's avatar
Dimitri van Heesch committed
210 211 212 213
    void startInlineHeader()
    { forall(&OutputGenerator::startInlineHeader); }
    void endInlineHeader()
    { forall(&OutputGenerator::endInlineHeader); }
214 215 216 217
    void startAnonTypeScope(int i1) 
    { forall(&OutputGenerator::startAnonTypeScope,i1); }
    void endAnonTypeScope(int i1) 
    { forall(&OutputGenerator::endAnonTypeScope,i1); }
218 219
    void startMemberItem(const char *anchor,int i1,const char *id=0) 
    { forall(&OutputGenerator::startMemberItem,anchor,i1,id); }
220 221
    void endMemberItem() 
    { forall(&OutputGenerator::endMemberItem); }
Dimitri van Heesch's avatar
Dimitri van Heesch committed
222 223
    void startMemberTemplateParams() 
    { forall(&OutputGenerator::startMemberTemplateParams); }
224 225
    void endMemberTemplateParams(const char *anchor,const char *inheritId) 
    { forall(&OutputGenerator::endMemberTemplateParams,anchor,inheritId); }
Dimitri van Heesch's avatar
Dimitri van Heesch committed
226 227
    void startMemberGroupHeader(bool b) 
    { forall(&OutputGenerator::startMemberGroupHeader,b); }
Dimitri van Heesch's avatar
Dimitri van Heesch committed
228 229 230 231 232 233 234 235 236 237
    void endMemberGroupHeader()
    { forall(&OutputGenerator::endMemberGroupHeader); }
    void startMemberGroupDocs()
    { forall(&OutputGenerator::startMemberGroupDocs); }
    void endMemberGroupDocs()
    { forall(&OutputGenerator::endMemberGroupDocs); }
    void startMemberGroup()
    { forall(&OutputGenerator::startMemberGroup); }
    void endMemberGroup(bool last)
    { forall(&OutputGenerator::endMemberGroup,last); }
Dimitri van Heesch's avatar
Dimitri van Heesch committed
238 239
    void insertMemberAlign(bool templ=FALSE) 
    { forall(&OutputGenerator::insertMemberAlign,templ); }
Dimitri van Heesch's avatar
Dimitri van Heesch committed
240 241
    void writeRuler() 
    { forall(&OutputGenerator::writeRuler); }
242 243
    void writeAnchor(const char *fileName,const char *name)
    { forall(&OutputGenerator::writeAnchor,fileName,name); }
Dimitri van Heesch's avatar
Dimitri van Heesch committed
244 245 246 247
    void startCodeFragment() 
    { forall(&OutputGenerator::startCodeFragment); }
    void endCodeFragment() 
    { forall(&OutputGenerator::endCodeFragment); }
Dimitri van Heesch's avatar
Dimitri van Heesch committed
248 249
    void startCodeLine(bool hasLineNumbers) 
    { forall(&OutputGenerator::startCodeLine,hasLineNumbers); }
250 251
    void endCodeLine() 
    { forall(&OutputGenerator::endCodeLine); }
Dimitri van Heesch's avatar
Dimitri van Heesch committed
252 253 254
    void writeLineNumber(const char *ref,const char *file,const char *anchor,
                         int lineNumber) 
    { forall(&OutputGenerator::writeLineNumber,ref,file,anchor,lineNumber); }
Dimitri van Heesch's avatar
Dimitri van Heesch committed
255 256 257 258 259 260
    void startEmphasis() 
    { forall(&OutputGenerator::startEmphasis); }
    void endEmphasis() 
    { forall(&OutputGenerator::endEmphasis); }
    void writeChar(char c)
    { forall(&OutputGenerator::writeChar,c); }
261
    void startMemberDoc(const char *clName,const char *memName,
Dimitri van Heesch's avatar
Dimitri van Heesch committed
262 263
                        const char *anchor,const char *title,bool showInline)
    { forall(&OutputGenerator::startMemberDoc,clName,memName,anchor,title,showInline); }
264 265
    void endMemberDoc(bool hasArgs) 
    { forall(&OutputGenerator::endMemberDoc,hasArgs); }
Dimitri van Heesch's avatar
Dimitri van Heesch committed
266
    void startDoxyAnchor(const char *fName,const char *manName,
267 268 269
                         const char *anchor, const char *name,
                         const char *args)
    { forall(&OutputGenerator::startDoxyAnchor,fName,manName,anchor,name,args); }
270 271
    void endDoxyAnchor(const char *fn,const char *anchor)
    { forall(&OutputGenerator::endDoxyAnchor,fn,anchor); }
Dimitri van Heesch's avatar
Dimitri van Heesch committed
272 273 274 275 276 277 278 279 280 281
    void writeLatexSpacing() 
    { forall(&OutputGenerator::writeLatexSpacing); }
    void startDescription() 
    { forall(&OutputGenerator::startDescription); }
    void endDescription() 
    { forall(&OutputGenerator::endDescription); }
    void startDescItem() 
    { forall(&OutputGenerator::startDescItem); }
    void endDescItem() 
    { forall(&OutputGenerator::endDescItem); }
282 283 284 285
    void startDescForItem() 
    { forall(&OutputGenerator::startDescForItem); }
    void endDescForItem() 
    { forall(&OutputGenerator::endDescForItem); }
Dimitri van Heesch's avatar
Dimitri van Heesch committed
286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301
    void startSubsection() 
    { forall(&OutputGenerator::startSubsection); }
    void endSubsection() 
    { forall(&OutputGenerator::endSubsection); }
    void startSubsubsection() 
    { forall(&OutputGenerator::startSubsubsection); }
    void endSubsubsection() 
    { forall(&OutputGenerator::endSubsubsection); }
    void startCenter() 
    { forall(&OutputGenerator::startCenter); }
    void endCenter() 
    { forall(&OutputGenerator::endCenter); }
    void startSmall() 
    { forall(&OutputGenerator::startSmall); }
    void endSmall() 
    { forall(&OutputGenerator::endSmall); }
Dimitri van Heesch's avatar
Dimitri van Heesch committed
302 303
    void lineBreak(const char *style=0) 
    { forall(&OutputGenerator::lineBreak,style); }
Dimitri van Heesch's avatar
Dimitri van Heesch committed
304 305 306 307
    void startBold() 
    { forall(&OutputGenerator::startBold); }
    void endBold() 
    { forall(&OutputGenerator::endBold); }
308 309
    void startMemberDescription(const char *anchor,const char *inheritId=0) 
    { forall(&OutputGenerator::startMemberDescription,anchor,inheritId); }
Dimitri van Heesch's avatar
Dimitri van Heesch committed
310 311
    void endMemberDescription() 
    { forall(&OutputGenerator::endMemberDescription); }
312 313 314 315
    void startMemberDeclaration()
    { forall(&OutputGenerator::startMemberDeclaration); }
    void endMemberDeclaration(const char *anchor,const char *inheritId)
    { forall(&OutputGenerator::endMemberDeclaration,anchor,inheritId); }
Dimitri van Heesch's avatar
Dimitri van Heesch committed
316 317 318 319 320
    void writeInheritedSectionTitle(const char *id,   const char *ref,
                                    const char *file, const char *anchor,
                                    const char *title,const char *name)
    { forall(&OutputGenerator::writeInheritedSectionTitle,id,ref,
                                    file,anchor,title,name); }
321 322 323 324 325 326 327
    void startSimpleSect(SectionTypes t,const char *file,const char *anchor,
                         const char *title) 
    { forall(&OutputGenerator::startSimpleSect,t,file,anchor,title); }
    void endSimpleSect() 
    { forall(&OutputGenerator::endSimpleSect); }
    void startParamList(ParamListTypes t,const char *title) 
    { forall(&OutputGenerator::startParamList,t,title); }
328 329
    void endParamList() 
    { forall(&OutputGenerator::endParamList); }
Dimitri van Heesch's avatar
Dimitri van Heesch committed
330 331 332 333
    void startIndent() 
    { forall(&OutputGenerator::startIndent); }
    void endIndent() 
    { forall(&OutputGenerator::endIndent); }
334 335 336 337
    void startSection(const char *lab,const char *title,SectionInfo::SectionType t)
    { forall(&OutputGenerator::startSection,lab,title,t); }
    void endSection(const char *lab,SectionInfo::SectionType t)
    { forall(&OutputGenerator::endSection,lab,t); }
338 339
    void addIndexItem(const char *s1,const char *s2)
    { forall(&OutputGenerator::addIndexItem,s1,s2); }
Dimitri van Heesch's avatar
Dimitri van Heesch committed
340 341 342 343
    void writeSynopsis() 
    { forall(&OutputGenerator::writeSynopsis); }
    void startClassDiagram()
    { forall(&OutputGenerator::startClassDiagram); }
Dimitri van Heesch's avatar
Dimitri van Heesch committed
344
    void endClassDiagram(const ClassDiagram &d,const char *f,const char *n)
Dimitri van Heesch's avatar
Dimitri van Heesch committed
345
    { forall(&OutputGenerator::endClassDiagram,d,f,n); }
346 347 348 349
    void startPageRef()
    { forall(&OutputGenerator::startPageRef); }
    void endPageRef(const char *c,const char *a)
    { forall(&OutputGenerator::endPageRef,c,a); }
350 351 352 353
    void startQuickIndices()
    { forall(&OutputGenerator::startQuickIndices); }
    void endQuickIndices()
    { forall(&OutputGenerator::endQuickIndices); }
354 355
    void writeSplitBar(const char *name)
    { forall(&OutputGenerator::writeSplitBar,name); }
Dimitri van Heesch's avatar
Dimitri van Heesch committed
356 357
    void writeNavigationPath(const char *s)
    { forall(&OutputGenerator::writeNavigationPath,s); }
358 359
    void writeLogo()
    { forall(&OutputGenerator::writeLogo); }
360 361
    void writeQuickLinks(bool compact,HighlightedItem hli,const char *file)
    { forall(&OutputGenerator::writeQuickLinks,compact,hli,file); }
Dimitri van Heesch's avatar
Dimitri van Heesch committed
362 363
    void writeSummaryLink(const char *file,const char *anchor,const char *title,bool first)
    { forall(&OutputGenerator::writeSummaryLink,file,anchor,title,first); }
364 365 366 367
    void startContents()
    { forall(&OutputGenerator::startContents); }
    void endContents()
    { forall(&OutputGenerator::endContents); }
368 369
    void writeNonBreakableSpace(int num)
    { forall(&OutputGenerator::writeNonBreakableSpace,num); }
370 371
    void startDescTable(const char *title)
    { forall(&OutputGenerator::startDescTable,title); }
372 373 374 375 376 377 378 379 380 381
    void endDescTable()
    { forall(&OutputGenerator::endDescTable); }
    void startDescTableTitle()
    { forall(&OutputGenerator::startDescTableTitle); }
    void endDescTableTitle()
    { forall(&OutputGenerator::endDescTableTitle); }
    void startDescTableData()
    { forall(&OutputGenerator::startDescTableData); }
    void endDescTableData()
    { forall(&OutputGenerator::endDescTableData); }
Dimitri van Heesch's avatar
Dimitri van Heesch committed
382 383
    void startDotGraph()
    { forall(&OutputGenerator::startDotGraph); }
Dimitri van Heesch's avatar
Dimitri van Heesch committed
384
    void endDotGraph(const DotClassGraph &g)
Dimitri van Heesch's avatar
Dimitri van Heesch committed
385
    { forall(&OutputGenerator::endDotGraph,g); }
Dimitri van Heesch's avatar
Dimitri van Heesch committed
386 387
    void startInclDepGraph()
    { forall(&OutputGenerator::startInclDepGraph); }
Dimitri van Heesch's avatar
Dimitri van Heesch committed
388
    void endInclDepGraph(const DotInclDepGraph &g)
Dimitri van Heesch's avatar
Dimitri van Heesch committed
389
    { forall(&OutputGenerator::endInclDepGraph,g); }
390 391
    void startCallGraph()
    { forall(&OutputGenerator::startCallGraph); }
Dimitri van Heesch's avatar
Dimitri van Heesch committed
392
    void endCallGraph(const DotCallGraph &g)
393
    { forall(&OutputGenerator::endCallGraph,g); }
394 395
    void startDirDepGraph()
    { forall(&OutputGenerator::startDirDepGraph); }
Dimitri van Heesch's avatar
Dimitri van Heesch committed
396
    void endDirDepGraph(const DotDirDeps &g)
397
    { forall(&OutputGenerator::endDirDepGraph,g); }
398 399
    void startGroupCollaboration()
    { forall(&OutputGenerator::startGroupCollaboration); }
Dimitri van Heesch's avatar
Dimitri van Heesch committed
400
    void endGroupCollaboration(const DotGroupCollaboration &g)
401
    { forall(&OutputGenerator::endGroupCollaboration,g); }
Dimitri van Heesch's avatar
Dimitri van Heesch committed
402
    void writeGraphicalHierarchy(const DotGfxHierarchyTable &g)
Dimitri van Heesch's avatar
Dimitri van Heesch committed
403 404 405
    { forall(&OutputGenerator::writeGraphicalHierarchy,g); }
    void startTextBlock(bool dense=FALSE)
    { forall(&OutputGenerator::startTextBlock,dense); }
406 407
    void endTextBlock(bool paraBreak=FALSE)
    { forall(&OutputGenerator::endTextBlock,paraBreak); }
Dimitri van Heesch's avatar
Dimitri van Heesch committed
408 409
    void lastIndexPage()
    { forall(&OutputGenerator::lastIndexPage); }
410 411 412 413
    void startMemberDocPrefixItem()
    { forall(&OutputGenerator::startMemberDocPrefixItem); }
    void endMemberDocPrefixItem()
    { forall(&OutputGenerator::endMemberDocPrefixItem); }
Dimitri van Heesch's avatar
Dimitri van Heesch committed
414 415
    void startMemberDocName(bool align)
    { forall(&OutputGenerator::startMemberDocName,align); }
416 417
    void endMemberDocName()
    { forall(&OutputGenerator::endMemberDocName); }
Dimitri van Heesch's avatar
Dimitri van Heesch committed
418 419
    void startParameterType(bool first,const char *key)
    { forall(&OutputGenerator::startParameterType,first,key); }
Dimitri van Heesch's avatar
Dimitri van Heesch committed
420 421
    void endParameterType()
    { forall(&OutputGenerator::endParameterType); }
Dimitri van Heesch's avatar
Dimitri van Heesch committed
422 423
    void startParameterName(bool one)
    { forall(&OutputGenerator::startParameterName,one); }
424 425
    void endParameterName(bool last,bool one,bool bracket)
    { forall(&OutputGenerator::endParameterName,last,one,bracket); }
Dimitri van Heesch's avatar
Dimitri van Heesch committed
426 427
    void startParameterList(bool openBracket)
    { forall(&OutputGenerator::startParameterList,openBracket); }
Dimitri van Heesch's avatar
Dimitri van Heesch committed
428 429
    void endParameterList()
    { forall(&OutputGenerator::endParameterList); }
430 431
    void exceptionEntry(const char* prefix,bool closeBracket)
    { forall(&OutputGenerator::exceptionEntry,prefix,closeBracket); }
432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448

    void startConstraintList(const char *header) 
    { forall(&OutputGenerator::startConstraintList,header); }
    void startConstraintParam() 
    { forall(&OutputGenerator::startConstraintParam); }
    void endConstraintParam() 
    { forall(&OutputGenerator::endConstraintParam); }
    void startConstraintType()
    { forall(&OutputGenerator::startConstraintType); }
    void endConstraintType()
    { forall(&OutputGenerator::endConstraintType); }
    void startConstraintDocs()
    { forall(&OutputGenerator::startConstraintDocs); }
    void endConstraintDocs()
    { forall(&OutputGenerator::endConstraintDocs); }
    void endConstraintList()
    { forall(&OutputGenerator::endConstraintList); }
449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466

    void startMemberDocSimple()
    { forall(&OutputGenerator::startMemberDocSimple); }
    void endMemberDocSimple()
    { forall(&OutputGenerator::endMemberDocSimple); }
    void startInlineMemberType()
    { forall(&OutputGenerator::startInlineMemberType); }
    void endInlineMemberType()
    { forall(&OutputGenerator::endInlineMemberType); }
    void startInlineMemberName()
    { forall(&OutputGenerator::startInlineMemberName); }
    void endInlineMemberName()
    { forall(&OutputGenerator::endInlineMemberName); }
    void startInlineMemberDoc()
    { forall(&OutputGenerator::startInlineMemberDoc); }
    void endInlineMemberDoc()
    { forall(&OutputGenerator::endInlineMemberDoc); }

467 468 469 470 471 472 473
    void startLabels() 
    { forall(&OutputGenerator::startLabels); }
    void writeLabel(const char *l,bool isLast)
    { forall(&OutputGenerator::writeLabel,l,isLast); }
    void endLabels()
    { forall(&OutputGenerator::endLabels); }

474 475 476 477
    void startFontClass(const char *c)
    { forall(&OutputGenerator::startFontClass,c); }
    void endFontClass()
    { forall(&OutputGenerator::endFontClass); }
478 479
    void writeCodeAnchor(const char *name)
    { forall(&OutputGenerator::writeCodeAnchor,name); }
Dimitri van Heesch's avatar
Dimitri van Heesch committed
480 481 482 483 484
    void setCurrentDoc(Definition *context,const char *anchor,bool isSourceFile)
    { forall(&OutputGenerator::setCurrentDoc,context,anchor,isSourceFile); }
    void addWord(const char *word,bool hiPriority)
    { forall(&OutputGenerator::addWord,word,hiPriority); }

485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502
    void startPlainFile(const char *name)
    { 
      OutputGenerator *og=outputs->first();
      while (og)
      {
        if (og->isEnabled()) (og->startPlainFile)(name);
        og=outputs->next();
      }
    }
    void endPlainFile() 
    { 
      OutputGenerator *og=outputs->first();
      while (og)
      {
        if (og->isEnabled()) (og->endPlainFile)();
        og=outputs->next();
      }
    }
503

Dimitri van Heesch's avatar
Dimitri van Heesch committed
504 505 506 507 508 509 510
  private:
    void debug();
    void clear();
    
    void forall(void (OutputGenerator::*func)());
    FORALLPROTO1(const char *);
    FORALLPROTO1(char);
511
    FORALLPROTO1(IndexSections);
Dimitri van Heesch's avatar
Dimitri van Heesch committed
512
    FORALLPROTO1(int);
Dimitri van Heesch's avatar
Dimitri van Heesch committed
513 514 515 516 517 518
    FORALLPROTO1(const DotClassGraph &);
    FORALLPROTO1(const DotInclDepGraph &);
    FORALLPROTO1(const DotCallGraph &);
    FORALLPROTO1(const DotGroupCollaboration &);
    FORALLPROTO1(const DotDirDeps &);
    FORALLPROTO1(const DotGfxHierarchyTable &);
519
    FORALLPROTO1(SectionTypes);
Dimitri van Heesch's avatar
Dimitri van Heesch committed
520
#if defined(HAS_BOOL_TYPE) || defined(Q_HAS_BOOL_TYPE)
521 522 523
    FORALLPROTO1(bool);
    FORALLPROTO2(bool,int);
    FORALLPROTO2(bool,bool);
524
    FORALLPROTO2(const char *,bool);
525
    FORALLPROTO4(const char *,const char *,const char *,int);
526 527
#endif
    FORALLPROTO2(int,bool);
Dimitri van Heesch's avatar
Dimitri van Heesch committed
528
    FORALLPROTO2(bool,const char *);
529
    FORALLPROTO2(ParamListTypes,const char *);
530
    FORALLPROTO2(const char *,const char *);
531
    FORALLPROTO2(const char *,int);
532
    FORALLPROTO2(const char *,SectionInfo::SectionType);
533
    FORALLPROTO3(bool,HighlightedItem,const char *);
534
    FORALLPROTO3(bool,bool,bool);
Dimitri van Heesch's avatar
Dimitri van Heesch committed
535
    FORALLPROTO3(const char *,const char *,bool);
536
    FORALLPROTO3(const char *,int,const char *);
537
    FORALLPROTO3(const char *,const char *,SectionInfo::SectionType);
Dimitri van Heesch's avatar
Dimitri van Heesch committed
538 539
    FORALLPROTO3(uchar,uchar,uchar);
    FORALLPROTO3(const char *,const char *,const char *);
Dimitri van Heesch's avatar
Dimitri van Heesch committed
540
    FORALLPROTO3(const ClassDiagram &,const char *,const char *);
Dimitri van Heesch's avatar
Dimitri van Heesch committed
541
    FORALLPROTO3(Definition*,const char *,bool);
542
    FORALLPROTO4(SectionTypes,const char *,const char *,const char *);
Dimitri van Heesch's avatar
Dimitri van Heesch committed
543
    FORALLPROTO4(const char *,const char *,const char *,const char *);
544
    FORALLPROTO4(const char *,const char *,const char *,bool);
545
    FORALLPROTO5(const char *,const char *,const char *,const char *,const char *);
Dimitri van Heesch's avatar
Dimitri van Heesch committed
546
    FORALLPROTO5(const char *,const char *,const char *,const char *,bool);
Dimitri van Heesch's avatar
Dimitri van Heesch committed
547
    FORALLPROTO6(const char *,const char *,const char *,const char *,const char *,const char *);
548
    FORALLPROTO6(const char *,const DocLinkInfo &,const char *,const char *,const SourceLinkInfo &,const SourceLinkInfo &);
Dimitri van Heesch's avatar
Dimitri van Heesch committed
549 550 551 552 553 554
  
    OutputList(const OutputList &ol);
    QList<OutputGenerator> *outputs;
};

#endif