Commit b91275de authored by Dimitri van Heesch's avatar Dimitri van Heesch

Release-20000910

parent 6838640c
DOXYGEN Version 1.2.1-20000829 DOXYGEN Version 1.2.1-20000910
Please read the installation section of the manual for instructions. Please read the installation section of the manual for instructions.
-------- --------
Dimitri van Heesch (29 August 2000) Dimitri van Heesch (10 September 2000)
DOXYGEN Version 1.2.1-20000829 DOXYGEN Version 1.2.1-20000910
Please read INSTALL for compilation instructions. Please read INSTALL for compilation instructions.
...@@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at ...@@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at
Enjoy, Enjoy,
Dimitri van Heesch (29 August 2000) Dimitri van Heesch (10 September 2000)
1.2.1-20000829 1.2.1-20000910
...@@ -775,7 +775,7 @@ void init() ...@@ -775,7 +775,7 @@ void init()
"information to generate all constant output in the proper language. \n" "information to generate all constant output in the proper language. \n"
"The default language is English, other supported languages are: \n" "The default language is English, other supported languages are: \n"
"Dutch, French, Italian, Czech, Swedish, German, Finnish, Japanese, \n" "Dutch, French, Italian, Czech, Swedish, German, Finnish, Japanese, \n"
"Spanish, Russian, Croatian, Polish, and Portuguese.\n" "Korean, Hungarian, Spanish, Russian, Croatian, Polish, and Portuguese.\n"
); );
ConfigString::addFixedValue("outputLanguage","English"); ConfigString::addFixedValue("outputLanguage","English");
ConfigString::addFixedValue("outputLanguage","Dutch"); ConfigString::addFixedValue("outputLanguage","Dutch");
...@@ -785,7 +785,9 @@ void init() ...@@ -785,7 +785,9 @@ void init()
ConfigString::addFixedValue("outputLanguage","Swedish"); ConfigString::addFixedValue("outputLanguage","Swedish");
ConfigString::addFixedValue("outputLanguage","German"); ConfigString::addFixedValue("outputLanguage","German");
ConfigString::addFixedValue("outputLanguage","Finnish"); ConfigString::addFixedValue("outputLanguage","Finnish");
ConfigString::addFixedValue("outputLanguage","Hungarian");
ConfigString::addFixedValue("outputLanguage","Japanese"); ConfigString::addFixedValue("outputLanguage","Japanese");
ConfigString::addFixedValue("outputLanguage","Korean");
ConfigString::addFixedValue("outputLanguage","Spanish"); ConfigString::addFixedValue("outputLanguage","Spanish");
ConfigString::addFixedValue("outputLanguage","Russian"); ConfigString::addFixedValue("outputLanguage","Russian");
ConfigString::addFixedValue("outputLanguage","Croatian"); ConfigString::addFixedValue("outputLanguage","Croatian");
...@@ -920,11 +922,11 @@ void init() ...@@ -920,11 +922,11 @@ void init()
"CASE_SENSE_NAMES", "CASE_SENSE_NAMES",
"TRUE", "TRUE",
"determines if output can be mixed case.", "determines if output can be mixed case.",
"If the CASE_SENSE_NAMES tag is set to NO (the default) then Doxygen \n" "If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate \n"
"will only generate file names in lower case letters. If set to \n" "file names in lower case letters. If set to YES upper case letters are also \n"
"YES upper case letters are also allowed. This is useful if you have \n" "allowed. This is useful if you have classes or files whose names only differ \n"
"classes or files whose names only differ in case and if your file system \n" "in case and if your file system supports case sensitive file names. Windows \n"
"supports case sensitive file names. \n" "users are adviced to set this option to NO.\n"
); );
ConfigBool::add( "hideScopeNames", ConfigBool::add( "hideScopeNames",
"HIDE_SCOPE_NAMES", "HIDE_SCOPE_NAMES",
...@@ -983,6 +985,15 @@ void init() ...@@ -983,6 +985,15 @@ void init()
"alphabetically by member name. If set to NO the members will appear in \n" "alphabetically by member name. If set to NO the members will appear in \n"
"declaration order. \n" "declaration order. \n"
); );
ConfigBool::add( "distributeDocFlag",
"DISTRIBUTE_GROUP_DOC",
"FALSE",
"distribute docs over member group?",
"If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC \n"
"tag is set to YES, then doxygen will reuse the documentation of the first \n"
"member in the group (if any) for the other members of the group. By default \n"
"all members of a group must be documented explicitly.\n"
);
ConfigInt::add( "tabSize", ConfigInt::add( "tabSize",
"TAB_SIZE", "TAB_SIZE",
"8", "8",
...@@ -1019,7 +1030,7 @@ void init() ...@@ -1019,7 +1030,7 @@ void init()
"", "",
"list of aliases", "list of aliases",
"This tag can be used to specify a number of aliases that acts \n" "This tag can be used to specify a number of aliases that acts \n"
"as commands in the documentation. An alias has the form \"\\name=value\". \n" "as commands in the documentation. An alias has the form \"name=value\". \n"
"For example adding \"sideeffect=\\par Side Effects:\\n\" will allow you to \n" "For example adding \"sideeffect=\\par Side Effects:\\n\" will allow you to \n"
"put the command \\sideeffect (or @sideeffect) in the documentation, which \n" "put the command \\sideeffect (or @sideeffect) in the documentation, which \n"
"will result in a user defined paragraph with heading \"Side Effects:\". \n" "will result in a user defined paragraph with heading \"Side Effects:\". \n"
......
...@@ -66,6 +66,7 @@ followed by the descriptions of the tags grouped by category. ...@@ -66,6 +66,7 @@ followed by the descriptions of the tags grouped by category.
\begin{multicols}{3} \begin{multicols}{3}
\begin{CompactList} \begin{CompactList}
\endlatexonly \endlatexonly
<li> \refitem cfg_aliases ALIASES
<li> \refitem cfg_allexternals ALLEXTERNALS <li> \refitem cfg_allexternals ALLEXTERNALS
<li> \refitem cfg_alphabetical_index ALPHABETICAL_INDEX <li> \refitem cfg_alphabetical_index ALPHABETICAL_INDEX
<li> \refitem cfg_always_detailed_sec ALWAYS_DETAILED_SEC <li> \refitem cfg_always_detailed_sec ALWAYS_DETAILED_SEC
...@@ -81,6 +82,7 @@ followed by the descriptions of the tags grouped by category. ...@@ -81,6 +82,7 @@ followed by the descriptions of the tags grouped by category.
<li> \refitem cfg_compact_latex COMPACT_LATEX <li> \refitem cfg_compact_latex COMPACT_LATEX
<li> \refitem cfg_compact_rtf COMPACT_RTF <li> \refitem cfg_compact_rtf COMPACT_RTF
<li> \refitem cfg_disable_index DISABLE_INDEX <li> \refitem cfg_disable_index DISABLE_INDEX
<li> \refitem cfg_distribute_group_doc DISTRIBUTE_GROUP_DOC
<li> \refitem cfg_doc_abspath DOC_ABSPATH <li> \refitem cfg_doc_abspath DOC_ABSPATH
<li> \refitem cfg_doc_url DOC_URL <li> \refitem cfg_doc_url DOC_URL
<li> \refitem cfg_dot_path DOT_PATH <li> \refitem cfg_dot_path DOT_PATH
...@@ -104,6 +106,8 @@ followed by the descriptions of the tags grouped by category. ...@@ -104,6 +106,8 @@ followed by the descriptions of the tags grouped by category.
<li> \refitem cfg_generate_man GENERATE_MAN <li> \refitem cfg_generate_man GENERATE_MAN
<li> \refitem cfg_generate_rtf GENERATE_RTF <li> \refitem cfg_generate_rtf GENERATE_RTF
<li> \refitem cfg_generate_tagfile GENERATE_TAGFILE <li> \refitem cfg_generate_tagfile GENERATE_TAGFILE
<li> \refitem cfg_generate_testlist GENERATE_TESTLIST
<li> \refitem cfg_generate_todolist GENERATE_TODOLIST
<li> \refitem cfg_graphical_hierarchy GRAPHICAL_HIERARCHY <li> \refitem cfg_graphical_hierarchy GRAPHICAL_HIERARCHY
<li> \refitem cfg_have_dot HAVE_DOT <li> \refitem cfg_have_dot HAVE_DOT
<li> \refitem cfg_hide_scope_names HIDE_SCOPE_NAMES <li> \refitem cfg_hide_scope_names HIDE_SCOPE_NAMES
...@@ -203,8 +207,8 @@ followed by the descriptions of the tags grouped by category. ...@@ -203,8 +207,8 @@ followed by the descriptions of the tags grouped by category.
documentation generated by doxygen is written. Doxygen will use this documentation generated by doxygen is written. Doxygen will use this
information to generate all constant output in the proper language. information to generate all constant output in the proper language.
The default language is English, other supported languages are: The default language is English, other supported languages are:
Dutch, French, Italian, Czech, Swedish, German, Finnish, Japanese, Dutch, French, Italian, Czech, Swedish, German, Finnish, Hungarian, Japanese,
Spanish, Russian, Croatian, Polish and Portuguese. Korean, Spanish, Russian, Croatian, Polish and Portuguese.
\anchor cfg_disable_index \anchor cfg_disable_index
<dt>\c DISABLE_INDEX <dd> <dt>\c DISABLE_INDEX <dd>
...@@ -392,6 +396,14 @@ followed by the descriptions of the tags grouped by category. ...@@ -392,6 +396,14 @@ followed by the descriptions of the tags grouped by category.
alphabetically by member name. If set to \c NO the members will appear in alphabetically by member name. If set to \c NO the members will appear in
declaration order. declaration order.
\anchor cfg_distribute_group_doc
<dt>\c DISTRIBUTE_GROUP_DOC <dd>
\addindex DISTRIBUTE_GROUP_DOC
If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
tag is set to YES, then doxygen will reuse the documentation of the first
member in the group (if any) for the other members of the group. By default
all members of a group must be documented explicitly.
\anchor cfg_tab_size \anchor cfg_tab_size
<dt>\c TAB_SIZE <dd> <dt>\c TAB_SIZE <dd>
\addindex TAB_SIZE \addindex TAB_SIZE
...@@ -405,6 +417,39 @@ followed by the descriptions of the tags grouped by category. ...@@ -405,6 +417,39 @@ followed by the descriptions of the tags grouped by category.
documentation sections, marked by \ref cmdif "\\if" \<section-label\> ... documentation sections, marked by \ref cmdif "\\if" \<section-label\> ...
\ref cmdendif "\\endif" blocks. \ref cmdendif "\\endif" blocks.
\anchor cfg_generate_todolist
<dt>\c GENERATE_TODOLIST <dd>
\addindex GENERATE_TODOLIST
The GENERATE_TODOLIST tag can be used to enable (YES) or
disable (NO) the todo list. This list is created by
putting \ref cmdtodo "\\todo"
commands in the documentation.
\anchor cfg_generate_testlist
<dt>\c GENERATE_TESTLIST <dd>
\addindex GENERATE_TESTLIST
The GENERATE_TESTLIST tag can be used to enable (YES) or
disable (NO) the test list. This list is created by
putting \ref cmdtest "\\test" commands in the documentation.
\anchor cfg_aliases
<dt>\c ALIASES <dd>
\addindex ALIASES
This tag can be used to specify a number of aliases that acts
as commands in the documentation. An alias has the form
\verbatim
name=value
\endverbatim
For example adding
\verbatim
"sideeffect=\par Side Effects:\n"
\endverbatim
will allow you to
put the command \\sideeffect (or \@sideeffect) in the documentation, which
will result in a user defined paragraph with heading "Side Effects:".
You can put \\n's in the value part of an alias to insert newlines.
Predefined commands cannot be overwritten using aliases.
</dl> </dl>
\subsection messages_input Options related to warning and progress messages \subsection messages_input Options related to warning and progress messages
......
...@@ -169,6 +169,16 @@ EXCLUDE_PATTERNS = */test/* ...@@ -169,6 +169,16 @@ EXCLUDE_PATTERNS = */test/*
Put a \% in front of the class name. Like this: \%MyClass. Doxygen will then Put a \% in front of the class name. Like this: \%MyClass. Doxygen will then
remove the % and keep the word unlinked. remove the % and keep the word unlinked.
<li><b>Help! I get the cryptic message
"input buffer overflow, can't enlarge buffer because scanner uses REJECT"</b>
This error happens when doxygen lexical scanner has a rules that matches
more than 16K input character in one go. I've seen this happening
on a very large generated file (>16K lines), where the built-in preprocessor
converted it into an empty file (with >16K of newlines). Another case
where this might happen is if you have lines in you code with more than
16K characters.
</ol> </ol>
\htmlonly \htmlonly
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
<li>Requires very little overhead from the writer of the documentation. <li>Requires very little overhead from the writer of the documentation.
Plain text will do, but for more fancy or structured output HTML tags Plain text will do, but for more fancy or structured output HTML tags
and/or some of doxygen's special commands can be used. and/or some of doxygen's special commands can be used.
<li>Supports C++, (Corba and Microsoft) IDL and C sources. <li>Supports C++, (Corba, Microsoft, and KDE-DCOP) IDL and C sources.
<li>Supports documentation of files, namespaces, classes, structs, unions, <li>Supports documentation of files, namespaces, classes, structs, unions,
templates, variables, functions, typedefs, enums and defines. templates, variables, functions, typedefs, enums and defines.
<li>JavaDoc (1.1), Qt-Doc, and KDOC compatible. <li>JavaDoc (1.1), Qt-Doc, and KDOC compatible.
......
...@@ -49,8 +49,8 @@ Documents produced by Doxygen are derivative works derived from the ...@@ -49,8 +49,8 @@ Documents produced by Doxygen are derivative works derived from the
input used in their production; they are not affected by this license. input used in their production; they are not affected by this license.
<h2>Introduction</h2> <h2>Introduction</h2>
Doxygen is a documentation system for C++, IDL (Corba and Microsoft flavors) Doxygen is a documentation system for C++, IDL
and C. (Corba, Microsoft and KDE-DCOP flavors) and C.
It can help you in three ways: It can help you in three ways:
<ol> <ol>
......
...@@ -22,9 +22,9 @@ Doxygen has support for multiple languages. This means that the text fragments t ...@@ -22,9 +22,9 @@ Doxygen has support for multiple languages. This means that the text fragments t
doxygen generates can changed into languages other than English doxygen generates can changed into languages other than English
(the default) at configuration time. (the default) at configuration time.
<p> <p>
Currently, supported languages are English, French, Czech, Dutch, Currently, supported languages are English, French, Czech, Dutch, Spannish,
Swedish, Italian, German and Japanese. A number Swedish, Russian, Czech, Croatian, Italian, Hungarian, Finnish, German and Japanese,
of people have volunteered to add support for other languages as well. and Korean.
Here is a list of the languages and their current maintainers: Here is a list of the languages and their current maintainers:
<p> <p>
...@@ -155,6 +155,30 @@ Here is a list of the languages and their current maintainers: ...@@ -155,6 +155,30 @@ Here is a list of the languages and their current maintainers:
snob@NOSPAM.int.spb.ru</a> snob@NOSPAM.int.spb.ru</a>
</TD> </TD>
</TR> </TR>
<TR BGCOLOR="#ffffff">
<TD>
Korean
</TD>
<TD>
Richard Kim
</TD>
<TD>
<a href="mailto:ryk@NOSPAM.dspwiz.com">
ryk@NOSPAM.dspwiz.com</a>
</TD>
</TR>
<TR BGCOLOR="#ffffff">
<TD>
Hungarian
</TD>
<TD>
Fldvri Gyrgy
</TD>
<TD>
<a href="mailto:foldvari@NOSPAM.diatronltd.com">
foldvari@NOSPAM.diatronltd.com</a>
</TD>
</TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD> <TD>
Croatian Croatian
...@@ -167,7 +191,6 @@ Here is a list of the languages and their current maintainers: ...@@ -167,7 +191,6 @@ Here is a list of the languages and their current maintainers:
boris.bralo@NOSPAM.zg.tel.hr</a> boris.bralo@NOSPAM.zg.tel.hr</a>
</TD> </TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
<TD> <TD>
Polish Polish
...@@ -225,6 +248,10 @@ Here is a list of the languages and their current maintainers: ...@@ -225,6 +248,10 @@ Here is a list of the languages and their current maintainers:
\hline \hline
Russian & Nickolay Semyonov & {\tt snob@int.spb.ru} \\ Russian & Nickolay Semyonov & {\tt snob@int.spb.ru} \\
\hline \hline
Korean & Richard Kim & {\\tt ryk@dspwiz.com} \\
\hline
Hungarian & Fldvri Gyrgy & {\\tt foldvari@diatronltd.com} \\
\hline
Croatian & Boris Bralo & {\tt boris.bralo@zg.tel.hr} \\ Croatian & Boris Bralo & {\tt boris.bralo@zg.tel.hr} \\
\hline \hline
Polish & Grzegorz Kowal & {\tt g\_kowal@poczta.onet.pl} \\ Polish & Grzegorz Kowal & {\tt g\_kowal@poczta.onet.pl} \\
......
Name: doxygen Name: doxygen
Version: 1.2.1-20000829 Version: 1.2.1-20000910
Summary: documentation system for C, C++ and IDL Summary: documentation system for C, C++ and IDL
Release: 1 Release: 1
Source0: doxygen-%{version}.src.tar.gz Source0: doxygen-%{version}.src.tar.gz
......
...@@ -178,6 +178,7 @@ void ClassDef::addMembersToMemberGroup() ...@@ -178,6 +178,7 @@ void ClassDef::addMembersToMemberGroup()
addMemberListToGroup(&pubAttribs); addMemberListToGroup(&pubAttribs);
addMemberListToGroup(&pubSlots); addMemberListToGroup(&pubSlots);
addMemberListToGroup(&signals); addMemberListToGroup(&signals);
addMemberListToGroup(&dcopMethods);
addMemberListToGroup(&pubStaticMembers); addMemberListToGroup(&pubStaticMembers);
addMemberListToGroup(&pubStaticAttribs); addMemberListToGroup(&pubStaticAttribs);
addMemberListToGroup(&proTypes); addMemberListToGroup(&proTypes);
...@@ -219,11 +220,15 @@ void ClassDef::insertMember(MemberDef *md) ...@@ -219,11 +220,15 @@ void ClassDef::insertMember(MemberDef *md)
{ {
switch (md->memberType()) switch (md->memberType())
{ {
case MemberDef::Signal: case MemberDef::Signal: // Qt specific
signals.append(md); signals.append(md);
md->setSectionList(&signals); md->setSectionList(&signals);
break; break;
case MemberDef::Slot: case MemberDef::DCOP: // KDE2 specific
dcopMethods.append(md);
md->setSectionList(&dcopMethods);
break;
case MemberDef::Slot: // Qt specific
switch (md->protection()) switch (md->protection())
{ {
case Protected: case Protected:
...@@ -358,7 +363,8 @@ void ClassDef::insertMember(MemberDef *md) ...@@ -358,7 +363,8 @@ void ClassDef::insertMember(MemberDef *md)
{ {
switch (md->memberType()) switch (md->memberType())
{ {
case MemberDef::Signal: case MemberDef::Signal: // fall through
case MemberDef::DCOP:
if (Config::sortMembersFlag) if (Config::sortMembersFlag)
functionMembers.inSort(md); functionMembers.inSort(md);
else else
...@@ -511,6 +517,7 @@ void ClassDef::computeAnchors() ...@@ -511,6 +517,7 @@ void ClassDef::computeAnchors()
setAnchors('s',&pubTypes); setAnchors('s',&pubTypes);
setAnchors('t',&proTypes); setAnchors('t',&proTypes);
setAnchors('u',&priTypes); setAnchors('u',&priTypes);
setAnchors('v',&dcopMethods);
} }
void ClassDef::distributeMemberGroupDocumentation() void ClassDef::distributeMemberGroupDocumentation()
...@@ -857,6 +864,8 @@ void ClassDef::writeDocumentation(OutputList &ol) ...@@ -857,6 +864,8 @@ void ClassDef::writeDocumentation(OutputList &ol)
pubAttribs.writeDeclarations(ol,this,0,0,0,theTranslator->trPublicAttribs(),0); pubAttribs.writeDeclarations(ol,this,0,0,0,theTranslator->trPublicAttribs(),0);
pubSlots.writeDeclarations(ol,this,0,0,0,theTranslator->trPublicSlots(),0); pubSlots.writeDeclarations(ol,this,0,0,0,theTranslator->trPublicSlots(),0);
signals.writeDeclarations(ol,this,0,0,0,theTranslator->trSignals(),0); signals.writeDeclarations(ol,this,0,0,0,theTranslator->trSignals(),0);
dcopMethods.writeDeclarations(ol,this,0,0,0,theTranslator->trDCOPMethods(),0);
// static public members // static public members
pubStaticMembers.writeDeclarations(ol,this,0,0,0,theTranslator->trStaticPublicMembers(),0); pubStaticMembers.writeDeclarations(ol,this,0,0,0,theTranslator->trStaticPublicMembers(),0);
pubStaticAttribs.writeDeclarations(ol,this,0,0,0,theTranslator->trStaticPublicAttribs(),0); pubStaticAttribs.writeDeclarations(ol,this,0,0,0,theTranslator->trStaticPublicAttribs(),0);
...@@ -1066,7 +1075,7 @@ void ClassDef::writeDocumentation(OutputList &ol) ...@@ -1066,7 +1075,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
ol.docify(stripFromPath(path)); ol.docify(stripFromPath(path));
} }
if (fd->generateSource() || (!fd->isReference() && Config::sourceBrowseFlag)) if (fd->generateSourceFile())
{ {
ol.writeObjectLink(0,fd->sourceName(),0,fd->name()); ol.writeObjectLink(0,fd->sourceName(),0,fd->name());
} }
...@@ -1340,6 +1349,7 @@ void ClassDef::writeDeclaration(OutputList &ol,MemberDef *md,bool inGroup) ...@@ -1340,6 +1349,7 @@ void ClassDef::writeDeclaration(OutputList &ol,MemberDef *md,bool inGroup)
pubAttribs.writePlainDeclarations(ol,this,0,0,0); pubAttribs.writePlainDeclarations(ol,this,0,0,0);
pubSlots.writePlainDeclarations(ol,this,0,0,0); pubSlots.writePlainDeclarations(ol,this,0,0,0);
signals.writePlainDeclarations(ol,this,0,0,0); signals.writePlainDeclarations(ol,this,0,0,0);
dcopMethods.writePlainDeclarations(ol,this,0,0,0);
pubStaticMembers.writePlainDeclarations(ol,this,0,0,0); pubStaticMembers.writePlainDeclarations(ol,this,0,0,0);
pubStaticAttribs.writePlainDeclarations(ol,this,0,0,0); pubStaticAttribs.writePlainDeclarations(ol,this,0,0,0);
proTypes.writePlainDeclarations(ol,this,0,0,0); proTypes.writePlainDeclarations(ol,this,0,0,0);
...@@ -1856,7 +1866,8 @@ void ClassDef::generateXML(QTextStream &t) ...@@ -1856,7 +1866,8 @@ void ClassDef::generateXML(QTextStream &t)
} }
int numMembers = int numMembers =
pubTypes.count()+pubMembers.count()+pubAttribs.count()+ pubTypes.count()+pubMembers.count()+pubAttribs.count()+
pubSlots.count()+signals.count()+pubStaticMembers.count()+ pubSlots.count()+signals.count()+dcopMethods.count()+
pubStaticMembers.count()+
pubStaticAttribs.count()+proTypes.count()+proMembers.count()+ pubStaticAttribs.count()+proTypes.count()+proMembers.count()+
proAttribs.count()+proSlots.count()+proStaticMembers.count()+ proAttribs.count()+proSlots.count()+proStaticMembers.count()+
proStaticAttribs.count()+priTypes.count()+priMembers.count()+ proStaticAttribs.count()+priTypes.count()+priMembers.count()+
...@@ -1870,6 +1881,7 @@ void ClassDef::generateXML(QTextStream &t) ...@@ -1870,6 +1881,7 @@ void ClassDef::generateXML(QTextStream &t)
generateXMLSection(t,&pubAttribs,"public-attrib"); generateXMLSection(t,&pubAttribs,"public-attrib");
generateXMLSection(t,&pubSlots,"public-slot"); generateXMLSection(t,&pubSlots,"public-slot");
generateXMLSection(t,&signals,"signal"); generateXMLSection(t,&signals,"signal");
generateXMLSection(t,&dcopMethods,"dcop-func");
generateXMLSection(t,&pubStaticMembers,"public-static-func"); generateXMLSection(t,&pubStaticMembers,"public-static-func");
generateXMLSection(t,&pubStaticAttribs,"public-static-attrib"); generateXMLSection(t,&pubStaticAttribs,"public-static-attrib");
generateXMLSection(t,&proTypes,"protected-type"); generateXMLSection(t,&proTypes,"protected-type");
......
...@@ -167,6 +167,7 @@ class ClassDef : public Definition ...@@ -167,6 +167,7 @@ class ClassDef : public Definition
MemberList related; MemberList related;
MemberList signals; MemberList signals;
MemberList friends; MemberList friends;
MemberList dcopMethods;
/* member list by types */ /* member list by types */
MemberList constructors; MemberList constructors;
......
/* This file was generated by configgen on Fri Aug 25 21:22:11 2000 /* This file was generated by configgen on Sat Sep 2 10:51:52 2000
* from config_templ.h * from config_templ.h
* *
* DO NOT EDIT! * DO NOT EDIT!
...@@ -64,6 +64,7 @@ struct Config ...@@ -64,6 +64,7 @@ struct Config
static bool inheritDocsFlag; // inheritance of documentation enabled? static bool inheritDocsFlag; // inheritance of documentation enabled?
static bool inlineInfoFlag; // show info about inline members? static bool inlineInfoFlag; // show info about inline members?
static bool sortMembersFlag; // sort members alphabetically? static bool sortMembersFlag; // sort members alphabetically?
static bool distributeDocFlag; // distribute docs over member group?
static int tabSize; // number of spaces in a tab static int tabSize; // number of spaces in a tab
static QStrList sectionFilterList; // list of section filters that are enabled static QStrList sectionFilterList; // list of section filters that are enabled
static bool generateTodoList; // do we want a todo list? static bool generateTodoList; // do we want a todo list?
......
/* This file was generated by configgen on Fri Aug 25 21:22:11 2000 /* This file was generated by configgen on Sat Sep 2 10:51:52 2000
* from config_templ.l * from config_templ.l
* *
* DO NOT EDIT! * DO NOT EDIT!
...@@ -101,6 +101,7 @@ bool Config::autoBriefFlag = TRUE; ...@@ -101,6 +101,7 @@ bool Config::autoBriefFlag = TRUE;
bool Config::inheritDocsFlag = TRUE; bool Config::inheritDocsFlag = TRUE;
bool Config::inlineInfoFlag = TRUE; bool Config::inlineInfoFlag = TRUE;
bool Config::sortMembersFlag = TRUE; bool Config::sortMembersFlag = TRUE;
bool Config::distributeDocFlag = FALSE;
int Config::tabSize = 8; int Config::tabSize = 8;
QStrList Config::sectionFilterList; QStrList Config::sectionFilterList;
bool Config::generateTodoList = TRUE; bool Config::generateTodoList = TRUE;
...@@ -357,6 +358,7 @@ static void readIncludeFile(const char *incName) ...@@ -357,6 +358,7 @@ static void readIncludeFile(const char *incName)
<Start>"INHERIT_DOCS"[ \t]*"=" { BEGIN(GetBool); b=&Config::inheritDocsFlag; } <Start>"INHERIT_DOCS"[ \t]*"=" { BEGIN(GetBool); b=&Config::inheritDocsFlag; }
<Start>"INLINE_INFO"[ \t]*"=" { BEGIN(GetBool); b=&Config::inlineInfoFlag; } <Start>"INLINE_INFO"[ \t]*"=" { BEGIN(GetBool); b=&Config::inlineInfoFlag; }
<Start>"SORT_MEMBER_DOCS"[ \t]*"=" { BEGIN(GetBool); b=&Config::sortMembersFlag; } <Start>"SORT_MEMBER_DOCS"[ \t]*"=" { BEGIN(GetBool); b=&Config::sortMembersFlag; }
<Start>"DISTRIBUTE_GROUP_DOC"[ \t]*"=" { BEGIN(GetBool); b=&Config::distributeDocFlag; }
<Start>"TAB_SIZE"[ \t]*"=" { BEGIN(GetString); s=&tabSizeString; s->resize(0); } <Start>"TAB_SIZE"[ \t]*"=" { BEGIN(GetString); s=&tabSizeString; s->resize(0); }
<Start>"ENABLED_SECTIONS"[ \t]*"=" { BEGIN(GetStrList); l=&Config::sectionFilterList; l->clear(); elemStr=""; } <Start>"ENABLED_SECTIONS"[ \t]*"=" { BEGIN(GetStrList); l=&Config::sectionFilterList; l->clear(); elemStr=""; }
<Start>"ENABLED_SECTIONS"[ \t]*"+=" { BEGIN(GetStrList); l=&Config::sectionFilterList; elemStr=""; } <Start>"ENABLED_SECTIONS"[ \t]*"+=" { BEGIN(GetStrList); l=&Config::sectionFilterList; elemStr=""; }
...@@ -587,6 +589,7 @@ void dumpConfig() ...@@ -587,6 +589,7 @@ void dumpConfig()
printf("inheritDocsFlag=`%d'\n",Config::inheritDocsFlag); printf("inheritDocsFlag=`%d'\n",Config::inheritDocsFlag);
printf("inlineInfoFlag=`%d'\n",Config::inlineInfoFlag); printf("inlineInfoFlag=`%d'\n",Config::inlineInfoFlag);
printf("sortMembersFlag=`%d'\n",Config::sortMembersFlag); printf("sortMembersFlag=`%d'\n",Config::sortMembersFlag);
printf("distributeDocFlag=`%d'\n",Config::distributeDocFlag);
printf("tabSize=`%d'\n",Config::tabSize); printf("tabSize=`%d'\n",Config::tabSize);
{ {
char *is=Config::sectionFilterList.first(); char *is=Config::sectionFilterList.first();
...@@ -824,6 +827,7 @@ void Config::init() ...@@ -824,6 +827,7 @@ void Config::init()
Config::inheritDocsFlag = TRUE; Config::inheritDocsFlag = TRUE;
Config::inlineInfoFlag = TRUE; Config::inlineInfoFlag = TRUE;
Config::sortMembersFlag = TRUE; Config::sortMembersFlag = TRUE;
Config::distributeDocFlag = FALSE;
Config::tabSize = 8; Config::tabSize = 8;
Config::sectionFilterList.clear(); Config::sectionFilterList.clear();
Config::generateTodoList = TRUE; Config::generateTodoList = TRUE;
...@@ -1011,7 +1015,7 @@ void writeTemplateConfig(QFile *f,bool sl) ...@@ -1011,7 +1015,7 @@ void writeTemplateConfig(QFile *f,bool sl)
t << "# information to generate all constant output in the proper language. \n"; t << "# information to generate all constant output in the proper language. \n";
t << "# The default language is English, other supported languages are: \n"; t << "# The default language is English, other supported languages are: \n";
t << "# Dutch, French, Italian, Czech, Swedish, German, Finnish, Japanese, \n"; t << "# Dutch, French, Italian, Czech, Swedish, German, Finnish, Japanese, \n";
t << "# Spanish, Russian, Croatian, Polish, and Portuguese.\n"; t << "# Korean, Hungarian, Spanish, Russian, Croatian, Polish, and Portuguese.\n";
t << "\n"; t << "\n";
} }
t << "OUTPUT_LANGUAGE = "; t << "OUTPUT_LANGUAGE = ";
...@@ -1278,6 +1282,18 @@ void writeTemplateConfig(QFile *f,bool sl) ...@@ -1278,6 +1282,18 @@ void writeTemplateConfig(QFile *f,bool sl)
writeBoolValue(t,Config::sortMembersFlag); writeBoolValue(t,Config::sortMembersFlag);
t << "\n"; t << "\n";
if (!sl) if (!sl)
{
t << "\n";
t << "# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC \n";
t << "# tag is set to YES, then doxygen will reuse the documentation of the first \n";
t << "# member in the group (if any) for the other members of the group. By default \n";
t << "# all members of a group must be documented explicitly.\n";
t << "\n";
}
t << "DISTRIBUTE_GROUP_DOC = ";
writeBoolValue(t,Config::distributeDocFlag);
t << "\n";
if (!sl)
{ {
t << "\n"; t << "\n";
t << "# The TAB_SIZE tag can be used to set the number of spaces in a tab. \n"; t << "# The TAB_SIZE tag can be used to set the number of spaces in a tab. \n";
...@@ -1323,10 +1339,11 @@ void writeTemplateConfig(QFile *f,bool sl) ...@@ -1323,10 +1339,11 @@ void writeTemplateConfig(QFile *f,bool sl)
{ {
t << "\n"; t << "\n";
t << "# This tag can be used to specify a number of aliases that acts \n"; t << "# This tag can be used to specify a number of aliases that acts \n";
t << "# as commands in the documentation. An alias has the form \"\\name=value\". \n"; t << "# as commands in the documentation. An alias has the form \"name=value\". \n";
t << "# For example adding \"sideeffect=\\par Side Effects:\\n\" will allow you to \n"; t << "# For example adding \"sideeffect=\\par Side Effects:\\n\" will allow you to \n";
t << "# put the command \\sideeffect (or @sideeffect) in the documentation, which \n"; t << "# put the command \\sideeffect (or @sideeffect) in the documentation, which \n";
t << "# will result in a user defined paragraph with heading \"Side Effects:\". \n"; t << "# will result in a user defined paragraph with heading \"Side Effects:\". \n";
t << "# You can put \\n's in the value part of an alias to insert newlines. \n";
t << "# Predefined commands cannot be overwritten using aliases. \n"; t << "# Predefined commands cannot be overwritten using aliases. \n";
t << "\n"; t << "\n";
} }
......
...@@ -69,7 +69,7 @@ class Definition ...@@ -69,7 +69,7 @@ class Definition
virtual bool isLinkableInProject() = 0; virtual bool isLinkableInProject() = 0;
virtual bool isLinkable() = 0; virtual bool isLinkable() = 0;
bool isReference() { return !ref.isEmpty(); } bool isReference() const { return !ref.isEmpty(); }
void setReference(const char *r) { ref=r; } void setReference(const char *r) { ref=r; }
QCString getReference() { return ref; } QCString getReference() { return ref; }
......
...@@ -2043,7 +2043,14 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"") ...@@ -2043,7 +2043,14 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"")
} }
else else
{ {
outDoc->newParagraph(); if (insidePre)
{
outDoc->docify(yytext);
}
else
{
outDoc->newParagraph();
}
} }
if (inBlock()) endBlock(); if (inBlock()) endBlock();
} }
......
...@@ -1205,7 +1205,7 @@ void DotInclDepGraph::buildGraph(DotNode *n,FileDef *fd,int distance) ...@@ -1205,7 +1205,7 @@ void DotInclDepGraph::buildGraph(DotNode *n,FileDef *fd,int distance)
{ {
in = bfd->absFilePath(); in = bfd->absFilePath();
doc = bfd->isLinkableInProject(); doc = bfd->isLinkableInProject();
src = bfd->generateSource() || (!bfd->isReference() && Config::sourceBrowseFlag); src = bfd->generateSourceFile();
} }
if (doc || src) if (doc || src)
{ {
......
...@@ -90,6 +90,7 @@ FileNameDict *includeNameDict; // include names ...@@ -90,6 +90,7 @@ FileNameDict *includeNameDict; // include names
FileNameDict *exampleNameDict; // examples FileNameDict *exampleNameDict; // examples
FileNameDict *imageNameDict; // images FileNameDict *imageNameDict; // images
StringDict typedefDict(1009); // all typedefs StringDict typedefDict(1009); // all typedefs
StringDict namespaceAliasDict(257); // all namespace aliases
GroupDict groupDict(257); // all groups GroupDict groupDict(257); // all groups
FormulaDict formulaDict(1009); // all formulas FormulaDict formulaDict(1009); // all formulas
FormulaDict formulaNameDict(1009); // the label name of all formulas FormulaDict formulaNameDict(1009); // the label name of all formulas
...@@ -502,7 +503,7 @@ static void addIncludeFile(ClassDef *cd,FileDef *ifd,Entry *root) ...@@ -502,7 +503,7 @@ static void addIncludeFile(ClassDef *cd,FileDef *ifd,Entry *root)
// generate code for header // generate code for header
{ {
cd->setIncludeFile(fd,iName,local); cd->setIncludeFile(fd,iName,local);
fd->setGenerateSource(TRUE); //fd->setGenerateSource(TRUE);
} }
else // put #include in the class documentation without link else // put #include in the class documentation without link
{ {
...@@ -526,7 +527,7 @@ static bool addNamespace(Entry *root,ClassDef *cd) ...@@ -526,7 +527,7 @@ static bool addNamespace(Entry *root,ClassDef *cd)
//printf("addNameSpace() trying: %s\n",e->name.data()); //printf("addNameSpace() trying: %s\n",e->name.data());
QCString nsName = stripAnnonymousNamespaceScope(e->name); QCString nsName = stripAnnonymousNamespaceScope(e->name);
if (!nsName.isEmpty() && nsName.at(0)!='@' && if (!nsName.isEmpty() && nsName.at(0)!='@' &&
(nd=namespaceDict[nsName]) (nd=getResolvedNamespace(nsName))
) )
{ {
cd->setNamespace(nd); cd->setNamespace(nd);
...@@ -688,7 +689,7 @@ static void buildClassList(Entry *root) ...@@ -688,7 +689,7 @@ static void buildClassList(Entry *root)
// namespace is part of the class name // namespace is part of the class name
if (!found && !namespaceName.isEmpty()) if (!found && !namespaceName.isEmpty())
{ {
NamespaceDef *nd = namespaceDict[namespaceName]; NamespaceDef *nd = getResolvedNamespace(namespaceName);
if (nd) if (nd)
{ {
cd->setNamespace(nd); cd->setNamespace(nd);
...@@ -850,7 +851,7 @@ static void findUsingDirectives(Entry *root) ...@@ -850,7 +851,7 @@ static void findUsingDirectives(Entry *root)
nsName=root->parent->name.copy(); nsName=root->parent->name.copy();
if (!nsName.isEmpty()) if (!nsName.isEmpty())
{ {
nd = namespaceDict[nsName]; nd = getResolvedNamespace(nsName);
} }
} }
...@@ -864,7 +865,7 @@ static void findUsingDirectives(Entry *root) ...@@ -864,7 +865,7 @@ static void findUsingDirectives(Entry *root)
QCString scope=scopeOffset>0 ? QCString scope=scopeOffset>0 ?
nsName.left(scopeOffset)+"::" : QCString(); nsName.left(scopeOffset)+"::" : QCString();
//printf("Trying with scope=`%s'\n",scope.data()); //printf("Trying with scope=`%s'\n",scope.data());
usingNd = namespaceDict[scope+root->name]; usingNd = getResolvedNamespace(scope+root->name);
if (scopeOffset==0) if (scopeOffset==0)
{ {
scopeOffset=-1; scopeOffset=-1;
...@@ -959,7 +960,7 @@ static void findUsingDeclarations(Entry *root) ...@@ -959,7 +960,7 @@ static void findUsingDeclarations(Entry *root)
scName=root->parent->name.copy(); scName=root->parent->name.copy();
if (!scName.isEmpty()) if (!scName.isEmpty())
{ {
nd = namespaceDict[scName]; nd = getResolvedNamespace(scName);
} }
} }
...@@ -1175,7 +1176,7 @@ static MemberDef *addVariableToFile( ...@@ -1175,7 +1176,7 @@ static MemberDef *addVariableToFile(
QCString nscope=removeAnnonymousScopes(scope); QCString nscope=removeAnnonymousScopes(scope);
if (!nscope.isEmpty()) if (!nscope.isEmpty())
{ {
nd = namespaceDict[nscope]; nd = getResolvedNamespace(nscope);
} }
} }
QCString def; QCString def;
...@@ -1221,7 +1222,7 @@ static MemberDef *addVariableToFile( ...@@ -1221,7 +1222,7 @@ static MemberDef *addVariableToFile(
NamespaceDef *nd=0; NamespaceDef *nd=0;
if (!nscope.isEmpty()) if (!nscope.isEmpty())
{ {
nd = namespaceDict[nscope]; nd = getResolvedNamespace(nscope);
} }
if (nd==0 || md->getNamespaceDef()==nd) if (nd==0 || md->getNamespaceDef()==nd)
// variable already in the scope // variable already in the scope
...@@ -1540,10 +1541,11 @@ static void buildMemberList(Entry *root) ...@@ -1540,10 +1541,11 @@ static void buildMemberList(Entry *root)
if (name.left(2)=="::") name=name.right(name.length()-2); if (name.left(2)=="::") name=name.right(name.length()-2);
MemberDef::MemberType mtype; MemberDef::MemberType mtype;
if (isFriend) mtype=MemberDef::Friend; if (isFriend) mtype=MemberDef::Friend;
else if (root->sig) mtype=MemberDef::Signal; else if (root->mtype==Signal) mtype=MemberDef::Signal;
else if (root->slot) mtype=MemberDef::Slot; else if (root->mtype==Slot) mtype=MemberDef::Slot;
else mtype=MemberDef::Function; else if (root->mtype==DCOP) mtype=MemberDef::DCOP;
else mtype=MemberDef::Function;
// strip redundant template specifier for constructors // strip redundant template specifier for constructors
if ((i=name.find('<'))!=-1 && name.find('>')!=-1) if ((i=name.find('<'))!=-1 && name.find('>')!=-1)
...@@ -1699,7 +1701,7 @@ static void buildMemberList(Entry *root) ...@@ -1699,7 +1701,7 @@ static void buildMemberList(Entry *root)
NamespaceDef *rnd = 0; NamespaceDef *rnd = 0;
if (!root->parent->name.isEmpty()) if (!root->parent->name.isEmpty())
{ {
rnd = namespaceDict[root->parent->name]; rnd = getResolvedNamespace(root->parent->name);
} }
FileDef *fd = md->getFileDef(); FileDef *fd = md->getFileDef();
QCString nsName,rnsName; QCString nsName,rnsName;
...@@ -1811,7 +1813,7 @@ static void buildMemberList(Entry *root) ...@@ -1811,7 +1813,7 @@ static void buildMemberList(Entry *root)
QCString nscope=removeAnnonymousScopes(root->parent->name); QCString nscope=removeAnnonymousScopes(root->parent->name);
if (!nscope.isEmpty()) if (!nscope.isEmpty())
{ {
nd = namespaceDict[nscope]; nd = getResolvedNamespace(nscope);
} }
} }
...@@ -3197,7 +3199,7 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl ...@@ -3197,7 +3199,7 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl
bool ambig; bool ambig;
FileDef *fd=findFileDef(inputNameDict,root->fileName,ambig); FileDef *fd=findFileDef(inputNameDict,root->fileName,ambig);
NamespaceDef *nd=0; NamespaceDef *nd=0;
if (!namespaceName.isEmpty()) nd=namespaceDict[namespaceName]; if (!namespaceName.isEmpty()) nd=getResolvedNamespace(namespaceName);
tcd = findClassDefinition(fd,nd,scopeName,classTempList); tcd = findClassDefinition(fd,nd,scopeName,classTempList);
if (cd && tcd==cd) // member's classes match if (cd && tcd==cd) // member's classes match
...@@ -3367,8 +3369,9 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl ...@@ -3367,8 +3369,9 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl
if (unique) if (unique)
{ {
MemberDef::MemberType mtype; MemberDef::MemberType mtype;
if (root->sig) mtype=MemberDef::Signal; if (root->mtype==Signal) mtype=MemberDef::Signal;
else if (root->slot) mtype=MemberDef::Slot; else if (root->mtype==Slot) mtype=MemberDef::Slot;
else if (root->mtype==DCOP) mtype=MemberDef::DCOP;
else mtype=MemberDef::Function; else mtype=MemberDef::Function;
// new overloaded member function // new overloaded member function
...@@ -3440,10 +3443,12 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl ...@@ -3440,10 +3443,12 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl
if (newMember) // need to create a new member if (newMember) // need to create a new member
{ {
MemberDef::MemberType mtype; MemberDef::MemberType mtype;
if (root->sig) if (root->mtype==Signal)
mtype=MemberDef::Signal; mtype=MemberDef::Signal;
else if (root->slot) else if (root->mtype==Slot)
mtype=MemberDef::Slot; mtype=MemberDef::Slot;
else if (root->mtype==DCOP)
mtype=MemberDef::DCOP;
else else
mtype=MemberDef::Function; mtype=MemberDef::Function;
...@@ -3679,7 +3684,7 @@ static void findEnums(Entry *root) ...@@ -3679,7 +3684,7 @@ static void findEnums(Entry *root)
{ {
QCString scope=root->name.left(i); // extract scope QCString scope=root->name.left(i); // extract scope
name=root->name.right(root->name.length()-i-2); // extract name name=root->name.right(root->name.length()-i-2); // extract name
if ((cd=getClass(scope))==0) nd=namespaceDict[scope]; if ((cd=getClass(scope))==0) nd=getResolvedNamespace(scope);
} }
else // no scope, check the scope in which the docs where found else // no scope, check the scope in which the docs where found
{ {
...@@ -3688,7 +3693,7 @@ static void findEnums(Entry *root) ...@@ -3688,7 +3693,7 @@ static void findEnums(Entry *root)
) // found enum docs inside a compound ) // found enum docs inside a compound
{ {
QCString scope=root->parent->name; QCString scope=root->parent->name;
if ((cd=getClass(scope))==0) nd=namespaceDict[scope]; if ((cd=getClass(scope))==0) nd=getResolvedNamespace(scope);
} }
name=root->name.copy(); name=root->name.copy();
} }
...@@ -4103,7 +4108,9 @@ static void generateFileSources() ...@@ -4103,7 +4108,9 @@ static void generateFileSources()
for (;(fd=fni.current());++fni) for (;(fd=fni.current());++fni)
{ {
bool src = !fd->isReference() && bool src = !fd->isReference() &&
(fd->generateSource() || Config::sourceBrowseFlag); (Config::verbatimHeaderFlag
//fd->generateSource()
|| Config::sourceBrowseFlag);
if (src) if (src)
{ {
msg("Generating code for file %s...\n",fd->name().data()); msg("Generating code for file %s...\n",fd->name().data());
...@@ -5883,8 +5890,11 @@ int main(int argc,char **argv) ...@@ -5883,8 +5890,11 @@ int main(int argc,char **argv)
msg("Adding members to member groups.\n"); msg("Adding members to member groups.\n");
addMembersToMemberGroup(); addMembersToMemberGroup();
msg("Distributing member group documentation.\n"); if (Config::distributeDocFlag)
distributeMemberGroupDocumentation(); {
msg("Distributing member group documentation.\n");
distributeMemberGroupDocumentation();
}
msg("Building full member lists recursively...\n"); msg("Building full member lists recursively...\n");
buildCompleteMemberLists(); buildCompleteMemberLists();
......
...@@ -91,6 +91,7 @@ extern QTextStream tagFile; ...@@ -91,6 +91,7 @@ extern QTextStream tagFile;
extern SectionDict sectionDict; extern SectionDict sectionDict;
extern FileNameList inputNameList; extern FileNameList inputNameList;
extern StringDict typedefDict; extern StringDict typedefDict;
extern StringDict namespaceAliasDict;
extern GroupList groupList; extern GroupList groupList;
extern GroupDict groupDict; extern GroupDict groupDict;
extern NamespaceList namespaceList; extern NamespaceList namespaceList;
......
...@@ -26,7 +26,7 @@ HEADERS = doxygen.h scanner.h doc.h classdef.h classlist.h memberdef.h \ ...@@ -26,7 +26,7 @@ HEADERS = doxygen.h scanner.h doc.h classdef.h classlist.h memberdef.h \
translator_nl.h translator_se.h translator_cz.h translator_fr.h \ translator_nl.h translator_se.h translator_cz.h translator_fr.h \
translator_it.h formula.h debug.h membergroup.h htmlhelp.h \ translator_it.h formula.h debug.h membergroup.h htmlhelp.h \
translator_ru.h translator_pl.h dot.h rtfgen.h xml.h xml_dtd.h \ translator_ru.h translator_pl.h dot.h rtfgen.h xml.h xml_dtd.h \
reflist.h page.h sortdict.h translator_hu.h reflist.h page.h sortdict.h translator_hu.h translator_kr.h
SOURCES = doxygen.cpp scanner.cpp doc.cpp classdef.cpp classlist.cpp \ SOURCES = doxygen.cpp scanner.cpp doc.cpp classdef.cpp classlist.cpp \
memberdef.cpp membername.cpp index.cpp memberlist.cpp \ memberdef.cpp membername.cpp index.cpp memberlist.cpp \
entry.cpp logos.cpp instdox.cpp message.cpp code.cpp \ entry.cpp logos.cpp instdox.cpp message.cpp code.cpp \
......
...@@ -48,8 +48,7 @@ Entry::Entry(const Entry &e) ...@@ -48,8 +48,7 @@ Entry::Entry(const Entry &e)
//printf("Copy New Entry %d\n",num); //printf("Copy New Entry %d\n",num);
section = e.section; section = e.section;
protection = e.protection; protection = e.protection;
sig = e.sig; mtype = e.mtype;
slot = e.slot;
stat = e.stat; stat = e.stat;
explicitExternal = e.explicitExternal; explicitExternal = e.explicitExternal;
virt = e.virt; virt = e.virt;
...@@ -219,9 +218,8 @@ void Entry::reset() ...@@ -219,9 +218,8 @@ void Entry::reset()
todoId = 0; todoId = 0;
testId = 0; testId = 0;
section = EMPTY_SEC; section = EMPTY_SEC;
sig = FALSE; mtype = Method;
virt = Normal; virt = Normal;
slot = FALSE;
stat = FALSE; stat = FALSE;
proto = FALSE; proto = FALSE;
explicitExternal = FALSE; explicitExternal = FALSE;
......
...@@ -23,6 +23,7 @@ ...@@ -23,6 +23,7 @@
enum Protection { Public, Protected, Private } ; enum Protection { Public, Protected, Private } ;
enum Specifier { Normal, Virtual, Pure } ; enum Specifier { Normal, Virtual, Pure } ;
enum MethodTypes { Method, Signal, Slot, DCOP };
struct BaseInfo struct BaseInfo
{ {
...@@ -161,8 +162,9 @@ class Entry ...@@ -161,8 +162,9 @@ class Entry
int section; // entry type (see Sections); int section; // entry type (see Sections);
Protection protection; // class protection Protection protection; // class protection
bool sig; // a Qt signal ? //bool sig; // a Qt signal ?
bool slot; // a Qt slot ? //bool slot; // a Qt slot ?
MethodTypes mtype; // signal, slot or dcop method?
bool stat; // static ? bool stat; // static ?
bool explicitExternal; // explicitly defined as external? bool explicitExternal; // explicitly defined as external?
bool proto; // prototype ? bool proto; // prototype ?
......
...@@ -164,9 +164,7 @@ void FileDef::writeDocumentation(OutputList &ol) ...@@ -164,9 +164,7 @@ void FileDef::writeDocumentation(OutputList &ol)
ol.docify(ii->includeName); ol.docify(ii->includeName);
ol.enableAll(); ol.enableAll();
ol.disableAllBut(OutputGenerator::Html); ol.disableAllBut(OutputGenerator::Html);
if (fd && fd->isLinkable() && if (fd && fd->isLinkable() && fd->generateSourceFile())
(fd->generateSource() || Config::sourceBrowseFlag)
)
{ {
ol.writeObjectLink(fd->getReference(),fd->includeName(),0,ii->includeName); ol.writeObjectLink(fd->getReference(),fd->includeName(),0,ii->includeName);
} }
...@@ -222,7 +220,7 @@ void FileDef::writeDocumentation(OutputList &ol) ...@@ -222,7 +220,7 @@ void FileDef::writeDocumentation(OutputList &ol)
//incDepGraph.writeGraph(Config::htmlOutputDir,fd->getOutputFileBase()); //incDepGraph.writeGraph(Config::htmlOutputDir,fd->getOutputFileBase());
} }
if (generateSource() || (!isReference() && Config::sourceBrowseFlag)) if (generateSourceFile())
{ {
ol.disableAllBut(OutputGenerator::Html); ol.disableAllBut(OutputGenerator::Html);
ol.newParagraph(); ol.newParagraph();
......
...@@ -120,8 +120,11 @@ class FileDef : public Definition ...@@ -120,8 +120,11 @@ class FileDef : public Definition
void addUsingDeclaration(ClassDef *cd); void addUsingDeclaration(ClassDef *cd);
ClassList *getUsedClasses() const { return usingDeclList; } ClassList *getUsedClasses() const { return usingDeclList; }
void setGenerateSource(bool b) { isSource=b; } //void setGenerateSource(bool b) { isSource=b; }
bool generateSource() const { return isSource; } bool generateSourceFile() const
{ return !isReference() &&
(Config::sourceBrowseFlag || Config::verbatimHeaderFlag);
}
void addIncludeDependency(FileDef *fd,const char *incName,bool local); void addIncludeDependency(FileDef *fd,const char *incName,bool local);
void addIncludedByDependency(FileDef *fd,const char *incName,bool local); void addIncludedByDependency(FileDef *fd,const char *incName,bool local);
......
...@@ -333,7 +333,7 @@ void countFiles(int &htmlFiles,int &files) ...@@ -333,7 +333,7 @@ void countFiles(int &htmlFiles,int &files)
for (;(fd=fni.current());++fni) for (;(fd=fni.current());++fni)
{ {
bool doc = fd->isLinkableInProject(); bool doc = fd->isLinkableInProject();
bool src = fd->generateSource() || Config::sourceBrowseFlag; bool src = fd->generateSourceFile();
if (doc || src) if (doc || src)
{ {
htmlFiles++; htmlFiles++;
...@@ -415,7 +415,7 @@ void writeFileIndex(OutputList &ol) ...@@ -415,7 +415,7 @@ void writeFileIndex(OutputList &ol)
{ {
//printf("Found filedef %s\n",fd->name().data()); //printf("Found filedef %s\n",fd->name().data());
bool doc = fd->isLinkableInProject(); bool doc = fd->isLinkableInProject();
bool src = fd->generateSource() || Config::sourceBrowseFlag; bool src = fd->generateSourceFile();
if ((doc || src) && !fd->isReference()) if ((doc || src) && !fd->isReference())
{ {
QCString path; QCString path;
...@@ -849,7 +849,7 @@ void writeAlphabeticalClassList(OutputList &ol) ...@@ -849,7 +849,7 @@ void writeAlphabeticalClassList(OutputList &ol)
if (!namesp.isEmpty()) if (!namesp.isEmpty())
{ {
ol.docify(" ("); ol.docify(" (");
NamespaceDef *nd = namespaceDict[namesp]; NamespaceDef *nd = getResolvedNamespace(namesp);
if (nd && nd->isLinkable()) if (nd && nd->isLinkable())
{ {
ol.writeObjectLink(nd->getReference(), ol.writeObjectLink(nd->getReference(),
......
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
#include "translator_pl.h" #include "translator_pl.h"
#include "translator_pt.h" #include "translator_pt.h"
#include "translator_hu.h" #include "translator_hu.h"
#include "translator_kr.h"
#endif #endif
#define L_EQUAL(a) !stricmp(langName,a) #define L_EQUAL(a) !stricmp(langName,a)
...@@ -105,6 +106,10 @@ bool setTranslator(const char *langName) ...@@ -105,6 +106,10 @@ bool setTranslator(const char *langName)
{ {
theTranslator=new TranslatorHungarian; theTranslator=new TranslatorHungarian;
} }
else if (L_EQUAL("korean"))
{
theTranslator=new TranslatorKorean;
}
#endif #endif
else // use the default language (i.e. english) else // use the default language (i.e. english)
{ {
......
...@@ -1134,6 +1134,7 @@ void LatexGenerator::docify(const char *str) ...@@ -1134,6 +1134,7 @@ void LatexGenerator::docify(const char *str)
{ {
static bool isCzech = theTranslator->idLanguage()=="czech"; static bool isCzech = theTranslator->idLanguage()=="czech";
static bool isJapanese = theTranslator->idLanguage()=="japanese"; static bool isJapanese = theTranslator->idLanguage()=="japanese";
static bool isKorean = theTranslator->idLanguage()=="korean";
static bool isRussian = theTranslator->idLanguage()=="russian"; static bool isRussian = theTranslator->idLanguage()=="russian";
static bool isGerman = theTranslator->idLanguage()=="german"; static bool isGerman = theTranslator->idLanguage()=="german";
if (str) if (str)
...@@ -1192,7 +1193,7 @@ void LatexGenerator::docify(const char *str) ...@@ -1192,7 +1193,7 @@ void LatexGenerator::docify(const char *str)
break; break;
default: default:
if (isJapanese) if (isJapanese || isKorean)
{ // Japanese language uses wide characters { // Japanese language uses wide characters
if (c>=128) if (c>=128)
{ {
......
...@@ -1414,6 +1414,7 @@ void MemberDef::generateXML(QTextStream &t,Definition *def) ...@@ -1414,6 +1414,7 @@ void MemberDef::generateXML(QTextStream &t,Definition *def)
case Signal: // fall through case Signal: // fall through
case Prototype: // fall through case Prototype: // fall through
case Friend: // fall through case Friend: // fall through
case DCOP: // fall through
case Slot: t << "functiondef"; xmlType=function_t; break; case Slot: t << "functiondef"; xmlType=function_t; break;
} }
t << " id=\""; t << " id=\"";
...@@ -1562,6 +1563,7 @@ void MemberDef::generateXML(QTextStream &t,Definition *def) ...@@ -1562,6 +1563,7 @@ void MemberDef::generateXML(QTextStream &t,Definition *def)
case Signal: // fall through case Signal: // fall through
case Prototype: // fall through case Prototype: // fall through
case Friend: // fall through case Friend: // fall through
case DCOP: // fall through
case Slot: t << "functiondef"; break; case Slot: t << "functiondef"; break;
} }
t << ">" << endl; t << ">" << endl;
......
...@@ -57,7 +57,8 @@ class MemberDef : public Definition ...@@ -57,7 +57,8 @@ class MemberDef : public Definition
Prototype, Prototype,
Signal, Signal,
Slot, Slot,
Friend Friend,
DCOP
}; };
enum enum
...@@ -107,6 +108,7 @@ class MemberDef : public Definition ...@@ -107,6 +108,7 @@ class MemberDef : public Definition
bool isFunction() const { return mtype==Function; } bool isFunction() const { return mtype==Function; }
bool isDefine() const { return mtype==Define; } bool isDefine() const { return mtype==Define; }
bool isFriend() const { return mtype==Friend; } bool isFriend() const { return mtype==Friend; }
bool isDCOP() const { return mtype==DCOP; }
bool isRelated() const { return related; } bool isRelated() const { return related; }
bool isStatic() const { return stat; } bool isStatic() const { return stat; }
bool isInline() const { return (memSpec&Entry::Inline)!=0; } bool isInline() const { return (memSpec&Entry::Inline)!=0; }
......
...@@ -73,6 +73,7 @@ void MemberList::countDecMembers(bool inGroup,bool countSubGroups,bool sectionPe ...@@ -73,6 +73,7 @@ void MemberList::countDecMembers(bool inGroup,bool countSubGroups,bool sectionPe
case MemberDef::Variable: varCnt++,m_count++; break; case MemberDef::Variable: varCnt++,m_count++; break;
case MemberDef::Function: // fall through case MemberDef::Function: // fall through
case MemberDef::Signal: // fall through case MemberDef::Signal: // fall through
case MemberDef::DCOP: // fall through
case MemberDef::Slot: if (!md->isRelated() || md->getClassDef()) case MemberDef::Slot: if (!md->isRelated() || md->getClassDef())
funcCnt++,m_count++; funcCnt++,m_count++;
break; break;
...@@ -409,7 +410,7 @@ void MemberList::writePlainDeclarations(OutputList &ol, ...@@ -409,7 +410,7 @@ void MemberList::writePlainDeclarations(OutputList &ol,
for ( ; (md=mli.current()) ; ++mli ) for ( ; (md=mli.current()) ; ++mli )
{ {
if ( if (
( md->isFunction() || md->isSignal() || md->isSlot()) && ( md->isFunction() || md->isSignal() || md->isSlot() || md->isDCOP()) &&
( !md->isRelated() || md->getClassDef() ) && ( !md->isRelated() || md->getClassDef() ) &&
inGroup==md->visibleMemberGroup(sectionPerType) inGroup==md->visibleMemberGroup(sectionPerType)
) )
......
...@@ -326,19 +326,19 @@ static const struct ...@@ -326,19 +326,19 @@ static const struct
{ "ListEnum4", { "ListEnum4",
"\\s94\\fi-360\\li1800\\widctlpar\\fs20\\cgrid " "\\s94\\fi-360\\li1800\\widctlpar\\fs20\\cgrid "
}, },
{ "ListEnum4", { "ListEnum5",
"\\s95\\fi-360\\li2160\\widctlpar\\fs20\\cgrid " "\\s95\\fi-360\\li2160\\widctlpar\\fs20\\cgrid "
}, },
{ "ListEnum5", { "ListEnum6",
"\\s96\\fi-360\\li2520\\widctlpar\\fs20\\cgrid " "\\s96\\fi-360\\li2520\\widctlpar\\fs20\\cgrid "
}, },
{ "ListEnum6", { "ListEnum7",
"\\s97\\fi-360\\li2880\\widctlpar\\fs20\\cgrid " "\\s97\\fi-360\\li2880\\widctlpar\\fs20\\cgrid "
}, },
{ "ListEnum7", { "ListEnum8",
"\\s98\\fi-360\\li3240\\widctlpar\\fs20\\cgrid " "\\s98\\fi-360\\li3240\\widctlpar\\fs20\\cgrid "
}, },
{ "ListEnum8", { "ListEnum9",
"\\s99\\fi-360\\li3600\\widctlpar\\fs20\\cgrid " "\\s99\\fi-360\\li3600\\widctlpar\\fs20\\cgrid "
}, },
{ 0, { 0,
......
This diff is collapsed.
...@@ -24,6 +24,89 @@ ...@@ -24,6 +24,89 @@
class Translator class Translator
{ {
protected:
/*! Returns the string converted from windows-1250 to iso-8859-2. */
/* The method was designed initially for translator_cz.h.
It is used for on-line encoding conversion related to conditional
compilation in Unix/MS Windows environments (both use different
encoding). Later, the translator_hr.h (by Boris Bralo) used and
improved the same style. As the method with the translation table
was the same, the decision to move it to this base class was made.
The same holds for ISO88592ToWin1250() method. It is recommended
for possibly other similar methods in future.
*/
QCString Win1250ToISO88592(const QCString & sInput)
{
// The conversion table for characters >127
//
static const char WinToISOTab[] = {
'\x80', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87',
'\x88', '\x89', '\xA9', '\x8B', '\xA6', '\xAB', '\xAE', '\xAC',
'\x90', '\x91', '\x92', '\x93', '\x94', '\x2E', '\x96', '\x97',
'\x98', '\x99', '\xB9', '\x9B', '\xB6', '\xBB', '\xBE', '\xBC',
'\xA0', '\x20', '\x20', '\xA3', '\xA4', '\xA1', '\xA6', '\xA7',
'\x22', '\xA9', '\xAA', '\x3C', '\xAC', '\x2D', '\xAE', '\xAF',
'\x2E', '\x2B', '\x20', '\xB3', '\x27', '\x75', '\xB6', '\xB7',
'\x20', '\xB1', '\xBA', '\x3E', '\xA5', '\x22', '\xB5', '\xBF',
'\xC0', '\xC1', '\xC2', '\xC3', '\xC4', '\xC5', '\xC6', '\xC7',
'\xC8', '\xC9', '\xCA', '\xCB', '\xCC', '\xCD', '\xCE', '\xCF',
'\xD0', '\xD1', '\xD2', '\xD3', '\xD4', '\xD5', '\xD6', '\xD7',
'\xD8', '\xD9', '\xDA', '\xDB', '\xDC', '\xDD', '\xDE', '\xDF',
'\xE0', '\xE1', '\xE2', '\xE3', '\xE4', '\xE5', '\xE6', '\xE7',
'\xE8', '\xE9', '\xEA', '\xEB', '\xEC', '\xED', '\xEE', '\xEF',
'\xF0', '\xF1', '\xF2', '\xF3', '\xF4', '\xF5', '\xF6', '\x2D',
'\xF8', '\xF9', '\xFA', '\xFB', '\xFC', '\xFD', '\xFE', '\xFF',
'\0'
};
QCString result;
int len = sInput.length();
for (int i = 0; i < len; ++i)
{
unsigned int c = sInput[i];
result += (c > 127) ? WinToISOTab[c & 0x7F] : c;
}
return result;
}
/*! returns the string converted from iso-8859-2 to windows-1250 */
/* See the comments of the Win1250ToISO88592() method for details. */
QCString ISO88592ToWin1250(const QCString & sInput)
{
// The conversion table for characters >127
//
static const char ISOToWinTab[] = {
'\x80', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87',
'\x88', '\x89', '\x8A', '\x8B', '\x8C', '\x8D', '\x8E', '\x8F',
'\x90', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96', '\x97',
'\x98', '\x99', '\x9A', '\x9B', '\x9C', '\x9D', '\x9E', '\x9F',
'\xA0', '\xA5', '\xA2', '\xA3', '\xA4', '\xBC', '\x8C', '\xA7',
'\xA8', '\x8A', '\xAA', '\x8D', '\x8F', '\xAD', '\x8E', '\xAF',
'\xB0', '\xB9', '\xB2', '\xB3', '\xB4', '\xBE', '\x9C', '\xB7',
'\xB8', '\x9A', '\xBA', '\x9D', '\x9F', '\xBD', '\x9E', '\xBF',
'\xC0', '\xC1', '\xC2', '\xC3', '\xC4', '\xC5', '\xC6', '\xC7',
'\xC8', '\xC9', '\xCA', '\xCB', '\xCC', '\xCD', '\xCE', '\xCF',
'\xD0', '\xD1', '\xD2', '\xD3', '\xD4', '\xD5', '\xD6', '\xD7',
'\xD8', '\xD9', '\xDA', '\xDB', '\xDC', '\xDD', '\xDE', '\xDF',
'\xE0', '\xE1', '\xE2', '\xE3', '\xE4', '\xE5', '\xE6', '\xE7',
'\xE8', '\xE9', '\xEA', '\xEB', '\xEC', '\xED', '\xEE', '\xEF',
'\xF0', '\xF1', '\xF2', '\xF3', '\xF4', '\xF5', '\xF6', '\xF7',
'\xF8', '\xF9', '\xFA', '\xFB', '\xFC', '\xFD', '\xFE', '\xFF',
'\0'
};
QCString result;
int len = sInput.length();
for (int i = 0; i < len; ++i)
{
unsigned int c = sInput[i];
result += (c > 127) ? ISOToWinTab[c & 0x7F] : c;
}
return result;
}
public: public:
// --- Language contol methods ------------------- // --- Language contol methods -------------------
...@@ -993,6 +1076,16 @@ class Translator ...@@ -993,6 +1076,16 @@ class Translator
return "Test List"; return "Test List";
} }
//////////////////////////////////////////////////////////////////////////
// new since 1.2.1
//////////////////////////////////////////////////////////////////////////
/*! Used as a section header for KDE-2 IDL methods */
virtual QCString trDCOPMethods()
{
return "DCOP Methods";
}
}; };
#endif #endif
This diff is collapsed.
...@@ -31,96 +31,27 @@ ...@@ -31,96 +31,27 @@
class TranslatorCroatian : public Translator class TranslatorCroatian : public Translator
{ {
private: private:
/*! to avoid macro redefinition from translator_cz.h */ /*! to avoid macro redefinition from translator_cz.h */
/* Speed loss is actualy less than in Czech version due to /* Speed loss is actualy less than in Czech version due to
fewer QCString copying. fewer QCString copying.
*/ */
inline QCString& decode(const QCString& sInput) inline QCString decode(const QCString& sInput)
{ {
#ifdef _WIN32 #ifdef _WIN32
return ISOToWin(sInput); return ISO88592ToWin1250(sInput);
#else #else
return const_cast<QCString&>(sInput); return sInput;
#endif #endif
} }
/*! returns the string converted from windows-1250 to iso-8859-2 */
QCString WinToISO(const QCString& sInput)
{
// The conversion table for characters >127
//
static const char WinToISOTab[] = {
'\x80', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87',
'\x88', '\x89', '\xA9', '\x8B', '\xA6', '\xAB', '\xAE', '\xAC',
'\x90', '\x91', '\x92', '\x93', '\x94', '\x2E', '\x96', '\x97',
'\x98', '\x99', '\xB9', '\x9B', '\xB6', '\xBB', '\xBE', '\xBC',
'\xA0', '\x20', '\x20', '\xA3', '\xA4', '\xA1', '\xA6', '\xA7',
'\x22', '\xA9', '\xAA', '\x3C', '\xAC', '\x2D', '\xAE', '\xAF',
'\x2E', '\x2B', '\x20', '\xB3', '\x27', '\x75', '\xB6', '\xB7',
'\x20', '\xB1', '\xBA', '\x3E', '\xA5', '\x22', '\xB5', '\xBF',
'\xC0', '\xC1', '\xC2', '\xC3', '\xC4', '\xC5', '\xC6', '\xC7',
'\xC8', '\xC9', '\xCA', '\xCB', '\xCC', '\xCD', '\xCE', '\xCF',
'\xD0', '\xD1', '\xD2', '\xD3', '\xD4', '\xD5', '\xD6', '\xD7',
'\xD8', '\xD9', '\xDA', '\xDB', '\xDC', '\xDD', '\xDE', '\xDF',
'\xE0', '\xE1', '\xE2', '\xE3', '\xE4', '\xE5', '\xE6', '\xE7',
'\xE8', '\xE9', '\xEA', '\xEB', '\xEC', '\xED', '\xEE', '\xEF',
'\xF0', '\xF1', '\xF2', '\xF3', '\xF4', '\xF5', '\xF6', '\x2D',
'\xF8', '\xF9', '\xFA', '\xFB', '\xFC', '\xFD', '\xFE', '\xFF',
'\0'
};
QCString result;
int len = sInput.length();
for (int i = 0; i < len; ++i)
{
unsigned int c = sInput[i];
result += (c > 127) ? WinToISOTab[c & 0x7F] : c;
}
return result;
}
/*! returns the string converted from iso-8859-2 to windows-1250 */
QCString ISOToWin(const QCString& sInput)
{
// The conversion table for characters >127
//
static const char ISOToWinTab[] = {
'\x80', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87',
'\x88', '\x89', '\x8A', '\x8B', '\x8C', '\x8D', '\x8E', '\x8F',
'\x90', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96', '\x97',
'\x98', '\x99', '\x9A', '\x9B', '\x9C', '\x9D', '\x9E', '\x9F',
'\xA0', '\xA5', '\xA2', '\xA3', '\xA4', '\xBC', '\x8C', '\xA7',
'\xA8', '\x8A', '\xAA', '\x8D', '\x8F', '\xAD', '\x8E', '\xAF',
'\xB0', '\xB9', '\xB2', '\xB3', '\xB4', '\xBE', '\x9C', '\xB7',
'\xB8', '\x9A', '\xBA', '\x9D', '\x9F', '\xBD', '\x9E', '\xBF',
'\xC0', '\xC1', '\xC2', '\xC3', '\xC4', '\xC5', '\xC6', '\xC7',
'\xC8', '\xC9', '\xCA', '\xCB', '\xCC', '\xCD', '\xCE', '\xCF',
'\xD0', '\xD1', '\xD2', '\xD3', '\xD4', '\xD5', '\xD6', '\xD7',
'\xD8', '\xD9', '\xDA', '\xDB', '\xDC', '\xDD', '\xDE', '\xDF',
'\xE0', '\xE1', '\xE2', '\xE3', '\xE4', '\xE5', '\xE6', '\xE7',
'\xE8', '\xE9', '\xEA', '\xEB', '\xEC', '\xED', '\xEE', '\xEF',
'\xF0', '\xF1', '\xF2', '\xF3', '\xF4', '\xF5', '\xF6', '\xF7',
'\xF8', '\xF9', '\xFA', '\xFB', '\xFC', '\xFD', '\xFE', '\xFF',
'\0'
};
QCString result;
int len = sInput.length();
for (int i = 0; i < len; ++i)
{
unsigned int c = sInput[i];
result += (c > 127) ? ISOToWinTab[c & 0x7F] : c;
}
return result;
}
public: public:
QCString idLanguage() QCString idLanguage()
{ return "croatian"; } { return "croatian"; }
QCString idLanguageCharset() QCString idLanguageCharset()
#ifdef _WIN32 #ifdef _WIN32
{ return "windows-1250"; } { return "windows-1250"; }
#else #else
{ return "iso-8859-2"; } { return "iso-8859-2"; }
#endif #endif
QCString latexBabelPackage() QCString latexBabelPackage()
{ return "croatian"; } { return "croatian"; }
...@@ -137,7 +68,7 @@ class TranslatorCroatian : public Translator ...@@ -137,7 +68,7 @@ class TranslatorCroatian : public Translator
QCString trEnumerationValueDocumentation() QCString trEnumerationValueDocumentation()
{ return decode("Dokumentacija enum vrijednosti"); } { return decode("Dokumentacija enum vrijednosti"); }
QCString trMemberFunctionDocumentation() QCString trMemberFunctionDocumentation()
{ return decode("Dokumentacija funkcija"); } { return decode("Dokumentacija funkcija"); }
QCString trMemberDataDocumentation() QCString trMemberDataDocumentation()
{ return decode("Documentacija varijabli"); } { return decode("Documentacija varijabli"); }
QCString trGeneratedFrom(const char *s,bool single) QCString trGeneratedFrom(const char *s,bool single)
...@@ -145,9 +76,9 @@ class TranslatorCroatian : public Translator ...@@ -145,9 +76,9 @@ class TranslatorCroatian : public Translator
QCString result= decode("Dokumentacija za ")+s+ QCString result= decode("Dokumentacija za ")+s+
decode("je generirana iz "); decode("je generirana iz ");
if (single) if (single)
result+= decode("datoteke :"); result+= decode("datoteke :");
else else
result+= decode("slijedeih datoteka:"); result+= decode("slijedeih datoteka:");
return result; return result;
} }
QCString trMore() QCString trMore()
...@@ -196,7 +127,7 @@ class TranslatorCroatian : public Translator ...@@ -196,7 +127,7 @@ class TranslatorCroatian : public Translator
{ return decode("Trai"); } { return decode("Trai"); }
QCString trClassHierarchyDescription() QCString trClassHierarchyDescription()
{ return decode("Stablo naslijeivanja je posloeno " { return decode("Stablo naslijeivanja je posloeno "
"priblino po abecedi:"); "priblino po abecedi:");
} }
QCString trFileListDescription(bool extractAll) QCString trFileListDescription(bool extractAll)
{ {
...@@ -207,7 +138,7 @@ class TranslatorCroatian : public Translator ...@@ -207,7 +138,7 @@ class TranslatorCroatian : public Translator
} }
QCString trCompoundListDescription() QCString trCompoundListDescription()
{ return decode("Popis svih klasa, unija i struktura " { return decode("Popis svih klasa, unija i struktura "
"s kratkim opisom :"); "s kratkim opisom :");
} }
QCString trCompoundMembersDescription(bool extractAll) QCString trCompoundMembersDescription(bool extractAll)
{ {
...@@ -311,8 +242,8 @@ class TranslatorCroatian : public Translator ...@@ -311,8 +242,8 @@ class TranslatorCroatian : public Translator
QCString trForInternalUseOnly() QCString trForInternalUseOnly()
{ return decode("Iskljuivo za internu uporabu."); } { return decode("Iskljuivo za internu uporabu."); }
QCString trReimplementedForInternalReasons() QCString trReimplementedForInternalReasons()
{ return decode("Reimplementirano zbog internih razloga; " { return decode("Reimplementirano zbog internih razloga; "
"Nema utjecaja na API."); "Nema utjecaja na API.");
} }
QCString trWarning() QCString trWarning()
{ return decode("Upozorenje"); } { return decode("Upozorenje"); }
...@@ -376,7 +307,7 @@ class TranslatorCroatian : public Translator ...@@ -376,7 +307,7 @@ class TranslatorCroatian : public Translator
case ClassDef::Interface: result+=decode(" suelja (interface) "); break; case ClassDef::Interface: result+=decode(" suelja (interface) "); break;
case ClassDef::Exception: result+=decode(" iznimke (exception) "); break; case ClassDef::Exception: result+=decode(" iznimke (exception) "); break;
} }
result += (QCString)clName; result += (QCString)clName;
return result; return result;
} }
...@@ -384,14 +315,14 @@ class TranslatorCroatian : public Translator ...@@ -384,14 +315,14 @@ class TranslatorCroatian : public Translator
// used as the title of the HTML page of a file // used as the title of the HTML page of a file
{ {
QCString result=decode("Opis datoteke "); QCString result=decode("Opis datoteke ");
result+=fileName; result+=fileName;
return result; return result;
} }
QCString trNamespaceReference(const char *namespaceName) QCString trNamespaceReference(const char *namespaceName)
// used as the title of the HTML page of a namespace // used as the title of the HTML page of a namespace
{ {
QCString result =decode("Opis namespace-a "); QCString result =decode("Opis namespace-a ");
result+=namespaceName; result+=namespaceName;
return result; return result;
} }
...@@ -712,12 +643,12 @@ class TranslatorCroatian : public Translator ...@@ -712,12 +643,12 @@ class TranslatorCroatian : public Translator
} }
virtual QCString trAttention() virtual QCString trAttention()
{ {
return decode("Panja"); return decode("Panja");
} }
virtual QCString trInclByDepGraph() virtual QCString trInclByDepGraph()
{ {
return decode("Ovaj graf pokazuje koje datoteke izravno " return decode("Ovaj graf pokazuje koje datoteke izravno "
"ili neizravno ukljuuju ovu datoteku:"); "ili neizravno ukljuuju ovu datoteku:");
} }
virtual QCString trSince() virtual QCString trSince()
{ {
......
This diff is collapsed.
...@@ -314,6 +314,31 @@ ClassDef *getClass(const char *name) ...@@ -314,6 +314,31 @@ ClassDef *getClass(const char *name)
return classDict[name]; return classDict[name];
} }
NamespaceDef *getResolvedNamespace(const char *name)
{
if (name==0 || name[0]=='\0') return 0;
QCString *subst = namespaceAliasDict[name];
if (subst)
{
int count=0; // recursion detection guard
QCString *newSubst;
while ((newSubst=namespaceAliasDict[*subst]) && count<10)
{
subst=newSubst;
count++;
}
if (count==10)
{
warn_cont("Warning: possible recursive namespace alias detected for %s!\n",name);
}
return namespaceDict[subst->data()];
}
else
{
return namespaceDict[name];
}
}
ClassDef *getResolvedClass(const char *name) ClassDef *getResolvedClass(const char *name)
{ {
if (name==0 || name[0]=='\0') return 0; if (name==0 || name[0]=='\0') return 0;
...@@ -2434,9 +2459,10 @@ void extractNamespaceName(const QCString &scopeName, ...@@ -2434,9 +2459,10 @@ void extractNamespaceName(const QCString &scopeName,
{ {
QCString clName=scopeName.copy(); QCString clName=scopeName.copy();
//QCString nsName; //QCString nsName;
if (!clName.isEmpty() && namespaceDict[clName] && getClass(clName)==0) NamespaceDef *nd;
if (!clName.isEmpty() && (nd=getResolvedNamespace(clName)) && getClass(clName)==0)
{ // the whole name is a namespace (and not a class) { // the whole name is a namespace (and not a class)
namespaceName=clName.copy(); namespaceName=nd->name().copy();
className.resize(0); className.resize(0);
//printf("extractNamespace `%s' => `%s|%s'\n",scopeName.data(), //printf("extractNamespace `%s' => `%s|%s'\n",scopeName.data(),
// className.data(),namespaceName.data()); // className.data(),namespaceName.data());
...@@ -2446,9 +2472,9 @@ void extractNamespaceName(const QCString &scopeName, ...@@ -2446,9 +2472,9 @@ void extractNamespaceName(const QCString &scopeName,
while (p>=0 && (i=clName.findRev("::",p))!=-1) while (p>=0 && (i=clName.findRev("::",p))!=-1)
// see if the first part is a namespace (and not a class) // see if the first part is a namespace (and not a class)
{ {
if (i>0 && namespaceDict[clName.left(i)] && getClass(clName.left(i))==0) if (i>0 && (nd=getResolvedNamespace(clName.left(i))) && getClass(clName.left(i))==0)
{ {
namespaceName=clName.left(i); namespaceName=nd->name().copy();
className=clName.right(clName.length()-i-2); className=clName.right(clName.length()-i-2);
//printf("extractNamespace `%s' => `%s|%s'\n",scopeName.data(), //printf("extractNamespace `%s' => `%s|%s'\n",scopeName.data(),
// className.data(),namespaceName.data()); // className.data(),namespaceName.data());
......
...@@ -107,6 +107,7 @@ extern QCString substitute(const char *s,const char *src,const char *dst); ...@@ -107,6 +107,7 @@ extern QCString substitute(const char *s,const char *src,const char *dst);
extern QCString resolveDefines(const char *n); extern QCString resolveDefines(const char *n);
extern ClassDef *getClass(const char *key); extern ClassDef *getClass(const char *key);
extern ClassDef *getResolvedClass(const char *key); extern ClassDef *getResolvedClass(const char *key);
extern NamespaceDef *getResolvedNamespace(const char *key);
extern FileDef *findFileDef(const FileNameDict *fnDict,const char *n, extern FileDef *findFileDef(const FileNameDict *fnDict,const char *n,
bool &ambig); bool &ambig);
extern QCString showFileDefMatches(const FileNameDict *fnDict,const char *n); extern QCString showFileDefMatches(const FileNameDict *fnDict,const char *n);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment