00001 /****************************************************************************** 00002 * 00003 * $Id: htmlgen.h,v 1.15 1998/11/28 11:33:19 root Exp $ 00004 * 00005 * Copyright (C) 1997-2008 by Dimitri van Heesch. 00006 * 00007 * Permission to use, copy, modify, and distribute this software and its 00008 * documentation under the terms of the GNU General Public License is hereby 00009 * granted. No representations are made about the suitability of this software 00010 * for any purpose. It is provided "as is" without express or implied warranty. 00011 * See the GNU General Public License for more details. 00012 * 00013 * Documents produced by Doxygen are derivative works derived from the 00014 * input used in their production; they are not affected by this license. 00015 * 00016 */ 00017 00018 #ifndef MANGEN_H 00019 #define MANGEN_H 00020 00021 #include "outputgen.h" 00022 00023 class QFile; 00024 00025 class ManGenerator : public OutputGenerator 00026 { 00027 public: 00028 ManGenerator(); 00029 ~ManGenerator(); 00030 00031 //OutputGenerator *copy() { return new ManGenerator; } 00032 //OutputGenerator *clone() { return new ManGenerator(*this); } 00033 //void append(const OutputGenerator *o); 00034 void enable() 00035 { if (genStack->top()) active=*genStack->top(); else active=TRUE; } 00036 void disable() { active=FALSE; } 00037 void enableIf(OutputType o) { if (o==Man) active=TRUE; } 00038 void disableIf(OutputType o) { if (o==Man) active=FALSE; } 00039 void disableIfNot(OutputType o) { if (o!=Man) active=FALSE; } 00040 bool isEnabled(OutputType o) { return (o==Man && active); } 00041 OutputGenerator *get(OutputType o) { return (o==Man) ? this : 0; } 00042 00043 void printDoc(DocNode *,const char *); 00044 00045 static void init(); 00046 void startFile(const char *name,const char *manName,const char *title); 00047 void writeFooter() {} 00048 void endFile(); 00049 void clearBuffer(); 00050 00051 void startIndexSection(IndexSections) {} 00052 void endIndexSection(IndexSections) {} 00053 void writePageLink(const char *,bool) {} 00054 void startProjectNumber() {} 00055 void endProjectNumber() {} 00056 void writeStyleInfo(int) {} 00057 void startTitleHead(const char *) {} 00058 void endTitleHead(const char *,const char *); 00059 void startTitle(); 00060 void endTitle(); 00061 00062 void newParagraph(); 00063 void startParagraph(); 00064 void endParagraph(); 00065 void writeString(const char *text); 00066 void startIndexList() {} 00067 void endIndexList() { newParagraph(); } 00068 void startIndexKey() {} 00069 void endIndexKey() {} 00070 void startIndexValue(bool) {} 00071 void endIndexValue(const char *,bool) {} 00072 void startItemList() {} 00073 void endItemList() { newParagraph(); } 00074 void startIndexItem(const char *ref,const char *file); 00075 void endIndexItem(const char *ref,const char *file); 00076 void docify(const char *text); 00077 void codify(const char *text); 00078 void writeObjectLink(const char *ref,const char *file, 00079 const char *anchor,const char *name); 00080 void writeCodeLink(const char *ref,const char *file, 00081 const char *anchor,const char *name, 00082 const char *tooltip); 00083 void startTextLink(const char *,const char *) {} 00084 void endTextLink() {} 00085 void startHtmlLink(const char *url); 00086 void endHtmlLink(); 00087 void startTypewriter() { t << "\\fC"; firstCol=FALSE; } 00088 void endTypewriter() { t << "\\fP"; firstCol=FALSE; } 00089 void startGroupHeader(); 00090 void endGroupHeader(); 00091 void startMemberSections() {} 00092 void endMemberSections() {} 00093 void startMemberHeader(); 00094 void endMemberHeader(); 00095 void insertMemberAlign(bool) {} 00096 void startMemberSubtitle() {} 00097 void endMemberSubtitle() {} 00098 void writeListItem(); 00099 void startMemberDocList() {} 00100 void endMemberDocList() {} 00101 void startMemberList(); 00102 void endMemberList(); 00103 void startAnonTypeScope(int); 00104 void endAnonTypeScope(int); 00105 void startMemberItem(int); 00106 void endMemberItem(); 00107 void startMemberTemplateParams() {} 00108 void endMemberTemplateParams() {} 00109 00110 void startMemberGroupHeader(bool); 00111 void endMemberGroupHeader(); 00112 void startMemberGroupDocs(); 00113 void endMemberGroupDocs(); 00114 void startMemberGroup(); 00115 void endMemberGroup(bool); 00116 00117 void writeRuler() {} 00118 void writeAnchor(const char *,const char *) {} 00119 void startCodeFragment(); 00120 void endCodeFragment(); 00121 void writeLineNumber(const char *,const char *,const char *,int l) { t << l << " "; } 00122 void startCodeLine() {} 00123 void endCodeLine() { codify("\n"); col=0; } 00124 void startEmphasis() { t << "\\fI"; firstCol=FALSE; } 00125 void endEmphasis() { t << "\\fP"; firstCol=FALSE; } 00126 void startBold() { t << "\\fB"; firstCol=FALSE; } 00127 void endBold() { t << "\\fP"; firstCol=FALSE; } 00128 void startDescription() {} 00129 void endDescription() {} 00130 void startDescItem(); 00131 void endDescItem(); 00132 void lineBreak() { t << "\n.br" << endl; } 00133 void writeChar(char c); 00134 void startMemberDoc(const char *,const char *,const char *,const char *); 00135 void endMemberDoc(bool); 00136 void startDoxyAnchor(const char *,const char *,const char *,const char *,const char *); 00137 void endDoxyAnchor(const char *,const char *) {} 00138 void startCodeAnchor(const char *) {} 00139 void endCodeAnchor() {} 00140 void writeLatexSpacing() {} 00141 void writeStartAnnoItem(const char *type,const char *file, 00142 const char *path,const char *name); 00143 void writeEndAnnoItem(const char *) { t << endl; firstCol=TRUE; } 00144 void startSubsection(); 00145 void endSubsection(); 00146 void startSubsubsection(); 00147 void endSubsubsection(); 00148 void startCenter() {} 00149 void endCenter() {} 00150 void startSmall() {} 00151 void endSmall() {} 00152 void startMemberDescription() { t << "\n.RI \"\\fI"; firstCol=FALSE; } 00153 void endMemberDescription() { t << "\\fP\""; firstCol=FALSE; } 00154 void startDescList(SectionTypes); 00155 void endDescList() {} 00156 void startSimpleSect(SectionTypes,const char *,const char *,const char *); 00157 void endSimpleSect(); 00158 void startParamList(ParamListTypes,const char *title); 00159 void endParamList(); 00160 void writeDescItem(); 00161 void startSection(const char *,const char *,SectionInfo::SectionType); 00162 void endSection(const char *,SectionInfo::SectionType); 00163 void addIndexItem(const char *,const char *) {} 00164 void startIndent() {} 00165 void endIndent() {} 00166 void writeSynopsis(); 00167 void startClassDiagram() {} 00168 void endClassDiagram(const ClassDiagram &,const char *,const char *) {} 00169 void startPageRef() {} 00170 void endPageRef(const char *,const char *) {} 00171 void startQuickIndices() {} 00172 void endQuickIndices() {} 00173 void writeQuickLinks(bool,HighlightedItem) {} 00174 void startContents() {} 00175 void endContents() {} 00176 void writeNonBreakableSpace(int n) { int i; for (i=0;i<n;i++) t << " "; } 00177 00178 void startDescTable() {} 00179 void endDescTable() {} 00180 void startDescTableTitle() { writeListItem(); startBold(); startEmphasis(); } 00181 void endDescTableTitle() { endEmphasis(); endBold(); } 00182 void startDescTableData() { t << endl; firstCol=TRUE; } 00183 void endDescTableData() {} 00184 00185 void startDotGraph() {} 00186 void endDotGraph(const DotClassGraph &) {} 00187 void startInclDepGraph() {} 00188 void endInclDepGraph(const DotInclDepGraph &) {} 00189 void startGroupCollaboration() {} 00190 void endGroupCollaboration(const DotGroupCollaboration &) {} 00191 void startCallGraph() {} 00192 void endCallGraph(const DotCallGraph &) {} 00193 void startDirDepGraph() {} 00194 void endDirDepGraph(const DotDirDeps &) {} 00195 void writeGraphicalHierarchy(const DotGfxHierarchyTable &) {} 00196 00197 void startTextBlock(bool) {} 00198 void endTextBlock(bool) {} 00199 void lastIndexPage() {} 00200 00201 void startMemberDocPrefixItem() {} 00202 void endMemberDocPrefixItem() {} 00203 void startMemberDocName(bool) {} 00204 void endMemberDocName() {} 00205 void startParameterType(bool,const char *) {} 00206 void endParameterType() {} 00207 void startParameterName(bool) {} 00208 void endParameterName(bool,bool,bool) {} 00209 void startParameterList(bool) {} 00210 void endParameterList() {} 00211 00212 void startFontClass(const char *) {} 00213 void endFontClass() {} 00214 00215 void startConstraintList(const char *); 00216 void startConstraintParam(); 00217 void endConstraintParam(); 00218 void startConstraintType(); 00219 void endConstraintType(); 00220 void startConstraintDocs(); 00221 void endConstraintDocs(); 00222 void endConstraintList(); 00223 00224 void writeCodeAnchor(const char *) {} 00225 void linkableSymbol(int,const char *,Definition *,Definition *) {} 00226 00227 private: 00228 bool firstCol; 00229 bool paragraph; 00230 int col; 00231 bool upperCase; 00232 bool insideTabbing; 00233 bool inHeader; 00234 00235 ManGenerator(const ManGenerator &g); 00236 ManGenerator &operator=(const ManGenerator &g); 00237 }; 00238 00239 #endif