1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
/******************************************************************************
*
*
*
* Copyright (C) 1997-2001 by Dimitri van Heesch.
*
* 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.
*
* Documents produced by Doxygen are derivative works derived from the
* input used in their production; they are not affected by this license.
*
*/
#include <ctype.h>
#include "packagedef.h"
#include "qtbc.h"
#include "classdef.h"
#include "classlist.h"
#include "outputlist.h"
#include "util.h"
#include "config.h"
#include "doc.h"
#include "language.h"
#include "doxygen.h"
PackageDef::PackageDef(const char *df,int dl,const char *na,const char *ref) :
Definition(df,dl,na)
{
classList = new ClassList;
packageFileName = (QCString)"package_"+na;
setReference(ref);
}
PackageDef::~PackageDef()
{
delete classList;
}
void PackageDef::addClass(const ClassDef *def)
{
if (Config_getBool("SORT_MEMBER_DOCS"))
classList->inSort(def);
else
classList->append(def);
}
void PackageDef::writeDocumentation(OutputList &ol)
{
QCString title = theTranslator->trPackage(name());
ol.pushGeneratorState();
ol.disable(OutputGenerator::Man);
startFile(ol,getOutputFileBase(),title);
startTitle(ol,getOutputFileBase());
ol.docify(title);
endTitle(ol,getOutputFileBase(),title);
OutputList briefOutput(&ol);
if (!briefDescription().isEmpty())
{
parseDoc(briefOutput,defFileName,defLine,name(),0,briefDescription());
ol+=briefOutput;
ol.writeString(" \n");
ol.pushGeneratorState();
ol.disable(OutputGenerator::Latex);
ol.disable(OutputGenerator::RTF);
ol.startTextLink(0,"_details");
parseText(ol,theTranslator->trMore());
ol.endTextLink();
ol.popGeneratorState();
}
if (!Config_getString("GENERATE_TAGFILE").isEmpty())
{
Doxygen::tagFile << " <compound kind=\"package\">" << endl;
}
ol.startMemberSections();
ClassDef::CompoundType ct;
ct=ClassDef::Interface;
classList->writeDeclaration(ol,&ct,theTranslator->trInterfaces());
ct=ClassDef::Class;
classList->writeDeclaration(ol,&ct,theTranslator->trClasses());
ol.endMemberSections();
if (!Config_getString("GENERATE_TAGFILE").isEmpty())
{
writeDocAnchorsToTagFile();
Doxygen::tagFile << " </compound>" << endl;
}
if (!briefDescription().isEmpty() || !documentation().isEmpty())
{
ol.writeRuler();
ol.pushGeneratorState();
ol.disable(OutputGenerator::Latex);
ol.disable(OutputGenerator::RTF);
ol.writeAnchor(0,"_details");
ol.popGeneratorState();
ol.startGroupHeader();
parseText(ol,theTranslator->trDetailedDescription());
ol.endGroupHeader();
// repeat brief description
if (!briefDescription().isEmpty() && Config_getBool("REPEAT_BRIEF"))
{
ol+=briefOutput;
ol.newParagraph();
}
// write documentation
if (!documentation().isEmpty())
{
parseDoc(ol,defFileName,defLine,name(),0,documentation()+"\n");
}
}
endFile(ol);
ol.popGeneratorState();
}
QCString PackageDef::getOutputFileBase() const
{
return convertNameToFile(packageFileName);
}
|