Doxygen
mangen.cpp
浏览该文件的文档.
1 /******************************************************************************
2  *
3  *
4  *
5  * Copyright (C) 1997-2015 by Dimitri van Heesch.
6  *
7  * Permission to use, copy, modify, and distribute this software and its
8  * documentation under the terms of the GNU General Public License is hereby
9  * granted. No representations are made about the suitability of this software
10  * for any purpose. It is provided "as is" without express or implied warranty.
11  * See the GNU General Public License for more details.
12  *
13  * Documents produced by Doxygen are derivative works derived from the
14  * input used in their production; they are not affected by this license.
15  *
16  */
17 
18 /* http://www.cubic.org/source/archive/fileform/txt/man/ has some
19  nice introductions to groff and man pages. */
20 
21 #include <stdlib.h>
22 
23 #include "message.h"
24 #include "mangen.h"
25 #include "config.h"
26 #include "util.h"
27 #include "doxygen.h"
28 #include <string.h>
29 #include "docparser.h"
30 #include "mandocvisitor.h"
31 #include "language.h"
32 #include "dir.h"
33 #include "utf8.h"
34 
36 {
37  /*
38  * [.][number][rest]
39  * in case of . missing, just ignore it
40  * in case number missing, just place a 3 in front of it
41  */
42  QCString ext = Config_getString(MAN_EXTENSION);
43  if (ext.isEmpty())
44  {
45  ext = "3";
46  }
47  else
48  {
49  if (ext.at(0)=='.')
50  {
51  if (ext.length()==1)
52  {
53  ext = "3";
54  }
55  else // strip .
56  {
57  ext = ext.mid(1);
58  }
59  }
60  if (ext.at(0)<'0' || ext.at(0)>'9')
61  {
62  ext.prepend("3");
63  }
64  }
65  return ext;
66 }
67 
69 {
70  QCString dir = Config_getString(MAN_SUBDIR);
71  if (dir.isEmpty())
72  {
73  dir = "man" + getExtension();
74  }
75  return dir;
76 }
77 
79 {
80 }
81 
83 {
84 }
85 
87 {
89  return *this;
90 }
91 
92 std::unique_ptr<OutputGenerator> ManGenerator::clone() const
93 {
94  return std::make_unique<ManGenerator>(*this);
95 }
96 
98 {
99 }
100 
102 {
103  QCString manOutput = Config_getString(MAN_OUTPUT);
104 
105  Dir d(manOutput.str());
106  if (!d.exists() && !d.mkdir(manOutput.str()))
107  {
108  term("Could not create output directory %s\n",qPrint(manOutput));
109  }
110  std::string manDir = manOutput.str()+"/"+getSubdir().str();
111  if (!d.exists(manDir) && !d.mkdir(manDir))
112  {
113  term("Could not create output directory %s/%s\n",qPrint(manOutput), qPrint(getSubdir()));
114  }
115  createSubDirs(d);
116 }
117 
119 {
120  QCString dname = Config_getString(MAN_OUTPUT);
121  Dir d(dname.str());
122  clearSubDirs(d);
123 }
124 
125 static QCString buildFileName(const QCString &name)
126 {
127  QCString fileName;
128  if (name.isEmpty()) return "noname";
129 
130  const char *p=name.data();
131  char c;
132  while ((c=*p++))
133  {
134  switch (c)
135  {
136  case ':':
137  fileName+="_";
138  if (*p==':') p++;
139  break;
140  case '<':
141  case '>':
142  case '&':
143  case '*':
144  case '!':
145  case '^':
146  case '~':
147  case '%':
148  case '+':
149  case '/':
150  fileName+="_";
151  break;
152  default:
153  fileName+=c;
154  }
155  }
156 
157  QCString manExtension = "." + getExtension();
158  if (fileName.right(manExtension.length())!=manExtension)
159  {
160  fileName+=manExtension;
161  }
162 
163  return fileName;
164 }
165 
166 void ManGenerator::startFile(const QCString &,const QCString &manName,const QCString &,int)
167 {
168  startPlainFile( buildFileName( manName ) );
170 }
171 
173 {
174  m_t << "\n";
175  endPlainFile();
176 }
177 
179 {
180  m_t << ".TH \"" << name << "\" " << getExtension() << " \""
181  << dateToString(FALSE) << "\" \"";
182  if (!Config_getString(PROJECT_NUMBER).isEmpty())
183  m_t << "Version " << Config_getString(PROJECT_NUMBER) << "\" \"";
184  if (Config_getString(PROJECT_NAME).isEmpty())
185  m_t << "Doxygen";
186  else
187  m_t << Config_getString(PROJECT_NAME);
188  m_t << "\" \\\" -*- nroff -*-\n";
189  m_t << ".ad l\n";
190  m_t << ".nh\n";
191  m_t << ".SH NAME\n";
192  m_t << name;
196 }
197 
199 {
200  if (!m_paragraph)
201  {
202  if (!m_firstCol) m_t << "\n";
203  m_t << ".PP\n";
205  }
207 }
208 
210 {
211  if (!m_paragraph)
212  {
213  if (!m_firstCol) m_t << "\n";
214  m_t << ".PP\n";
216  }
218 }
219 
221 {
222 }
223 
225 {
226  docify(text);
227 }
228 
230 {
231 }
232 
234 {
235 }
236 
238  const QCString &,const QCString &)
239 {
240 }
241 
243  const QCString &, const QCString &name)
244 {
245  startBold(); docify(name); endBold();
246 }
247 
249  const QCString &,const QCString &,
250  const QCString &, const QCString &name,
251  const QCString &)
252 {
253  docify(name);
254 }
255 
257 {
258 }
259 
261 {
262 }
263 
265 {
266  if (!m_firstCol) m_t << "\n";
267  m_t << ".SH \"";
270 }
271 
273 {
274  m_t << "\"\n.PP \n";
278 }
279 
281 {
282  if (!m_firstCol) m_t << "\n";
283  m_t << ".SS \"";
284 }
285 
287 {
288  m_t << "\"\n";
291 }
292 
294 {
295  if (!str.isEmpty())
296  {
297  const char *p=str.data();
298  char c=0;
299  while ((c=*p++))
300  {
301  switch(c)
302  {
303  case '-': m_t << "\\-"; break; // see bug747780
304  case '.': m_t << "\\&."; break; // see bug652277
305  case '\\': m_t << "\\\\"; m_col++; break;
306  case '\n': m_t << "\n"; m_col=0; break;
307  case '\"': c = '\''; // no break!
308  default: m_t << c; m_col++; break;
309  }
310  }
311  m_firstCol=(c=='\n');
312  //printf("%s",str);fflush(stdout);
313  }
315 }
316 
318 {
319  //static char spaces[]=" ";
320  if (!str.isEmpty())
321  {
322  const char *p=str.data();
323  char c;
324  int spacesToNextTabStop;
325  while (*p)
326  {
327  c=*p++;
328  switch(c)
329  {
330  case '.': m_t << "\\&."; break; // see bug652277
331  case '\t': spacesToNextTabStop =
332  Config_getInt(TAB_SIZE) - (m_col%Config_getInt(TAB_SIZE));
333  m_t << Doxygen::spaces.left(spacesToNextTabStop);
334  m_col+=spacesToNextTabStop;
335  break;
336  case '\n': m_t << "\n"; m_firstCol=TRUE; m_col=0; break;
337  case '\\': m_t << "\\"; m_col++; break;
338  case '\"': // no break!
339  default: p=writeUTF8Char(m_t,p-1); m_firstCol=FALSE; m_col++; break;
340  }
341  }
342  //printf("%s",str);fflush(stdout);
343  }
345 }
346 
348 {
349  m_firstCol=(c=='\n');
350  if (m_firstCol) m_col=0; else m_col++;
351  switch (c)
352  {
353  case '\\': m_t << "\\\\"; break;
354  case '\"': c = '\''; // no break!
355  default: m_t << c; break;
356  }
357  //printf("%c",c);fflush(stdout);
359 }
360 
362 {
363  if (!m_firstCol)
364  { m_t << "\n" << ".PP\n";
366  m_col=0;
367  }
369  startBold();
370 }
371 
373 {
374  if (!m_firstCol) m_t << "\n";
375  m_t << ".SH \"";
378 }
379 
381 {
382  m_t << "\"";
383 }
384 
386 {
387  if (!m_firstCol) m_t << "\n";
388  m_t << ".TP\n";
391  m_col=0;
392 }
393 
395 {
396 }
397 
399 {
400  newParagraph();
401  m_t << ".nf\n";
404 }
405 
407 {
408  if (!m_firstCol) m_t << "\n";
409  m_t << ".fi\n";
412  m_col=0;
413 }
414 
415 void ManGenerator::startMemberDoc(const QCString &,const QCString &,const QCString &,const QCString &,int,int,bool)
416 {
417  if (!m_firstCol) m_t << "\n";
418  m_t << ".SS \"";
421 }
422 
423 void ManGenerator::startDoxyAnchor(const QCString &,const QCString &manName,
424  const QCString &, const QCString &name,
425  const QCString &)
426 {
427  // something to be done?
428  if( !Config_getBool(MAN_LINKS) )
429  {
430  return; // no
431  }
432 
433  // the name of the link file is derived from the name of the anchor:
434  // - truncate after an (optional) ::
435  QCString baseName = name;
436  int i=baseName.findRev("::");
437  if (i!=-1) baseName=baseName.right(baseName.length()-i-2);
438 
439  //printf("Converting man link '%s'->'%s'->'%s'\n",
440  // name,qPrint(baseName),qPrint(buildFileName(baseName)));
441 
442  // - remove dangerous characters and append suffix, then add dir prefix
443  QCString fileName=dir()+"/"+buildFileName( baseName );
444  FileInfo fi(fileName.str());
445  if (!fi.exists())
446  {
447  std::ofstream linkStream(fileName.str(),std::ofstream::out | std::ofstream::binary);
448  if (linkStream.is_open())
449  {
450  linkStream << ".so " << getSubdir() << "/" << buildFileName( manName ) << "\n";
451  }
452  }
453 }
454 
456 {
457  m_t << "\"\n";
458 }
459 
461 {
462  if (!m_firstCol) m_t << "\n";
463  m_t << ".SS \"";
466 }
467 
469 {
470  m_t << "\"";
471 }
472 
473 
475 {
476  if (!m_firstCol) m_t << "\n";
477  m_t << "\n.SS \"";
480 }
481 
483 {
484  m_t << "\"";
485 }
486 
488 {
489  if (!m_firstCol) m_t << "\n";
490  m_t << ".SH SYNOPSIS\n.br\n.PP\n";
493 }
494 
496 {
497  if (!m_firstCol) m_t << "\n";
498  m_t << ".IP \"";
500 }
501 
503 {
504  if (!m_firstCol) m_t << "\n";
505  if (!m_paragraph) m_t << ".in -1c\n";
506  m_t << ".in +1c\n";
509  m_col=0;
510 }
511 
513 {
514 }
515 
517 {
518  m_t << "\" 1c\n";
520 }
521 
522 void ManGenerator::startAnonTypeScope(int indentLevel)
523 {
524  if (indentLevel==0)
525  {
527  }
528 }
529 
530 void ManGenerator::endAnonTypeScope(int indentLevel)
531 {
532  if (indentLevel==0)
533  {
535  }
536 }
537 
538 
540 {
541  if (m_firstCol && !m_insideTabbing) m_t << ".in +1c\n";
542  m_t << "\n.ti -1c\n.RI \"";
544 }
545 
547 {
548  m_t << "\"\n.br";
549 }
550 
552 {
553  if (!m_insideTabbing)
554  {
555  m_t << "\n.in +1c"; m_firstCol=FALSE;
556  }
557 }
558 
560 {
561  if (!m_insideTabbing)
562  {
563  m_t << "\n.in -1c"; m_firstCol=FALSE;
564  }
565 }
566 
568 {
569  m_t << "\n.PP\n.RI \"\\fB";
570 }
571 
573 {
574  m_t << "\\fP\"\n.br\n";
576 }
577 
579 {
580 }
581 
583 {
584  m_t << "\n.PP";
585 }
586 
588 {
589  m_t << "\n.in +1c";
590 }
591 
593 {
594  m_t << "\n.in -1c";
596 }
597 
599 {
600  if( !m_inHeader )
601  {
602  switch(type)
603  {
609  default: ASSERT(0); break;
610  }
611  }
612 }
613 
615 {
616  if( !m_inHeader )
617  {
618  switch(type)
619  {
620  case SectionType::Page: endGroupHeader(0); break;
621  case SectionType::Section: endGroupHeader(0); break;
625  default: ASSERT(0); break;
626  }
627  }
628  else
629  {
630  m_t << "\n";
634  }
635 }
636 
638 {
639  if (!m_firstCol)
640  { m_t << "\n" << ".PP\n";
642  m_col=0;
643  }
645  startBold();
647  endBold();
649 }
650 
652 {
653 }
654 
656 {
657  if (!m_firstCol)
658  { m_t << "\n.PP\n";
660  m_col=0;
661  }
663  startBold();
664  docify(title);
665  endBold();
668 }
669 
671 {
672  endDescForItem();
673 }
674 
676 {
677  if (!m_firstCol)
678  { m_t << "\n.PP\n";
680  m_col=0;
681  }
683  startBold();
684  docify(title);
685  endBold();
687 }
688 
690 {
691 }
692 
693 void ManGenerator::writeDoc(DocNode *n,const Definition *ctx,const MemberDef *,int)
694 {
695  ManDocVisitor *visitor = new ManDocVisitor(m_t,*this,ctx?ctx->getDefFileExtension():QCString(""));
696  n->accept(visitor);
697  delete visitor;
699  m_paragraph = FALSE;
700 }
701 
703 {
704  if (!m_firstCol)
705  { m_t << "\n.PP\n";
707  m_col=0;
708  }
710  startBold();
711  docify(header);
712  endBold();
714 }
715 
717 {
719  startEmphasis();
720 }
721 
723 {
724  endEmphasis();
725  endItemListItem();
726  m_t << " : ";
727 }
728 
730 {
731  startEmphasis();
732 }
733 
735 {
736  endEmphasis();
737 }
738 
740 {
741 }
742 
744 {
745  m_t << "\n"; m_firstCol=TRUE;
746 }
747 
749 {
750 }
751 
752 
754 {
755  if (!m_firstCol)
756  {
757  m_t << "\n.PP\n" << ".in -1c\n";
758  }
759  m_t << ".RI \"\\fB";
760 }
761 
763 {
764  m_t << "\\fP\"\n" << ".in +1c\n";
765  m_firstCol = FALSE;
766 }
767 
769 {
770  if (!m_firstCol)
771  {
772  m_t << "\n.PP\n";
773  }
774  m_t << "\\fB";
775  if (isEnum)
776  {
778  }
779  else
780  {
782  }
783  m_t << ":\\fP\n";
784  m_t << ".RS 4\n";
785 }
786 
788 {
789  if (!m_firstCol) m_t << "\n";
790  m_t << ".RE\n";
791  m_t << ".PP\n";
793 }
794 
796 {
797 }
798 
800 {
801  m_t << " ";
802 }
803 
805 {
806  m_t << "\\fI";
807 }
808 
810 {
811  m_t << "\\fP ";
812 }
813 
815 {
816 }
817 
819 {
820  if (!m_firstCol) m_t << "\n";
821  m_t << ".br\n";
822  m_t << ".PP\n";
824 }
825 
827 {
828 }
829 
830 void ManGenerator::writeLabel(const QCString &l,bool isLast)
831 {
832  m_t << "\\fC [" << l << "]\\fP";
833  if (!isLast) m_t << ", ";
834 }
835 
837 {
838 }
839 
841 {
842 }
Definition::getDefFileExtension
virtual QCString getDefFileExtension() const =0
OutputGenerator::fileName
QCString fileName() const
Definition: outputgen.cpp:85
SectionType::Paragraph
@ Paragraph
ManGenerator::endInlineMemberType
void endInlineMemberType()
Definition: mangen.cpp:799
ManGenerator::m_col
int m_col
Definition: mangen.h:277
ManGenerator::endDescItem
void endDescItem()
Definition: mangen.cpp:516
ManGenerator::startInlineMemberDoc
void startInlineMemberDoc()
Definition: mangen.cpp:814
Translator::trCompoundMembers
virtual QCString trCompoundMembers()=0
ManGenerator::startInlineMemberName
void startInlineMemberName()
Definition: mangen.cpp:804
ManGenerator::m_paragraph
bool m_paragraph
Definition: mangen.h:276
ManGenerator::startMemberDoc
void startMemberDoc(const QCString &, const QCString &, const QCString &, const QCString &, int, int, bool)
Definition: mangen.cpp:415
ManGenerator::startDescItem
void startDescItem()
Definition: mangen.cpp:495
Definition
The common base class of all entity definitions found in the sources.
Definition: definition.h:76
getExtension
static QCString getExtension()
Definition: mangen.cpp:35
getSubdir
static QCString getSubdir()
Definition: mangen.cpp:68
ManGenerator::writeChar
void writeChar(char c)
Definition: mangen.cpp:347
BaseOutputDocInterface::ParamListTypes
ParamListTypes
Definition: outputgen.h:165
ManGenerator::startConstraintParam
void startConstraintParam()
Definition: mangen.cpp:716
Dir
Class representing a directory in the file system
Definition: dir.h:68
mangen.h
ManGenerator::startMemberDocSimple
void startMemberDocSimple(bool)
Definition: mangen.cpp:768
QCString::length
uint length() const
Returns the length of the string, not counting the 0-terminator.
Definition: qcstring.h:147
ManGenerator::startParagraph
void startParagraph(const QCString &classDef)
Definition: mangen.cpp:209
ManGenerator::startGroupHeader
void startGroupHeader(int)
Definition: mangen.cpp:264
ManGenerator::endDescForItem
void endDescForItem()
Definition: mangen.cpp:512
ManGenerator::endConstraintType
void endConstraintType()
Definition: mangen.cpp:734
QCString::findRev
int findRev(char c, int index=-1, bool cs=TRUE) const
Definition: qcstring.cpp:86
ManGenerator::startDoxyAnchor
void startDoxyAnchor(const QCString &, const QCString &, const QCString &, const QCString &, const QCString &)
Definition: mangen.cpp:423
QCString::isEmpty
bool isEmpty() const
Returns TRUE iff the string is empty
Definition: qcstring.h:144
ManGenerator::endConstraintParam
void endConstraintParam()
Definition: mangen.cpp:722
ManGenerator::endExamples
void endExamples()
Definition: mangen.cpp:651
ManGenerator::m_insideTabbing
bool m_insideTabbing
Definition: mangen.h:279
ManGenerator::startFile
void startFile(const QCString &name, const QCString &manName, const QCString &title, int)
Definition: mangen.cpp:166
ManGenerator::newParagraph
void newParagraph()
Definition: mangen.cpp:198
DocNode
Abstract node interface with type information.
Definition: docparser.h:96
ManGenerator::writeSynopsis
void writeSynopsis()
Definition: mangen.cpp:487
ManGenerator::startAnonTypeScope
void startAnonTypeScope(int)
Definition: mangen.cpp:522
ManGenerator::startTitle
void startTitle()
Definition: mangen.cpp:372
ManDocVisitor
Concrete visitor implementation for LaTeX output.
Definition: mandocvisitor.h:31
ManGenerator::startBold
void startBold()
Definition: mangen.h:149
QCString::str
std::string str() const
Definition: qcstring.h:442
ManGenerator::startDescForItem
void startDescForItem()
Definition: mangen.cpp:502
ManGenerator::codify
void codify(const QCString &text)
Definition: mangen.cpp:317
ManGenerator::startInlineHeader
void startInlineHeader()
Definition: mangen.cpp:753
ManGenerator::startSubsubsection
void startSubsubsection()
Definition: mangen.cpp:474
ManGenerator::endIndexItem
void endIndexItem(const QCString &ref, const QCString &file)
Definition: mangen.cpp:233
Translator::trEnumerationValues
virtual QCString trEnumerationValues()=0
ManGenerator::endMemberGroup
void endMemberGroup(bool)
Definition: mangen.cpp:592
ManGenerator::startMemberGroupHeader
void startMemberGroupHeader(bool)
Definition: mangen.cpp:567
ManGenerator::endMemberHeader
void endMemberHeader()
Definition: mangen.cpp:286
QCString::at
char & at(size_t i)
Returns a reference to the character at index i.
Definition: qcstring.h:477
ManGenerator::m_inHeader
bool m_inHeader
Definition: mangen.h:280
ManGenerator::endInlineHeader
void endInlineHeader()
Definition: mangen.cpp:762
ManGenerator::writeString
void writeString(const QCString &text)
Definition: mangen.cpp:224
buildFileName
static QCString buildFileName(const QCString &name)
Definition: mangen.cpp:125
ManGenerator::startMemberHeader
void startMemberHeader(const QCString &, int)
Definition: mangen.cpp:280
ManGenerator::endFile
void endFile()
Definition: mangen.cpp:172
ManGenerator::startMemberList
void startMemberList()
Definition: mangen.cpp:551
SectionType
SectionType
enum representing the various types of sections and entities that can be referred to.
Definition: section.h:28
ManGenerator::endEmphasis
void endEmphasis()
Definition: mangen.h:148
ManGenerator::endMemberList
void endMemberList()
Definition: mangen.cpp:559
ManGenerator::~ManGenerator
virtual ~ManGenerator()
Definition: mangen.cpp:97
ManGenerator::endLabels
void endLabels()
Definition: mangen.cpp:836
ManGenerator::startConstraintType
void startConstraintType()
Definition: mangen.cpp:729
ManGenerator::startIndexItem
void startIndexItem(const QCString &ref, const QCString &file)
Definition: mangen.cpp:229
ManGenerator::type
OutputType type() const
Definition: mangen.h:48
ManGenerator::endTitleHead
void endTitleHead(const QCString &, const QCString &)
Definition: mangen.cpp:178
OutputGenerator::m_t
TextStream m_t
Definition: outputgen.h:511
MemberDef
A model of a class/file/namespace member symbol.
Definition: memberdef.h:45
dateToString
QCString dateToString(bool includeTime)
Definition: util.cpp:1470
Config_getInt
#define Config_getInt(name)
Definition: config.h:34
ManGenerator::endParagraph
void endParagraph()
Definition: mangen.cpp:220
FileInfo::exists
bool exists() const
Definition: fileinfo.cpp:30
ManGenerator::clone
virtual std::unique_ptr< OutputGenerator > clone() const
Definition: mangen.cpp:92
QCString::left
QCString left(size_t len) const
Definition: qcstring.h:212
ManGenerator::cleanup
void cleanup()
Definition: mangen.cpp:118
message.h
SectionType::Subsubsection
@ Subsubsection
ManGenerator::endBold
void endBold()
Definition: mangen.h:150
ManGenerator::endMemberDocSimple
void endMemberDocSimple(bool)
Definition: mangen.cpp:787
ManGenerator::endHeaderSection
void endHeaderSection()
Definition: mangen.cpp:840
ManGenerator::operator=
ManGenerator & operator=(const ManGenerator &g)
Definition: mangen.cpp:86
ManGenerator::startConstraintDocs
void startConstraintDocs()
Definition: mangen.cpp:739
ManGenerator::endParamList
void endParamList()
Definition: mangen.cpp:689
theTranslator
Translator * theTranslator
Definition: language.cpp:156
doxygen.h
language.h
ManGenerator::endSection
void endSection(const QCString &, SectionType)
Definition: mangen.cpp:614
ManGenerator::startMemberGroupDocs
void startMemberGroupDocs()
Definition: mangen.cpp:578
BaseOutputDocInterface::SectionTypes
SectionTypes
Definition: outputgen.h:166
OutputGenerator::dir
QCString dir() const
Definition: outputgen.cpp:80
ManGenerator::m_firstCol
bool m_firstCol
Definition: mangen.h:275
docparser.h
TRUE
#define TRUE
Definition: qcstring.h:36
ManGenerator::startMemberItem
void startMemberItem(const QCString &, int, const QCString &)
Definition: mangen.cpp:539
ManGenerator::init
static void init()
Definition: mangen.cpp:101
ManGenerator::endHtmlLink
void endHtmlLink()
Definition: mangen.cpp:260
ManGenerator::endCodeFragment
void endCodeFragment(const QCString &)
Definition: mangen.cpp:406
SectionType::Page
@ Page
ManGenerator::startCodeFragment
void startCodeFragment(const QCString &)
Definition: mangen.cpp:398
SectionType::Subsection
@ Subsection
clearSubDirs
void clearSubDirs(const Dir &d)
Definition: util.cpp:3704
ManGenerator::endMemberGroupDocs
void endMemberGroupDocs()
Definition: mangen.cpp:582
ManGenerator::writeLabel
void writeLabel(const QCString &l, bool isLast)
Definition: mangen.cpp:830
ManGenerator::startDescTable
void startDescTable(const QCString &t)
Definition: mangen.cpp:655
utf8.h
Various UTF8 related helper functions.
writeUTF8Char
const char * writeUTF8Char(TextStream &t, const char *s)
Writes the UTF8 character pointed to by s to stream t and returns a pointer to the next character.
Definition: utf8.cpp:197
ManGenerator::ManGenerator
ManGenerator()
Definition: mangen.cpp:78
OutputGenerator
Abstract output generator.
Definition: outputgen.h:330
QCString::mid
QCString mid(size_t index, size_t len=static_cast< size_t >(-1)) const
Definition: qcstring.h:224
ManGenerator::endGroupHeader
void endGroupHeader(int)
Definition: mangen.cpp:272
ManGenerator::endSubsubsection
void endSubsubsection()
Definition: mangen.cpp:482
ManGenerator::endMemberItem
void endMemberItem()
Definition: mangen.cpp:546
ManGenerator::m_upperCase
bool m_upperCase
Definition: mangen.h:278
ManGenerator::startExamples
void startExamples()
Definition: mangen.cpp:637
ManGenerator::writeObjectLink
void writeObjectLink(const QCString &ref, const QCString &file, const QCString &anchor, const QCString &name)
Definition: mangen.cpp:242
ManGenerator::endAnonTypeScope
void endAnonTypeScope(int)
Definition: mangen.cpp:530
Config_getBool
#define Config_getBool(name)
Definition: config.h:33
ManGenerator::startSubsection
void startSubsection()
Definition: mangen.cpp:460
ManGenerator::docify
void docify(const QCString &text)
Definition: mangen.cpp:293
ManGenerator::writeCodeLink
void writeCodeLink(CodeSymbolType type, const QCString &ref, const QCString &file, const QCString &anchor, const QCString &name, const QCString &tooltip)
Definition: mangen.cpp:248
term
void term(const char *fmt,...)
Definition: message.cpp:220
SectionType::Section
@ Section
FileInfo
Minimal replacement for QFileInfo.
Definition: fileinfo.h:22
ManGenerator::startConstraintList
void startConstraintList(const QCString &)
Definition: mangen.cpp:702
qPrint
const char * qPrint(const char *s)
Definition: qcstring.h:589
Config_getString
#define Config_getString(name)
Definition: config.h:32
ManGenerator::endInlineMemberDoc
void endInlineMemberDoc()
Definition: mangen.cpp:818
ManGenerator::startLabels
void startLabels()
Definition: mangen.cpp:826
config.h
ASSERT
#define ASSERT(x)
Definition: qcstring.h:44
ManGenerator::endItemListItem
void endItemListItem()
Definition: mangen.cpp:394
ManGenerator::startParamList
void startParamList(ParamListTypes, const QCString &title)
Definition: mangen.cpp:675
QCString::data
const char * data() const
Returns a pointer to the contents of the string in the form of a 0-terminated C string
Definition: qcstring.h:153
ManGenerator::startDescList
void startDescList(SectionTypes)
Definition: mangen.cpp:361
ManGenerator::endConstraintList
void endConstraintList()
Definition: mangen.cpp:748
Dir::exists
bool exists() const
Definition: dir.cpp:199
DocNode::accept
virtual void accept(DocVisitor *v)=0
ManGenerator::startSection
void startSection(const QCString &, const QCString &, SectionType)
Definition: mangen.cpp:598
OutputGenerator::operator=
OutputGenerator & operator=(const OutputGenerator &o)
Definition: outputgen.cpp:48
ManGenerator::startInlineMemberType
void startInlineMemberType()
Definition: mangen.cpp:795
ManGenerator::endDescTable
void endDescTable()
Definition: mangen.cpp:670
OutputGenerator::endPlainFile
void endPlainFile()
Definition: outputgen.cpp:72
ManGenerator::writeStartAnnoItem
void writeStartAnnoItem(const QCString &type, const QCString &file, const QCString &path, const QCString &name)
Definition: mangen.cpp:237
ManGenerator::endTitle
void endTitle()
Definition: mangen.cpp:380
mandocvisitor.h
ManGenerator::endInlineMemberName
void endInlineMemberName()
Definition: mangen.cpp:809
Translator::trExamples
virtual QCString trExamples()=0
dir.h
ManGenerator::endMemberGroupHeader
void endMemberGroupHeader()
Definition: mangen.cpp:572
Dir::mkdir
bool mkdir(const std::string &path, bool acceptsAbsPath=true) const
Definition: dir.cpp:237
util.h
A bunch of utility functions.
createSubDirs
void createSubDirs(const Dir &d)
Definition: util.cpp:3677
ManGenerator::endSubsection
void endSubsection()
Definition: mangen.cpp:468
ManGenerator::endConstraintDocs
void endConstraintDocs()
Definition: mangen.cpp:743
CodeSymbolType
CodeSymbolType
Definition: types.h:204
QCString::right
QCString right(size_t len) const
Definition: qcstring.h:217
OutputGenerator::startPlainFile
void startPlainFile(const QCString &name)
Definition: outputgen.cpp:60
ManGenerator::startHtmlLink
void startHtmlLink(const QCString &url)
Definition: mangen.cpp:256
ManGenerator
Generator for Man page output.
Definition: mangen.h:24
QCString::prepend
QCString & prepend(const char *s)
Definition: qcstring.h:339
ManGenerator::startEmphasis
void startEmphasis()
Definition: mangen.h:147
Doxygen::spaces
static QCString spaces
Definition: doxygen.h:116
ManGenerator::writeDoc
void writeDoc(DocNode *, const Definition *, const MemberDef *, int)
Definition: mangen.cpp:693
ManGenerator::startMemberGroup
void startMemberGroup()
Definition: mangen.cpp:587
ManGenerator::endMemberDoc
void endMemberDoc(bool)
Definition: mangen.cpp:455
FALSE
#define FALSE
Definition: qcstring.h:33
ManGenerator::startItemListItem
void startItemListItem()
Definition: mangen.cpp:385
QCString
This is an alternative implementation of QCString.
Definition: qcstring.h:108