summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--INSTALL30
-rw-r--r--LICENSE483
-rw-r--r--Makefile7
-rw-r--r--Makefile.config2
-rw-r--r--README4
-rw-r--r--doc/Doxyfile4
-rw-r--r--doc/commands.doc4
-rw-r--r--doc/config.doc18
-rw-r--r--doc/doxygen_manual.tex2
-rw-r--r--doc/doxysearch_usage.doc15
-rw-r--r--doc/faq.doc49
-rw-r--r--doc/index.doc26
-rw-r--r--doc/language.doc264
-rw-r--r--doc/starting.doc118
-rw-r--r--examples/Makefile6
-rw-r--r--examples/example.cfg1
-rw-r--r--examples/example.tag2
-rw-r--r--examples/resdefine.cfg6
-rw-r--r--examples/resdefine.cpp21
-rw-r--r--examples/templ.cpp10
-rw-r--r--src/Makefile2
-rw-r--r--src/classdef.cpp169
-rw-r--r--src/classdef.h35
-rw-r--r--src/code.h4
-rw-r--r--src/code.l55
-rw-r--r--src/config.h124
-rw-r--r--src/config.l603
-rw-r--r--src/constexp.h6
-rw-r--r--src/constexp.l4
-rw-r--r--src/debug.cpp7
-rw-r--r--src/declinfo.h18
-rw-r--r--src/declinfo.l59
-rw-r--r--src/defargs.h2
-rw-r--r--src/defargs.l17
-rw-r--r--src/define.cpp2
-rw-r--r--src/define.h18
-rw-r--r--src/definition.cpp13
-rw-r--r--src/definition.h24
-rw-r--r--src/diagram.cpp18
-rw-r--r--src/diagram.h7
-rw-r--r--src/doxygen.cpp929
-rw-r--r--src/doxygen.h15
-rw-r--r--src/doxygen.pro2
-rw-r--r--src/doxysearch.cpp34
-rw-r--r--src/doxytag.l50
-rw-r--r--src/entry.cpp33
-rw-r--r--src/entry.h50
-rw-r--r--src/example.h8
-rw-r--r--src/filedef.cpp53
-rw-r--r--src/filedef.h30
-rw-r--r--src/filename.cpp10
-rw-r--r--src/filename.h3
-rw-r--r--src/formula.cpp15
-rw-r--r--src/formula.h6
-rw-r--r--src/groupdef.cpp3
-rw-r--r--src/groupdef.h8
-rw-r--r--src/htmlgen.cpp66
-rw-r--r--src/htmlgen.h9
-rw-r--r--src/image.cpp107
-rw-r--r--src/index.cpp146
-rw-r--r--src/index.h3
-rw-r--r--src/instdox.cpp11
-rw-r--r--src/language.cpp16
-rw-r--r--src/latexgen.cpp253
-rw-r--r--src/latexgen.h2
-rw-r--r--src/logos.cpp9
-rw-r--r--src/mangen.cpp29
-rw-r--r--src/mangen.h2
-rw-r--r--src/memberdef.cpp51
-rw-r--r--src/memberdef.h44
-rw-r--r--src/memberlist.cpp21
-rw-r--r--src/membername.h8
-rw-r--r--src/message.cpp4
-rw-r--r--src/namespacedef.cpp9
-rw-r--r--src/namespacedef.h20
-rw-r--r--src/outputgen.cpp9
-rw-r--r--src/outputgen.h8
-rw-r--r--src/outputlist.h6
-rw-r--r--src/pre.h15
-rw-r--r--src/pre.l499
-rw-r--r--src/qtbc.h42
-rw-r--r--src/scanner.h8
-rw-r--r--src/scanner.l422
-rw-r--r--src/searchindex.cpp3
-rw-r--r--src/searchindex.h6
-rw-r--r--src/section.h8
-rw-r--r--src/suffixtree.cpp6
-rw-r--r--src/suffixtree.h4
-rw-r--r--src/tag.l33
-rw-r--r--src/translator.h277
-rw-r--r--src/translator_cz.h212
-rw-r--r--src/translator_de.h559
-rw-r--r--src/translator_es.h405
-rw-r--r--src/translator_fr.h216
-rw-r--r--src/translator_it.h499
-rw-r--r--src/translator_jp.h268
-rw-r--r--src/translator_nl.h252
-rw-r--r--src/translator_se.h489
-rw-r--r--src/util.cpp1354
-rw-r--r--src/util.h29
100 files changed, 6753 insertions, 3194 deletions
diff --git a/INSTALL b/INSTALL
index 6a9e9b9..c62f167 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,12 +1,12 @@
-DOXYGEN Version 0.49-990522
+DOXYGEN Version 0.49-990728
INSTALLATION INSTRUCTIONS FOR UNIX:
-----------------------------------
1. Unpack the archive, unless you already have:
- gunzip doxygen-0.49-990522.src.tar.gz # uncompress the archive
- tar xf doxygen-0.49-990522.src.tar # unpack it
+ gunzip doxygen-0.49-990728.src.tar.gz # uncompress the archive
+ tar xf doxygen-0.49-990728.src.tar # unpack it
2. Make sure Qt is installed properly (check the environment variable $QTDIR)
@@ -104,7 +104,7 @@ KNOWN CONFIGURATION PROBLEMS
HTML RELATED PROBLEMS:
- the indent continuously increases.
This seems to be a problem that can be observed with Netscape 4.01.
- It is not present in many later and earlier versions.
+ It is not present in many later and earlier versions I tested.
LATEX RELATED PROBLEMS:
@@ -116,16 +116,32 @@ LATEX RELATED PROBLEMS:
- the file fancyheader.sty is known as fancyhdr.sty on some systems.
Please change that in src/latexgen.cpp
-HP-UX PROBLEMS:
+HP-UX / DIGITAL UNIX PROBLEMS:
- If you are compiling for HP-UX with aCC and you get this error:
/opt/aCC/lbin/ld: Unsatisfied symbols:
alloca (code)
- then you should edit ce_parse.cpp and replace
+ then you should (according to Anke Selig) edit ce_parse.cpp and replace
extern "C" {
void *alloca (unsigned int);
};
with
#include <alloca.h>
+- If you are compiling for Digital Unix, the same problem can be solved
+ (according to Barnard Schmallhof) by replacing the following in
+ ce_parse.cpp:
+
+ #else /* not GNU C. */
+ #if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) ||
+ defined (__sparc) || defined (__sgi)
+ #include <alloca.h>
+
+ with
+
+ #else /* not GNU C. */
+ #if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) ||
+ defined (__sparc) || defined (__sgi) || defined (__osf__)
+ #include <alloca.h>
+
This seems to be a problem with bison, but I don't know how to fix it.
-----------------------------------------------------------------------------
@@ -138,4 +154,4 @@ The latest version of doxygen can be obtained at
Enjoy,
-Dimitri van Heesch (22 May 1999)
+Dimitri van Heesch (30 July 1999)
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..0b643ac
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,483 @@
+
+ GNU LIBRARY GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1991 Free Software Foundation, Inc.
+ 675 Mass Ave, Cambridge, MA 02139, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the library GPL. It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+ This license, the Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it. You can use it for
+your libraries, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if
+you distribute copies of the library, or if you modify it.
+
+ For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you. You must make sure that they, too, receive or can get the source
+code. If you link a program with the library, you must provide
+complete object files to the recipients so that they can relink them
+with the library, after making changes to the library and recompiling
+it. And you must show them these terms so they know their rights.
+
+ Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+ Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library. If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, so that any problems introduced by others will not reflect on
+the original authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software. To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+ Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs. This
+license, the GNU Library General Public License, applies to certain
+designated libraries. This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+ The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it. Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program. However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+ Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries. We
+concluded that weaker conditions might promote sharing better.
+
+ However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves. This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them. (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.) The hope is that this
+will lead to faster development of free libraries.
+
+ The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
+former contains code derived from the library, while the latter only
+works together with the library.
+
+ Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+ GNU LIBRARY GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+General Public License (also called "this License"). Each licensee is
+addressed as "you".
+
+ A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+ The "Library", below, refers to any such software library or work
+which has been distributed under these terms. A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language. (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+ "Source code" for a work means the preferred form of the work for
+making modifications to it. For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+ Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it). Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+ 1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+ You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+ 2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) The modified work must itself be a software library.
+
+ b) You must cause the files modified to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ c) You must cause the whole of the work to be licensed at no
+ charge to all third parties under the terms of this License.
+
+ d) If a facility in the modified Library refers to a function or a
+ table of data to be supplied by an application program that uses
+ the facility, other than as an argument passed when the facility
+ is invoked, then you must make a good faith effort to ensure that,
+ in the event an application does not supply such function or
+ table, the facility still operates, and performs whatever part of
+ its purpose remains meaningful.
+
+ (For example, a function in a library to compute square roots has
+ a purpose that is entirely well-defined independent of the
+ application. Therefore, Subsection 2d requires that any
+ application-supplied function or table used by this function must
+ be optional: if the application does not supply it, the square
+ root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in
+these notices.
+
+ Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+ This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+ 4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+ If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library". Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+ However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library". The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+ When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library. The
+threshold for this to be true is not precisely defined by law.
+
+ If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work. (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+ Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+ 6. As an exception to the Sections above, you may also compile or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+ You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License. Also, you must do one
+of these things:
+
+ a) Accompany the work with the complete corresponding
+ machine-readable source code for the Library including whatever
+ changes were used in the work (which must be distributed under
+ Sections 1 and 2 above); and, if the work is an executable linked
+ with the Library, with the complete machine-readable "work that
+ uses the Library", as object code and/or source code, so that the
+ user can modify the Library and then relink to produce a modified
+ executable containing the modified Library. (It is understood
+ that the user who changes the contents of definitions files in the
+ Library will not necessarily be able to recompile the application
+ to use the modified definitions.)
+
+ b) Accompany the work with a written offer, valid for at
+ least three years, to give the same user the materials
+ specified in Subsection 6a, above, for a charge no more
+ than the cost of performing this distribution.
+
+ c) If distribution of the work is made by offering access to copy
+ from a designated place, offer equivalent access to copy the above
+ specified materials from the same place.
+
+ d) Verify that the user has already received a copy of these
+ materials or that you have already sent this user a copy.
+
+ For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception,
+the source code distributed need not include anything that is normally
+distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+ It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+ 7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+ a) Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library
+ facilities. This must be distributed under the terms of the
+ Sections above.
+
+ b) Give prominent notice with the combined library of the fact
+ that part of it is a work based on the Library, and explaining
+ where to find the accompanying uncombined form of the same work.
+
+ 8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License. However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+ 9. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+ 10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all. For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded. In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+ 13. The Free Software Foundation may publish revised and/or new
+versions of the Library General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+ 14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission. For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this. Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+ NO WARRANTY
+
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ Appendix: How to Apply These Terms to Your New Libraries
+
+ If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change. You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+ To apply these terms, attach the following notices to the library. It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the library's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with this library; if not, write to the Free
+ Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the
+ library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+ <signature of Ty Coon>, 1 April 1990
+ Ty Coon, President of Vice
+
+That's all there is to it!
+
diff --git a/Makefile b/Makefile
index 037c87a..7fb6010 100644
--- a/Makefile
+++ b/Makefile
@@ -38,6 +38,11 @@ dgux-g++: src/version.cpp
TMAKEPATH=../tmake/lib/dgux-g++ \
$(MAKE)
+gnu-g++: src/version.cpp
+ cd src; \
+ TMAKEPATH=../tmake/lib/gnu-g++ \
+ $(MAKE)
+
freebsd-g++: src/version.cpp
cd src; \
TMAKEPATH=../tmake/lib/freebsd-g++ \
@@ -170,7 +175,7 @@ ps: docs
archive: clean
$(TAR) zcvf backup/dx`date +%y%m%d`.tgz tmake doc examples bin objects \
src Makefile Makefile.windows INSTALL make.bat Makefile.config \
- LANGUAGE.HOWTO
+ LANGUAGE.HOWTO LICENSE
src/version.cpp: FORCE
echo "char versionString[]=\"$(VERSION)\";" > src/version.cpp
diff --git a/Makefile.config b/Makefile.config
index a10a57b..9dc23f3 100644
--- a/Makefile.config
+++ b/Makefile.config
@@ -9,4 +9,4 @@ PERL = perl
# The values below should probably be left unmodified
TAR = tar # name of the GNU tar tool
TMAKE = ../tmake/bin/tmake
-VERSION = 0.49-990522
+VERSION = 0.49-990728
diff --git a/README b/README
index 899040e..d79e9b8 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-DOXYGEN Version 0.49-990522
+DOXYGEN Version 0.49-990728
Please read INSTALL for compilation instructions.
@@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at
Enjoy,
-Dimitri van Heesch (22 May 1999)
+Dimitri van Heesch (30 July 1999)
diff --git a/doc/Doxyfile b/doc/Doxyfile
index 79cbb31..5891572 100644
--- a/doc/Doxyfile
+++ b/doc/Doxyfile
@@ -10,11 +10,11 @@ EXTRACT_PRIVATE = NO
GENERATE_LATEX = YES
GENERATE_HTML = YES
ENABLE_PREPROCESSING = NO
-INPUT = index.doc install.doc starting.doc trouble.doc \
+INPUT = index.doc install.doc starting.doc faq.doc trouble.doc \
history.doc features.doc \
doxygen_usage.doc doxytag_usage.doc doxysearch_usage.doc \
installdox_usage.doc autolink.doc \
- config.doc commands.doc htmlcmds.doc
+ config.doc commands.doc htmlcmds.doc language.doc
FILE_PATTERNS = *.cpp *.h *.doc
EXAMPLE_PATH = ../examples
RECURSIVE = NO
diff --git a/doc/commands.doc b/doc/commands.doc
index 48f5c53..5965aaf 100644
--- a/doc/commands.doc
+++ b/doc/commands.doc
@@ -183,6 +183,7 @@ Doxygen. Unrecognized commands are treated as normal text.
\sa section \ref cmdcode "\\code"
<hr>
+
\subsection cmdenum \enum <name>
\addindex \enum
@@ -664,6 +665,7 @@ Doxygen. Unrecognized commands are treated as normal text.
\sa
Section \ref cmdpage "\\page" for an example of the \\cmdsection command.
+
<hr>
\subsection cmdsubsection \subsection <subsection-name> (subsection title)
@@ -677,6 +679,7 @@ Doxygen. Unrecognized commands are treated as normal text.
\sa
Section \ref cmdpage "\\page" for an example of the \\cmdsubsection command.
+
<hr>
<h2>\htmlonly <center> --- \endhtmlonly
@@ -1054,7 +1057,6 @@ Doxygen. Unrecognized commands are treated as normal text.
character has to be escaped because it has a special meaning in HTML.
<hr>
-
<h2>\htmlonly <center> --- \endhtmlonly
Commands included for JavaDoc compatibility
\htmlonly --- </center>\endhtmlonly</h2>
diff --git a/doc/config.doc b/doc/config.doc
index 481925c..2bf3dc7 100644
--- a/doc/config.doc
+++ b/doc/config.doc
@@ -63,6 +63,14 @@ Below is a list of tags that are recognized for each category.
If a relative path is entered, it will be relative to the location
where doxygen was started. If left blank the current directory will be used.
+<dt>\c OUTPUT_LANGUAGE <dd>
+ \addindex OUTPUT_LANGUAGE
+ The \c OUTPUT_LANGUAGE tag is used to specify the language in which all
+ documentation generated by doxygen is written. Doxygen will use this
+ information to generate all constant output in the proper language.
+ The default language is English, other supported languages are:
+ Dutch, French, Italian, Czech, Swedish, German and Japanese.
+
<dt>\c QUIET <dd>
\addindex QUIET
The \c QUIET tag can be used to turn on/off the messages that are generated
@@ -268,6 +276,11 @@ Below is a list of tags that are recognized for each category.
\endverbatim
If the tag is left blank doxygen will generate a
standard header.
+
+ The following commands have a special meaning inside the header:
+ <code>\$title</code>, <code>\$datetime</code>, <code>\$date</code>.
+ Doxygen will replace them by respectively
+ the title of the page, the current date and time, or only the current date.
<dt>\c HTML_FOOTER <dd>
\addindex HTML_FOOTER
@@ -280,6 +293,11 @@ Below is a list of tags that are recognized for each category.
\endverbatim
If the tag is left blank doxygen will generate a standard footer.
+ The following commands have a special meaning inside the footer:
+ <code>\$title</code>, <code>\$datetime</code>, <code>\$date</code>.
+ Doxygen will replace them by respectively
+ the title of the page, the current date and time, or only the current date.
+
</dl>
\subsection latex_output LaTeX related options
diff --git a/doc/doxygen_manual.tex b/doc/doxygen_manual.tex
index 8d28a55..bb8d599 100644
--- a/doc/doxygen_manual.tex
+++ b/doc/doxygen_manual.tex
@@ -26,6 +26,7 @@ Written by Dimitri van Heesch\\[2ex]
\part{User Manual}
\input{install}
\input{starting}
+\input{faq}
\input{trouble}
\part{Reference Manual}
\input{features}
@@ -38,5 +39,6 @@ Written by Dimitri van Heesch\\[2ex]
\input{config}
\input{commands}
\input{htmlcmds}
+\input{langhowto}
\printindex
\end{document}
diff --git a/doc/doxysearch_usage.doc b/doc/doxysearch_usage.doc
index a4a3e96..e3b1657 100644
--- a/doc/doxysearch_usage.doc
+++ b/doc/doxysearch_usage.doc
@@ -67,7 +67,7 @@ follow these steps:
documentation. Apart from the documentation, Doxygen will create the
following files:
<ul>
- <li>A small CGI script. the name of the script is determined by the
+ <li>A small shell script. the name of the script is determined by the
\c CGI_NAME tag in the configuration file.
The script is a small wrapper that calls \c doxysearch with
the correct parameters. Using this script allows multiple
@@ -80,6 +80,16 @@ follow these steps:
<li>\c search.gif: this is the image that is used for the search button.
</ul>
+ \par Notice:
+ On the Windows platform Unix shell scripts cannot be used.
+ In fact the HTTP daemon that I tried (apache for Windows) only
+ recognized <code>.cgi</code> files that were renamed
+ executables (so DOS batch files do not seem to work either). Therefore,
+ on Windows a small C program will generated by doxygen.
+ You should compile and link the program with your favourite
+ compiler and change the extension of the executable from
+ <code>.exe</code> to <code>.cgi</code>.
+
<li>Copy (or move) the CGI script to the directory where the CGI binaries
are located.
This is usually a special directory on your system or in your
@@ -112,7 +122,8 @@ This can be done by carefully following these steps:
<li>Goto the html directory of the Qt-distribution:
<pre>cd $QTDIR/html</pre>
<li>Generate the search index by typing:
- <pre>doxytag -s search.idx *.html</pre>
+ <pre>doxytag -s search.idx</pre>
+ in the directory where the HTML files are located.
This will parse all files and build a search index.
Apart from the file <code>search.idx</code> two other files
will be generated: <code>search.gif</code> and <code>search.cgi</code>
diff --git a/doc/faq.doc b/doc/faq.doc
new file mode 100644
index 0000000..c730289
--- /dev/null
+++ b/doc/faq.doc
@@ -0,0 +1,49 @@
+/******************************************************************************
+ *
+ * $Id$
+ *
+ * Copyright (C) 1997-1999 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.
+ *
+ * All output generated with Doxygen is not covered by this license.
+ *
+ */
+/*! \page faq Frequently Asked Questions
+
+<ol>
+<li><b>How do get information on the index page in HTML?</b>
+<p>
+There is no real support for title pages at the moment. But you can
+override the default index page, by using the following comment block:
+\verbatim
+/*! \page index My Personal Index Page
+ *
+ * This is my index personal index page.
+ */
+\endverbatim
+
+<li><b>How can I avoid that some code fragment is parsed by Doxyen?</b>
+<p>
+You can use Doxygen's preprocessor for this:
+If you put
+\verbatim
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+
+ /* code that must be skipped by Doxygen */
+
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+\endverbatim
+around the blocks that should be hidden and put:
+\verbatim
+ PREDEFINED = DOXYGEN_SHOULD_SKIP_THIS
+\endverbatim
+in the config file then all blocks should be skipped by Doxygen as long
+as <code>PREPROCESSING = YES</code>.
+</ol>
+*/
+
diff --git a/doc/index.doc b/doc/index.doc
index f60eec9..7db1d27 100644
--- a/doc/index.doc
+++ b/doc/index.doc
@@ -58,10 +58,12 @@ sections.
The first part forms a user manual:
<ul>
-<li>Section \ref install discusses how to download, compile and install
+<li>Section \ref install discusses how to
+ <a href="http://www.stack.nl/~dimitri/doxygen/download.html">download</a>, compile and install
doxygen for your platform.
<li>Section \ref starting tells you how to generate your first piece of
documentation quickly.
+<li>Section \ref faq gives answers to frequently asked questions.
<li>Section \ref trouble tells you what to do when you have problems.
</ul>
@@ -84,8 +86,23 @@ The second part forms a reference manual:
used within the documentation.
<li>Section \ref htmlcmds shows an overview of the HTML commands that
can be used within the documentation.
+<li>Section \ref langhowto explains how to add support for new
+ output languages.
</ul>
+
+<h2>Projects using doxygen</h2>
+
+I have compiled a small
+\htmlonly
+<a href="http://www.stack.nl/~dimitri/doxygen/projects.html">list of projects</a>
+that use doxygen
+\endhtmlonly
+\latexonly
+list of projects that use doxygen (see {\tt http://www.stack.nl/$\sim$dimitri/doxygen/projects.html})
+\endlatexonly
+If you know other projects, let me know and I'll add them.
+
<h2>Acknowledgements</h2>
\addindex acknowledgements
Thanks go to:
@@ -156,9 +173,10 @@ Olaf Meeuwissen,
Feiyi Wang,
Robert J. Clark,
Matthias Baas,
-Walter Mueller, and
-William van Dieten
- for suggestions, patches and bug reports.
+Walter Mueller,
+William van Dieten, and
+Joshua Jensen and
+many others for suggestions, patches and bug reports.
</ul>
*/
diff --git a/doc/language.doc b/doc/language.doc
new file mode 100644
index 0000000..f05dce3
--- /dev/null
+++ b/doc/language.doc
@@ -0,0 +1,264 @@
+/******************************************************************************
+ *
+ * $Id$
+ *
+ * Copyright (C) 1997-1999 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.
+ *
+ * All output generated with Doxygen is not covered by this license.
+ *
+ */
+/*! \page langhowto Internationalization
+
+<h3>Support for multiple languages</h3>
+
+Doxygen has support for multiple languages. This means that the text fragments that
+doxygen generates can changed into languages other than English
+(the default) at configuration time.
+<p>
+Currently, supported languages are English, French, Czech, Dutch,
+Swedish, Italian, German and Japanese. A number
+of people have volunteered to add support for other languages as well.
+Here is a list of the languages and their current maintainers:
+<p>
+
+\htmlonly
+<TABLE ALIGN=center CELLSPACING=0 CELLPADDING=0 BORDER=0>
+<TR BGCOLOR="#000000">
+<TD>
+ <TABLE CELLSPACING=1 CELLPADDING=2 BORDER=0>
+ <TR BGCOLOR="#4040c0">
+ <TD ><b><font size=+1 color="#ffffff"> Language </font></b></TD>
+ <TD ><b><font size=+1 color="#ffffff"> Maintainer </font></b></TD>
+ <TD ><b><font size=+1 color="#ffffff"> Contact address </font></b></TD>
+ <TR BGCOLOR="#ffffff">
+ <TD>
+ German
+ </TD>
+ <TD>
+ Jens Breitenstein
+ </TD>
+ <TD>
+ <a href="mailto:Jens.Breitenstein@tlc.de">
+ Jens.Breitenstein@tlc.de</a>
+ </TD>
+ </TR>
+ <TR BGCOLOR="#ffffff">
+ <TD>
+ French
+ </TD>
+ <TD>
+ Christophe Bordeux
+ </TD>
+ <TD>
+ <a href="mailto:bordeux@lig.di.epfl.ch">
+ bordeux@lig.di.epfl.ch</a>
+ </TD>
+ </TR>
+ <TR BGCOLOR="#ffffff">
+ <TD>
+ Swedish
+ </TD>
+ <TD>
+ Samuel Hägglund<BR>
+ XeT Erixon
+ </TD>
+ <TD>
+ <a href="mailto:sahag96@nts.mh.se">
+ sahag96@nts.mh.se</a><br>
+ <a href="mailto:xet@hem.passagen.se">
+ xet@hem.passagen.se</a>
+ </TD>
+ </TR>
+ <TR BGCOLOR="#ffffff">
+ <TD>
+ Czech
+ </TD>
+ <TD>
+ Vlastimil Havran
+ </TD>
+ <TD>
+ <a href="mailto:havran@fel.cvut.cz">
+ havran@fel.cvut.cz</a>
+ </TD>
+ </TR>
+ <TR BGCOLOR="#ffffff">
+ <TD>
+ Romanian
+ </TD>
+ <TD>
+ Ionutz Borcoman
+ </TD>
+ <TD>
+ <a href="mailto:borco@borco-ei.eng.hokudai.ac.jp">
+ borco@borco-ei.eng.hokudai.ac.jp</a>
+ </TD>
+ </TR>
+ <TR BGCOLOR="#ffffff">
+ <TD>
+ Polish
+ </TD>
+ <TD>
+ Piotr Piatkowski
+ </TD>
+ <TD>
+ <a href="mailto:kompas@ceti.com.pl">
+ kompas@ceti.com.pl</a>
+ </TD>
+ </TR>
+ <TR BGCOLOR="#ffffff">
+ <TD>
+ Italian
+ </TD>
+ <TD>
+ Ahmed Aldo Faisal<br>
+ Alessandro Falappa
+ </TD>
+ <TD>
+ <a href="mailto:aaf23@cam.ac.uk">
+ aaf23@cam.ac.uk</a><br>
+ <a href="mailto:a.falappa@flashnet.it">
+ a.falappa@flashnet.it</a>
+ </TD>
+ </TR>
+ <TR BGCOLOR="#ffffff">
+ <TD>
+ Japanese
+ </TD>
+ <TD>
+ Kenji Nagamatsu
+ </TD>
+ <TD>
+ <a href="mailto:naga@joyful.club.ne.jp">
+ naga@joyful.club.ne.jp</a>
+ </TD>
+ </TR>
+ <TR BGCOLOR="#ffffff">
+ <TD>
+ Spanish
+ </TD>
+ <TD>
+ Francisco Oltra Thennet
+ </TD>
+ <TD>
+ <a href="mailto:foltra@puc.cl">
+ foltra@puc.cl</a>
+ </TD>
+ </TR>
+ <TR BGCOLOR="#ffffff">
+ <TD>
+ Dutch
+ </TD>
+ <TD>
+ Dimitri van Heesch
+ </TD>
+ <TD>
+ <a href="mailto:dimitri@stack.nl">
+ dimitri@stack.nl</a>
+ </TD>
+ </TR>
+ </TABLE>
+</TD>
+</TR>
+</TABLE>
+\endhtmlonly
+\latexonly
+\begin{tabular}{|l|l|l|}
+ \hline
+ {\bf Language} & {\bf Maintainer} & {Contact address} \\
+ \hline
+ German & Jens Breitenstein & {\tt Jens.Breitenstein@tlc.de} \\
+ \hline
+ French & Christophe Bordeux & {\tt bordeux@lig.di.epfl.ch} \\
+ \hline
+ Swedish & Samuel Hägglund & {\tt sahag96@nts.mh.se} \\
+ & XeT Erixon & {\tt xet@hem.passagen.se} \\
+ \hline
+ Czech & Vlastimil Havran & {\tt havran@fel.cvut.cz} \\
+ \hline
+ Romanian & Ionutz Borcoman & {\tt borco@borco-ei.eng.hokudai.ac.jp} \\
+ \hline
+ Polish & Piotr Piatkowski & {\tt kompas@ceti.com.pl} \\
+ \hline
+ Italian & Ahmed Aldo Faisal & {\tt aaf23@cam.ac.uk} \\
+ & Alessandro Falappa & {\tt a.falappa@flashnet.it} \\
+ \hline
+ Japanese & Kenji Nagamatsu & {\tt naga@joyful.club.ne.jp} \\
+ \hline
+ Spanish & Francisco Oltra Thennet & {\tt foltra@puc.cl} \\
+ \hline
+ Dutch & Dimitri van Heesch & {\tt dimitri@stack.nl} \\
+ \hline
+\end{tabular}
+\endlatexonly
+<p>
+
+Most people on the list have indicated that they were also busy
+doing other things, so if you want to help to speed things up please
+let them (or me) know.
+
+If you want to add support for a language that is not yet listed
+please see the next section.
+
+<h3>Language HOWTO</h3>
+
+This short HOWTO explains how to add support for a new language to Doxygen:
+
+Just follow these steps:
+<ol>
+<li>Tell me for which language you want to add support. If no one else
+ is already working on support for that language, you will be
+ assigned as the maintainer for the language.
+<li>Create a copy of translator_nl.h and name it
+ translator_<your_2_letter_counter_code>.h
+ I'll use xx in the rest of this document.
+<li>Edit language.cpp:
+ Add a
+\verbatim
+#include<translator_xx.h>
+\endverbatim
+ in <code>setTranslator()</code> add
+\verbatim
+ else if (L_EQUAL("your_language_name"))
+ {
+ theTranslator = new TranslatorYourLanguage;
+ }
+\endverbatim
+ after the <code>if { ... }</code>
+<li>Edit doxygen.pro and add \c translator_xx.h to
+ the \c HEADERS line in the file doxygen.pro.
+<li>Edit <code>translator_xx.h</code>:
+ <ul>
+ <li>Rename <code>TRANSLATOR_NL_H</code> to <code>TRANSLATOR_XX_H</code> twice.
+ <li>Rename TranslatorDutch to TranslatorYourLanguage
+ <li>In the member <code>latexBabelPackage()</code> change "dutch" into the name of the
+ latex package that adds support for your language.
+ <li>Edit all the strings that are returned by the members that start
+ with tr.
+ Look at the corresponding member in translator.h for the english text
+ that is returned and translate that into your language.
+ Try to match punctuation and capitals!
+ To enter special characters (with accents) you can:
+ <ul>
+ <li> Enter them directly if your keyboard supports that and you are
+ using a Latin-1 font.
+ Doxygen will translate the characters to proper Latex and
+ leave the Html and man output for what it is.
+ <li> Use html codes like \&auml; for an a with an umlaut (i.e. &auml;).
+ See the HTML specification for the codes.
+ </ul>
+ </ul>
+<li>Recompile everything (do this from the root of the distribution,
+ because the Makefile.dox* have to be regenerated!)
+<li>Now you can use <code>OUTPUT_LANGUAGE = your_language_name</code>
+ in the config file to generate output in your language.
+<li>Send <code>translator_xx.h</code> or a <code>diff -u</code> of the changes
+ to me so I can add it to doxygen.
+</ol>
+*/
+
diff --git a/doc/starting.doc b/doc/starting.doc
index 1d3cbcd..78f9309 100644
--- a/doc/starting.doc
+++ b/doc/starting.doc
@@ -397,6 +397,122 @@ from typos in formulas. It may have to be necessary to remove the
file formula.repository that is written in the html directory to
a rid of an incorrect formula
+\subsection preprocessing Preprocessing
+
+Source files that are used as input to doxygen can be parsed by doxygen's
+build-in C-preprocessor.
+
+By default doxygen does only partial preprocessing. That is, it
+evaluates conditional compilation statements (like \#if) and
+evaluates macro definitions, but is does not perform macro expansion.
+
+So if you have the following code fragment
+\verbatim
+#define VERSION 200
+#define CONST_STRING const char *
+
+#if VERSION >= 200
+ static CONST_STRING version = "2.xx";
+#else
+ static CONST_STRING version = "1.xx";
+#endif
+\endverbatim
+
+Then by default doxygen will feed the following to its parser:
+
+\verbatim
+#define VERSION
+#define CONST_STRING
+
+ static CONST_STRING version = "1.xx";
+\endverbatim
+
+You can disable all preprocessing by setting \c ENABLE_PREPROCESSING to \c
+NO in the configuation file. In the case above doxygen will then read
+both statements!
+
+In case you want to expand the \c CONST_STRING macro, you should set the
+\c MACRO_EXPANSION tag in the config file to \c YES. Then the result
+after preprocessing becomes:
+
+\verbatim
+#define VERSION
+#define CONST_STRING
+
+ static const char * version = "1.xx";
+\endverbatim
+
+Notice that doxygen will now expand \e all macro definitions
+(recursively if needed). This is often too much, therefore doxygen also
+allows you to expand only those defines that you explicitly
+specify. For this you have to set the \c EXPAND_ONLY_PREDEF tag to \c YES
+and specify the macro definitions after the \c PREDEFINED tag.
+
+As an example, suppose you have the following obfusciated code fragment
+of an abstract base class called \c IUnknown:
+
+\verbatim
+/*! A reference to an IID */
+#ifdef __cplusplus
+#define REFIID const IID &
+#else
+#define REFIID const IID *
+#endif
+
+/*! The IUnknown interface */
+DECLARE_INTERFACE(IUnknown)
+{
+ MEMBER(HRESULT,QueryInterface) (THIS_ REFIID iid, void **ppv) PURE;
+ MEMBER(ULONG,AddRef) (THIS) PURE;
+ MEMBER(ULONG,Release) (THIS) PURE;
+};
+\endverbatim
+
+without macro expansion doxygen will get confused, but we may not want to
+expand the REFIID macro, because it is documented and the user that reads
+the documentation should use it when implementing the interface.
+
+By setting the following in the config file:
+
+\verbatim
+ENABLE_PREPROCESSING = YES
+MACRO_EXPANSION = YES
+EXPAND_ONLY_PREDEF = YES
+PREDEFINED = "DECLARE_INTERFACE(name)=class name" \
+ "MEMBER(result,name)=virtual result name" \
+ "PURE= = 0" \
+ THIS_= \
+ THIS= \
+ __cplusplus
+\endverbatim
+
+we can make sure that the proper result is fed to doxygen's parser:
+\verbatim
+/*! A reference to an IID */
+#define REFIID
+
+/*! The IUnknown interface */
+class IUnknown
+{
+ virtual HRESULT QueryInterface ( REFIID iid, void **ppv) = 0;
+ virtual ULONG AddRef () = 0;
+ virtual ULONG Release () = 0;
+};
+\endverbatim
+
+Notice that the \c PREDEFINED tag accepts function like macro definitions
+(like \c DECLARE_INTERFACE), normal macro substitutions (like \c PURE
+and \c THIS) and plain defines (like \c __cplusplus).
+
+Notice also that preprocessor definitions that are normally defined
+automatically by the preprocessor (like \c __cplusplus), have to be defined
+by hand with doxygen's parser (this is done because these defines
+are often platform/compiler specific).
+
+As you can see doxygen's preprocessor is quite powerful, but if you want
+even more flexibility you can always write an input filter and specify it on
+the \c INPUT_FILTER flag.
+
\subsection moreinfo More information
\addindex QdbtTabular
@@ -405,7 +521,7 @@ the documentation of QdbtTabular</a> \latexonly
({\tt http://www.stack.nl/$\sim$dimitri/qdbttabular/html})\endlatexonly.
\htmlonly
I hope that was clear. If not, please let me know, so I can improve this document. If you have problems
-take a look at the <a href="trouble.html">troubleshooting</a> section.
+take a look at the <a href="faq.html">faq</a> and the <a href="trouble.html">troubleshooting</a> sections.
\endhtmlonly
*/
diff --git a/examples/Makefile b/examples/Makefile
index dd97c2c..1bbc2c1 100644
--- a/examples/Makefile
+++ b/examples/Makefile
@@ -17,7 +17,6 @@ all: class/html/index.html \
jdstyle/html/index.html \
structcmd/html/index.html \
autolink/html/index.html \
- resdefine/html/index.html \
restypedef/html/index.html \
afterdoc/html/index.html \
template/html/index.html \
@@ -26,7 +25,7 @@ all: class/html/index.html \
clean:
rm -rf class define enum file func page relates author \
par overload example include qtstyle jdstyle structcmd \
- autolink tag resdefine restypedef afterdoc template
+ autolink tag restypedef afterdoc template
class/html/index.html: class.h class.cfg
$(DOXYDIR)/doxygen class.cfg
@@ -81,9 +80,6 @@ tag/html/index.html: tag.cpp tag.cfg
sed -e "1,1s.perl.$(PERL).g" tag/html/installdox >tag/html/installdox.perl
cd tag/html ; $(PERL) installdox.perl -lexample.tag@../../example/html
-resdefine/html/index.html: resdefine.cpp resdefine.cfg
- $(DOXYDIR)/doxygen resdefine.cfg
-
restypedef/html/index.html: restypedef.cpp restypedef.cfg
$(DOXYDIR)/doxygen restypedef.cfg
diff --git a/examples/example.cfg b/examples/example.cfg
index a30b3ff..dc4cb86 100644
--- a/examples/example.cfg
+++ b/examples/example.cfg
@@ -1,5 +1,6 @@
PROJECT_NAME = "Example Command"
OUTPUT_DIRECTORY = example
+GENERATE_TAGFILE = example.tag
GENERATE_LATEX = NO
GENERATE_MAN = NO
INPUT = example.cpp
diff --git a/examples/example.tag b/examples/example.tag
index 3998b90..d30de7b 100644
--- a/examples/example.tag
+++ b/examples/example.tag
@@ -1,2 +1,2 @@
->Test:
+>Test: "class_test.html"
example a0 "()"
diff --git a/examples/resdefine.cfg b/examples/resdefine.cfg
deleted file mode 100644
index 009a4e8..0000000
--- a/examples/resdefine.cfg
+++ /dev/null
@@ -1,6 +0,0 @@
-PROJECT_NAME = "Resolving Defines"
-OUTPUT_DIRECTORY = resdefine
-GENERATE_LATEX = NO
-GENERATE_MAN = NO
-INPUT = resdefine.cpp
-QUIET = YES
diff --git a/examples/resdefine.cpp b/examples/resdefine.cpp
deleted file mode 100644
index 05a77c5..0000000
--- a/examples/resdefine.cpp
+++ /dev/null
@@ -1,21 +0,0 @@
-#define ExportedName InternalName
-
-class InternalName
-{
- public:
- InternalName() {}
- ~InternalName() {}
-};
-
-/*! \class ExportedName
- * This class's real name is InternalName but everyone should use
- * ExportedName.
- */
-
-/*! \fn ExportedName::ExportedName()
- * The constructor
- */
-
-/*! \fn ExportedName::~ExportedName()
- * The destructor
- */
diff --git a/examples/templ.cpp b/examples/templ.cpp
index c838c6e..3250abc 100644
--- a/examples/templ.cpp
+++ b/examples/templ.cpp
@@ -1,10 +1,10 @@
+
/*! A template class */
template<class T,int i=100> class Test
{
public:
Test();
Test(const Test &);
- friend void friendTempFunc(Test &, int=5);
};
/*! complete specialization */
@@ -15,7 +15,7 @@ template<> class Test<void *,200>
};
/*! A partial template specialization */
-template<class T> class Test< T * > : public Test<void *,200>
+template<class T> class Test<T *> : public Test<void *,200>
{
public:
Test();
@@ -27,11 +27,9 @@ template<class T,int i> Test<T,i>::Test() {}
/*! The copy constructor */
template<class T,int i> Test<T,i>::Test(const Test<T,i> &t) {}
-/*! A friend function of a template class */
-template<class T,int i> void friendTempFunc(Test<T,i> &t,int a) {}
+/*! The constructor of the partial specilization */
+template<class T> Test<T *>::Test() {}
/*! The constructor of the specilization */
template<> Test<void *,200>::Test() {}
-/*! The constructor of the partial specilization */
-template<class T> Test<T*>::Test() {}
diff --git a/src/Makefile b/src/Makefile
index e57994c..9812d37 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -39,6 +39,6 @@ clean:
$(MAKE) -f Makefile.doxysearch clean
-rm -f scanner.cpp code.cpp config.cpp pre.cpp ce_lex.cpp \
ce_parse.cpp ce_parse.h doxytag.cpp tag.cpp \
- declinfo.cpp defargs.cpp version.cpp
+ declinfo.cpp defargs.cpp
FORCE:
diff --git a/src/classdef.cpp b/src/classdef.cpp
index 50cd54c..005a397 100644
--- a/src/classdef.cpp
+++ b/src/classdef.cpp
@@ -29,9 +29,9 @@
#include "diagram.h"
#include "language.h"
-static QString stripExtension(const char *fName)
+static QCString stripExtension(const char *fName)
{
- QString result=fName;
+ QCString result=fName;
if (result.right(5)==".html") result=result.left(result.length()-5);
return result;
}
@@ -47,7 +47,7 @@ ClassDef::ClassDef(const char *nm,CompoundType ct,const char *ref,const char *fN
fileName="class_"+nameToFile(nm);
if (ref)
{
- //url=(QString)"doxygen=\""+ref+":\" href=\""+fileName;
+ //url=(QCString)"doxygen=\""+ref+":\" href=\""+fileName;
exampleList = 0;
exampleDict = 0;
}
@@ -105,7 +105,7 @@ void ClassDef::insertMember(const MemberDef *md)
//printf("adding %s::%s\n",name(),md->name());
if (!reference)
{
- if (md->isRelated() && (extractPrivateFlag || md->protection()!=Private))
+ if (md->isRelated() && (Config::extractPrivateFlag || md->protection()!=Private))
{
related.append(md);
}
@@ -152,7 +152,7 @@ void ClassDef::insertMember(const MemberDef *md)
}
}
// check if we should add this member in the `all members' list
- if (md->isFriend() || md->protection()!=Private || extractPrivateFlag)
+ if (md->isFriend() || md->protection()!=Private || Config::extractPrivateFlag)
{
MemberInfo *mi = new MemberInfo((MemberDef *)md,Public,Normal);
MemberNameInfo *mni=0;
@@ -220,8 +220,8 @@ static void writeInheritanceSpecifier(OutputList &ol,BaseClassDef *bcd)
void ClassDef::writeDocumentation(OutputList &ol)
{
// write title
- QString pageTitle=name().copy();
- QString pageType;
+ QCString pageTitle=name().copy();
+ QCString pageType;
switch(compType)
{
case Class: pageType=" Class"; break;
@@ -257,12 +257,12 @@ void ClassDef::writeDocumentation(OutputList &ol)
if (incFile)
{
- QString nm=incName.copy();
+ QCString nm=incName.copy();
if (incName.isNull()) nm=incFile->name();
ol.startTypewriter();
ol.docify("#include <");
ol.disable(OutputGenerator::Man);
- if (verbatimHeaderFlag)
+ if (Config::verbatimHeaderFlag)
{
ol.writeObjectLink(0,fileName+"-include",0,nm);
}
@@ -279,9 +279,9 @@ void ClassDef::writeDocumentation(OutputList &ol)
ol.newParagraph();
}
- if (genTagFile.length()>0) tagFile << ">" << name() << ":";
+ if (Config::genTagFile.length()>0) tagFile << ">" << name() << ":";
- if (classDiagramFlag) ol.disableAllBut(OutputGenerator::Man);
+ if (Config::classDiagramFlag) ol.disableAllBut(OutputGenerator::Man);
// write superclasses
int count;
@@ -289,7 +289,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
{
//parseText(ol,theTranslator->trInherits()+" ");
- QString inheritLine = theTranslator->trInheritsList(inherits->count());
+ QCString inheritLine = theTranslator->trInheritsList(inherits->count());
QRegExp marker("@[0-9]+");
int index=0,newIndex,matchLen;
// now replace all markers in inheritLine with links to the classes
@@ -304,7 +304,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
ClassDef *cd=bcd->classDef;
if (cd->hasDocumentation() || cd->isReference())
{
- if (genTagFile.length()>0) tagFile << cd->getOutputFileBase() << "?";
+ if (Config::genTagFile.length()>0) tagFile << cd->getOutputFileBase() << "?";
ol.writeObjectLink(cd->getReference(),cd->getOutputFileBase(),0,cd->name()+bcd->templSpecifiers);
}
else
@@ -320,41 +320,14 @@ void ClassDef::writeDocumentation(OutputList &ol)
}
parseText(ol,inheritLine.right(inheritLine.length()-index));
ol.newParagraph();
-
-#if 0
- BaseClassDef *bcd=inherits->first();
- while (bcd)
- {
- ClassDef *cd=bcd->classDef;
- if (cd->hasDocumentation() || cd->isReference())
- {
- if (genTagFile.length()>0) tagFile << cd->classFile() << "?";
- ol.writeObjectLink(cd->getReference(),cd->classFile(),0,cd->name()+bcd->templSpecifiers);
- }
- else
- {
- ol.docify(cd->name());
- }
- writeInheritanceSpecifier(ol,bcd);
- bcd=inherits->next();
- if (bcd)
- {
- if (inherits->at()==count-1)
- parseText(ol," "+theTranslator->trAnd()+" ");
- else
- ol.writeString(", ");
- }
- }
- ol.writeString(".");
-#endif
}
- if (genTagFile.length()>0) tagFile << " \"" << fileName << ".html\"\n";
+ if (Config::genTagFile.length()>0) tagFile << " \"" << fileName << ".html\"\n";
// write subclasses
if ((count=inheritedBy->count())>0)
{
- QString inheritLine = theTranslator->trInheritedByList(inheritedBy->count());
+ QCString inheritLine = theTranslator->trInheritedByList(inheritedBy->count());
QRegExp marker("@[0-9]+");
int index=0,newIndex,matchLen;
// now replace all markers in inheritLine with links to the classes
@@ -381,37 +354,9 @@ void ClassDef::writeDocumentation(OutputList &ol)
}
parseText(ol,inheritLine.right(inheritLine.length()-index));
ol.newParagraph();
-
-#if 0
- parseText(ol,theTranslator->trInheritedBy()+" ");
- BaseClassDef *bcd=inheritedBy->first();
- while (bcd)
- {
- ClassDef *cd=bcd->classDef;
- if (cd->hasDocumentation() || cd->isReference())
- {
- ol.writeObjectLink(cd->getReference(),cd->classFile(),0,cd->name());
- }
- else
- {
- ol.docify(cd->name());
- }
- writeInheritanceSpecifier(ol,bcd);
- bcd=inheritedBy->next();
- if (bcd)
- {
- if (inheritedBy->at()==count-1)
- parseText(ol," "+theTranslator->trAnd()+" ");
- else
- ol.writeString(", ");
- }
- }
- ol.writeString(".");
- ol.newParagraph();
-#endif
}
- if (classDiagramFlag) ol.enableAll();
+ if (Config::classDiagramFlag) ol.enableAll();
count=0;
BaseClassDef *ibcd;
@@ -419,23 +364,17 @@ void ClassDef::writeDocumentation(OutputList &ol)
while (ibcd)
{
ClassDef *icd=ibcd->classDef;
- if (//(icd->protection()!=Private || extractPrivateFlag) &&
- //(icd->hasDocumentation() || !hideClassFlag || icd->isReference())
- icd->isVisibleExt()
- ) count++;
+ if ( icd->isVisibleExt()) count++;
ibcd=inheritedBy->next();
}
ibcd=inherits->first();
while (ibcd)
{
ClassDef *icd=ibcd->classDef;
- if (//(icd->protection()!=Private || extractPrivateFlag) &&
- //(icd->hasDocumentation() || !hideClassFlag | icd->isReference())
- icd->isVisibleExt()
- ) count++;
+ if ( icd->isVisibleExt()) count++;
ibcd=inherits->next();
}
- if (classDiagramFlag && count>0)
+ if (Config::classDiagramFlag && count>0)
// write class diagram
{
ClassDiagram diagram(this); // create a diagram of this class.
@@ -465,7 +404,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
writeMemberDecs(ol,this,0,0,theTranslator->trProtectedMembers(),0,&proMembers);
writeMemberDecs(ol,this,0,0,theTranslator->trProtectedSlots(),0,&proSlots);
writeMemberDecs(ol,this,0,0,theTranslator->trStaticProtectedMembers(),0,&proStaticMembers);
- if (extractPrivateFlag)
+ if (Config::extractPrivateFlag)
{
writeMemberDecs(ol,this,0,0,theTranslator->trPrivateMembers(),0,&priMembers);
writeMemberDecs(ol,this,0,0,theTranslator->trPrivateSlots(),0,&priSlots);
@@ -491,10 +430,28 @@ void ClassDef::writeDocumentation(OutputList &ol)
ol.startGroupHeader();
parseText(ol,theTranslator->trDetailedDescription());
ol.endGroupHeader();
- if (tempArgs) // class is a template
+
+ ArgumentList *al=0;
+ int ti;
+ ClassDef *pcd=0;
+ int pi=0;
+ // find the outer most class scope
+ while ((ti=name().find("::",pi))!=-1 &&
+ (pcd=getClass(name().left(ti)))==0
+ ) pi=ti+2;
+
+ if (pcd)
+ {
+ al=pcd->templateArguments();
+ }
+ else
+ {
+ al=tempArgs;
+ }
+
+ if (al) // class is a template
{
ol.startSubsubsection();
- ArgumentList *al=tempArgs;
ol.docify("template<");
Argument *a=al->first();
while (a)
@@ -554,7 +511,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
signals.countDocMembers();
if ( pubMembers.typedefCount() + proMembers.typedefCount() +
- (extractPrivateFlag ? priMembers.typedefCount() : 0 )
+ (Config::extractPrivateFlag ? priMembers.typedefCount() : 0 )
)
{
ol.writeRuler();
@@ -564,7 +521,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
writeMemberDocs(ol,&pubMembers,name(),MemberDef::Typedef);
writeMemberDocs(ol,&proMembers,name(),MemberDef::Typedef);
- if (extractPrivateFlag)
+ if (Config::extractPrivateFlag)
{
writeMemberDocs(ol,&priMembers,name(),MemberDef::Typedef);
}
@@ -572,7 +529,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
if (pubMembers.enumCount() +
proMembers.enumCount() +
- ( extractPrivateFlag ? priMembers.enumCount() : 0 )
+ ( Config::extractPrivateFlag ? priMembers.enumCount() : 0 )
)
{
ol.writeRuler();
@@ -582,7 +539,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
writeMemberDocs(ol,&pubMembers,name(),MemberDef::Enumeration);
writeMemberDocs(ol,&proMembers,name(),MemberDef::Enumeration);
- if (extractPrivateFlag)
+ if (Config::extractPrivateFlag)
{
writeMemberDocs(ol,&priMembers,name(),MemberDef::Enumeration);
}
@@ -590,7 +547,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
if (pubMembers.enumValueCount() +
proMembers.enumValueCount() +
- ( extractPrivateFlag ? priMembers.enumValueCount() : 0 )
+ ( Config::extractPrivateFlag ? priMembers.enumValueCount() : 0 )
)
{
ol.writeRuler();
@@ -600,7 +557,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
writeMemberDocs(ol,&pubMembers,name(),MemberDef::EnumValue);
writeMemberDocs(ol,&proMembers,name(),MemberDef::EnumValue);
- if (extractPrivateFlag)
+ if (Config::extractPrivateFlag)
{
writeMemberDocs(ol,&priMembers,name(),MemberDef::EnumValue);
}
@@ -610,7 +567,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
pubStaticMembers.funcCount() +
proMembers.funcCount() + proSlots.funcCount() +
proStaticMembers.funcCount() +
- (extractPrivateFlag ?
+ (Config::extractPrivateFlag ?
priMembers.funcCount() + priSlots.funcCount() +
priStaticMembers.funcCount() : 0
)
@@ -628,7 +585,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
writeMemberDocs(ol,&proMembers,name(),MemberDef::Function);
writeMemberDocs(ol,&proSlots,name(),MemberDef::Slot);
writeMemberDocs(ol,&proStaticMembers,name(),MemberDef::Function);
- if (extractPrivateFlag)
+ if (Config::extractPrivateFlag)
{
writeMemberDocs(ol,&priMembers,name(),MemberDef::Function);
writeMemberDocs(ol,&priSlots,name(),MemberDef::Slot);
@@ -636,7 +593,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
}
}
- if ( friends.count() + related.count() )
+ if ( friends.friendCount() + related.count() )
{
ol.writeRuler();
ol.startGroupHeader();
@@ -649,7 +606,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
if ( pubMembers.varCount() + pubStaticMembers.varCount() +
proMembers.varCount() + proStaticMembers.varCount() +
- (extractPrivateFlag ?
+ (Config::extractPrivateFlag ?
priMembers.varCount() + priStaticMembers.varCount() : 0
)
)
@@ -663,7 +620,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
writeMemberDocs(ol,&pubStaticMembers,name(),MemberDef::Variable);
writeMemberDocs(ol,&proMembers,name(),MemberDef::Variable);
writeMemberDocs(ol,&proStaticMembers,name(),MemberDef::Variable);
- if (extractPrivateFlag)
+ if (Config::extractPrivateFlag)
{
writeMemberDocs(ol,&priMembers,name(),MemberDef::Variable);
writeMemberDocs(ol,&priStaticMembers,name(),MemberDef::Variable);
@@ -691,13 +648,13 @@ void ClassDef::writeDocumentation(OutputList &ol)
}
ol.writeListItem();
- QString path=fd->getPath().copy();
- if (fullPathNameFlag)
+ QCString path=fd->getPath().copy();
+ if (Config::fullPathNameFlag)
{
// strip part of the path
- if (path.left(stripFromPath.length())==stripFromPath)
+ if (path.left(Config::stripFromPath.length())==Config::stripFromPath)
{
- path=path.right(path.length()-stripFromPath.length());
+ path=path.right(path.length()-Config::stripFromPath.length());
}
ol.docify(path);
}
@@ -723,7 +680,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
ol.startGroupHeader();
parseText(ol,theTranslator->trAuthor());
ol.endGroupHeader();
- parseText(ol,theTranslator->trGeneratedAutomatically(projectName));
+ parseText(ol,theTranslator->trGeneratedAutomatically(Config::projectName));
ol.enableAll();
endFile(ol);
@@ -776,7 +733,7 @@ void ClassDef::writeMemberList(OutputList &ol)
if (cd && !md->name().isEmpty() && md->name()[0]!='@' &&
(
md->isFriend() ||
- (mi->prot!=Private && (protect!=Private || extractPrivateFlag))
+ (mi->prot!=Private && (protect!=Private || Config::extractPrivateFlag))
)
)
{
@@ -784,7 +741,7 @@ void ClassDef::writeMemberList(OutputList &ol)
if (cd->isVisible() && (md->hasDocumentation() || md->isReference()))
// create a link to the documentation
{
- QString name=mi->ambiguityResolutionScope+md->name();
+ QCString name=mi->ambiguityResolutionScope+md->name();
ol.writeListItem();
ol.writeObjectLink(cd->getReference(),cd->getOutputFileBase(),
md->anchor(),name);
@@ -801,7 +758,7 @@ void ClassDef::writeMemberList(OutputList &ol)
ol.writeString("\n");
memberWritten=TRUE;
}
- else if (!hideMemberFlag) // no documentation,
+ else if (!Config::hideMemberFlag) // no documentation,
// generate link to the class instead.
{
ol.writeListItem();
@@ -874,7 +831,7 @@ void ClassDef::writeIncludeFile(OutputList &ol)
ol.disableAllBut(OutputGenerator::Html);
startFile(ol,fileName+"-include",name()+" Include File");
startTitle(ol);
- QString n=incName.copy();
+ QCString n=incName.copy();
if (incName.isNull()) n=incFile->name();
parseText(ol,n);
endTitle(ol,0);
@@ -917,7 +874,7 @@ bool ClassDef::hasExamples()
// write the list of all examples that are use this class.
void ClassDef::writeExample(OutputList &ol)
{
- QString exampleLine=theTranslator->trWriteList(exampleList->count());
+ QCString exampleLine=theTranslator->trWriteList(exampleList->count());
QRegExp marker("@[0-9]+");
int index=0,newIndex,matchLen;
@@ -970,9 +927,9 @@ void ClassDef::setTemplateArguments(ArgumentList *al)
}
}
-QString ClassDef::getTemplateNameString()
+QCString ClassDef::getTemplateNameString()
{
- QString result;
+ QCString result;
if (!tempArgs || tempArgs->count()==0) return result;
result="<";
Argument *a=tempArgs->first();
diff --git a/src/classdef.h b/src/classdef.h
index d5fc466..dd24b69 100644
--- a/src/classdef.h
+++ b/src/classdef.h
@@ -17,11 +17,11 @@
#ifndef CLASSDEF_H
#define CLASSDEF_H
-#include <qstring.h>
+//#include <qtstream.h>
+#include "qtbc.h"
#include <qfileinf.h>
#include <qlist.h>
#include <qdict.h>
-#include <qtstream.h>
#include <qstrlist.h>
#include "membername.h"
@@ -51,8 +51,8 @@ class ClassDef : public Definition
ClassDef(const char *name,CompoundType ct,const char *ref=0,const char *fName=0);
~ClassDef();
- //QString classFile() const { return fileName; }
- QString getOutputFileBase() const { return fileName; }
+ //QCString classFile() const { return fileName; }
+ QCString getOutputFileBase() const { return fileName; }
CompoundType compoundType() const { return compType; }
const char *memberListFileName() const { return memListFileName; }
void insertBaseClass(ClassDef *,Protection p,Specifier s,const char *t=0);
@@ -81,34 +81,35 @@ class ClassDef : public Definition
Protection protection() const { return prot; }
bool isVisible()
{ return !name().isEmpty() && name().at(0)!='@' &&
- (prot!=Private || extractPrivateFlag) &&
+ (prot!=Private || Config::extractPrivateFlag) &&
hasDocumentation();
}
bool hasNonReferenceSuperClass();
bool isVisibleExt()
- { return (allExtFlag || hasNonReferenceSuperClass()) &&
+ { return (Config::allExtFlag || hasNonReferenceSuperClass()) &&
!name().isEmpty() && name().at(0)!='@' &&
- (prot!=Private || extractPrivateFlag) &&
- (hasDocumentation() || !hideClassFlag || !reference.isNull());
+ (prot!=Private || Config::extractPrivateFlag) &&
+ (hasDocumentation() || !Config::hideClassFlag ||
+ !reference.isNull());
}
// template argument functions
ArgumentList *templateArguments() const { return tempArgs; }
void setTemplateArguments(ArgumentList *al);
- QString getTemplateNameString();
+ QCString getTemplateNameString();
void setNamespace(NamespaceDef *nd) { nspace = nd; }
NamespaceDef *getNamespace() { return nspace; }
bool visited;
private:
- //QString name; // name of the class
- QString fileName; // HTML containing the class docs
- //QString doc; // general class documentation
+ //QCString name; // name of the class
+ QCString fileName; // HTML containing the class docs
+ //QCString doc; // general class documentation
FileDef *incFile; // header file to refer to
- QString incName; // alternative include file name
- //QString brief; // brief class discription
- QString memListFileName;
+ QCString incName; // alternative include file name
+ //QCString brief; // brief class discription
+ QCString memListFileName;
BaseClassList *inherits;
BaseClassList *inheritedBy;
NamespaceDef *nspace; // the namespace this class is in
@@ -128,7 +129,7 @@ class ClassDef : public Definition
MemberNameInfoDict *allMemberNameInfoDict;
ArgumentList *tempArgs;
QStrList files;
- QString reference;
+ QCString reference;
ExampleList *exampleList;
ExampleDict *exampleDict;
CompoundType compType;
@@ -143,7 +144,7 @@ struct BaseClassDef
ClassDef *classDef;
Protection prot;
Specifier virt;
- QString templSpecifiers;
+ QCString templSpecifiers;
};
class BaseClassList : public QList<BaseClassDef>
diff --git a/src/code.h b/src/code.h
index 4b781fb..bf67df6 100644
--- a/src/code.h
+++ b/src/code.h
@@ -17,12 +17,12 @@
#ifndef CODE_H
#define CODE_H
+#include "qtbc.h"
#include <stdio.h>
-#include <qstring.h>
class OutputList;
-extern void parseCode(OutputList &,const char *,const QString &,
+extern void parseCode(OutputList &,const char *,const QCString &,
bool ,const char *);
extern void initParseCodeContext();
#endif
diff --git a/src/code.l b/src/code.l
index dd5ec0c..beafeca 100644
--- a/src/code.l
+++ b/src/code.l
@@ -24,8 +24,7 @@
#include <assert.h>
#include <ctype.h>
-#include <qstring.h>
-
+#include "qtbc.h"
#include "scanner.h"
#include "entry.h"
#include "doxygen.h"
@@ -47,7 +46,7 @@ class CodeClassDef
}
~CodeClassDef() {}
- QString name;
+ QCString name;
QStrList bases;
};
@@ -63,9 +62,9 @@ class CodeVarDef
}
~CodeVarDef() {}
- QString name;
- QString type;
- QString classScope;
+ QCString name;
+ QCString type;
+ QCString classScope;
};
typedef QList<CodeClassDef> CodeClassList;
@@ -91,19 +90,19 @@ static int bracketCount = 0;
static int curlyCount = 0;
static int sharpCount = 0;
static int yyLineNr = 0;
-static QString type;
-static QString name;
-static QString args;
-static QString parmType;
-static QString parmName;
+static QCString type;
+static QCString name;
+static QCString args;
+static QCString parmType;
+static QCString parmName;
static bool inClass;
-static QString classScope;
+static QCString classScope;
static OutputList *code;
static CodeClassDef ccd;
static CodeVarDef cvd;
static bool exampleBlock;
-static QString exampleName;
-static QString exampleFile;
+static QCString exampleName;
+static QCString exampleFile;
static int anchorCount;
static void addType()
@@ -125,9 +124,9 @@ static void addParmType()
parmName.resize(0) ;
}
-static void setClassScope(const QString &name)
+static void setClassScope(const QCString &name)
{
- QString n=name;
+ QCString n=name;
n=n.simplifyWhiteSpace();
int index;
if ((index=n.find("::"))!=-1)
@@ -165,14 +164,14 @@ static void addParameter()
static void generateClassLink(OutputList &ol,const char *clName)
{
- QString className=clName;
+ QCString className=clName;
if (className.length()==0) return;
ClassDef *cd;
if ((cd=getClass(className)) && cd->isVisible())
{
if (exampleBlock)
{
- QString anchor;
+ QCString anchor;
anchor.sprintf("_a%d",anchorCount);
//printf("addExampleClass(%s,%s,%s)\n",anchor.data(),exampleName.data(),
// exampleFile.data());
@@ -200,16 +199,16 @@ static bool getLink(const char *className,
ClassDef *cd;
FileDef *fd;
NamespaceDef *nd;
- QString m=memberName;
- QString c=className;
+ QCString m=memberName;
+ QCString c=className;
//printf("Trying `%s'::`%s'\n",c.data(),m.data());
- if (getDefs(m,c,"()",md,cd,fd,nd) &&
+ if (getDefs(c,m,"()",md,cd,fd,nd) &&
(md->hasDocumentation() || md->isReference()))
{
//printf("Found!\n");
if (exampleBlock)
{
- QString anchor;
+ QCString anchor;
anchor.sprintf("a%d",anchorCount);
//printf("addExampleFile(%s,%s,%s)\n",anchor.data(),exampleName.data(),
// exampleFile.data());
@@ -339,6 +338,8 @@ static int yyread(char *buf,int max_size)
ID [a-z_A-Z][a-z_A-Z0-9]*
+%option noyywrap
+
%x SkipString
%x SkipCPP
%x SkipComment
@@ -380,7 +381,7 @@ ID [a-z_A-Z][a-z_A-Z0-9]*
code->codify(yytext);
}
char c=yyinput();
- QString text;
+ QCString text;
text+=c;
code->codify(text);
BEGIN( Body );
@@ -663,7 +664,7 @@ ID [a-z_A-Z][a-z_A-Z0-9]*
}
<SkipSpecialComment>[ \t]*"*/"[ \t\n]*"\n"/"/*" {
//code->codify("\n");
- QString lineText=yytext;
+ QCString lineText=yytext;
yyLineNr+=lineText.contains('\n');
BEGIN( lastDContext ) ;
}
@@ -700,7 +701,7 @@ ID [a-z_A-Z][a-z_A-Z0-9]*
code->codify(yytext);
}
<*>([ \t\n]*"\n"){2,} { // combine multiple blank lines
- QString sepLine=yytext;
+ QCString sepLine=yytext;
code->codify("\n\n");
yyLineNr+=sepLine.contains('\n');
}
@@ -723,7 +724,7 @@ void initParseCodeContext()
anchorCount = 0;
}
-void parseCode(OutputList &ol,const char *className,const QString &s,
+void parseCode(OutputList &ol,const char *className,const QCString &s,
bool e, const char *exName)
{
code = new OutputList(&ol);
@@ -752,6 +753,6 @@ void parseCode(OutputList &ol,const char *className,const QString &s,
}
extern "C" { // some bogus code to keep the compiler happy
- int codeYYwrap() { return 1 ; }
+// int codeYYwrap() { return 1 ; }
void codeYYdummy() { yy_flex_realloc(0,0); }
}
diff --git a/src/config.h b/src/config.h
index 492f356..d2bec11 100644
--- a/src/config.h
+++ b/src/config.h
@@ -17,66 +17,78 @@
#ifndef CONFIG_H
#define CONFIG_H
-#include <qstring.h>
+#ifndef DOXYWIZARD
+#include "qtbc.h"
+#endif
#include <qstrlist.h>
#include <qfile.h>
-extern void parseConfig(const QString &config);
+extern void parseConfig(const QCString &config);
extern void writeTemplateConfig(QFile *f,bool shortList);
+extern void checkConfig();
+
+struct Config
+{
+ static void init();
-extern QString projectName; // the name of the project
-extern QString projectNumber; // the number of the project
-extern QString htmlOutputDir; // the directory to put the HTML files
-extern QString latexOutputDir; // the directory to put the Latex files
-extern QString manOutputDir; // the directory to put the man pages
-extern QString headerFile; // the name of the personal HTML header
-extern QString footerFile; // the name of the personal HTML footer
-extern QString cgiName; // the name of the CGI binary
-extern QString cgiURL; // the absolute URL to the CGI binary
-extern QString docURL; // the absolute URL to the documentation
-extern QString binAbsPath; // the absolute path to the doxysearch
-extern QString docAbsPath; // the absolute path to the documentation
-extern QString perlPath; // the absolute path to perl
-extern QString genTagFile; // the tag file to generate
-extern QString inputFilter; // a filter command that is applied to input files
-extern QString paperType; // the page type to generate docs for
-extern QString stripFromPath; // the string to strip from the file path
-extern QString manExtension; // extension the man page files
-extern QStrList includePath; // list of include paths
-extern QStrList examplePath; // list of example paths
-extern QStrList inputSources; // list of input files
-extern QStrList excludeSources; // list of files to exclude from the input
-extern QStrList filePatternList; // list of file patterns
-extern QStrList excludePatternList; // list of patterns to exclude from input
-extern QStrList tagFileList; // list of tag files
-extern QStrList extDocPathList; // list of external doc. directories.
-extern QStrList predefined; // list of predefined macro names.
-extern QStrList extraPackageList; // list of extra LaTeX packages.
-extern bool quietFlag; // generate progress messages flag
-extern bool warningFlag; // generate warnings flag
-extern bool recursiveFlag; // scan directories recursively
-extern bool allExtFlag; // include all external classes flag
-extern bool searchEngineFlag; // generate search engine flag
-extern bool extractAllFlag; // gererate docs for all classes flag
-extern bool extractPrivateFlag; // generate docs for private members flag
-extern bool noIndexFlag; // generate condensed index flag
-extern bool generateHtml; // generate HTML output
-extern bool generateLatex; // generate Latex output
-extern bool generateMan; // generate Man pages
-extern bool preprocessingFlag; // enable preprocessing
-extern bool briefMemDescFlag; // enable `inline' brief member descr.
-extern bool hideMemberFlag; // hide undocumented members.
-extern bool hideClassFlag; // hide undocumented members.
-extern bool searchIncludeFlag; // search for included files
-extern bool macroExpansionFlag; // expand macros in the source.
-extern bool onlyPredefinedFlag; // expand only predefined macros
-extern bool fullPathNameFlag; // using full path name in output
-extern bool classDiagramFlag; // enable the generation of class diagrams.
-extern bool compactLatexFlag; // generate compact LaTeX documentation.
-extern bool repeatBriefFlag; // repeat brief descriptions.
-extern bool internalDocsFlag; // determines what happens to internal docs.
-extern bool caseSensitiveNames; // determines if output can be mixed case.
-extern bool verbatimHeaderFlag; // enable/disable generation of verb headers.
-extern bool htmlAlignMemberFlag; // align members in HTML using tables.
+ static QCString projectName; // the name of the project
+ static QCString projectNumber; // the number of the project
+ static QCString outputDir; // the global output directory
+ static QCString htmlOutputDir; // the directory to put the HTML files
+ static QCString latexOutputDir; // the directory to put the Latex files
+ static QCString manOutputDir; // the directory to put the man pages
+ static QCString outputLanguage; // the output language
+ static QCString headerFile; // the name of the personal HTML header
+ static QCString footerFile; // the name of the personal HTML footer
+ static QCString cgiName; // the name of the CGI binary
+ static QCString cgiURL; // the absolute URL to the CGI binary
+ static QCString docURL; // the absolute URL to the documentation
+ static QCString binAbsPath; // the absolute path to the doxysearch
+ static QCString docAbsPath; // the absolute path to the documentation
+ static QCString perlPath; // the absolute path to perl
+ static QCString genTagFile; // the tag file to generate
+ static QCString inputFilter; // a filter command that is applied to input files
+ static QCString paperType; // the page type to generate docs for
+ static QCString stripFromPath; // the string to strip from the file path
+ static QCString manExtension; // extension the man page files
+ static QStrList includePath; // list of include paths
+ static QStrList examplePath; // list of example paths
+ static QStrList inputSources; // list of input files
+ static QStrList excludeSources; // list of files to exclude from the input
+ static QStrList filePatternList; // list of file patterns
+ static QStrList excludePatternList; // list of patterns to exclude from input
+ static QStrList tagFileList; // list of tag files
+ static QStrList extDocPathList; // list of external doc. directories.
+ static QStrList predefined; // list of predefined macro names.
+ static QStrList extraPackageList; // list of extra LaTeX packages.
+ static bool quietFlag; // generate progress messages flag
+ static bool warningFlag; // generate warnings flag
+ static bool recursiveFlag; // scan directories recursively
+ static bool allExtFlag; // include all external classes flag
+ static bool searchEngineFlag; // generate search engine flag
+ static bool extractAllFlag; // gererate docs for all classes flag
+ static bool extractPrivateFlag; // generate docs for private members flag
+ static bool noIndexFlag; // generate condensed index flag
+ static bool generateHtml; // generate HTML output
+ static bool generateLatex; // generate Latex output
+ static bool generateMan; // generate Man pages
+ static bool preprocessingFlag; // enable preprocessing
+ static bool briefMemDescFlag; // enable `inline' brief member descr.
+ static bool hideMemberFlag; // hide undocumented members.
+ static bool hideClassFlag; // hide undocumented members.
+ static bool searchIncludeFlag; // search for included files
+ static bool macroExpansionFlag; // expand macros in the source.
+ static bool onlyPredefinedFlag; // expand only predefined macros
+ static bool fullPathNameFlag; // using full path name in output
+ static bool classDiagramFlag; // enable the generation of class diagrams.
+ static bool compactLatexFlag; // generate compact LaTeX documentation.
+ static bool repeatBriefFlag; // repeat brief descriptions.
+ static bool internalDocsFlag; // determines what happens to internal docs.
+ static bool caseSensitiveNames; // determines if output can be mixed case.
+ static bool verbatimHeaderFlag; // enable/disable generation of verb headers.
+ static bool htmlAlignMemberFlag; // align members in HTML using tables.
+ static bool includeSourceFlag; // include source code in documentation.
+ static bool autoBriefFlag; // javadoc comments behaves as Qt comments.
+};
#endif
diff --git a/src/config.l b/src/config.l
index 0545f32..57897e9 100644
--- a/src/config.l
+++ b/src/config.l
@@ -24,17 +24,36 @@
#include <assert.h>
#include <ctype.h>
-#include <qstring.h>
#include <qfileinf.h>
#include <qdir.h>
#include <qtstream.h>
-#include "doxygen.h"
#include "config.h"
+#include "version.h"
+
+#ifdef DOXYWIZARD
+#include <stdarg.h>
+void err(const char *fmt, ...)
+{
+ va_list args;
+ va_start(args, fmt);
+ vfprintf(stderr, fmt, args);
+ va_end(args);
+}
+void warn(const char *fmt, ...)
+{
+ va_list args;
+ va_start(args, fmt);
+ vfprintf(stderr, fmt, args);
+ va_end(args);
+}
+#else
+#include "doxygen.h"
#include "message.h"
#include "pre.h"
#include "version.h"
#include "language.h"
+#endif
#define YY_NEVER_INTERACTIVE 1
@@ -43,62 +62,65 @@
* exported variables
*/
-QString projectName;
-QString projectNumber;
-QString outputDir;
-QString htmlOutputDir;
-QString latexOutputDir;
-QString manOutputDir;
-QString headerFile;
-QString footerFile;
-QString cgiName;
-QString cgiURL;
-QString docURL;
-QString binAbsPath;
-QString docAbsPath;
-QString perlPath;
-QString genTagFile;
-QString inputFilter;
-QString paperType;
-QString outputLanguage;
-QString stripFromPath;
-QString manExtension;
-QStrList includePath;
-QStrList examplePath;
-QStrList inputSources;
-QStrList excludeSources;
-QStrList filePatternList;
-QStrList excludePatternList;
-QStrList tagFileList;
-QStrList extDocPathList;
-QStrList predefined;
-QStrList extraPackageList;
-bool quietFlag = FALSE;
-bool warningFlag = FALSE;
-bool recursiveFlag = FALSE;
-bool allExtFlag = FALSE;
-bool searchEngineFlag = FALSE;
-bool extractAllFlag = FALSE;
-bool extractPrivateFlag = FALSE;
-bool noIndexFlag = FALSE;
-bool hideMemberFlag = FALSE;
-bool hideClassFlag = FALSE;
-bool macroExpansionFlag = FALSE;
-bool onlyPredefinedFlag = FALSE;
-bool fullPathNameFlag = FALSE;
-bool compactLatexFlag = FALSE;
-bool internalDocsFlag = FALSE;
-bool caseSensitiveNames = FALSE;
-bool generateHtml = TRUE;
-bool generateLatex = TRUE;
-bool generateMan = TRUE;
-bool preprocessingFlag = TRUE;
-bool briefMemDescFlag = TRUE;
-bool searchIncludeFlag = TRUE;
-bool classDiagramFlag = TRUE;
-bool repeatBriefFlag = TRUE;
-bool verbatimHeaderFlag = TRUE;
-bool htmlAlignMemberFlag = TRUE;
+
+QCString Config::projectName;
+QCString Config::projectNumber;
+QCString Config::outputDir;
+QCString Config::htmlOutputDir;
+QCString Config::latexOutputDir;
+QCString Config::manOutputDir;
+QCString Config::outputLanguage;
+QCString Config::headerFile;
+QCString Config::footerFile;
+QCString Config::cgiName;
+QCString Config::cgiURL;
+QCString Config::docURL;
+QCString Config::binAbsPath;
+QCString Config::docAbsPath;
+QCString Config::perlPath;
+QCString Config::genTagFile;
+QCString Config::inputFilter;
+QCString Config::paperType;
+QCString Config::stripFromPath;
+QCString Config::manExtension;
+QStrList Config::includePath;
+QStrList Config::examplePath;
+QStrList Config::inputSources;
+QStrList Config::excludeSources;
+QStrList Config::filePatternList;
+QStrList Config::excludePatternList;
+QStrList Config::tagFileList;
+QStrList Config::extDocPathList;
+QStrList Config::predefined;
+QStrList Config::extraPackageList;
+bool Config::quietFlag = FALSE;
+bool Config::recursiveFlag = FALSE;
+bool Config::allExtFlag = FALSE;
+bool Config::searchEngineFlag = FALSE;
+bool Config::extractAllFlag = FALSE;
+bool Config::extractPrivateFlag = FALSE;
+bool Config::noIndexFlag = FALSE;
+bool Config::hideMemberFlag = FALSE;
+bool Config::hideClassFlag = FALSE;
+bool Config::macroExpansionFlag = FALSE;
+bool Config::onlyPredefinedFlag = FALSE;
+bool Config::fullPathNameFlag = FALSE;
+bool Config::compactLatexFlag = FALSE;
+bool Config::internalDocsFlag = FALSE;
+bool Config::caseSensitiveNames = FALSE;
+bool Config::includeSourceFlag = FALSE;
+bool Config::autoBriefFlag = TRUE;
+bool Config::warningFlag = TRUE;
+bool Config::generateHtml = TRUE;
+bool Config::generateLatex = TRUE;
+bool Config::generateMan = TRUE;
+bool Config::preprocessingFlag = TRUE;
+bool Config::briefMemDescFlag = TRUE;
+bool Config::searchIncludeFlag = TRUE;
+bool Config::classDiagramFlag = TRUE;
+bool Config::repeatBriefFlag = TRUE;
+bool Config::verbatimHeaderFlag = TRUE;
+bool Config::htmlAlignMemberFlag = TRUE;
/* -----------------------------------------------------------------
*
@@ -108,13 +130,13 @@ bool htmlAlignMemberFlag = TRUE;
static const char * inputString;
static int inputPosition;
static int yyLineNr;
-static QString tmpString;
-static QString * s=0;
+static QCString tmpString;
+static QCString * s=0;
static bool * b=0;
static QStrList * l=0;
static int lastState;
static int lastEnvState;
-static QString elemStr;
+static QCString elemStr;
/* -----------------------------------------------------------------
*/
@@ -134,6 +156,8 @@ static int yyread(char *buf,int max_size)
%}
+%option noyywrap
+
%x Start
%x SkipComment
%x GetString
@@ -146,62 +170,64 @@ static int yyread(char *buf,int max_size)
<*>\0x0d
<Start,GetString,GetStrList,GetBool>"#" { BEGIN(SkipComment); }
-<Start>"PROJECT_NAME"[ \t]*"=" { BEGIN(GetString); s=&projectName; }
-<Start>"PROJECT_NUMBER"[ \t]*"=" { BEGIN(GetString); s=&projectNumber; }
-<Start>"OUTPUT_DIRECTORY"[ \t]*"=" { BEGIN(GetString); s=&outputDir; }
-<Start>"HTML_OUTPUT"[ \t]*"=" { BEGIN(GetString); s=&htmlOutputDir; }
-<Start>"MAN_OUTPUT"[ \t]*"=" { BEGIN(GetString); s=&manOutputDir; }
-<Start>"LATEX_OUTPUT"[ \t]*"=" { BEGIN(GetString); s=&latexOutputDir; }
-<Start>"HTML_HEADER"[ \t]*"=" { BEGIN(GetString); s=&headerFile; }
-<Start>"HTML_FOOTER"[ \t]*"=" { BEGIN(GetString); s=&footerFile; }
-<Start>"CGI_NAME"[ \t]*"=" { BEGIN(GetString); s=&cgiName; }
-<Start>"CGI_URL"[ \t]*"=" { BEGIN(GetString); s=&cgiURL; }
-<Start>"DOC_URL"[ \t]*"=" { BEGIN(GetString); s=&docURL; }
-<Start>"BIN_ABSPATH"[ \t]*"=" { BEGIN(GetString); s=&binAbsPath; }
-<Start>"DOC_ABSPATH"[ \t]*"=" { BEGIN(GetString); s=&docAbsPath; }
-<Start>"PERL_PATH"[ \t]*"=" { BEGIN(GetString); s=&perlPath; }
-<Start>"GENERATE_TAGFILE"[ \t]*"=" { BEGIN(GetString); s=&genTagFile; }
-<Start>"INPUT_FILTER"[ \t]*"=" { BEGIN(GetString); s=&inputFilter; }
-<Start>"PAPER_TYPE"[ \t]*"=" { BEGIN(GetString); s=&paperType; }
-<Start>"OUTPUT_LANGUAGE"[ \t]*"=" { BEGIN(GetString); s=&outputLanguage; }
-<Start>"STRIP_FROM_PATH"[ \t]*"=" { BEGIN(GetString); s=&stripFromPath; }
-<Start>"MAN_EXTENSION"[ \t]*"=" { BEGIN(GetString); s=&manExtension; }
-<Start>"INCLUDE_PATH"[ \t]*"=" { BEGIN(GetStrList); l=&includePath; elemStr=""; }
-<Start>"EXAMPLE_PATH"[ \t]*"=" { BEGIN(GetStrList); l=&examplePath; elemStr=""; }
-<Start>"INPUT"[ \t]*"=" { BEGIN(GetStrList); l=&inputSources; elemStr=""; }
-<Start>"EXCLUDE"[ \t]*"=" { BEGIN(GetStrList); l=&excludeSources; elemStr=""; }
-<Start>"FILE_PATTERNS"[ \t]*"=" { BEGIN(GetStrList); l=&filePatternList; elemStr=""; }
-<Start>"EXCLUDE_PATTERNS"[ \t]*"=" { BEGIN(GetStrList); l=&excludePatternList; elemStr=""; }
-<Start>"TAGFILES"[ \t]*"=" { BEGIN(GetStrList); l=&tagFileList; elemStr=""; }
-<Start>"EXT_DOC_PATHS"[ \t]*"=" { BEGIN(GetStrList); l=&extDocPathList; elemStr=""; }
-<Start>"PREDEFINED"[ \t]*"=" { BEGIN(GetStrList); l=&predefined; elemStr=""; }
-<Start>"EXTRA_PACKAGES"[ \t]*"=" { BEGIN(GetStrList); l=&extraPackageList; elemStr=""; }
-<Start>"QUIET"[ \t]*"=" { BEGIN(GetBool); b=&quietFlag; }
-<Start>"WARNINGS"[ \t]*"=" { BEGIN(GetBool); b=&warningFlag; }
-<Start>"RECURSIVE"[ \t]*"=" { BEGIN(GetBool); b=&recursiveFlag; }
-<Start>"ALLEXTERNALS"[ \t]*"=" { BEGIN(GetBool); b=&allExtFlag; }
-<Start>"SEARCHENGINE"[ \t]*"=" { BEGIN(GetBool); b=&searchEngineFlag; }
-<Start>"EXTRACT_ALL"[ \t]*"=" { BEGIN(GetBool); b=&extractAllFlag; }
-<Start>"EXTRACT_PRIVATE"[ \t]*"=" { BEGIN(GetBool); b=&extractPrivateFlag; }
-<Start>"DISABLE_INDEX"[ \t]*"=" { BEGIN(GetBool); b=&noIndexFlag; }
-<Start>"GENERATE_LATEX"[ \t]*"=" { BEGIN(GetBool); b=&generateLatex; }
-<Start>"GENERATE_HTML"[ \t]*"=" { BEGIN(GetBool); b=&generateHtml; }
-<Start>"GENERATE_MAN"[ \t]*"=" { BEGIN(GetBool); b=&generateMan; }
-<Start>"ENABLE_PREPROCESSING"[ \t]*"=" { BEGIN(GetBool); b=&preprocessingFlag; }
-<Start>"MACRO_EXPANSION"[ \t]*"=" { BEGIN(GetBool); b=&macroExpansionFlag; }
-<Start>"SEARCH_INCLUDES"[ \t]*"=" { BEGIN(GetBool); b=&searchIncludeFlag; }
-<Start>"BRIEF_MEMBER_DESC"[ \t]*"=" { BEGIN(GetBool); b=&briefMemDescFlag; }
-<Start>"HIDE_UNDOC_MEMBERS"[ \t]*"=" { BEGIN(GetBool); b=&hideMemberFlag; }
-<Start>"HIDE_UNDOC_CLASSES"[ \t]*"=" { BEGIN(GetBool); b=&hideClassFlag; }
-<Start>"EXPAND_ONLY_PREDEF"[ \t]*"=" { BEGIN(GetBool); b=&onlyPredefinedFlag; }
-<Start>"FULL_PATH_NAMES"[ \t]*"=" { BEGIN(GetBool); b=&fullPathNameFlag; }
-<Start>"CLASS_DIAGRAMS"[ \t]*"=" { BEGIN(GetBool); b=&classDiagramFlag; }
-<Start>"COMPACT_LATEX"[ \t]*"=" { BEGIN(GetBool); b=&compactLatexFlag; }
-<Start>"REPEAT_BRIEF"[ \t]*"=" { BEGIN(GetBool); b=&repeatBriefFlag; }
-<Start>"INTERNAL_DOCS"[ \t]*"=" { BEGIN(GetBool); b=&internalDocsFlag; }
-<Start>"CASE_SENSE_NAMES"[ \t]*"=" { BEGIN(GetBool); b=&caseSensitiveNames; }
-<Start>"VERBATIM_HEADERS"[ \t]*"=" { BEGIN(GetBool); b=&verbatimHeaderFlag; }
-<Start>"HTML_ALIGN_MEMBERS"[ \t]*"=" { BEGIN(GetBool); b=&htmlAlignMemberFlag; }
+<Start>"PROJECT_NAME"[ \t]*"=" { BEGIN(GetString); s=&Config::projectName; }
+<Start>"PROJECT_NUMBER"[ \t]*"=" { BEGIN(GetString); s=&Config::projectNumber; }
+<Start>"OUTPUT_DIRECTORY"[ \t]*"=" { BEGIN(GetString); s=&Config::outputDir; }
+<Start>"HTML_OUTPUT"[ \t]*"=" { BEGIN(GetString); s=&Config::htmlOutputDir; }
+<Start>"MAN_OUTPUT"[ \t]*"=" { BEGIN(GetString); s=&Config::manOutputDir; }
+<Start>"LATEX_OUTPUT"[ \t]*"=" { BEGIN(GetString); s=&Config::latexOutputDir; }
+<Start>"HTML_HEADER"[ \t]*"=" { BEGIN(GetString); s=&Config::headerFile; }
+<Start>"HTML_FOOTER"[ \t]*"=" { BEGIN(GetString); s=&Config::footerFile; }
+<Start>"CGI_NAME"[ \t]*"=" { BEGIN(GetString); s=&Config::cgiName; }
+<Start>"CGI_URL"[ \t]*"=" { BEGIN(GetString); s=&Config::cgiURL; }
+<Start>"DOC_URL"[ \t]*"=" { BEGIN(GetString); s=&Config::docURL; }
+<Start>"BIN_ABSPATH"[ \t]*"=" { BEGIN(GetString); s=&Config::binAbsPath; }
+<Start>"DOC_ABSPATH"[ \t]*"=" { BEGIN(GetString); s=&Config::docAbsPath; }
+<Start>"PERL_PATH"[ \t]*"=" { BEGIN(GetString); s=&Config::perlPath; }
+<Start>"GENERATE_TAGFILE"[ \t]*"=" { BEGIN(GetString); s=&Config::genTagFile; }
+<Start>"INPUT_FILTER"[ \t]*"=" { BEGIN(GetString); s=&Config::inputFilter; }
+<Start>"PAPER_TYPE"[ \t]*"=" { BEGIN(GetString); s=&Config::paperType; }
+<Start>"OUTPUT_LANGUAGE"[ \t]*"=" { BEGIN(GetString); s=&Config::outputLanguage; }
+<Start>"STRIP_FROM_PATH"[ \t]*"=" { BEGIN(GetString); s=&Config::stripFromPath; }
+<Start>"MAN_EXTENSION"[ \t]*"=" { BEGIN(GetString); s=&Config::manExtension; }
+<Start>"INCLUDE_PATH"[ \t]*"=" { BEGIN(GetStrList); l=&Config::includePath; elemStr=""; }
+<Start>"EXAMPLE_PATH"[ \t]*"=" { BEGIN(GetStrList); l=&Config::examplePath; elemStr=""; }
+<Start>"INPUT"[ \t]*"=" { BEGIN(GetStrList); l=&Config::inputSources; elemStr=""; }
+<Start>"EXCLUDE"[ \t]*"=" { BEGIN(GetStrList); l=&Config::excludeSources; elemStr=""; }
+<Start>"FILE_PATTERNS"[ \t]*"=" { BEGIN(GetStrList); l=&Config::filePatternList; elemStr=""; }
+<Start>"EXCLUDE_PATTERNS"[ \t]*"=" { BEGIN(GetStrList); l=&Config::excludePatternList; elemStr=""; }
+<Start>"TAGFILES"[ \t]*"=" { BEGIN(GetStrList); l=&Config::tagFileList; elemStr=""; }
+<Start>"EXT_DOC_PATHS"[ \t]*"=" { BEGIN(GetStrList); l=&Config::extDocPathList; elemStr=""; }
+<Start>"PREDEFINED"[ \t]*"=" { BEGIN(GetStrList); l=&Config::predefined; elemStr=""; }
+<Start>"EXTRA_PACKAGES"[ \t]*"=" { BEGIN(GetStrList); l=&Config::extraPackageList; elemStr=""; }
+<Start>"QUIET"[ \t]*"=" { BEGIN(GetBool); b=&Config::quietFlag; }
+<Start>"WARNINGS"[ \t]*"=" { BEGIN(GetBool); b=&Config::warningFlag; }
+<Start>"RECURSIVE"[ \t]*"=" { BEGIN(GetBool); b=&Config::recursiveFlag; }
+<Start>"ALLEXTERNALS"[ \t]*"=" { BEGIN(GetBool); b=&Config::allExtFlag; }
+<Start>"SEARCHENGINE"[ \t]*"=" { BEGIN(GetBool); b=&Config::searchEngineFlag; }
+<Start>"EXTRACT_ALL"[ \t]*"=" { BEGIN(GetBool); b=&Config::extractAllFlag; }
+<Start>"EXTRACT_PRIVATE"[ \t]*"=" { BEGIN(GetBool); b=&Config::extractPrivateFlag; }
+<Start>"DISABLE_INDEX"[ \t]*"=" { BEGIN(GetBool); b=&Config::noIndexFlag; }
+<Start>"GENERATE_LATEX"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateLatex; }
+<Start>"GENERATE_HTML"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateHtml; }
+<Start>"GENERATE_MAN"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateMan; }
+<Start>"ENABLE_PREPROCESSING"[ \t]*"=" { BEGIN(GetBool); b=&Config::preprocessingFlag; }
+<Start>"MACRO_EXPANSION"[ \t]*"=" { BEGIN(GetBool); b=&Config::macroExpansionFlag; }
+<Start>"SEARCH_INCLUDES"[ \t]*"=" { BEGIN(GetBool); b=&Config::searchIncludeFlag; }
+<Start>"BRIEF_MEMBER_DESC"[ \t]*"=" { BEGIN(GetBool); b=&Config::briefMemDescFlag; }
+<Start>"HIDE_UNDOC_MEMBERS"[ \t]*"=" { BEGIN(GetBool); b=&Config::hideMemberFlag; }
+<Start>"HIDE_UNDOC_CLASSES"[ \t]*"=" { BEGIN(GetBool); b=&Config::hideClassFlag; }
+<Start>"EXPAND_ONLY_PREDEF"[ \t]*"=" { BEGIN(GetBool); b=&Config::onlyPredefinedFlag; }
+<Start>"FULL_PATH_NAMES"[ \t]*"=" { BEGIN(GetBool); b=&Config::fullPathNameFlag; }
+<Start>"CLASS_DIAGRAMS"[ \t]*"=" { BEGIN(GetBool); b=&Config::classDiagramFlag; }
+<Start>"COMPACT_LATEX"[ \t]*"=" { BEGIN(GetBool); b=&Config::compactLatexFlag; }
+<Start>"REPEAT_BRIEF"[ \t]*"=" { BEGIN(GetBool); b=&Config::repeatBriefFlag; }
+<Start>"INTERNAL_DOCS"[ \t]*"=" { BEGIN(GetBool); b=&Config::internalDocsFlag; }
+<Start>"CASE_SENSE_NAMES"[ \t]*"=" { BEGIN(GetBool); b=&Config::caseSensitiveNames; }
+<Start>"VERBATIM_HEADERS"[ \t]*"=" { BEGIN(GetBool); b=&Config::verbatimHeaderFlag; }
+<Start>"HTML_ALIGN_MEMBERS"[ \t]*"=" { BEGIN(GetBool); b=&Config::htmlAlignMemberFlag; }
+<Start>"SOURCE_BROWSER"[ \t]*"=" { BEGIN(GetBool); b=&Config::includeSourceFlag; }
+<Start>"JAVADOC_AUTOBRIEF"[ \t]*"=" { BEGIN(GetBool); b=&Config::autoBriefFlag; }
<Start>[a-z_A-Z0-9]+ { err("Warning: ignoring unknown tag `%s' at line %d\n",yytext,yyLineNr); }
<GetString,GetBool>\n { yyLineNr++; BEGIN(Start); }
<GetStrList>\n {
@@ -258,7 +284,7 @@ static int yyread(char *buf,int max_size)
}
<GetQuotedString>. { tmpString+=*yytext; }
<GetBool>[a-zA-Z]+ {
- QString bs=yytext;
+ QCString bs=yytext;
bs=bs.upper();
if (bs=="YES")
*b=TRUE;
@@ -272,11 +298,6 @@ static int yyread(char *buf,int max_size)
bs.data(),yyLineNr);
}
}
- /*
-<GetStrList>[a-z_A-Z.*:?~0-9/\\\-]+ {
- elemStr+=yytext;
- }
- */
<GetStrList>[^ \#\"\$\t\r\n]+ {
elemStr+=yytext;
}
@@ -294,56 +315,122 @@ static int yyread(char *buf,int max_size)
void dumpConfig()
{
- printf("projectName=`%s'\n",projectName.data());
- printf("outputDir=`%s'\n", outputDir.data());
- printf("headerFile=`%s'\n", headerFile.data());
- printf("footerFile=`%s'\n", footerFile.data());
- char *ip=includePath.first();
+ printf("projectName=`%s'\n",Config::projectName.data());
+ printf("outputDir=`%s'\n", Config::outputDir.data());
+ printf("headerFile=`%s'\n", Config::headerFile.data());
+ printf("footerFile=`%s'\n", Config::footerFile.data());
+ char *ip=Config::includePath.first();
while (ip)
{
printf("includePath=`%s'\n",ip);
- ip=includePath.next();
+ ip=Config::includePath.next();
}
- printf("quiet=`%d'\n", quietFlag);
- printf("warnings=`%d'\n", warningFlag);
- char *is=inputSources.first();
+ printf("quiet=`%d'\n", Config::quietFlag);
+ printf("warnings=`%d'\n", Config::warningFlag);
+ char *is=Config::inputSources.first();
while (is)
{
printf("inputSources=`%s'\n",is);
- is=inputSources.next();
+ is=Config::inputSources.next();
}
- char *fp=filePatternList.first();
+ char *fp=Config::filePatternList.first();
while (fp)
{
printf("filePattern=`%s'\n",fp);
- fp=filePatternList.next();
+ fp=Config::filePatternList.next();
}
- printf("recusive=`%d'\n",recursiveFlag);
- printf("inputFilter=`%s'\n",inputFilter.data());
- char *tf=tagFileList.first();
+ printf("recusive=`%d'\n",Config::recursiveFlag);
+ printf("inputFilter=`%s'\n",Config::inputFilter.data());
+ char *tf=Config::tagFileList.first();
while (tf)
{
printf("tagFile=`%s'\n",tf);
- tf=tagFileList.next();
- }
- printf("allExternals=`%d'\n",allExtFlag);
- printf("searchEngine=`%d'\n",searchEngineFlag);
- printf("cgiName=`%s'\n",cgiName.data());
- printf("cgiURL=`%s'\n",cgiURL.data());
- printf("docURL=`%s'\n",docURL.data());
- printf("binAbsPath=`%s'\n",binAbsPath.data());
- char *ed=extDocPathList.first();
+ tf=Config::tagFileList.next();
+ }
+ printf("allExternals=`%d'\n",Config::allExtFlag);
+ printf("searchEngine=`%d'\n",Config::searchEngineFlag);
+ printf("cgiName=`%s'\n",Config::cgiName.data());
+ printf("cgiURL=`%s'\n",Config::cgiURL.data());
+ printf("docURL=`%s'\n",Config::docURL.data());
+ printf("binAbsPath=`%s'\n",Config::binAbsPath.data());
+ char *ed=Config::extDocPathList.first();
while (ed)
{
printf("binAbsPathFile=`%s'\n",ed);
- ed=extDocPathList.next();
+ ed=Config::extDocPathList.next();
}
}
+void Config::init()
+{
+ Config::projectName.resize(0);
+ Config::projectNumber.resize(0);
+ Config::outputDir.resize(0);
+ Config::htmlOutputDir = "html";
+ Config::latexOutputDir ="latex";
+ Config::manOutputDir ="man";
+ Config::outputLanguage = "English";
+ Config::headerFile.resize(0);
+ Config::footerFile.resize(0);
+ Config::cgiName = "search.cgi";
+ Config::cgiURL.resize(0);
+ Config::docURL.resize(0);
+ Config::binAbsPath = "/usr/local/bin/";
+ Config::docAbsPath.resize(0);
+ Config::perlPath = "/usr/bin/perl";
+ Config::genTagFile.resize(0);
+ Config::inputFilter.resize(0);
+ Config::paperType = "a4wide";
+ Config::stripFromPath.resize(0);
+ Config::manExtension = ".3";
+ Config::includePath.clear();
+ Config::examplePath.clear();
+ Config::inputSources.clear();
+ Config::excludeSources.clear();
+ Config::filePatternList.clear();
+ Config::excludePatternList.clear();
+ Config::tagFileList.clear();
+ Config::extDocPathList.clear();
+ Config::predefined.clear();
+ Config::extraPackageList.clear();
+ Config::quietFlag = FALSE;
+ Config::recursiveFlag = FALSE;
+ Config::allExtFlag = FALSE;
+ Config::searchEngineFlag = FALSE;
+ Config::extractAllFlag = FALSE;
+ Config::extractPrivateFlag = FALSE;
+ Config::noIndexFlag = FALSE;
+ Config::hideMemberFlag = FALSE;
+ Config::hideClassFlag = FALSE;
+ Config::macroExpansionFlag = FALSE;
+ Config::onlyPredefinedFlag = FALSE;
+ Config::fullPathNameFlag = FALSE;
+ Config::compactLatexFlag = FALSE;
+ Config::internalDocsFlag = FALSE;
+ Config::caseSensitiveNames = FALSE;
+ Config::includeSourceFlag = FALSE;
+ Config::warningFlag = TRUE;
+ Config::generateHtml = TRUE;
+ Config::generateLatex = TRUE;
+ Config::generateMan = TRUE;
+ Config::preprocessingFlag = TRUE;
+ Config::briefMemDescFlag = TRUE;
+ Config::searchIncludeFlag = TRUE;
+ Config::classDiagramFlag = TRUE;
+ Config::repeatBriefFlag = TRUE;
+ Config::verbatimHeaderFlag = TRUE;
+ Config::htmlAlignMemberFlag = TRUE;
+ Config::autoBriefFlag = TRUE;
+}
+
void writeTemplateConfig(QFile *f,bool sl)
{
QTextStream t(f);
+#ifdef DOXYWIZARD
+ t << "# Doxygen configuration generated by Doxywizard version " << versionString << endl;
+#else
t << "# Doxyfile " << versionString << endl;
+#endif
if (!sl)
{
t << "# This file describes the settings to be used by doxygen for a project\n";
@@ -387,7 +474,8 @@ void writeTemplateConfig(QFile *f,bool sl)
t << "# The OUTPUT_LANGUAGE tag is used to specify the language in which all\n";
t << "# documentation generated by doxygen is written. Doxygen will use this\n";
t << "# information to generate all constant output in the proper language.\n";
- t << "# The default language is English, other supported languages are: Dutch\n";
+ t << "# The default language is English, other supported languages are: \n";
+ t << "# Dutch, French, Italian, Czech, Swedish, German and Japanese\n";
t << "\n";
}
t << "OUTPUT_LANGUAGE = English\n";
@@ -516,11 +604,20 @@ void writeTemplateConfig(QFile *f,bool sl)
t << "# supports case sensitive file names.\n";
t << "\n";
}
+ t << "SOURCE_BROWSER = NO\n";
+ if (!sl)
+ {
+ t << "\n";
+ t << "# If the SOURCE_BROWSER tag is set to YES than the body of a member or\n";
+ t << "# function will be appended as a block of code to the documentation of.\n";
+ t << "# that member or function.\n";
+ t << "\n";
+ }
t << "CASE_SENSE_NAMES = NO\n";
if (!sl)
{
t << "\n";
- t << "# If the VERBATIM_HEADERS tag is set the YES (the default) then Doxygen\n";
+ t << "# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen\n";
t << "# will generate a verbatim copy of the header file for each class for\n";
t << "# which an include is specified. Set to NO to disable this.\n";
t << "\n";
@@ -529,6 +626,16 @@ void writeTemplateConfig(QFile *f,bool sl)
if (!sl)
{
t << "\n";
+ t << "# If the JAVADOC_NO_AUTOBRIEF is set to YES (the default) then Doxygen\n";
+ t << "# will interpret the first line (until the first dot) of a JavaDoc-style\n";
+ t << "# comment as the brief description. If set to NO, the Javadoc-style will\n";
+ t << "# behave just like the Qt-style comments.\n";
+ t << "\n";
+ }
+ t << "JAVADOC_AUTOBRIEF = YES\n";
+ if (!sl)
+ {
+ t << "\n";
t << "#---------------------------------------------------------------------------\n";
t << "# configuration options related to the input files\n";
t << "#---------------------------------------------------------------------------\n";
@@ -817,7 +924,7 @@ void writeTemplateConfig(QFile *f,bool sl)
t << "# interpreter (i.e. the result of `which perl').\n";
t << "\n";
}
- t << "PERL_PATH = /usr/local/bin/perl\n";
+ t << "PERL_PATH = /usr/bin/perl\n";
if (!sl)
{
t << "\n";
@@ -893,147 +1000,154 @@ void checkConfig()
//}
// set default man page extension if non is given by the user
- if (manExtension.isEmpty())
+ if (Config::manExtension.isEmpty())
{
- manExtension=".3";
+ Config::manExtension=".3";
}
- paperType = paperType.lower().stripWhiteSpace();
- if (paperType.isEmpty())
+ Config::paperType = Config::paperType.lower().stripWhiteSpace();
+ if (Config::paperType.isEmpty())
{
- paperType = "a4wide";
+ Config::paperType = "a4wide";
}
- if (paperType!="a4" && paperType!="a4wide" && paperType!="letter" &&
- paperType!="legal" && paperType!="executive")
+ if (Config::paperType!="a4" && Config::paperType!="a4wide" && Config::paperType!="letter" &&
+ Config::paperType!="legal" && Config::paperType!="executive")
{
err("Error: Unknown page type specified");
}
- outputLanguage=outputLanguage.stripWhiteSpace();
- if (outputLanguage.isEmpty())
+ Config::outputLanguage=Config::outputLanguage.stripWhiteSpace();
+ if (Config::outputLanguage.isEmpty())
{
+ Config::outputLanguage = "English";
+#ifndef DOXYWIZARD
setTranslator("English");
+#endif
}
else
{
- if (!setTranslator(outputLanguage))
+#ifndef DOXYWIZARD
+ if (!setTranslator(Config::outputLanguage))
{
- err("Error: Output language %s not supported! Using english instead.\n",
- outputLanguage.data());
+ err("Error: Output language %s not supported! Using English instead.\n",
+ Config::outputLanguage.data());
}
+#endif
}
// Test to see if output directory is valid
- if (outputDir.isEmpty())
- outputDir=QDir::currentDirPath();
+ if (Config::outputDir.isEmpty())
+ Config::outputDir=QDir::currentDirPath();
else
{
- QDir dir(outputDir);
+ QDir dir(Config::outputDir);
if (!dir.exists())
{
dir.setPath(QDir::currentDirPath());
- if (!dir.mkdir(outputDir))
+ if (!dir.mkdir(Config::outputDir))
{
err("Error: tag OUTPUT_DIRECTORY: Output directory `%s' does not "
- "exist and cannot be created\n",outputDir.data());
+ "exist and cannot be created\n",Config::outputDir.data());
exit(1);
}
- else if (!quietFlag)
+ else if (!Config::quietFlag)
{
err("Notice: Output directory `%s' does not exist. "
- "I have created it for you.\n", outputDir.data());
+ "I have created it for you.\n", Config::outputDir.data());
}
- dir.cd(outputDir);
+ dir.cd(Config::outputDir);
}
- outputDir=dir.absPath();
+ Config::outputDir=dir.absPath();
}
- if (htmlOutputDir.isEmpty() && generateHtml)
+ if (Config::htmlOutputDir.isEmpty() && Config::generateHtml)
{
- htmlOutputDir=outputDir+"/html";
+ Config::htmlOutputDir=Config::outputDir+"/html";
}
- else if (htmlOutputDir && htmlOutputDir[0]!='/')
+ else if (Config::htmlOutputDir && Config::htmlOutputDir[0]!='/')
{
- htmlOutputDir.prepend(outputDir+'/');
+ Config::htmlOutputDir.prepend(Config::outputDir+'/');
}
- QDir htmlDir(htmlOutputDir);
- if (!htmlDir.exists() && !htmlDir.mkdir(htmlOutputDir))
+ QDir htmlDir(Config::htmlOutputDir);
+ if (!htmlDir.exists() && !htmlDir.mkdir(Config::htmlOutputDir))
{
- err("Could not create output directory %s\n",htmlOutputDir.data());
+ err("Could not create output directory %s\n",Config::htmlOutputDir.data());
exit(1);
}
- if (latexOutputDir.isEmpty() && generateLatex)
+ if (Config::latexOutputDir.isEmpty() && Config::generateLatex)
{
- latexOutputDir=outputDir+"/latex";
+ Config::latexOutputDir=Config::outputDir+"/latex";
}
- else if (latexOutputDir && latexOutputDir[0]!='/')
+ else if (Config::latexOutputDir && Config::latexOutputDir[0]!='/')
{
- latexOutputDir.prepend(outputDir+'/');
+ Config::latexOutputDir.prepend(Config::outputDir+'/');
}
- QDir latexDir(latexOutputDir);
- if (!latexDir.exists() && !latexDir.mkdir(latexOutputDir))
+ QDir latexDir(Config::latexOutputDir);
+ if (!latexDir.exists() && !latexDir.mkdir(Config::latexOutputDir))
{
- err("Could not create output directory %s\n",latexOutputDir.data());
+ err("Could not create output directory %s\n",Config::latexOutputDir.data());
exit(1);
}
- if (manOutputDir.isEmpty() && generateMan)
+ if (Config::manOutputDir.isEmpty() && Config::generateMan)
{
- manOutputDir=outputDir+"/man";
+ Config::manOutputDir=Config::outputDir+"/man";
}
- else if (manOutputDir && manOutputDir[0]!='/')
+ else if (Config::manOutputDir && Config::manOutputDir[0]!='/')
{
- manOutputDir.prepend(outputDir+'/');
+ Config::manOutputDir.prepend(Config::outputDir+'/');
}
- QDir manDir(manOutputDir);
- if (!manDir.exists() && !manDir.mkdir(manOutputDir))
+ QDir manDir(Config::manOutputDir);
+ if (!manDir.exists() && !manDir.mkdir(Config::manOutputDir))
{
- err("Could not create output directory %s\n",manOutputDir.data());
+ err("Could not create output directory %s\n",Config::manOutputDir.data());
exit(1);
}
// Test to see if HTML header is valid
- if (headerFile.length()>0)
+ if (Config::headerFile.length()>0)
{
- QFileInfo fi(headerFile);
+ QFileInfo fi(Config::headerFile);
if (!fi.exists())
{
err("Error: tag HTML_HEADER: header file `%s' "
- "does not exist\n",headerFile.data());
+ "does not exist\n",Config::headerFile.data());
exit(1);
}
}
// Test to see if HTML footer is valid
- if (footerFile.length()>0)
+ if (Config::footerFile.length()>0)
{
- QFileInfo fi(footerFile);
+ QFileInfo fi(Config::footerFile);
if (!fi.exists())
{
err("Error: tag HTML_FOOTER: footer file `%s' "
- "does not exist\n",footerFile.data());
+ "does not exist\n",Config::footerFile.data());
exit(1);
}
}
// check include path
- char *s=includePath.first();
+ char *s=Config::includePath.first();
while (s)
{
QFileInfo fi(s);
if (!fi.exists()) err("Warning: tag INCLUDE_PATH: include path `%s' "
"does not exist\n",s);
+#ifndef DOXYWIZARD
addSearchDir(fi.absFilePath());
- s=includePath.next();
+#endif
+ s=Config::includePath.next();
}
// check input
- if (inputSources.count()==0)
+ if (Config::inputSources.count()==0)
{
err("Error: tag INPUT: no input files specified after the INPUT tag.\n");
exit(1);
}
else
{
- s=inputSources.first();
+ s=Config::inputSources.first();
while (s)
{
QFileInfo fi(s);
@@ -1042,89 +1156,105 @@ void checkConfig()
err("Error: tag INPUT: input source `%s' does not exist\n",s);
exit(1);
}
- s=inputSources.next();
+ s=Config::inputSources.next();
}
}
// add default pattern if needed
- if (filePatternList.count()==0)
+ if (Config::filePatternList.count()==0)
{
- filePatternList.append("*");
+ Config::filePatternList.append("*");
}
// more checks needed if and only if the search engine is enabled.
- if (searchEngineFlag)
+ if (Config::searchEngineFlag)
{
// check cgi name
- if (cgiName.length()==0)
+ if (Config::cgiName.length()==0)
{
err("Error: tag CGI_NAME: no cgi script name after the CGI_NAME tag.\n");
exit(1);
}
// check cgi URL
- if (cgiURL.length()==0)
+ if (Config::cgiURL.length()==0)
{
err("Error: tag CGI_URL: no URL to cgi directory specified.\n");
exit(1);
}
- else if (cgiURL.left(7)!="http://")
+ else if (Config::cgiURL.left(7)!="http://")
{
err("Error: tag CGI_URL: URL to cgi directory is invalid (must "
"start with http://).\n");
exit(1);
}
// check documentation URL
- if (docURL.length()==0)
+ if (Config::docURL.length()==0)
{
- docURL = outputDir.copy().prepend("file://").append("html");
+ Config::docURL = Config::outputDir.copy().prepend("file://").append("html");
}
- else if (docURL.left(7)!="http://" && docURL.left(7)!="file://")
+ else if (Config::docURL.left(7)!="http://" && Config::docURL.left(7)!="file://")
{
err("Error: tag DOC_URL: URL to documentation is invalid or "
"not absolute.\n");
exit(1);
}
// check absolute documentation path
- if (docAbsPath.length()==0)
+ if (Config::docAbsPath.length()==0)
{
- docAbsPath = outputDir+"/html";
+ Config::docAbsPath = Config::outputDir+"/html";
}
- else if (docAbsPath && docAbsPath[0]!='/')
+ else if (Config::docAbsPath[0]!='/' && Config::docAbsPath[1]!=':')
{
- err("Error: tag DOC_ABSPATH: path is not absolute\n");
+ err("Error: tag DOC_ABSPATH: path is not absolute!\n");
exit(1);
}
// check path to doxysearch
- if (binAbsPath.length()==0)
+ if (Config::binAbsPath.length()==0)
{
err("Error: tag BIN_ABSPATH: no absolute path to doxysearch "
"specified.\n");
exit(1);
}
- else
+ else if (Config::binAbsPath[0]!='/' && Config::binAbsPath[1]!=':')
{
- if (binAbsPath && binAbsPath[0]!='/')
- {
- err("Error: tag BIN_ABSPATH: path is not absolute "
- "(must start with /).\n");
- exit(1);
- }
+ err("Error: tag BIN_ABSPATH: path is not absolute!\n");
+ exit(1);
}
+
// check perl path
- if (perlPath.length()==0)
+ bool found=FALSE;
+ if (Config::perlPath.length()==0)
{
- perlPath="/usr/local/bin/perl";
+ QFileInfo fi;
+ fi.setFile("/usr/bin/perl");
+ if (fi.exists())
+ {
+ Config::perlPath="/usr/bin/perl";
+ found=TRUE;
+ }
+ else
+ {
+ fi.setFile("/usr/local/bin/perl");
+ if (fi.exists())
+ {
+ Config::perlPath="/usr/local/bin/perl";
+ found=TRUE;
+ }
+ }
}
- QFileInfo fi(perlPath);
- if (!fi.exists())
+ if (!found)
{
- err("Error: tag PERL_PATH: perl interpreter not found at `%s'\n",
- perlPath.data());
- exit(1);
+ QFileInfo fi(Config::perlPath);
+ if (!fi.exists())
+ {
+ warn("Warning: tag PERL_PATH: perl interpreter not found at default or"
+ "user specified (%s) location\n",
+ Config::perlPath.data());
+ }
}
}
}
-void parseConfig(const QString &s)
+void parseConfig(const QCString &s)
{
inputString = s;
inputPosition = 0;
@@ -1132,9 +1262,8 @@ void parseConfig(const QString &s)
configYYrestart( configYYin );
BEGIN( Start );
configYYlex();
- checkConfig();
}
-extern "C" { // some bogus code to keep the compiler happy
- int configYYwrap() { return 1 ; }
-}
+//extern "C" { // some bogus code to keep the compiler happy
+// int configYYwrap() { return 1 ; }
+//}
diff --git a/src/constexp.h b/src/constexp.h
index 9979bfd..8c33a5e 100644
--- a/src/constexp.h
+++ b/src/constexp.h
@@ -18,13 +18,13 @@
#ifndef _CONSTEXP_H
#define _CONSTEXP_H
-#include <qstring.h>
+#include "qtbc.h"
#include "cppvalue.h"
-extern bool parseCppExpression(const QString &s);
+extern bool parseCppExpression(const QCString &s);
extern int cppExpYYparse();
extern int cppExpYYdebug;
-extern QString strToken;
+extern QCString strToken;
extern CPPValue resultValue;
#endif
diff --git a/src/constexp.l b/src/constexp.l
index f023507..43c7167 100644
--- a/src/constexp.l
+++ b/src/constexp.l
@@ -24,7 +24,7 @@
#define YY_NO_UNPUT
#define YY_NEVER_INTERACTIVE 1
-QString strToken;
+QCString strToken;
static const char *inputString;
static int inputPosition;
@@ -94,7 +94,7 @@ static int yyread(char *buf,int max_size)
%%
-bool parseCppExpression(const QString &s)
+bool parseCppExpression(const QCString &s)
{
//printf("Expression: `%s'\n",s.data());
inputString = s;
diff --git a/src/debug.cpp b/src/debug.cpp
index fc2731d..d7f1ba8 100644
--- a/src/debug.cpp
+++ b/src/debug.cpp
@@ -14,10 +14,11 @@
*
*/
-#include "debug.h"
#include <stdarg.h>
#include <stdio.h>
-#include <qstring.h>
+
+#include "qtbc.h"
+#include "debug.h"
Debug::DebugMask Debug::curMask = Debug::Quiet;
int Debug::curPrio = 0;
@@ -35,7 +36,7 @@ void Debug::print(DebugMask mask,int prio,const char *fmt,...)
static int labelToEnumValue(const char *l)
{
- QString label=l;
+ QCString label=l;
if (label=="FindMembers")
return Debug::FindMembers;
else if (label=="Functions")
diff --git a/src/declinfo.h b/src/declinfo.h
index 4ec3ec5..df206e0 100644
--- a/src/declinfo.h
+++ b/src/declinfo.h
@@ -17,16 +17,16 @@
#ifndef DECLINFO_H
#define DECLINFO_H
+#include "qtbc.h"
#include <stdio.h>
-#include <qstring.h>
-extern void parseFuncDecl(const QString &decl,
- QString &clName,
- QString &classTempList,
- QString &type,
- QString &name,
- QString &args,
- QString &funcTempList,
- QString &exceptions
+extern void parseFuncDecl(const QCString &decl,
+ QCString &clName,
+ QCString &classTempList,
+ QCString &type,
+ QCString &name,
+ QCString &args,
+ QCString &funcTempList,
+ QCString &exceptions
);
#endif
diff --git a/src/declinfo.l b/src/declinfo.l
index 0f0505d..dfa3e47 100644
--- a/src/declinfo.l
+++ b/src/declinfo.l
@@ -37,18 +37,18 @@
static const char * inputString;
static int inputPosition;
-static QString scope;
-static QString className;
-static QString classTempList;
-static QString funcTempList;
-static QString type;
-static QString name;
-static QString args;
-static QString tmpType;
+static QCString scope;
+static QCString className;
+static QCString classTempList;
+static QCString funcTempList;
+static QCString type;
+static QCString name;
+static QCString args;
+static QCString tmpType;
static int sharpCount;
static bool classTempListFound;
static bool funcTempListFound;
-static QString exceptionString;
+static QCString exceptionString;
static void addType()
{
@@ -95,6 +95,8 @@ static int yyread(char *buf,int max_size)
B [ \t]
ID [a-z_A-Z][a-z_A-Z0-9]*
+%option noyywrap
+
%x Start
%x Template
%x ReadArgs
@@ -198,8 +200,8 @@ ID [a-z_A-Z][a-z_A-Z0-9]*
/*@ ----------------------------------------------------------------------------
*/
-void parseFuncDecl(const QString &decl,QString &cl,QString &ctl,QString &t,
- QString &n,QString &a,QString &ftl,QString &exc)
+void parseFuncDecl(const QCString &decl,QCString &cl,QCString &ctl,QCString &t,
+ QCString &n,QCString &a,QCString &ftl,QCString &exc)
{
inputString = decl;
//printf("Input=`%s'\n",inputString);
@@ -221,17 +223,18 @@ void parseFuncDecl(const QString &decl,QString &cl,QString &ctl,QString &t,
declinfoYYlex();
cl=scope.copy();
- int i;
- if ((i=cl.find('<'))!=-1) // split up scope and template arguments
+ int il,ir;
+ if ((il=cl.find('<'))!=-1 && (ir=cl.findRev('>'))!=-1) // split up scope and template arguments
{
- ctl=removeRedundantWhiteSpace(cl.right(cl.length()-i));
- cl=cl.left(i);
+ if (ir==-1) ir=cl.length(); else ir++;
+ ctl=removeRedundantWhiteSpace(cl.mid(il,ir-il));
+ cl=cl.left(il)+cl.right(cl.length()-ir);
}
n=removeRedundantWhiteSpace(name);
- if ((i=n.find('<'))!=-1 && n.left(8)!="operator")
+ if ((il=n.find('<'))!=-1 && n.left(8)!="operator")
{
- ftl=removeRedundantWhiteSpace(n.right(n.length()-i));
- n=n.left(i);
+ ftl=removeRedundantWhiteSpace(n.right(n.length()-il));
+ n=n.left(il);
}
//ctl=classTempList.copy();
@@ -253,20 +256,20 @@ void parseFuncDecl(const QString &decl,QString &cl,QString &ctl,QString &t,
}
-extern "C" { // some bogus code to keep the compiler happy
- int declinfoYYwrap() { return 1 ; }
- void declinfoYYdummy() { yy_flex_realloc(0,0); }
-}
+//extern "C" { // some bogus code to keep the compiler happy
+// int declinfoYYwrap() { return 1 ; }
+// void declinfoYYdummy() { yy_flex_realloc(0,0); }
+//}
#if 0
void dumpDecl(const char *s)
{
- QString className;
- QString classTNames;
- QString type;
- QString name;
- QString args;
- QString funcTNames;
+ QCString className;
+ QCString classTNames;
+ QCString type;
+ QCString name;
+ QCString args;
+ QCString funcTNames;
printf("-----------------------------------------\n");
parseFuncDecl(s,className,classTNames,type,name,args,funcTNames);
printf("type=`%s' class=`%s' classTempl=`%s' name=`%s' "
diff --git a/src/defargs.h b/src/defargs.h
index d2cd8f2..70e901c 100644
--- a/src/defargs.h
+++ b/src/defargs.h
@@ -17,8 +17,8 @@
#ifndef DEFARGS_H
#define DEFARGS_H
+#include "qtbc.h"
#include <stdio.h>
-#include <qstring.h>
class ArgumentList;
diff --git a/src/defargs.l b/src/defargs.l
index b7dfd57..d82c2fe 100644
--- a/src/defargs.l
+++ b/src/defargs.l
@@ -19,6 +19,7 @@
/*
* includes
*/
+#include "qtbc.h"
#include <stdio.h>
#include <iostream.h>
#include <assert.h>
@@ -40,10 +41,10 @@
static const char *inputString;
static int inputPosition;
static ArgumentList *argList;
-static QString *copyArgValue;
-static QString curArgTypeName;
-static QString curArgDefValue;
-static QString curArgName;
+static QCString *copyArgValue;
+static QCString curArgTypeName;
+static QCString curArgDefValue;
+static QCString curArgName;
static int argRoundCount;
static int argSharpCount;
static int argCurlyCount;
@@ -72,6 +73,8 @@ static int yyread(char *buf,int max_size)
B [ \t]
ID [a-z_A-Z][a-z_A-Z0-9]*
+%option noyywrap
+
%x Start
%x CopyArgString
%x CopyArgRound
@@ -239,7 +242,7 @@ ID [a-z_A-Z][a-z_A-Z0-9]*
}
}
<ReadFuncArgType,ReadFuncArgPtr>{ID} {
- QString name=yytext; //resolveDefines(yytext);
+ QCString name=yytext; //resolveDefines(yytext);
//printf("resolveName `%s'->`%s'\n",yytext,name.data());
curArgTypeName+=name;
}
@@ -250,7 +253,7 @@ ID [a-z_A-Z][a-z_A-Z0-9]*
curArgDefValue+=*yytext;
}
<CopyArgRound,CopyArgRound2,CopyArgSharp,CopyArgCurly>{ID} {
- QString name=yytext; //resolveDefines(yytext);
+ QCString name=yytext; //resolveDefines(yytext);
*copyArgValue+=name;
}
<CopyArgRound,CopyArgRound2,CopyArgSharp,CopyArgCurly>. {
@@ -293,6 +296,6 @@ void stringToArgumentList(const char *argsString,ArgumentList* &al)
}
extern "C" { // some bogus code to keep the compiler happy
- int defargsYYwrap() { return 1 ; }
+// int defargsYYwrap() { return 1 ; }
void defargsYYdummy() { yy_flex_realloc(0,0); }
}
diff --git a/src/define.cpp b/src/define.cpp
index 2fa7fa4..336d6da 100644
--- a/src/define.cpp
+++ b/src/define.cpp
@@ -39,5 +39,5 @@ Define::~Define()
bool Define::hasDocumentation()
{
- return definition && (doc || extractAllFlag);
+ return definition && (doc || Config::extractAllFlag);
}
diff --git a/src/define.h b/src/define.h
index 14ac008..92027af 100644
--- a/src/define.h
+++ b/src/define.h
@@ -17,8 +17,8 @@
#ifndef DEFINE_H
#define DEFINE_H
+#include "qtbc.h"
#include <qdict.h>
-#include <qstring.h>
#include "util.h"
class FileDef;
@@ -30,13 +30,13 @@ class Define
Define(const Define &d);
~Define();
bool hasDocumentation();
- QString name;
- QString definition;
- QString fileName;
- QString doc;
- QString brief;
- QString args;
- QString anchor;
+ QCString name;
+ QCString definition;
+ QCString fileName;
+ QCString doc;
+ QCString brief;
+ QCString args;
+ QCString anchor;
FileDef *fileDef;
int lineNr;
int nargs;
@@ -67,7 +67,7 @@ class DefineName : public QList<Define>
}
private:
- QString name;
+ QCString name;
};
class DefineNameList : public QList<DefineName>
diff --git a/src/definition.cpp b/src/definition.cpp
index 328bebe..4474113 100644
--- a/src/definition.cpp
+++ b/src/definition.cpp
@@ -14,6 +14,7 @@
*
*/
+#include "qtbc.h"
#include <ctype.h>
#include "definition.h"
#include "doxygen.h"
@@ -28,23 +29,23 @@ Definition::~Definition()
delete sectionList;
}
-QString Definition::nameToFile(const char *name)
+QCString Definition::nameToFile(const char *name)
{
- QString result;
+ QCString result;
char c;
const char *p=name;
while ((c=*p++)!=0)
{
switch(c)
{
- case ':': break;
+ case ':': result+="_"; break;
case '<': result+="_lt"; break;
case '>': result+="_gt"; break;
case '*': result+="_ast"; break;
case '&': result+="_amp"; break;
case ' ': break;
default:
- if (caseSensitiveNames)
+ if (Config::caseSensitiveNames)
result+=c;
else
result+=tolower(c);
@@ -54,10 +55,10 @@ QString Definition::nameToFile(const char *name)
return result;
}
-void Definition::addSectionsToDefinition(QList<QString> *anchorList)
+void Definition::addSectionsToDefinition(QList<QCString> *anchorList)
{
if (!anchorList) return;
- QString *s=anchorList->first();
+ QCString *s=anchorList->first();
while (s)
{
SectionInfo *si=0;
diff --git a/src/definition.h b/src/definition.h
index 48301bc..282ecdc 100644
--- a/src/definition.h
+++ b/src/definition.h
@@ -17,7 +17,7 @@
#ifndef DEFINITION_H
#define DEFINITION_H
-#include <qstring.h>
+#include "qtbc.h"
#include <qlist.h>
#include "config.h"
#include "section.h"
@@ -31,13 +31,13 @@ class Definition
//! destroys the definition
virtual ~Definition();
//! returns the name of the definition
- QString name() const { return n; }
+ QCString name() const { return n; }
//! returns the base name of the output file that contains this definition.
- virtual QString getOutputFileBase() const = 0;
+ virtual QCString getOutputFileBase() const = 0;
//! returns the detailed description of this definition
- QString documentation() const { return doc; }
+ QCString documentation() const { return doc; }
//! returns the brief description of this definition
- QString briefDescription() const { return brief; }
+ QCString briefDescription() const { return brief; }
//! sets a new name for the definition
void setName(const char *name) { n=name; }
//! sets the documentation of this definition
@@ -54,16 +54,16 @@ class Definition
brief.at(bl-1)!='?') brief+='.';
}
//! returns TRUE iff the definition is documented
- bool hasDocumentation()
- { return !doc.isNull() || !brief.isNull() || extractAllFlag; }
- QString nameToFile(const char *name);
+ virtual bool hasDocumentation()
+ { return !doc.isNull() || !brief.isNull() || Config::extractAllFlag; }
+ QCString nameToFile(const char *name);
- void addSectionsToDefinition(QList<QString> *anchorList);
+ void addSectionsToDefinition(QList<QCString> *anchorList);
private:
- QString n; // name of the definition
- QString brief; // brief description
- QString doc; // detailed description
+ QCString n; // name of the definition
+ QCString brief; // brief description
+ QCString doc; // detailed description
SectionList *sectionList; // list of all sections
};
diff --git a/src/diagram.cpp b/src/diagram.cpp
index 87d5488..8cbe128 100644
--- a/src/diagram.cpp
+++ b/src/diagram.cpp
@@ -15,10 +15,10 @@
*
*/
+#include "qtbc.h"
#include <stdio.h>
#include <stdlib.h>
#include <qlist.h>
-#include <qstring.h>
#include <qarray.h>
#include <qtstream.h>
#include <qfile.h>
@@ -43,9 +43,9 @@ const uint labelVertSpacing = 32; // vertical distance between labels
const uint labelHorMargin = 6; // horiz. spacing between label and box
const uint fontHeight = 12; // height of a character
-//static QString escapeLatex(const char *s)
+//static QCString escapeLatex(const char *s)
//{
-// QString result;
+// QCString result;
// char c;
// while ((c=*s++))
// {
@@ -77,7 +77,7 @@ static uint protToColor(Protection p)
return 0;
}
-static QString protToString(Protection p)
+static QCString protToString(Protection p)
{
switch(p)
{
@@ -180,12 +180,12 @@ DiagramItem::~DiagramItem()
delete children;
}
-QString DiagramItem::label() const
+QCString DiagramItem::label() const
{
return classDef->name()+templSpec;
}
-QString DiagramItem::fileName() const
+QCString DiagramItem::fileName() const
{
return classDef->getOutputFileBase();
}
@@ -960,10 +960,10 @@ void ClassDiagram::writeFigure(QTextStream &output,const char *path,
//printf("writeFigure rows=%d cols=%d\n",rows,cols);
- QFile f1((QString)path+"/"+fileName+".eps");
+ QFile f1((QCString)path+"/"+fileName+".eps");
if (!f1.open(IO_WriteOnly))
{
- err("Could not open file %s for writing\n",f1.name());
+ err("Could not open file %s for writing\n",convertToQCString(f1.name()).data());
exit(1);
}
QTextStream t(&f1);
@@ -1229,7 +1229,7 @@ void ClassDiagram::writeImageMap(QTextStream &t,const char *path,
base->drawConnectors(t,&image,TRUE,TRUE,baseRows,superRows,cellWidth,cellHeight);
super->drawConnectors(t,&image,FALSE,TRUE,baseRows,superRows,cellWidth,cellHeight);
- image.save((QString)path+"/"+fileName+".gif");
+ image.save((QCString)path+"/"+fileName+".gif");
t << "</MAP></P>" << endl;
}
diff --git a/src/diagram.h b/src/diagram.h
index 5bc30f8..792aa8f 100644
--- a/src/diagram.h
+++ b/src/diagram.h
@@ -15,6 +15,7 @@
*
*/
+#include "qtbc.h"
#include "entry.h"
class ClassDef;
@@ -30,8 +31,8 @@ class DiagramItem
DiagramItem(DiagramItem *p,int number,ClassDef *cd,
Protection prot,Specifier virt,const char *ts);
~DiagramItem();
- QString label() const;
- QString fileName() const;
+ QCString label() const;
+ QCString fileName() const;
DiagramItem *parentItem() { return parent; }
DiagramItemList *getChildren() { return children; }
void move(int dx,int dy) { x+=dx; y+=dy; }
@@ -53,7 +54,7 @@ class DiagramItem
int num;
Protection prot;
Specifier virt;
- QString templSpec;
+ QCString templSpec;
bool inList;
ClassDef *classDef;
};
diff --git a/src/doxygen.cpp b/src/doxygen.cpp
index 8c11c0b..76518ba 100644
--- a/src/doxygen.cpp
+++ b/src/doxygen.cpp
@@ -15,7 +15,7 @@
*
*/
-#include <qstring.h>
+#include "qtbc.h"
#include <qfileinf.h>
#include <qfile.h>
#include <qdir.h>
@@ -109,6 +109,7 @@ QTextStream tagFile;
void addMemberDocs(Entry *root,MemberDef *md, const char *funcDecl,
bool over_load);
+const char idMask[] = "[A-Za-z_][A-Za-z_0-9]*";
//----------------------------------------------------------------------
// Returns the standard string that is generated when the \overload
@@ -166,8 +167,8 @@ void buildGroupList(Entry *root)
//
// if ((gd=groupDict[root->name]))
// {
-// QListIterator<QString> sli(*root->groups);
-// QString *s;
+// QListIterator<QCString> sli(*root->groups);
+// QCString *s;
// for (;(s=sli.current());++sli)
// {
// GroupDef *pgd;
@@ -192,7 +193,7 @@ void buildGroupList(Entry *root)
void buildFileList(Entry *root)
{
if (((root->section==Entry::FILEDOC_SEC) ||
- ((root->section & Entry::FILE_MASK) && extractAllFlag)) &&
+ ((root->section & Entry::FILE_MASK) && Config::extractAllFlag)) &&
root->name.length()>0
)
{
@@ -212,8 +213,8 @@ void buildFileList(Entry *root)
fd->setDocumentation(root->doc);
fd->setBriefDescription(root->brief);
fd->addSectionsToDefinition(root->anchors);
- QListIterator<QString> sli(*root->groups);
- QString *s;
+ QListIterator<QCString> sli(*root->groups);
+ QCString *s;
for (;(s=sli.current());++sli)
{
GroupDef *gd=0;
@@ -307,11 +308,11 @@ void addIncludeFile(ClassDef *cd,FileDef *ifd,Entry *root)
/*! Input is a scopeName, output is the scopename split into a
* namespace part (as large as possible) and a classname part.
*/
-void extractNamespaceName(const QString &scopeName,
- QString &className,QString &namespaceName)
+void extractNamespaceName(const QCString &scopeName,
+ QCString &className,QCString &namespaceName)
{
- QString clName=scopeName.copy();
- QString nsName;
+ QCString clName=scopeName.copy();
+ QCString nsName;
if (clName.length()>0 && namespaceDict[clName])
{ // the whole name is a namespace
namespaceName=clName.copy();
@@ -346,7 +347,9 @@ static bool addNamespace(Entry *root,ClassDef *cd)
if (e->section==Entry::NAMESPACE_SEC)
{
NamespaceDef *nd=0;
- if (!e->name.isEmpty() && (nd=namespaceDict[e->name]))
+ if (!e->name.isEmpty() && e->name.at(0)!='@' &&
+ (nd=namespaceDict[e->name])
+ )
{
cd->setNamespace(nd);
nd->insertClass(cd);
@@ -359,6 +362,7 @@ static bool addNamespace(Entry *root,ClassDef *cd)
return FALSE;
}
+
//----------------------------------------------------------------------
// build a list of all classes mentioned in the documentation
// and all classes that have a documentation block before their definition.
@@ -370,7 +374,7 @@ void buildClassList(Entry *root)
root->name.length()>0
)
{
- QString fullName=root->name.copy();
+ QCString fullName=root->name.copy();
if (fullName.length()==0)
{
// this should not be called
@@ -379,19 +383,7 @@ void buildClassList(Entry *root)
}
else
{
- //QString className;
- //QString namespaceName;
- //extractNamespaceName(fullName,className,namespaceName);
-
- //printf("Found class %s in %s at line %d\n",fullName.data(),
- // root->fileName.data(),root->startLine);
- // add class name substitution entry iff the class name is alterned by a
- // define. This is needed to properly document Qt's template classes
- // (although, it's quite general)
- //if (resolveDefines(fullName)!=fullName)
- //{
- // substituteDict.insert(resolveDefines(fullName),new QString(fullName));
- //}
+ fullName=stripAnnonymousScope(fullName);
bool ambig;
ClassDef *cd;
@@ -427,13 +419,7 @@ void buildClassList(Entry *root)
}
addNamespace(root,cd);
}
- else if (fullName[0]!='@' /* &&
- (root->doc.length()>0 ||
- root->brief.length()>0 ||
- extractAllFlag
- )*/
- )
- // new class
+ else // new class
{
ClassDef::CompoundType sec=ClassDef::Class;
switch(root->section)
@@ -448,13 +434,12 @@ void buildClassList(Entry *root)
ClassDef *cd=new ClassDef(fullName,sec);
cd->setDocumentation(root->doc); // copy docs to definition
cd->setBriefDescription(root->brief);
- //printf("new ClassDef tempArgList=%p\n",root->tArgList);
cd->setTemplateArguments(root->tArgList);
cd->setProtection(root->protection);
cd->addSectionsToDefinition(root->anchors);
- QListIterator<QString> sli(*root->groups);
- QString *s;
+ QListIterator<QCString> sli(*root->groups);
+ QCString *s;
for (;(s=sli.current());++sli)
{
GroupDef *gd=0;
@@ -475,7 +460,7 @@ void buildClassList(Entry *root)
// if the class is not in a namespace then we insert
// it in the file definition
if (!found && ifd) ifd->insertClass(cd);
-
+
// the empty string test is needed for extract all case
cd->setBriefDescription(root->brief);
cd->insertUsedFile(root->fileName);
@@ -506,7 +491,7 @@ void buildNamespaceList(Entry *root)
root->name.length()>0
)
{
- QString fullName=root->name.copy();
+ QCString fullName=root->name.copy();
if (fullName.length()==0)
{
// this should not be called
@@ -549,7 +534,7 @@ void buildNamespaceList(Entry *root)
}
else /* if (root->doc.length()>0 ||
root->brief.length()>0 ||
- extractAllFlag
+ Config::extractAllFlag
)
*/
{
@@ -558,8 +543,8 @@ void buildNamespaceList(Entry *root)
nd->setBriefDescription(root->brief);
nd->addSectionsToDefinition(root->anchors);
- QListIterator<QString> sli(*root->groups);
- QString *s;
+ QListIterator<QCString> sli(*root->groups);
+ QCString *s;
for (;(s=sli.current());++sli)
{
GroupDef *gd=0;
@@ -645,35 +630,29 @@ void buildVarList(Entry *root)
}
}
- QString scope,name=root->name.copy();
+ QCString scope,name=root->name.copy();
bool stat=root->stat;
- ClassDef *cd=0;
Entry *p = root->parent;
- while ((p->section & Entry::COMPOUND_MASK) ||
- p->section==Entry::NAMESPACE_SEC)
+ while ((p->section & Entry::SCOPE_MASK))
{
- if (p->name.length()>0 && p->name[0]!='@')
+ QCString scopeName = stripAnnonymousScope(p->name);
+ if (!scopeName.isEmpty())
{
- if (!scope.isEmpty()) scope.prepend("::");
- scope.prepend(p->name);
+ scope.prepend(scopeName);
break;
}
+ //if (p->name.length()>0 && p->name[0]!='@')
+ //{
+ // if (!scope.isEmpty()) scope.prepend("::");
+ // scope.prepend(p->name);
+ // break;
+ //}
p=p->parent;
}
//printf("scope=%s\n",scope.data());
int ni;
-#if 0
- if ((ni=root->name.findRev("::"))!=-1)
- {
- if (scope.length()>0) scope+="::";
- scope+=root->name.left(ni);
- name=root->name.right(root->name.length()-ni-2);
- stat=TRUE;
- }
-#endif
-
if ((ni=root->name.findRev("::"))!=-1) goto nextMember;
/* skip this member, because it is a
* static variable definition (always?), which will be
@@ -684,7 +663,7 @@ void buildVarList(Entry *root)
MemberDef::MemberType mtype;
// NamespaceDef *nd = 0;
- QString type=root->type.stripWhiteSpace();
+ QCString type=root->type.stripWhiteSpace();
if (type=="@")
mtype=MemberDef::EnumValue;
else if (type.left(8)=="typedef ")
@@ -694,6 +673,7 @@ void buildVarList(Entry *root)
else
mtype=MemberDef::Variable;
+ ClassDef *cd=0;
if (scope.length()>0 && name.length()>0 && (cd=getClass(scope)))
{
@@ -712,7 +692,7 @@ void buildVarList(Entry *root)
// scope+=cd->getTemplateNameString();
//}
// generate member definition.
- QString def;
+ QCString def;
if (root->type.length()>0)
{
if (mtype==MemberDef::Friend)
@@ -743,23 +723,6 @@ void buildVarList(Entry *root)
if (md->memberClass()==cd) // member already in the scope
{
addMemberDocs(root,md,def,FALSE);
-
-#if 0
- // always trust the most protected scope, so adjust if needed
- // This is needed to properly place static private variables,
- // which are defined in a `public' scope.
- printf("Checking protection level\n");
- if (root->protection==Private || md->protection()!=Private)
- {
- printf("Set to private\n");
- md->setProtection(Private);
- }
- else if (root->protection==Protected && md->protection()==Public)
- {
- printf("Set to protected\n");
- md->setProtection(Protected);
- }
-#endif
found=TRUE;
}
md=mn->next();
@@ -802,56 +765,6 @@ void buildVarList(Entry *root)
cd->insertUsedFile(root->fileName);
}
}
-#if 0
- else if (scope.length()>0 && name.length()>0 && (nd=namespaceDict[scope]))
- {
- Debug::print(Debug::Variables,0,
- " namespace variable:\n"
- " type=`%s' scope=`%s' name=`%s' args=`%s' prot=`%d\n",
- root->type.data(),
- scope.data(),
- name.data(),
- root->args.data(),
- root->protection
- );
- // new global variable, enum value or typedef
- MemberDef *md=new MemberDef(root->type,name,root->args,0,
- Public, Normal,root->stat,FALSE,
- mtype,0,0);
- md->setDefFile(root->fileName);
- md->setDefLine(root->startLine);
- md->setDocumentation(root->doc);
- md->setBriefDescription(root->brief);
- md->addSectionsToDefinition(root->anchors);
- QString def;
- nd->insertMember(md);
- md->setNamespace(nd);
- if (root->type.length()>0)
- {
- def=root->type+" "+nd->name()+"::"+name+root->args;
- }
- else
- {
- def=nd->name()+"::"+name+root->args;
- }
- if (def.left(7)=="static ") def=def.right(def.length()-7);
- md->setDefinition(def);
-
- MemberName *mn;
- // add member definition to the list of globals
- if ((mn=namespaceNameDict[name]))
- {
- mn->inSort(md);
- }
- else
- {
- mn = new MemberName(name);
- mn->inSort(md);
- namespaceNameDict.insert(name,mn);
- namespaceNameList.inSort(mn);
- }
- }
-#endif
else if (name.length()>0) // global variable
{
Debug::print(Debug::Variables,0,
@@ -873,15 +786,15 @@ void buildVarList(Entry *root)
md->setDocumentation(root->doc);
md->setBriefDescription(root->brief);
md->addSectionsToDefinition(root->anchors);
- QString def;
+ QCString def;
// see if the function is inside a namespace
NamespaceDef *nd = 0;
- if (root->parent->section == Entry::NAMESPACE_SEC )
+ if (scope.length()>0)
{
- nd = namespaceDict[root->parent->name];
+ nd = namespaceDict[scope];
}
- if (nd)
+ if (nd && !nd->name().isEmpty() && nd->name().at(0)!='@')
{
nd->insertMember(md);
md->setNamespace(nd);
@@ -901,8 +814,8 @@ void buildVarList(Entry *root)
}
// determine the definition of the global variable
- if (nd) // variable is inside a namespace, so put the scope
- // before the name
+ if (nd && !nd->name().isEmpty() && nd->name().at(0)!='@')
+ // variable is inside a namespace, so put the scope before the name
{
if (root->type.length()>0)
{
@@ -961,20 +874,20 @@ void buildMemberList(Entry *root)
{
Debug::print(Debug::Functions,0,
"FUNCTION_SEC:\n"
- " `%s' `%s'::`%s' `%s' relates=`%s' file=`%s' #targs=%d\n",
+ " `%s' `%s'::`%s' `%s' relates=`%s' file=`%s' #targs=%d docs=`%s'\n",
root->type.data(),
root->parent->name.data(),
root->name.data(),
root->args.data(),
root->relates.data(),
root->fileName.data(),
- root->tArgList ? (int)root->tArgList->count() : -1
+ root->tArgList ? (int)root->tArgList->count() : -1,
+ root->doc.data()
);
bool isFriend=root->type.find("friend ")!=-1;
- //if (isFriend && root->relates.length()==0)
- // root->relates=root->parent->name.copy();
- if (root->name.length()>0 /* && !isFriend */)
+
+ if (root->name.length()>0)
{
ClassDef *cd=0;
@@ -983,11 +896,12 @@ void buildMemberList(Entry *root)
//printf("root->parent=`%s' cd=%p root->type.find(re,0)=%d\n",
// root->parent->name.data(),getClass(root->parent->name),
// root->type.find(re,0));
+ QCString scope=stripAnnonymousScope(root->parent->name.copy());
int i;
if (root->parent &&
root->parent->name.length()>0 &&
(root->parent->section & Entry::COMPOUND_MASK) &&
- (cd=getClass(root->parent->name)) &&
+ (cd=getClass(scope)) &&
// do some fuzzy things to exclude function pointers
(root->type.isNull() || root->type.find(re,0)==-1 ||
root->type.find(")(")!=-1 || root->type.find("operator")!=-1
@@ -1001,7 +915,7 @@ void buildMemberList(Entry *root)
root->type=root->type.left(i+l);
}
- QString name=removeRedundantWhiteSpace(root->name);
+ QCString name=removeRedundantWhiteSpace(root->name);
if (name.left(2)=="::") name=name.right(name.length()-2);
MemberDef::MemberType mtype;
@@ -1009,7 +923,16 @@ void buildMemberList(Entry *root)
else if (root->sig) mtype=MemberDef::Signal;
else if (root->slot) mtype=MemberDef::Slot;
else mtype=MemberDef::Function;
- // new member of function, signal or slot.
+
+ //if (Config::includeSourceFlag && !root->body.isEmpty())
+ //{
+ // printf("Function: %s\n-----------------\n%s\n------------------\n",
+ // root->name.data(),root->body.data());
+ //}
+
+ // new member function, signal or slot.
+ //printf("new member: %s class template args=`%s'\n",
+ // root->args.data(),argListToString(cd->templateArguments()).data());
MemberDef *md=new MemberDef(root->type,name,root->args,root->exception,
root->protection,root->virt,root->stat,root->relates.length()>0,
mtype,root->tArgList,root->argList);
@@ -1018,8 +941,10 @@ void buildMemberList(Entry *root)
md->setDefLine(root->startLine);
md->setDocumentation(root->doc);
md->setBriefDescription(root->brief);
+ md->setBody(root->body);
+ //md->setScopeTemplateArguments(cd->templateArguments());
md->addSectionsToDefinition(root->anchors);
- QString def;
+ QCString def;
if (root->relates.length()>0 || isFriend)
{
if (root->type.length()>0)
@@ -1047,7 +972,6 @@ void buildMemberList(Entry *root)
}
else
{
- QString scope=root->parent->name.copy();
if (root->type.length()>0)
{
if (root->argList)
@@ -1110,7 +1034,9 @@ void buildMemberList(Entry *root)
!(root->parent->section & Entry::COMPOUND_MASK) &&
root->name.find("::")==-1 &&
root->relates.length()==0 &&
- root->type.left(7)!="extern ")
+ root->type.left(7)!="extern " &&
+ root->type.left(8)!="typedef "
+ )
// no member => unrelated function
{
/* check the uniqueness of the function name in the file.
@@ -1153,7 +1079,7 @@ void buildMemberList(Entry *root)
// root->type.data(),root->name.data(),root->args.data());
// new global function
- QString name=removeRedundantWhiteSpace(root->name);
+ QCString name=removeRedundantWhiteSpace(root->name);
MemberDef *md=new MemberDef(root->type,name,root->args,root->exception,
root->protection,root->virt,root->stat,FALSE,
MemberDef::Function,root->tArgList,root->argList);
@@ -1162,8 +1088,9 @@ void buildMemberList(Entry *root)
md->setDocumentation(root->doc);
md->setBriefDescription(root->brief);
md->setPrototype(root->proto);
+ md->setBody(root->body);
md->addSectionsToDefinition(root->anchors);
- QString def;
+ QCString def;
if (root->type.length()>0)
{
if (root->argList)
@@ -1205,7 +1132,8 @@ void buildMemberList(Entry *root)
{
nd = namespaceDict[root->parent->name];
}
- if (nd)
+
+ if (nd && !nd->name().isEmpty() && nd->name().at(0)!='@')
{
nd->insertMember(md);
md->setNamespace(nd);
@@ -1386,22 +1314,23 @@ void computeClassRelations(Entry *root)
if (!cd->visited)
{
cd->visited=TRUE; // mark class as used (in case the are multiple classes
- // with the same name!)
+ // with the same name!)
if (root->extends->count()>0) // there are base classes
{
- QString scopePrefix;
+ QCString scopePrefix;
Entry *p=root->parent;
+ bool found=FALSE;
// For nested classes the base class could also be nested!
// To find the correct scope, we try to prepend the scope to the base
// name, starting with the largest, most inner scope.
- while (p->section&Entry::COMPOUND_MASK)
+ while (p->section&Entry::COMPOUND_MASK && !found)
{
scopePrefix=p->name+"::";
QList<BaseInfo> *baseList=root->extends;
BaseInfo *bi=baseList->first();
- while (bi) // for each base class
+ while (bi && !found) // for each base class
{
- QString cName=scopePrefix+bi->name;
+ QCString cName=scopePrefix+bi->name;
//printf("Base class %s\n",cName.data());
ClassDef *baseClass=getClass(cName);
if (baseClass) // base class is documented
@@ -1411,6 +1340,7 @@ void computeClassRelations(Entry *root)
cd->insertBaseClass(baseClass,bi->prot,bi->virt);
// add this class as super class to the base class
baseClass->insertSuperClass(cd,bi->prot,bi->virt);
+ found=TRUE;
}
//else // base class not documented
//{
@@ -1421,71 +1351,75 @@ void computeClassRelations(Entry *root)
}
p=p->parent;
}
- // The base class could ofcouse also be a non-nested class
- QList<BaseInfo> *baseList=root->extends;
- BaseInfo *bi=baseList->first();
- while (bi) // for each base class
+ if (!found)
{
- ClassDef *baseClass=getClass(bi->name);
- //printf("baseClass %s of %s found (%s and %s)\n",
- // bi->name.data(),
- // root->name.data(),
- // (bi->prot==Private)?"private":((bi->prot==Protected)?"protected":"public"),
- // (bi->virt==Normal)?"normal":"virtual"
- // );
- int i;
- QString templSpec,baseClassName=bi->name.copy();
- if (!baseClass && (i=bi->name.find('<'))!=-1)
- // base class has template specifiers
- {
- // TODO: here we should try to find the correct template specialization
- // but for now, we only look for the unspecializated base class.
- baseClassName=bi->name.left(i);
- baseClass=getClass(baseClassName);
- templSpec=bi->name.right(bi->name.length()-i);
- }
- if (baseClass) // base class is documented
- {
- // add base class to this class
- cd->insertBaseClass(baseClass,bi->prot,bi->virt,templSpec);
- // add this class as super class to the base class
- baseClass->insertSuperClass(cd,bi->prot,bi->virt,templSpec);
- }
- else // base class not documented
+ // The base class could ofcouse also be a non-nested class
+ QList<BaseInfo> *baseList=root->extends;
+ BaseInfo *bi=baseList->first();
+ while (bi) // for each base class
{
- NamespaceDef *nd=cd->getNamespace();
- //printf("Found undocumented base class `%s' namespace scope=`%s'\n",
- // bi->name.data(),nd ? nd->name().data() : "<none>");
- if (nd && (baseClass=getClass(nd->name()+"::"+baseClassName)))
- // class is defined inside namespace
+ ClassDef *baseClass=getClass(bi->name);
+ //printf("baseClass %s of %s found (%s and %s)\n",
+ // bi->name.data(),
+ // root->name.data(),
+ // (bi->prot==Private)?"private":((bi->prot==Protected)?"protected":"public"),
+ // (bi->virt==Normal)?"normal":"virtual"
+ // );
+ int i;
+ QCString templSpec,baseClassName=bi->name.copy();
+ if (!baseClass && (i=bi->name.find('<'))!=-1)
+ // base class has template specifiers
{
- // add base class to this class
- cd->insertBaseClass(baseClass,bi->prot,bi->virt,templSpec);
- // add this class as super class to the base class
- baseClass->insertSuperClass(cd,bi->prot,bi->virt,templSpec);
+ // TODO: here we should try to find the correct template specialization
+ // but for now, we only look for the unspecializated base class.
+ baseClassName=bi->name.left(i);
+ baseClass=getClass(baseClassName);
+ templSpec=bi->name.right(bi->name.length()-i);
}
- else // undocumented base class
+ if (baseClass) // base class is documented
{
- baseClass=new ClassDef(bi->name,ClassDef::Class);
// add base class to this class
cd->insertBaseClass(baseClass,bi->prot,bi->virt,templSpec);
// add this class as super class to the base class
baseClass->insertSuperClass(cd,bi->prot,bi->virt,templSpec);
- // the undocumented base was found in this file
- baseClass->insertUsedFile(root->fileName);
- // add class to the list
- classList.inSort(baseClass);
- //printf("ClassDict.insert(%s)\n",resolveDefines(fullName).data());
- //classDict.insert(resolveDefines(bi->name),baseClass);
- classDict.insert(bi->name,baseClass);
}
+ else // base class not documented
+ {
+ NamespaceDef *nd=cd->getNamespace();
+ //printf("Found undocumented base class `%s' namespace scope=`%s'\n",
+ // bi->name.data(),nd ? nd->name().data() : "<none>");
+ if (nd && (baseClass=getClass(nd->name()+"::"+baseClassName)))
+ // class is defined inside namespace
+ {
+ // add base class to this class
+ cd->insertBaseClass(baseClass,bi->prot,bi->virt,templSpec);
+ // add this class as super class to the base class
+ baseClass->insertSuperClass(cd,bi->prot,bi->virt,templSpec);
+ }
+ else // undocumented base class
+ {
+ //printf(">>> Undocumented base class = %s\n",bi->name.data());
+ baseClass=new ClassDef(baseClassName,ClassDef::Class);
+ // add base class to this class
+ cd->insertBaseClass(baseClass,bi->prot,bi->virt,templSpec);
+ // add this class as super class to the base class
+ baseClass->insertSuperClass(cd,bi->prot,bi->virt,templSpec);
+ // the undocumented base was found in this file
+ baseClass->insertUsedFile(root->fileName);
+ // add class to the list
+ classList.inSort(baseClass);
+ //printf("ClassDict.insert(%s)\n",resolveDefines(fullName).data());
+ //classDict.insert(resolveDefines(bi->name),baseClass);
+ classDict.insert(bi->name,baseClass);
+ }
+ }
+ bi=baseList->next();
}
- bi=baseList->next();
}
}
// else // class has no base classes
// {
-// QString resName=resolveDefines(root->name);
+// QCString resName=resolveDefines(root->name);
// int i;
// // Check if this class is a template instance of another class.
// // If this is the case, we act as if this class `inherits' from the
@@ -1570,7 +1504,7 @@ void addMemberDocs(Entry *root,MemberDef *md, const char *funcDecl,
{
//printf("addMemberDocs: `%s'::`%s' `%s' funcDecl=`%s'\n",
// root->parent->name.data(),md->name().data(),md->argsString(),funcDecl);
- QString fDecl=funcDecl;
+ QCString fDecl=funcDecl;
// strip extern specifier
if (fDecl.left(7)=="extern ") fDecl=fDecl.right(fDecl.length()-7);
md->setDefinition(fDecl);
@@ -1580,10 +1514,13 @@ void addMemberDocs(Entry *root,MemberDef *md, const char *funcDecl,
cd ? cd->name().data() : 0,
nd ? nd->name().data() : 0
)
- ) mergeArguments(md->argumentList(),root->argList);
+ )
+ {
+ mergeArguments(md->argumentList(),root->argList);
+ }
if (over_load) // the \overload keyword was used
{
- QString doc=getOverloadDocs();
+ QCString doc=getOverloadDocs();
if (!root->doc.isNull())
{
doc+="<p>";
@@ -1596,7 +1533,7 @@ void addMemberDocs(Entry *root,MemberDef *md, const char *funcDecl,
// documentation outside a compound overrides the documentation inside it
if ( /* !md->isStatic() && !root->stat && do not replace doc of a static */
(
- !md->documentation() || /* no docs yet */
+ md->documentation().isEmpty() || /* no docs yet */
(root->parent->name.isNull() && /* or overwrite prototype docs */
!root->proto && md->isPrototype() /* with member definition docs */
)
@@ -1610,13 +1547,18 @@ void addMemberDocs(Entry *root,MemberDef *md, const char *funcDecl,
// outside it
if ( /* !md->isStatic() && !root->stat && do not replace doc of static */
(
- !md->briefDescription() || /* no docs yet */
- !root->parent->name.isNull() /* member of a class */
+ md->briefDescription().isEmpty() || /* no docs yet */
+ !root->parent->name.isNull() /* member of a class */
) && root->brief.length()>0
)
{
md->setBriefDescription(root->brief);
}
+
+ if (md->bodyCode().isEmpty() && !root->body.isEmpty()) /* no body yet */
+ {
+ md->setBody(root->body);
+ }
}
md->setDefFile(root->fileName);
md->setDefLine(root->startLine);
@@ -1630,13 +1572,13 @@ void addMemberDocs(Entry *root,MemberDef *md, const char *funcDecl,
// function declaration `decl' to the corresponding member definition.
bool findUnrelatedFunction(Entry *root,
- const QString &namespaceName,
+ const QCString &namespaceName,
const char *name,
const char *,
const char *decl)
{
MemberName *mn=0;
- QString n=name;
+ QCString n=name;
if (n.find("::")!=-1) return FALSE; // skip undefined class members
//printf("findUnrelatedFunction(%s)\n",name);
if (n.length()>0 && (mn=functionNameDict[n])) // function name defined
@@ -1646,7 +1588,7 @@ bool findUnrelatedFunction(Entry *root,
while (md)
{
NamespaceDef *nd=md->getNamespace();
- QString nsName = nd ? nd->name().data() : "";
+ QCString nsName = nd ? nd->name().data() : "";
if (namespaceName.length()==0 ||
nsName==namespaceName)
{
@@ -1698,6 +1640,89 @@ bool findUnrelatedFunction(Entry *root,
return TRUE;
}
+void substituteTemplateArgNames(ArgumentList *src,
+ const QCString &s,
+ ArgumentList *tempArgs,
+ ArgumentList *dst)
+{
+ ArgumentListIterator ali(*src);
+ Argument *a=0;
+ for (ali.toFirst();(a=ali.current());++ali) // for each member argument
+ {
+ QCString type=a->type.copy();
+ bool isReplaced=FALSE;
+ QRegExp re(idMask);
+ int i,p=0,l,c=0;
+ while ((i=re.match(s,p,&l))!=-1) // for each template name found at the
+ // member definition
+ {
+ Argument *ta = tempArgs->at(c);
+ if (ta) // get matching template argument of the class
+ {
+ QCString dstName=s.mid(i,l);
+ QCString srcName=ta->type.copy();
+ int bi;
+ if ((bi=srcName.findRev(' '))!=-1) // search for separator
+ {
+ // strip the type specifier (usuall class or typename)
+ srcName=srcName.right(srcName.length()-bi-1);
+ }
+
+ //if (srcName.left(6)=="class ") srcName=srcName.right(srcName.length()-6);
+ //if (srcName.left(9)=="typename ") srcName=srcName.right(srcName.length()-9);
+ //printf("Template Name = `%s' -> `%s'\n",srcName.data(),dstName.data());
+ if (srcName!=dstName) /* we need to substitute */
+ {
+ int ti,tp=0;
+ QCString result;
+ int sl=srcName.length();
+ while ((ti=type.find(srcName,tp))!=-1)
+ {
+ result+=type.mid(tp,ti-tp);
+ if (
+ (ti==0 || !isId(type.at(ti-1))) &&
+ (ti+sl==(int)type.length() || !isId(type.at(ti+sl)))
+ ) /* idenitifier -> replace */
+ {
+ result+=dstName;
+ }
+ else /* substring of an identifier */
+ {
+ result+=srcName;
+ }
+ tp=ti+sl;
+ }
+ result+=type.right(type.length()-tp);
+ type=result;
+ isReplaced = TRUE;
+ }
+ }
+ p=i+l;
+ c++;
+ }
+ Argument *na = new Argument(*a);
+ if (isReplaced)
+ {
+ //printf("Template Arg: `%s' -> `%s'\n",na->type.data(),type.data());
+ na->type=type;
+ }
+ else
+ {
+ //printf("Template Arg `%s' not changed\n",a->type.data());
+ }
+ dst->append(na);
+ }
+ //printf("substituteTemplateArgNames(src=`%s',tempNameStr=`%s',tempArgs=`%s',dest=`%s')\n",
+ // argListToString(src).data(),
+ // s.data(),
+ // argListToString(tempArgs).data(),
+ // argListToString(dst).data()
+ // );
+ dst->constSpecifier = src->constSpecifier;
+ dst->volatileSpecifier = src->volatileSpecifier;
+ dst->pureSpecifier = src->pureSpecifier;
+
+}
//----------------------------------------------------------------------
// This function tries to find a member (in a documented class/file/namespace)
@@ -1710,23 +1735,28 @@ bool findUnrelatedFunction(Entry *root,
// The boolean overloaded is used to specify whether or not a standard
// overload documentation line should be generated.
-void findMember(Entry *root,QString funcDecl,QString related,bool overloaded,
+void findMember(Entry *root,QCString funcDecl,QCString related,bool overloaded,
bool isFunc)
{
Debug::print(Debug::FindMembers,0,
- "findMember(root=%p,funcDecl=`%s',related=`%s',overload=%d,isFunc=%d)\n",
- root,funcDecl.data(),related.data(),overloaded,isFunc
+ "findMember(root=%p,funcDecl=`%s',related=`%s',overload=%d,isFunc=%d\n====\ndoc=%s\n====\n)\n",
+ root,funcDecl.data(),related.data(),overloaded,isFunc,root->doc.data()
);
+ if (Config::includeSourceFlag && !root->body.isEmpty())
+ {
+ //printf("Function: %s\n-----------------\n%s\n------------------\n",
+ //root->name.data(),root->body.data());
+ }
- QString scopeName;
- QString className;
- QString namespaceName;
- QString classTempList;
- QString funcType;
- QString funcName;
- QString funcArgs;
- QString funcTempList;
- QString exceptions;
+ QCString scopeName;
+ QCString className;
+ QCString namespaceName;
+ QCString classTempList;
+ QCString funcType;
+ QCString funcName;
+ QCString funcArgs;
+ QCString funcTempList;
+ QCString exceptions;
bool isRelated=FALSE;
bool isFriend=FALSE;
@@ -1764,7 +1794,8 @@ void findMember(Entry *root,QString funcDecl,QString related,bool overloaded,
// if a related class name is specified and the class name could
// not be derived from the function declaration, then use the
// related field.
- //printf("scopeName=`%s' className=`%s'\n",scopeName.data(),className.data());
+ //printf("scopeName=`%s' classTempList=`%s' className=`%s'\n",
+ // scopeName.data(),classTempList.data(),className.data());
if (/*scopeName.isEmpty() &&*/ !related.isEmpty() && !isRelated)
{
isRelated=TRUE;
@@ -1805,6 +1836,41 @@ void findMember(Entry *root,QString funcDecl,QString related,bool overloaded,
}
}
+ // see if (part of) the scope name is a namespace name
+ extractNamespaceName(scopeName,className,namespaceName);
+
+ QCString tempScopeName=scopeName.copy();
+ int ti;
+ int spi = namespaceName.isEmpty() ? 0 : namespaceName.length()+2;
+ if ((ti=tempScopeName.find("::",spi))!=-1 && !classTempList.isEmpty())
+ {
+ // insert template parameters after the first scope name
+ tempScopeName=tempScopeName.left(ti)+classTempList+
+ tempScopeName.right(tempScopeName.length()-ti);
+ }
+ else
+ {
+ tempScopeName+=classTempList;
+ }
+
+
+ if (root->tArgList==0 && !classTempList.isEmpty())
+ {
+ // no template specifiers found during parsing (because \fn was used),
+ // but there are template names in the scope, so we build the template
+ // specifiers from that.
+ root->tArgList = new ArgumentList;
+ QRegExp re(idMask);
+ int i,p=0,l;
+ while ((i=re.match(classTempList,p,&l))!=-1) // for each template name found
+ {
+ Argument *a = new Argument;
+ a->type = "class "+classTempList.mid(i,l);
+ root->tArgList->append(a);
+ p=i+l;
+ }
+ }
+
//printf("scopeName=`%s' className=`%s'\n",scopeName.data(),className.data());
// rebuild the function declaration (needed to get the scope right).
if (scopeName.length()>0 && !isRelated && !isFriend)
@@ -1813,22 +1879,22 @@ void findMember(Entry *root,QString funcDecl,QString related,bool overloaded,
{
if (isFunc) // a function -> we use argList for the arguments
{
- funcDecl=funcType+" "+scopeName+classTempList+"::"+funcName+funcTempList;
+ funcDecl=funcType+" "+tempScopeName+"::"+funcName+funcTempList;
}
else
{
- funcDecl=funcType+" "+scopeName+classTempList+"::"+funcName+funcArgs;
+ funcDecl=funcType+" "+tempScopeName+"::"+funcName+funcArgs;
}
}
else
{
if (isFunc) // a function => we use argList for the arguments
{
- funcDecl=scopeName+classTempList+"::"+funcName+funcTempList;
+ funcDecl=tempScopeName+"::"+funcName+funcTempList;
}
else // variable => add `argument' list
{
- funcDecl=scopeName+classTempList+"::"+funcName+funcArgs;
+ funcDecl=tempScopeName+"::"+funcName+funcArgs;
}
}
}
@@ -1858,12 +1924,10 @@ void findMember(Entry *root,QString funcDecl,QString related,bool overloaded,
}
}
- QString fullFuncDecl=funcDecl.copy();
+ QCString fullFuncDecl=funcDecl.copy();
if (isFunc) fullFuncDecl+=argListToString(root->argList);
//printf("scopeName=`%s' className=`%s'\n",scopeName.data(),className.data());
- // see if (part of) the scope name is a namespace name
- extractNamespaceName(scopeName,className,namespaceName);
//printf("scopeName=`%s' className=`%s'\n",scopeName.data(),className.data());
// destructor => do backward class name substitution if needed
@@ -1902,11 +1966,11 @@ void findMember(Entry *root,QString funcDecl,QString related,bool overloaded,
if (className.length()>0) // class name is valid
{
int count=0;
- MemberDef *md=mn->first();
+ MemberDef *md=mn->first(); // for each member with that name
while (md)
{
ClassDef *cd=md->memberClass();
- //printf("Member %s member className=%s this className=%s\n",md->name().data(),cd->name().data(),className.data());
+ //printf("Member %s (member scopeName=%s) (this scopeName=%s) classTempList=%s\n",md->name().data(),cd->name().data(),scopeName.data(),classTempList.data());
ClassDef *tcd=0;
if (classTempList.length()>0) // try to find the correct specialization
{
@@ -1917,15 +1981,60 @@ void findMember(Entry *root,QString funcDecl,QString related,bool overloaded,
{
tcd=getClass(scopeName);
}
- //printf("tcd=%p\n",tcd);
- if (cd && tcd==cd)
+ if (cd && tcd==cd) // member's classes match
{
- //printf("Class %s\n",cd->name().data());
+ int ci;
+ ArgumentList *classTemplArgs = cd->templateArguments();
+ if ((ci=cd->name().find("::"))!=-1) // nested class
+ {
+ ClassDef *parentClass = getClass(cd->name().left(ci));
+ if (parentClass)
+ classTemplArgs = parentClass->templateArguments();
+ }
+ //printf("cd->name=%s classTemplArgs=%s\n",cd->name().data(),
+ // argListToString(classTemplArgs).data());
+ ArgumentList *argList = 0;
+ bool substDone=FALSE;
+ if (!classTempList.isEmpty() &&
+ classTemplArgs &&
+ md->argumentList()
+ )
+ {
+ /* the function definition has template arguments
+ * and the class also has template arguments, so
+ * we must substitute the template names if they are
+ * different before doing the match
+ */
+ argList = new ArgumentList;
+ argList->setAutoDelete(TRUE);
+ substituteTemplateArgNames(
+ md->argumentList(), /* source argument list */
+ classTempList, /* template names source */
+ classTemplArgs, /* template names dest */
+ argList /* dest argument list */
+ );
+ substDone=TRUE;
+ }
+ else /* no template arguments, compare argument lists directly */
+ {
+ argList = md->argumentList();
+ }
bool matching=
md->isVariable() || md->isTypedef() || // needed for function pointers
(md->argumentList()==0 && root->argList->count()==0) ||
- matchArguments(md->argumentList(), root->argList,
- className,namespaceName);
+ matchArguments(argList, root->argList,className,namespaceName);
+
+ if (substDone) // found a new argument list
+ {
+ //printf("root->tArgList=`%s'\n",argListToString(root->tArgList).data());
+ if (matching) // replace member's argument list
+ {
+ md->setScopeTemplateArguments(root->tArgList);
+ md->setArgumentList(argList);
+ }
+ else // no match -> delete argument list
+ delete argList;
+ }
if (matching)
{
addMemberDocs(root,md,funcDecl,overloaded);
@@ -1975,7 +2084,7 @@ void findMember(Entry *root,QString funcDecl,QString related,bool overloaded,
ASSERT(md);
ClassDef *cd=md->memberClass();
ASSERT(cd);
- QString className=cd->name().copy();
+ QCString className=cd->name().copy();
md=mn->next();
bool unique=TRUE;
while (md)
@@ -1997,7 +2106,7 @@ void findMember(Entry *root,QString funcDecl,QString related,bool overloaded,
mtype,root->tArgList,root->argList);
md->setMemberClass(cd);
md->setDefinition(funcDecl);
- QString doc=getOverloadDocs();
+ QCString doc=getOverloadDocs();
doc+="<p>";
doc+=root->doc;
md->setDocumentation(doc);
@@ -2007,6 +2116,7 @@ void findMember(Entry *root,QString funcDecl,QString related,bool overloaded,
md->setDefLine(root->startLine);
md->setPrototype(root->proto);
md->addSectionsToDefinition(root->anchors);
+ md->setBody(root->body);
mn->inSort(md);
cd->insertMember(md);
cd->insertUsedFile(root->fileName);
@@ -2071,6 +2181,7 @@ void findMember(Entry *root,QString funcDecl,QString related,bool overloaded,
md->setDefFile(root->fileName);
md->setDefLine(root->startLine);
md->setPrototype(root->proto);
+ md->setBody(root->body);
md->addSectionsToDefinition(root->anchors);
mn->inSort(md);
cd->insertMember(md);
@@ -2118,8 +2229,8 @@ void findMemberDocumentation(Entry *root)
int i,l;
QRegExp re("([a-zA-Z0-9: ]*\\*+[ \\*]*");
Debug::print(Debug::FindMembers,0,
- "root->type=`%s' root->name=`%s' root->args=`%s'\n",
- root->type.data(),root->name.data(),root->args.data()
+ "root->type=`%s' root->name=`%s' root->args=`%s' section=%x\n",
+ root->type.data(),root->name.data(),root->args.data(),root->section
);
bool isFunc=TRUE;
if ((i=re.match(root->type,0,&l))!=-1) // func variable/typedef to func ptr
@@ -2151,8 +2262,12 @@ void findMemberDocumentation(Entry *root)
//printf("Overloaded member %s found\n",root->name.data());
findMember(root,root->name,root->relates,TRUE,isFunc);
}
- else if (root->section==Entry::FUNCTION_SEC &&
- (root->doc.length()>0 || root->brief.length()>0 || extractAllFlag))
+ else if
+ (root->section==Entry::FUNCTION_SEC &&
+ (!root->doc.isEmpty() || !root->brief.isEmpty() ||
+ !root->body.isEmpty() /*|| Config::extractAllFlag*/
+ )
+ )
{
//printf("Documentation for member `%s' found args=`%s' excp=`%s'\n",
// root->name.data(),root->args.data(),root->exception.data());
@@ -2179,6 +2294,10 @@ void findMemberDocumentation(Entry *root)
//if (root->relates.length()>0) printf(" Relates %s\n",root->relates.data());
findMember(root,root->name,root->relates,FALSE,FALSE);
}
+ else
+ {
+ // skip section
+ }
EntryListIterator eli(*root->sublist);
Entry *e;
for (;(e=eli.current());++eli)
@@ -2195,31 +2314,31 @@ void findEnums(Entry *root)
if (root->section==Entry::ENUM_SEC)
// non anonymous enumeration
{
- MemberDef *md=0;
- ClassDef *cd=0;
- FileDef *fd=0;
- NamespaceDef *nd=0;
+ MemberDef *md=0;
+ ClassDef *cd=0;
+ FileDef *fd=0;
+ NamespaceDef *nd=0;
MemberNameDict *mnd=0;
MemberNameList *mnl=0;
bool isGlobal;
//printf("Found enum with name `%s'\n",root->name.data());
int i;
- QString name;
+ QCString name;
if ((i=root->name.findRev("::"))!=-1) // scope is specified
{
- QString 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
- cd=getClass(scope);
- if (!cd) nd=namespaceDict[scope];
+ if ((cd=getClass(scope))==0) nd=namespaceDict[scope];
}
else // no scope, check the scope in which the docs where found
{
- if (( root->parent->section & Entry::COMPOUND_MASK )
+ if (( root->parent->section & Entry::SCOPE_MASK )
&& root->parent->name.length()>0
) // found enum docs inside a compound
{
- cd=getClass(root->parent->name);
+ QCString scope=root->parent->name;
+ if ((cd=getClass(scope))==0) nd=namespaceDict[scope];
}
name=root->name.copy();
}
@@ -2231,7 +2350,7 @@ void findEnums(Entry *root)
mnl=&memberNameList;
isGlobal=FALSE;
}
- else if (nd) // found enum inside namespace
+ else if (nd && !nd->name().isEmpty() && nd->name().at(0)!='@') // found enum inside namespace
{
mnd=&functionNameDict;
mnl=&functionNameList;
@@ -2254,7 +2373,7 @@ void findEnums(Entry *root)
md->setDefFile(root->fileName);
md->setDefLine(root->startLine);
md->addSectionsToDefinition(root->anchors);
- if (nd)
+ if (nd && !nd->name().isEmpty() && nd->name().at(0)!='@')
{
md->setDefinition(nd->name()+"::"+name);
nd->insertMember(md);
@@ -2299,12 +2418,12 @@ void findEnums(Entry *root)
// get list of members with the same name as the field
{
MemberDef *fmd=fmn->first();
- while (fmd) // search for the class with the right name
+ while (fmd) // search for the scope with the right name
{
- if (nd)
+ if (nd && !nd->name().isEmpty() && nd->name().at(0)!='@')
{
NamespaceDef *fnd=fmd->getNamespace();
- if (fnd==nd)
+ if (fnd==nd) // enum value is inside a namespace
{
md->insertEnumField(fmd);
fmd->setEnumScope(md);
@@ -2313,7 +2432,7 @@ void findEnums(Entry *root)
else if (isGlobal)
{
FileDef *ffd=fmd->getFileDef();
- if (ffd==fd)
+ if (ffd==fd) // enum value has file scope
{
md->insertEnumField(fmd);
fmd->setEnumScope(md);
@@ -2322,7 +2441,7 @@ void findEnums(Entry *root)
else
{
ClassDef *fcd=fmd->memberClass();
- if (fcd==cd)
+ if (fcd==cd) // enum value is inside a class
{
md->insertEnumField(fmd); // add field def to list
fmd->setEnumScope(md); // cross ref with enum name
@@ -2358,10 +2477,10 @@ void findEnumDocumentation(Entry *root)
//printf("Found docs for enum with name `%s'\n",root->name.data());
int i;
ClassDef *cd=0;
- QString name;
+ QCString name;
if ((i=root->name.findRev("::"))!=-1) // scope is specified
{
- QString 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
cd=getClass(scope);
//printf("Scope=`%s' Name=`%s'\n",scope.data(),name.data());
@@ -2382,7 +2501,7 @@ void findEnumDocumentation(Entry *root)
if (cd)
{
//printf("Enum: scope=`%s' name=`%s'\n",cd->name(),name.data());
- QString className=cd->name().copy();
+ QCString className=cd->name().copy();
MemberName *mn=memberNameDict[name];
if (mn)
{
@@ -2519,29 +2638,30 @@ void computeMemberRelations()
while (mn) // for each member name
{
MemberNameIterator mdi(*mn);
- for ( ; mdi.current() ; ++mdi) // for each function with a specific name
+ for ( ; mdi.current() ; ++mdi) // for each member with a specific arg list
{
MemberDef *md=mdi.current();
MemberNameIterator bmdi(*mn);
- for ( ; bmdi.current() ; ++bmdi) // for each other function with that name
+ for ( ; bmdi.current() ; ++bmdi) // for each other member with that signature
{
MemberDef *bmd=bmdi.current();
- if (md!=bmd && bmd->memberClass() && md->memberClass() &&
- isBaseClass(bmd->memberClass(),md->memberClass()))
+ ClassDef *bmcd = bmd->memberClass();
+ ClassDef *mcd = md->memberClass();
+ //printf("Check relation between `%s'::`%s' and `%s'::`%s'\n",
+ // mcd->name().data(),md->name().data(),
+ // bmcd->name().data(),bmd->name().data()
+ // );
+ if (md!=bmd && bmcd && mcd && isBaseClass(bmcd,mcd))
{
- //printf("Checking Base: %s\nWith normal : %s\n",bmd->definition(),md->definition());
- if (/*matchArguments(bmd->argsString(),md->argsString())*/
- matchArguments(bmd->argumentList(),md->argumentList())
- )
+ //printf(" Base argList=`%s'\n Super argList=`%s'\n",
+ // argListToString(bmd->argumentList()).data(),
+ // argListToString(md->argumentList()).data()
+ // );
+ if ( matchArguments(bmd->argumentList(),md->argumentList()) )
{
- //printf("Base: %s\nNorm: %s\n",bmd->definition(),md->definition());
- ClassDef *bmcd = bmd->memberClass();
- ClassDef *mcd = md->memberClass();
+ //printf(" match found!\n");
if (mcd && bmcd &&
- (bmcd->protection()!=Private || extractPrivateFlag) &&
- (bmcd->hasDocumentation() || !hideClassFlag) &&
- (mcd->protection()!=Private || extractPrivateFlag) &&
- (mcd->hasDocumentation() || !hideClassFlag)
+ mcd->isVisibleExt() && bmcd->isVisibleExt()
)
{
md->setReimplements(bmd);
@@ -2564,7 +2684,7 @@ void mergeMembers(ClassDef *cd,BaseClassList *bcl)
//if (mcd->flag==TRUE)
//{
// err("Error: Cyclic inhertance dependency found for class %s\n",mcd->name());
- // return;
+ // return;
//}
//mcd->flag=TRUE;
@@ -2618,6 +2738,7 @@ void mergeMembers(ClassDef *cd,BaseClassList *bcl)
found =
/*matchArguments(srcMd->argsString(),dstMd->argsString());*/
matchArguments(srcMd->argumentList(),dstMd->argumentList());
+ ambigue=!found;
}
else // member is in a non base class => multiple inheritance
// using the same base class.
@@ -2627,7 +2748,7 @@ void mergeMembers(ClassDef *cd,BaseClassList *bcl)
// dstMd->name().data(),
// dstMi->scopePath.left(dstMi->scopePath.find("::")+2).data());
- QString scope=dstMi->scopePath.left(dstMi->scopePath.find("::")+2);
+ QCString scope=dstMi->scopePath.left(dstMi->scopePath.find("::")+2);
if (scope!=dstMi->ambiguityResolutionScope.left(scope.length()))
dstMi->ambiguityResolutionScope.prepend(scope);
ambigue=TRUE;
@@ -2648,7 +2769,7 @@ void mergeMembers(ClassDef *cd,BaseClassList *bcl)
// dstMd->name().data(),
// dstMi->scopePath.left(dstMi->scopePath.find("::")+2).data());
- QString scope=dstMi->scopePath.left(dstMi->scopePath.find("::")+2);
+ QCString scope=dstMi->scopePath.left(dstMi->scopePath.find("::")+2);
if (scope!=dstMi->ambiguityResolutionScope.left(scope.length()))
dstMi->ambiguityResolutionScope.prepend(scope);
ambigue=TRUE;
@@ -2660,7 +2781,6 @@ void mergeMembers(ClassDef *cd,BaseClassList *bcl)
Specifier virt=srcMi->virt;
if (srcMi->virt==Normal && bcd->virt!=Normal) virt=bcd->virt;
MemberInfo *newMi = new MemberInfo(srcMd,bcd->prot,virt);
- //if (srcMi->memberDef->memberClass()!=bClass)
newMi->scopePath=bClass->name()+"::"+srcMi->scopePath;
if (ambigue)
{
@@ -2669,7 +2789,7 @@ void mergeMembers(ClassDef *cd,BaseClassList *bcl)
// srcMd->name().data(),
// bClass->name().data());
- QString scope=bClass->name().copy(); scope+="::";
+ QCString scope=bClass->name().copy(); scope+="::";
if (scope!=srcMi->ambiguityResolutionScope.left(scope.length()))
newMi->ambiguityResolutionScope=
scope+srcMi->ambiguityResolutionScope;
@@ -2764,7 +2884,8 @@ void generateFileDocs()
void generateClassDocs()
{
// write the installdox script if necessary
- if (generateHtml && (tagFileList.count()>0 || searchEngineFlag))
+ if (Config::generateHtml &&
+ (Config::tagFileList.count()>0 || Config::searchEngineFlag))
writeInstallScript();
msg("Generating index page...\n");
@@ -2797,8 +2918,8 @@ void generateClassDocs()
if (!cd->isReference() &&
//!cd->name().isEmpty() &&
//cd->name().at(0)!='@' &&
- //(cd->protection()!=Private || extractPrivateFlag) &&
- //(cd->hasDocumentation() || !hideClassFlag)
+ //(cd->protection()!=Private || Config::extractPrivateFlag) &&
+ //(cd->hasDocumentation() || !Config::hideClassFlag)
cd->isVisible()
)
// skip external references and anonymous compounds
@@ -2807,7 +2928,7 @@ void generateClassDocs()
cd->writeDocumentation(*outputList);
cd->writeMemberList(*outputList);
- if (verbatimHeaderFlag) cd->writeIncludeFile(*outputList);
+ if (Config::verbatimHeaderFlag) cd->writeIncludeFile(*outputList);
}
}
}
@@ -2912,31 +3033,33 @@ void buildPageList(Entry *root)
}
else
{
- QString baseName=root->name.copy();
+ QCString baseName=root->name.copy();
if (baseName.right(4)==".tex")
baseName=baseName.left(baseName.length()-4);
else if (baseName.right(5)==".html")
baseName=baseName.left(baseName.length()-5);
pi=new PageInfo(baseName, root->doc,
root->args.stripWhiteSpace());
- setFileNameForSections(root->anchors,root->name);
+ QCString pageName;
+ if (Config::caseSensitiveNames)
+ pageName=pi->name.copy();
+ else
+ pageName=pi->name.lower();
+ setFileNameForSections(root->anchors,pageName);
+
pageList.append(pi);
pageDict.insert(baseName,pi);
if (pi->title.length()>0)
{
- QString pageName;
- if (caseSensitiveNames)
- pageName=pi->name.copy();
- else
- pageName=pi->name.lower();
//outputList->writeTitle(pi->name,pi->title);
// a page name is a label as well!
SectionInfo *si=new SectionInfo(
pi->name,pi->title,SectionInfo::Section);
si->fileName=pageName+".html";
+ //printf(" SectionInfo: sec=%p sec->fileName=%s\n",si,si->fileName.data());
//printf("Adding section info %s\n",pi->name.data());
- sectionDict.insert(pi->name,si);
+ sectionDict.insert(pageName,si);
}
}
}
@@ -2979,8 +3102,8 @@ void generatePageDocs()
{
msg("Generating docs for page %s...\n",pi->name.data());
outputList->disable(OutputGenerator::Man);
- QString pageName;
- if (caseSensitiveNames)
+ QCString pageName;
+ if (Config::caseSensitiveNames)
pageName=pi->name.copy();
else
pageName=pi->name.lower();
@@ -3047,7 +3170,7 @@ void generateExampleDocs()
while (pi)
{
msg("Generating docs for example %s...\n",pi->name.data());
- QString n=convertSlashes(pi->name,TRUE)+"-example";
+ QCString n=convertSlashes(pi->name,TRUE)+"-example";
startFile(*outputList,n,"Example Documentation");
//outputList->writeTitle(pi->name,pi->name);
parseExample(*outputList,pi->doc+"\n\\include "+pi->name,pi->name);
@@ -3081,37 +3204,64 @@ void generateNamespaceDocs()
NamespaceDef *nd;
for (;(nd=nli.current());++nli)
{
- msg("Generating docs for namespace %s\n",nd->name().data());
- nd->writeDocumentation(*outputList);
+ if ((nd->getReference() || nd->hasDocumentation()) &&
+ !nd->name().isEmpty() && nd->name().at(0)!='@')
+ {
+ msg("Generating docs for namespace %s\n",nd->name().data());
+ nd->writeDocumentation(*outputList);
+ }
}
}
+#if defined(_WIN32)
+static QCString fixSlashes(QCString &s)
+{
+ QCString result;
+ uint i;
+ for (i=0;i<s.length();i++)
+ {
+ switch(s.at(i))
+ {
+ case '/':
+ case '\\':
+ result+="\\\\";
+ break;
+ default:
+ result+=s.at(i);
+ }
+ }
+ return result;
+}
+#endif
+
+
//----------------------------------------------------------------------------
// generate files for the search engine
void generateSearchIndex()
{
- if (searchEngineFlag && generateHtml)
+ if (Config::searchEngineFlag && Config::generateHtml)
{
// create search index
- QString fileName;
- writeSearchButton(htmlOutputDir);
+ QCString fileName;
+ writeSearchButton(Config::htmlOutputDir);
+#if !defined(_WIN32)
// create cgi script
- fileName = htmlOutputDir+"/"+cgiName;
+ fileName = Config::htmlOutputDir+"/"+Config::cgiName;
QFile f(fileName);
if (f.open(IO_WriteOnly))
{
QTextStream t(&f);
t << "#!/bin/sh" << endl
- << "DOXYSEARCH=" << binAbsPath << "/doxysearch" << endl
- << "DOXYPATH=" << docAbsPath << " ";
+ << "DOXYSEARCH=" << Config::binAbsPath << "/doxysearch" << endl
+ << "DOXYPATH=" << Config::docAbsPath << " ";
- char *s=extDocPathList.first();
+ char *s=Config::extDocPathList.first();
while (s)
{
t << s << " ";
- s=extDocPathList.next();
+ s=Config::extDocPathList.next();
}
t << endl
@@ -3121,28 +3271,65 @@ void generateSearchIndex()
<< "else" << endl
<< " echo \"Content-Type: text/html\"" << endl
<< " echo \"\"" << endl
- << " echo \"<H1>Error: $DOXYSEARCH not found. Check cgi script!\"" << endl
+ << " echo \"<h2>Error: $DOXYSEARCH not found. Check cgi script!</h2>\"" << endl
<< "fi" << endl;
f.close();
struct stat stat_struct;
stat(fileName,&stat_struct);
-#if !defined(_WIN32)
chmod(fileName,stat_struct.st_mode|S_IXUSR|S_IXGRP|S_IXOTH);
-#endif
}
else
{
err("Error: Cannot open file %s for writing\n",fileName.data());
}
+#else /* Windows platform */
+ // create cgi program
+ fileName = Config::cgiName.copy();
+ if (fileName.right(4)==".cgi")
+ fileName=fileName.left(fileName.length()-4);
+ fileName+=".c";
+ fileName.prepend(Config::htmlOutputDir+"/");
+ QFile f(fileName);
+ if (f.open(IO_WriteOnly))
+ {
+ QTextStream t(&f);
+ t << "#include <stdio.h>" << endl;
+ t << "#include <stdlib.h>" << endl;
+ t << "#include <process.h>" << endl;
+ t << endl;
+ t << "const char *DOXYSEARCH = \"" <<
+ fixSlashes(Config::binAbsPath) << "\\\\doxysearch.exe\";" << endl;
+ t << "const char *DOXYPATH = \"" <<
+ fixSlashes(Config::docAbsPath) << "\";" << endl;
+ t << endl;
+ t << "int main(void)" << endl;
+ t << "{" << endl;
+ t << " char buf[1024];" << endl;
+ t << " sprintf(buf,\"%s %s\",DOXYSEARCH,DOXYPATH);" << endl;
+ t << " if (system(buf))" << endl;
+ t << " {" << endl;
+ t << " printf(\"Content-Type: text/html\\n\\n\");" << endl;
+ t << " printf(\"<h2>Error: failed to execute %s</h2>\\n\",DOXYSEARCH);" << endl;
+ t << " exit(1);" << endl;
+ t << " }" << endl;
+ t << " return 0;" << endl;
+ t << "}" << endl;
+ f.close();
+ }
+ else
+ {
+ err("Error: Cannot open file %s for writing\n",fileName.data());
+ }
+#endif /* !defined(_WIN32) */
// create config file
- fileName = htmlOutputDir+"/search.cfg";
+ fileName = Config::htmlOutputDir+"/search.cfg";
f.setName(fileName);
if (f.open(IO_WriteOnly))
{
QTextStream t(&f);
- t << docURL << endl << cgiURL << "/" << cgiName << endl;
+ t << Config::docURL << endl << Config::cgiURL << "/" << Config::cgiName << endl;
f.close();
}
else
@@ -3194,7 +3381,7 @@ void generateConfigFile(const char *configFile,bool shortList)
//----------------------------------------------------------------------------
// read and parse a tag file
-bool readLineFromFile(QFile &f,QString &s)
+bool readLineFromFile(QFile &f,QCString &s)
{
char c=0;
s.resize(0);
@@ -3226,7 +3413,12 @@ bool patternMatch(QFileInfo *fi,QStrList *patList)
char *pattern=patList->first();
while (pattern && !found)
{
- found = found || QDir::match(pattern,fi->fileName());
+#if defined(_WIN32) // windows
+ QRegExp re(pattern,FALSE,TRUE); // case insensitive match
+#else // unix
+ QRegExp re(pattern,TRUE,TRUE); // case sensitive match
+#endif
+ found = found || re.match(fi->fileName())!=-1;
pattern=patList->next();
}
}
@@ -3245,7 +3437,7 @@ void copyAndFilterFile(const char *fileName,BufStr &dest)
QFileInfo fi(fileName);
if (!fi.exists()) return;
- if (inputFilter.isEmpty())
+ if (Config::inputFilter.isEmpty())
{
QFile f(fileName);
if (!f.open(IO_ReadOnly))
@@ -3266,11 +3458,11 @@ void copyAndFilterFile(const char *fileName,BufStr &dest)
{
int c;
// char *p=dest;
- QString cmd=inputFilter+" "+fileName;
+ QCString cmd=Config::inputFilter+" "+fileName;
FILE *f=popen(cmd,"r");
if (!f)
{
- err("Error: could not execute filter %s\n",inputFilter.data());
+ err("Error: could not execute filter %s\n",Config::inputFilter.data());
return;
}
while ((c=fgetc(f))!=EOF) dest.addChar(c),size++;
@@ -3295,17 +3487,17 @@ void copyAndFilterFile(const char *fileName,BufStr &dest)
void readFiles(BufStr &output)
{
- QString *s=inputFiles.first();
+ QCString *s=inputFiles.first();
// char *p=output.data();
while (s)
{
- QString fileName=*s;
+ QCString fileName=*s;
//int fileSize=fi->fileInfo()->size();
int fileNameSize=fileName.length();
//int streamLength=fileSize+fileNameSize+4;
- //QString fileText(streamLength);
+ //QCString fileText(streamLength);
// add begin filename marker
// *p++=0x06;
@@ -3320,7 +3512,7 @@ void readFiles(BufStr &output)
output.addChar(0x06);
// *p++='\n'; // to make ^ work while scanning the first line of a file!
output.addChar('\n');
- if (preprocessingFlag)
+ if (Config::preprocessingFlag)
{
msg("Preprocessing %s...\n",s->data());
preprocessFile(fileName,output);
@@ -3376,7 +3568,7 @@ int readDir(QFileInfo *fi,
patternMatch(cfi,patList) && !patternMatch(cfi,exclPatList))
{
totalSize+=cfi->size()+cfi->absFilePath().length()+4;
- QString name=cfi->fileName();
+ QCString name=convertToQCString(cfi->fileName());
if (fnDict)
{
FileDef *fd=new FileDef(cfi->dirPath()+"/",name);
@@ -3393,15 +3585,15 @@ int readDir(QFileInfo *fi,
fnDict->insert(name,fn);
}
}
- QString *rs=0;
+ QCString *rs=0;
if (resultList || resultDict)
{
- rs=new QString(cfi->absFilePath());
+ rs=new QCString(cfi->absFilePath());
}
if (resultList) resultList->append(rs);
if (resultDict) resultDict->insert(cfi->absFilePath(),rs);
}
- else if (recursiveFlag && cfi->isDir() && cfi->fileName()!="." &&
+ else if (Config::recursiveFlag && cfi->isDir() && cfi->fileName()!="." &&
cfi->fileName()!="..")
{
cfi->setFile(cfi->absFilePath());
@@ -3417,9 +3609,9 @@ int readDir(QFileInfo *fi,
//----------------------------------------------------------------------------
// read the file with name `name' into a string.
-QString readExampleFile(const char *name)
+QCString readExampleFile(const char *name)
{
- QString example;
+ QCString example;
QFileInfo fi(name);
if (fi.exists())
{
@@ -3477,7 +3669,7 @@ int readFileOrDirectory(const char *s,
{
totalSize+=fi.size()+fi.absFilePath().length()+4; //readFile(&fi,fiList,input);
//fiList->inSort(new FileInfo(fi));
- QString name=fi.fileName();
+ QCString name=convertToQCString(fi.fileName());
if (fnDict)
{
FileDef *fd=new FileDef(fi.dirPath(TRUE)+"/",name);
@@ -3494,10 +3686,10 @@ int readFileOrDirectory(const char *s,
fnDict->insert(name,fn);
}
}
- QString *rs=0;
+ QCString *rs=0;
if (resultList || resultDict)
{
- rs=new QString(fi.absFilePath());
+ rs=new QCString(fi.absFilePath());
}
if (resultList) resultList->append(rs);
if (resultDict) resultDict->insert(fi.absFilePath(),rs);
@@ -3514,11 +3706,11 @@ int readFileOrDirectory(const char *s,
void readFormulaRepository()
{
- QFile f(htmlOutputDir+"/formula.repository");
+ QFile f(Config::htmlOutputDir+"/formula.repository");
if (f.open(IO_ReadOnly)) // open repository
{
QTextStream t(&f);
- QString line;
+ QCString line;
while (!t.eof())
{
line=t.readLine();
@@ -3530,8 +3722,8 @@ void readFormulaRepository()
}
else
{
- QString formName = line.left(se);
- QString formText = line.right(line.length()-se-1);
+ QCString formName = line.left(se);
+ QCString formText = line.right(line.length()-se-1);
Formula *f=new Formula(formText);
formulaList.append(f);
formulaDict.insert(formText,f);
@@ -3627,7 +3819,7 @@ int main(int argc,char **argv)
}
QFileInfo configFileInfo1("Doxyfile"),configFileInfo2("doxyfile");
- QString config;
+ QCString config;
if (optind>=argc)
{
if (configFileInfo1.exists())
@@ -3646,23 +3838,24 @@ int main(int argc,char **argv)
config=fileToString(argv[1]);
parseConfig(config);
+ checkConfig();
/**************************************************************************
* Initialize output generators *
**************************************************************************/
outputList = new OutputList(TRUE);
- if (generateHtml)
+ if (Config::generateHtml)
{
outputList->add(new HtmlGenerator);
HtmlGenerator::init();
}
- if (generateLatex)
+ if (Config::generateLatex)
{
outputList->add(new LatexGenerator);
LatexGenerator::init();
}
- if (generateMan)
+ if (Config::generateMan)
{
outputList->add(new ManGenerator);
ManGenerator::init();
@@ -3674,42 +3867,43 @@ int main(int argc,char **argv)
// gather names of all files in the include path
msg("Searching for include files...\n");
- s=includePath.first();
+ s=Config::includePath.first();
while (s)
{
- readFileOrDirectory(s,0,&includeNameDict,0,&filePatternList,
- &excludePatternList,0,0);
- s=includePath.next();
+ readFileOrDirectory(s,0,&includeNameDict,0,&Config::filePatternList,
+ &Config::excludePatternList,0,0);
+ s=Config::includePath.next();
}
msg("Searching for example files...\n");
- s=examplePath.first();
+ s=Config::examplePath.first();
while (s)
{
- readFileOrDirectory(s,0,&exampleNameDict,0,&filePatternList,
- &excludePatternList,0,0);
- s=examplePath.next();
+ readFileOrDirectory(s,0,&exampleNameDict,0,&Config::filePatternList,
+ &Config::excludePatternList,0,0);
+ s=Config::examplePath.next();
}
msg("Searching for files to exclude\n");
- s=excludeSources.first();
+ s=Config::excludeSources.first();
while (s)
{
- readFileOrDirectory(s,0,0,0,&filePatternList,
+ readFileOrDirectory(s,0,0,0,&Config::filePatternList,
0,0,&excludeNameDict);
- s=excludeSources.next();
+ s=Config::excludeSources.next();
}
msg("Reading input files...\n");
int inputSize=0;
- s=inputSources.first();
+ s=Config::inputSources.first();
while (s)
{
inputSize+=readFileOrDirectory(s,&inputNameList,
&inputNameDict,&excludeNameDict,
- &filePatternList,&excludePatternList,
+ &Config::filePatternList,
+ &Config::excludePatternList,
&inputFiles,0);
- s=inputSources.next();
+ s=Config::inputSources.next();
}
//msg("Input size %d bytes\n",inputSize);
@@ -3732,19 +3926,21 @@ int main(int argc,char **argv)
msg("Reading tag files\n");
- s=tagFileList.first();
+ s=Config::tagFileList.first();
while (s)
{
readTagFile(s);
- s=tagFileList.next();
+ s=Config::tagFileList.next();
}
- QFile *tag =new QFile(genTagFile);
- if (genTagFile.length()>0)
+ QFile *tag =new QFile(Config::genTagFile);
+ if (Config::genTagFile.length()>0)
{
if (!tag->open(IO_WriteOnly))
{
- err("Error: cannot open tag file %s for writing\n",genTagFile.data());
+ err("Error: cannot open tag file %s for writing\n",
+ Config::genTagFile.data()
+ );
exit(1);
}
tagFile.setDevice(tag);
@@ -3756,7 +3952,7 @@ int main(int argc,char **argv)
// Notice: the order of the function calls below is very important!
- if (generateHtml)
+ if (Config::generateHtml)
{
msg("Reading formula repository...\n");
readFormulaRepository();
@@ -3801,7 +3997,6 @@ int main(int argc,char **argv)
msg("Searching for friends...\n");
findFriends();
-
msg("Searching for documented variables...\n");
buildVarList(root);
@@ -3910,31 +4105,31 @@ int main(int argc,char **argv)
outputList->writeStyleInfo(0); // write first part
outputList->disableAllBut(OutputGenerator::Latex);
parseText(*outputList,
- theTranslator->trGeneratedAt(dateToString(TRUE),projectName)
+ theTranslator->trGeneratedAt(dateToString(TRUE),Config::projectName)
);
outputList->writeStyleInfo(1); // write second part
parseText(*outputList,theTranslator->trWrittenBy());
outputList->writeStyleInfo(2); // write third part
parseText(*outputList,
- theTranslator->trGeneratedAt(dateToString(TRUE),projectName)
+ theTranslator->trGeneratedAt(dateToString(TRUE),Config::projectName)
);
outputList->writeStyleInfo(3); // write fourth part
parseText(*outputList,theTranslator->trWrittenBy());
outputList->writeStyleInfo(4); // write last part
outputList->enableAll();
- if (formulaList.count()>0 && generateHtml)
+ if (formulaList.count()>0 && Config::generateHtml)
{
msg("Generating bitmaps for formulas in HTML...\n");
- formulaList.generateBitmaps(htmlOutputDir);
+ formulaList.generateBitmaps(Config::htmlOutputDir);
}
- if (searchEngineFlag || tagFileList.count()>0)
+ if (Config::searchEngineFlag || Config::tagFileList.count()>0)
{
msg("\nNow copy the file\n\n %s\n\nto the directory where the CGI binaries are "
- "located and don't forget to run\n\n",(htmlOutputDir+"/"+cgiName).data());
+ "located and don't forget to run\n\n",(Config::htmlOutputDir+"/"+Config::cgiName).data());
msg(" %s/installdox\n\nto replace any dummy links.\n\n",
- htmlOutputDir.data());
+ Config::htmlOutputDir.data());
}
delete tag;
diff --git a/src/doxygen.h b/src/doxygen.h
index 005ac7e..17c8cd8 100644
--- a/src/doxygen.h
+++ b/src/doxygen.h
@@ -18,6 +18,7 @@
#ifndef DOXYGEN_H
#define DOXYGEN_H
+#include "qtbc.h"
#include "groupdef.h"
#include "filedef.h"
#include "classdef.h"
@@ -34,9 +35,9 @@ struct PageInfo
{
PageInfo(const char *n,const char *d,const char *t)
{ name=n; doc=d; title=t; }
- QString name;
- QString doc;
- QString title;
+ QCString name;
+ QCString doc;
+ QCString title;
};
class PageList : public QList<PageInfo>
@@ -47,10 +48,10 @@ class PageList : public QList<PageInfo>
}
};
-class BufStr : public QString
+class BufStr : public QCString
{
public:
- BufStr(int size) : QString(size), offset(0), spareRoom(10240) {}
+ BufStr(int size) : QCString(size), offset(0), spareRoom(10240) {}
void addChar(char c)
{
if (offset>=size()) resize(size()+spareRoom);
@@ -73,11 +74,11 @@ class BufStr : public QString
const int spareRoom; // 10Kb extra room to avoid frequent resizing
};
-typedef QList<QString> StringList;
+typedef QList<QCString> StringList;
typedef QDict<MemberDef> MemberDict;
typedef QDict<ClassDef> ClassDict;
typedef QDict<FileDef> FileDict;
-typedef QDict<QString> StringDict;
+typedef QDict<QCString> StringDict;
typedef QDict<PageInfo> PageDict;
typedef QDict<GroupDef> GroupDict;
diff --git a/src/doxygen.pro b/src/doxygen.pro
index 21e2ea5..e6dd3c0 100644
--- a/src/doxygen.pro
+++ b/src/doxygen.pro
@@ -14,7 +14,7 @@
# TMake project file for doxygen
TEMPLATE = doxygen.t
-CONFIG = console qt warn_on release #debug
+CONFIG = console qt warn_on release #debug
HEADERS = doxygen.h scanner.h classdef.h classlist.h memberdef.h \
membername.h index.h memberlist.h definition.h \
entry.h logos.h instdox.h message.h code.h \
diff --git a/src/doxysearch.cpp b/src/doxysearch.cpp
index cd59d02..027b185 100644
--- a/src/doxysearch.cpp
+++ b/src/doxysearch.cpp
@@ -259,7 +259,15 @@ void printSearchPage(bool open=FALSE)
int readInt(FILE *f)
{
- return (fgetc(f)<<24)+(fgetc(f)<<16)+(fgetc(f)<<8)+fgetc(f);
+ unsigned char c_24 = fgetc(f);
+ unsigned char c_16 = fgetc(f);
+ unsigned char c_08 = fgetc(f);
+ unsigned char c_00 = fgetc(f);
+ return ((unsigned int)c_24<<24)+
+ ((unsigned int)c_16<<16)+
+ ((unsigned int)c_08<<8)+
+ c_00;
+ //return (fgetc(f)<<24)+(fgetc(f)<<16)+(fgetc(f)<<8)+fgetc(f);
}
//----------------------------------------------------------------------------
@@ -755,10 +763,10 @@ void fileToBuf(const char *name, char **buf)
{
FILE *f;
struct stat file_stats;
- if ((f=fopen(name,"r"))==NULL) return;
+ if ((f=fopen(name,"rb"))==NULL) return;
if (stat(name,&file_stats)==-1)
{
- message("Error: could not fstat header file %s\n",name);
+ message("Error: could not fstat file %s\n",name);
exit(1);
}
unsigned int len=file_stats.st_size;
@@ -769,7 +777,7 @@ void fileToBuf(const char *name, char **buf)
}
if (fread(*buf,1,len,f)!=len)
{
- message("Error: could not read header file %s\n",name);
+ message("Error: could not read file %s\n",name);
exit(1);
}
(*buf)[len]='\0';
@@ -808,12 +816,20 @@ void getConfig(const char *s)
char headerFile[MAXSTRLEN];
strcpy(headerFile,s);
+#if defined(_WIN32)
+ strcat(headerFile,"\\header.html");
+#else
strcat(headerFile,"/header.html");
+#endif
fileToBuf(headerFile,&headerBuf);
char footerFile[MAXSTRLEN];
strcpy(footerFile,s);
+#if defined(_WIN32)
+ strcat(footerFile,"\\footer.html");
+#else
strcat(footerFile,"/footer.html");
+#endif
fileToBuf(footerFile,&footerBuf);
}
@@ -908,16 +924,24 @@ int main(int argc,char **argv)
{
char configFile[MAXSTRLEN];
strcpy(configFile,argv[argIndex]);
+#if defined(_WIN32)
+ strcat(configFile,"\\search.cfg");
+#else
strcat(configFile,"/search.cfg");
+#endif
char indexFile[MAXSTRLEN];
strcpy(indexFile,argv[argIndex]);
+#if defined(_WIN32)
+ strcat(indexFile,"\\search.idx");
+#else
strcat(indexFile,"/search.idx");
+#endif
FileInfo *fi=fileList.add();
FILE *g;
- if ((fi->f=fopen(indexFile,"r"))==NULL)
+ if ((fi->f=fopen(indexFile,"rb"))==NULL)
{
message("Error: could not open index file %s\n",indexFile);
exit(1);
diff --git a/src/doxytag.l b/src/doxytag.l
index 0c70dc6..4e2debd 100644
--- a/src/doxytag.l
+++ b/src/doxytag.l
@@ -23,7 +23,7 @@
#include <assert.h>
#include <ctype.h>
-#include <qstring.h>
+#include "qtbc.h"
#include <qstrlist.h>
#include <qfileinf.h>
#include <qfile.h>
@@ -38,16 +38,16 @@
struct MemberDef
{
- QString name;
- QString anchor;
- QString args;
+ QCString name;
+ QCString anchor;
+ QCString args;
};
struct ClassDef
{
- QString name;
+ QCString name;
QStrList bases;
- QString fileName;
+ QCString fileName;
bool isFile;
QList<MemberDef> memberList;
};
@@ -61,19 +61,19 @@ static bool genTag;
static bool genIndex;
static QStrList bases;
-static QString inputString;
+static QCString inputString;
static int inputPosition;
-static QString yyFileName;
+static QCString yyFileName;
static int yyLineNr;
-static QString classFile;
-static QString memberRef;
-static QString memberName;
-static QString memberArgs;
-static QString className;
+static QCString classFile;
+static QCString memberRef;
+static QCString memberName;
+static QCString memberArgs;
+static QCString className;
//static bool newClass;
-static QString docBaseLink;
-static QString docAnchor;
-static QString docRefName;
+static QCString docBaseLink;
+static QCString docAnchor;
+static QCString docRefName;
static bool nameBug;
static SearchIndex searchIndex;
@@ -152,9 +152,9 @@ static void addReference()
}
}
-QString unhtmlify(const char *str)
+QCString unhtmlify(const char *str)
{
- QString result;
+ QCString result;
const char *p=str;
char c;
while ((c=*p)!='\0')
@@ -236,7 +236,7 @@ QString unhtmlify(const char *str)
}
<SkipPreformated>[^\<]+
<CheckConstructor>[a-z_A-Z0-9~:]+ {
- QString s=yytext;
+ QCString s=yytext;
if (s.find("::")!=-1)
{
docRefName=yytext;
@@ -401,7 +401,7 @@ QString unhtmlify(const char *str)
*/
-void parse(QString &s)
+void parse(QCString &s)
{
bases.clear();
nameBug = FALSE;
@@ -425,7 +425,7 @@ void parseFile(QFileInfo &fi)
className.resize(0);
memberName.resize(0);
//printf("Parsing file %s...\n",fi.fileName().data());
- QString input(fi.size()+1);
+ QCString input(fi.size()+1);
docBaseLink=fi.fileName();
docRefName=fi.fileName().copy();
searchIndex.addReference(docRefName,docBaseLink);
@@ -503,8 +503,8 @@ const char *getArg(int argc,char **argv,int &optind,const char c)
int main(int argc,char **argv)
{
- QString tagName;
- QString indexName;
+ QCString tagName;
+ QCString indexName;
int optind=1;
const char *arg;
@@ -554,7 +554,7 @@ int main(int argc,char **argv)
}
if (genIndex)
{
- printf("Writing search index\n");
+ //printf("Writing search index\n");
if (!searchIndex.saveIndex(indexName))
{
fprintf(stderr,"Error: Could not write search index\n");
@@ -562,7 +562,7 @@ int main(int argc,char **argv)
QFileInfo fi(indexName);
if (fi.exists())
{
- QString dir=fi.dir().absPath();
+ QCString dir=convertToQCString(fi.dir().absPath());
fi.setFile(dir+"/search.gif");
if (!fi.exists()) writeSearchButton(dir);
fi.setFile(dir+"/doxygen.gif");
diff --git a/src/entry.cpp b/src/entry.cpp
index 51724ce..4e2ca93 100644
--- a/src/entry.cpp
+++ b/src/entry.cpp
@@ -16,31 +16,32 @@
#include "entry.h"
-static int newCount=0;
+int Entry::num=0;
Entry::Entry()
{
- num=newCount++;
+ num++;
//printf("New Entry %d\n",num);
parent=0;
sublist = new QList<Entry>;
sublist->setAutoDelete(TRUE);
extends = new QList<BaseInfo>;
extends->setAutoDelete(TRUE);
- groups = new QList<QString>;
+ groups = new QList<QCString>;
groups->setAutoDelete(TRUE);
- anchors = new QList<QString>;
+ anchors = new QList<QCString>;
anchors->setAutoDelete(TRUE);
argList = new ArgumentList;
argList->setAutoDelete(TRUE);
//printf("Entry::Entry() tArgList=0\n");
tArgList = 0;
+ mGrpId = -1;
reset();
}
Entry::Entry(const Entry &e)
{
- num=newCount++;
+ num++;
//printf("Copy New Entry %d\n",num);
section = e.section;
protection = e.protection;
@@ -62,13 +63,14 @@ Entry::Entry(const Entry &e)
inside = e.inside.copy();
fileName = e.fileName.copy();
startLine = e.startLine;
+ mGrpId = e.mGrpId;
sublist = new QList<Entry>;
sublist->setAutoDelete(TRUE);
extends = new QList<BaseInfo>;
extends->setAutoDelete(TRUE);
- groups = new QList<QString>;
+ groups = new QList<QCString>;
groups->setAutoDelete(TRUE);
- anchors = new QList<QString>;
+ anchors = new QList<QCString>;
anchors->setAutoDelete(TRUE);
argList = new ArgumentList;
argList->setAutoDelete(TRUE);
@@ -92,17 +94,17 @@ Entry::Entry(const Entry &e)
}
// deep copy group list
- QListIterator<QString> sli(*e.groups);
- QString *s;
+ QListIterator<QCString> sli(*e.groups);
+ QCString *s;
for (;(s=sli.current());++sli)
{
- groups->append(new QString(*s));
+ groups->append(new QCString(*s));
}
- QListIterator<QString> sli2(*e.anchors);
+ QListIterator<QCString> sli2(*e.anchors);
for (;(s=sli2.current());++sli2)
{
- anchors->append(new QString(*s));
+ anchors->append(new QCString(*s));
}
// deep copy argument list
@@ -140,8 +142,8 @@ Entry::~Entry()
delete groups;
delete anchors;
delete argList;
- //printf("Entry::~Entry() tArgList=%p\n",tArgList);
delete tArgList;
+ num--;
}
void Entry::addSubEntry(Entry *current)
@@ -171,6 +173,7 @@ void Entry::reset()
args.resize(0);
exception.resize(0);
program.resize(0);
+ body.resize(0);
includeFile.resize(0);
includeName.resize(0);
doc.resize(0);
@@ -178,6 +181,7 @@ void Entry::reset()
brief.resize(0);
inside.resize(0);
fileName.resize(0);
+ mGrpId = -1;
section = EMPTY_SEC;
sig = FALSE;
virt = Normal;
@@ -202,6 +206,7 @@ int Entry::getSize()
size+=args.length()+1;
size+=exception.length()+1;
size+=program.length()+1;
+ size+=body.length()+1;
size+=includeFile.length()+1;
size+=includeName.length()+1;
size+=doc.length()+1;
@@ -216,7 +221,7 @@ int Entry::getSize()
size+=bi->name.length()+1+sizeof(bi->prot)+sizeof(bi->virt);
bi=extends->next();
}
- QString *s=groups->first();
+ QCString *s=groups->first();
while (s)
{
size+=sizeof(QLNode);
diff --git a/src/entry.h b/src/entry.h
index a302955..94cf52b 100644
--- a/src/entry.h
+++ b/src/entry.h
@@ -17,7 +17,7 @@
#ifndef ENTRY_H
#define ENTRY_H
-#include <qstring.h>
+#include "qtbc.h"
#include <qlist.h>
enum Protection { Public, Protected, Private } ;
@@ -26,7 +26,7 @@ enum Specifier { Normal, Virtual, Pure } ;
struct BaseInfo
{
BaseInfo(const char *n,Protection p,Specifier v) : name(n),prot(p),virt(v) {}
- QString name; // the name of the base class
+ QCString name; // the name of the base class
Protection prot; // inheritance type
Specifier virt; // virtualness
};
@@ -51,9 +51,9 @@ struct Argument
return *this;
}
- QString type; // argument type
- QString name; // argument name (if any)
- QString defval; // argument default value (if any)
+ QCString type; // argument type
+ QCString name; // argument name (if any)
+ QCString defval; // argument default value (if any)
};
class ArgumentList : public QList<Argument>
@@ -115,35 +115,37 @@ class Entry
void addSubEntry (Entry* e) ;
void reset();
- int section; // entry type;
+ int section; // entry type (see Sections);
Protection protection; // class protection
bool sig; // a Qt signal ?
bool slot; // a Qt slot ?
bool stat; // static ?
bool proto; // prototype ?
- Specifier virt; // virtualness of the entry
- Entry *parent; // parent node in the tree
- QString type; // member type
- QString name; // member name
- QString args; // member argument string
+ Specifier virt; // virtualness of the entry
+ Entry *parent; // parent node in the tree
+ QCString type; // member type
+ QCString name; // member name
+ QCString args; // member argument string
ArgumentList *argList; // member arguments as a list
ArgumentList *tArgList; // template argument list
- ArgumentList *tNameList; // template name list
- QString program; // the program text
- QString includeFile; // include file (2 arg of \class, must be unique)
- QString includeName; // include name (3 arg of \class)
- QString doc; // documentation block (partly parsed)
- QString relates; // related class (doc block)
- QString brief; // brief description (doc block)
- QString inside; // name of the class in which documents are found
- QString exception; // throw specification
+ QCString program; // the program text
+ QCString body; // the function body
+ QCString includeFile; // include file (2 arg of \class, must be unique)
+ QCString includeName; // include name (3 arg of \class)
+ QCString doc; // documentation block (partly parsed)
+ QCString relates; // related class (doc block)
+ QCString brief; // brief description (doc block)
+ QCString inside; // name of the class in which documents are found
+ QCString exception; // throw specification
+ int mGrpId; // member group id
+ QCString mGrpHeader; // member group header
QList<Entry> *sublist; // entries that are children of this one
QList<BaseInfo> *extends; // list of base classes
- QList<QString> *groups; // list of groups this entry belongs to
- QList<QString> *anchors; // list of anchors defined in this entry
- QString fileName; // file this entry was extracted from
+ QList<QCString> *groups; // list of groups this entry belongs to
+ QList<QCString> *anchors; // list of anchors defined in this entry
+ QCString fileName; // file this entry was extracted from
int startLine; // start line of entry in the source
- int num;
+ static int num; // counts the total number of entries
private:
Entry &operator=(const Entry &);
} ;
diff --git a/src/example.h b/src/example.h
index eef33ce..b43733f 100644
--- a/src/example.h
+++ b/src/example.h
@@ -17,16 +17,16 @@
#ifndef EXAMPLE_H
#define EXAMPLE_H
-#include <qstring.h>
+#include "qtbc.h"
class ClassDef;
class MemberName;
struct Example
{
- QString anchor;
- QString name;
- QString file;
+ QCString anchor;
+ QCString name;
+ QCString file;
};
class ExampleList : public QList<Example>
diff --git a/src/filedef.cpp b/src/filedef.cpp
index 7921bf7..5f62357 100644
--- a/src/filedef.cpp
+++ b/src/filedef.cpp
@@ -14,6 +14,7 @@
*
*/
+#include "qtbc.h"
#include "memberlist.h"
#include "classlist.h"
#include "define.h"
@@ -66,14 +67,14 @@ void FileDef::writeDocumentation(OutputList &ol)
{
//funcList->countDecMembers();
- QString pageTitle=name()+" File Reference";
+ QCString pageTitle=name()+" File Reference";
startFile(ol,diskname,pageTitle);
startTitle(ol);
parseText(ol,theTranslator->trFileReference(name()));
endTitle(ol,name());
//ol.newParagraph();
- if (genTagFile.length()>0) tagFile << "&" << name() << ":\n";
+ if (Config::genTagFile.length()>0) tagFile << "&" << name() << ":\n";
//brief=brief.stripWhiteSpace();
//int bl=brief.length();
@@ -97,17 +98,53 @@ void FileDef::writeDocumentation(OutputList &ol)
ol.writeSynopsis();
ol.startMemberSections();
+
+ if (namespaceList->count()>0)
+ {
+ NamespaceDef *nd=namespaceList->first();
+ bool found=FALSE;
+ while (nd)
+ {
+ if (nd->isVisibleExt())
+ {
+ if (!found)
+ {
+ ol.startMemberHeader();
+ parseText(ol,theTranslator->trNamespaces());
+ ol.endMemberHeader();
+ ol.startMemberList();
+ found=TRUE;
+ }
+ ol.startMemberItem();
+ ol.writeString("namespace ");
+ ol.insertMemberAlign();
+ if (nd->hasDocumentation())
+ {
+ ol.writeObjectLink(nd->getReference(),
+ nd->getOutputFileBase(),
+ 0,
+ nd->name()
+ );
+ }
+ else
+ {
+ ol.startBold();
+ ol.docify(nd->name());
+ ol.endBold();
+ }
+ ol.endMemberItem();
+ }
+ nd=namespaceList->next();
+ }
+ if (found) ol.endMemberList();
+ }
if (classList->count()>0)
{
ClassDef *cd=classList->first();
bool found=FALSE;
while (cd)
{
- if (//cd->name()[0]!='@' &&
- //(cd->protection()!=Private || extractPrivateFlag) &&
- //(cd->hasDocumentation() || !hideClassFlag))
- cd->isVisibleExt()
- )
+ if ( cd->isVisibleExt() )
{
if (!found)
{
@@ -247,7 +284,7 @@ void FileDef::writeDocumentation(OutputList &ol)
ol.startGroupHeader();
parseText(ol,theTranslator->trAuthor());
ol.endGroupHeader();
- parseText(ol,theTranslator->trGeneratedAutomatically(projectName));
+ parseText(ol,theTranslator->trGeneratedAutomatically(Config::projectName));
ol.enableAll();
endFile(ol);
}
diff --git a/src/filedef.h b/src/filedef.h
index ca95e20..b5c9585 100644
--- a/src/filedef.h
+++ b/src/filedef.h
@@ -17,8 +17,8 @@
#ifndef FILEDEF_H
#define FILEDEF_H
-#include <qlist.h>
#include "index.h"
+#include <qlist.h>
#include "config.h"
#include "definition.h"
@@ -53,9 +53,9 @@ class FileDef : public Definition
~FileDef();
/*! Returns the unique file name (this may include part of the path). */
- QString name() const
+ QCString name() const
{
- if (fullPathNameFlag)
+ if (Config::fullPathNameFlag)
return filename;
else
return Definition::name();
@@ -63,10 +63,10 @@ class FileDef : public Definition
/*! Returns nameString with all slashes replaced by underscores. */
//const char *diskName() const { return diskname; }
- QString getOutputFileBase() const { return diskname; }
+ QCString getOutputFileBase() const { return diskname; }
/*! Returns the absolute path including the file name. */
- QString absFilePath() const { return filepath; }
+ QCString absFilePath() const { return filepath; }
/*! Returns the name of the verbatim copy of this file (if any). */
const char *includeName() const { return incName; }
@@ -87,7 +87,7 @@ class FileDef : public Definition
//void setDocumentation(const char *d) { doc=d; }
/*! Returns the absolute path of this file. */
- QString getPath() const { return path; }
+ QCString getPath() const { return path; }
/*! Returns true iff any documentation for this file is found. */
//bool hasDocumentation()
@@ -117,15 +117,15 @@ class FileDef : public Definition
FileList *includeList;
NamespaceList *namespaceList;
DefineList *defineList;
- //QString n;
- //QString doc;
- //QString brief;
- QString reference;
- QString path;
- QString filepath;
- QString diskname;
- QString filename;
- QString incName;
+ //QCString n;
+ //QCString doc;
+ //QCString brief;
+ QCString reference;
+ QCString path;
+ QCString filepath;
+ QCString diskname;
+ QCString filename;
+ QCString incName;
//FileType ftype;
};
diff --git a/src/filename.cpp b/src/filename.cpp
index 60367dc..a345969 100644
--- a/src/filename.cpp
+++ b/src/filename.cpp
@@ -26,9 +26,9 @@ FileName::~FileName()
{
}
-//static QString convertSlashes(const char *s)
+//static QCString convertSlashes(const char *s)
//{
-// QString result=s;
+// QCString result=s;
// int i,l=result.length();
// for (i=0;i<l;i++) if (result.at(i)=='/') result.at(i)='_';
// return result;
@@ -36,7 +36,7 @@ FileName::~FileName()
void FileName::generateDiskNames()
{
- QString commonPrefix;
+ QCString commonPrefix;
FileDef *fd=first();
int count=0;
while (fd) { if (!fd->isReference()) count++; fd=next(); }
@@ -66,8 +66,8 @@ void FileName::generateDiskNames()
//printf("i=%d fd->path=`%s' fd->name=`%s'\n",i,fd->path.data(),fd->name().data());
if (i==(int)fd->path.length())
{
- warning("Warning: Input file found multiple times!\n"
- " The generated documentation for this file may not be correct!\n");
+ warning("Warning: Input file %s found multiple times!\n"
+ " The generated documentation for this file may not be correct!\n",fd->absFilePath().data());
found=TRUE;
}
else if (fd->path[i]!=c)
diff --git a/src/filename.h b/src/filename.h
index 2932d18..cb39ce5 100644
--- a/src/filename.h
+++ b/src/filename.h
@@ -17,6 +17,7 @@
#ifndef FILENAME_H
#define FILENAME_H
+#include "qtbc.h"
#include <qdict.h>
#include "filedef.h"
@@ -30,7 +31,7 @@ class FileName : public QList<FileDef>
int compareItems(GCI item1,GCI item2);
private:
- QString name;
+ QCString name;
};
class FileNameIterator : public QListIterator<FileDef>
diff --git a/src/formula.cpp b/src/formula.cpp
index 53e8b38..0a961ca 100644
--- a/src/formula.cpp
+++ b/src/formula.cpp
@@ -17,6 +17,7 @@
#include <stdlib.h>
#include <unistd.h>
+#include "qtbc.h"
#include <qfile.h>
#include <qtstream.h>
#include <qfileinf.h>
@@ -49,12 +50,12 @@ void FormulaList::generateBitmaps(const char *path)
QDir d(path);
// store the original directory
if (!d.exists()) { err("Error: Output dir %s does not exist!\n",path); exit(1); }
- QString oldDir = QDir::currentDirPath().copy();
+ QCString oldDir = convertToQCString(QDir::currentDirPath());
// goto the html output directory (i.e. path)
QDir::setCurrent(d.absPath());
QDir thisDir;
// generate a latex file containing one formula per page.
- QString texName="_formulas.tex";
+ QCString texName="_formulas.tex";
QList<int> pagesToGenerate;
pagesToGenerate.setAutoDelete(TRUE);
FormulaListIterator fli(*this);
@@ -70,7 +71,7 @@ void FormulaList::generateBitmaps(const char *path)
int page=0;
for (fli.toFirst();(formula=fli.current());++fli)
{
- QString resultName;
+ QCString resultName;
resultName.sprintf("form-%d.gif",formula->getId());
// only formulas for which no image exists are generated
QFileInfo fi(resultName);
@@ -99,7 +100,7 @@ void FormulaList::generateBitmaps(const char *path)
int pageNum=*pagePtr;
msg("Generating image form-%d.gif for formula\n",pageNum);
char dviCmd[256];
- QString formBase;
+ QCString formBase;
formBase.sprintf("_form%d",pageNum);
// run dvips to convert the page with number pageIndex to an
// encapsulated postscript.
@@ -110,7 +111,7 @@ void FormulaList::generateBitmaps(const char *path)
QFileInfo fi(formBase+".eps");
if (fi.exists())
{
- QString eps = fileToString(formBase+".eps");
+ QCString eps = fileToString(formBase+".eps");
int i=eps.find("%%BoundingBox:");
if (i!=-1)
{
@@ -162,7 +163,7 @@ void FormulaList::generateBitmaps(const char *path)
if (f.open(IO_ReadOnly))
{
QTextStream t(&f);
- QString s;
+ QCString s;
if (!t.eof())
s=t.readLine();
if (s.length()<2 || s.left(2)!="P6")
@@ -233,7 +234,7 @@ void FormulaList::generateBitmaps(const char *path)
}
}
// save the result as a gif
- QString resultName;
+ QCString resultName;
resultName.sprintf("form-%d.gif",pageNum);
// the option parameter 1 is used here as a temporary hack
// to select the right color palette!
diff --git a/src/formula.h b/src/formula.h
index 977ccfe..9edd583 100644
--- a/src/formula.h
+++ b/src/formula.h
@@ -17,7 +17,7 @@
#ifndef FORMULA_H
#define FORMULA_H
-#include <qstring.h>
+#include "qtbc.h"
#include <qlist.h>
#include <qdict.h>
@@ -27,11 +27,11 @@ class Formula
Formula(const char *text);
~Formula();
int getId();
- QString getFormulaText() const { return form; }
+ QCString getFormulaText() const { return form; }
private:
int number;
- QString form;
+ QCString form;
};
class FormulaList : public QList<Formula>
diff --git a/src/groupdef.cpp b/src/groupdef.cpp
index 924199e..e1e28ab 100644
--- a/src/groupdef.cpp
+++ b/src/groupdef.cpp
@@ -15,6 +15,7 @@
*/
#include <ctype.h>
+#include "qtbc.h"
#include "groupdef.h"
#include "classdef.h"
#include "filedef.h"
@@ -118,7 +119,7 @@ void GroupDef::writeDocumentation(OutputList &ol)
ClassDef *cd=classList->first();
while (cd)
{
- QString type;
+ QCString type;
switch (cd->compoundType())
{
case ClassDef::Class: type="class"; break;
diff --git a/src/groupdef.h b/src/groupdef.h
index a8bc562..ab54ea6 100644
--- a/src/groupdef.h
+++ b/src/groupdef.h
@@ -17,7 +17,7 @@
#ifndef GROUPDEF_H
#define GROUPDEF_H
-#include <qstring.h>
+#include "qtbc.h"
#include <qlist.h>
#include "definition.h"
@@ -36,7 +36,7 @@ class GroupDef : public Definition
GroupDef(const char *name,const char *title);
~GroupDef();
//const char *groupFile() const { return fileName; }
- QString getOutputFileBase() const { return fileName; }
+ QCString getOutputFileBase() const { return fileName; }
const char *groupTitle() const { return title; }
void addFile(const FileDef *def);
void addClass(const ClassDef *def);
@@ -45,8 +45,8 @@ class GroupDef : public Definition
int countMembers() const;
private:
- QString title; // title of the group
- QString fileName; // base name of the generated file
+ QCString title; // title of the group
+ QCString fileName; // base name of the generated file
FileList *fileList; // list of all files in the group
ClassList *classList; // list of all classes in the group
NamespaceList *namespaceList; // list of all namespace in the group
diff --git a/src/htmlgen.cpp b/src/htmlgen.cpp
index 8c5b50a..1a44646 100644
--- a/src/htmlgen.cpp
+++ b/src/htmlgen.cpp
@@ -14,8 +14,10 @@
*
*/
-#include <qdir.h>
#include <stdlib.h>
+
+#include "qtbc.h"
+#include <qdir.h>
#include "message.h"
#include "htmlgen.h"
#include "config.h"
@@ -26,9 +28,9 @@
HtmlGenerator::HtmlGenerator() : OutputGenerator()
{
- if (headerFile.length()>0) header=fileToString(headerFile);
- if (footerFile.length()>0) footer=fileToString(footerFile);
- dir=htmlOutputDir;
+ if (Config::headerFile.length()>0) header=fileToString(Config::headerFile);
+ if (Config::footerFile.length()>0) footer=fileToString(Config::footerFile);
+ dir=Config::htmlOutputDir;
}
HtmlGenerator::~HtmlGenerator()
@@ -42,18 +44,18 @@ void HtmlGenerator::append(const OutputGenerator *g)
void HtmlGenerator::init()
{
- QDir d(htmlOutputDir);
- if (!d.exists() && !d.mkdir(htmlOutputDir))
+ QDir d(Config::htmlOutputDir);
+ if (!d.exists() && !d.mkdir(Config::htmlOutputDir))
{
- err("Could not create output directory %s\n",htmlOutputDir.data());
+ err("Could not create output directory %s\n",Config::htmlOutputDir.data());
exit(1);
}
- writeLogo(htmlOutputDir);
+ writeLogo(Config::htmlOutputDir);
}
void HtmlGenerator::startFile(const char *name,const char *title,bool external)
{
- QString fileName=name;
+ QCString fileName=name;
lastTitle=title;
if (fileName.right(5)!=".html") fileName+=".html";
startPlainFile(fileName);
@@ -156,7 +158,9 @@ void HtmlGenerator::writeStyleInfo(int part)
if (part==0)
{
startPlainFile("doxygen.css");
- t << "H1 { border-width: thin; border: solid; text-align: center }" << endl
+ t
+ //<< "H1 { border-width: thin; border: solid; text-align: center }" << endl
+ << "H1 { text-align: center }" << endl
<< "A.el { text-decoration: none; font-weight: bold }" << endl
<< "DL.el { margin-left: -1cm }" << endl
<< "DIV.fragment { width: 100%; border: none; background-color: #eeeeee }" << endl
@@ -274,7 +278,7 @@ void HtmlGenerator::writeSection(const char *lab,const char *title,bool sub)
void HtmlGenerator::writeSectionRef(const char *name,const char *lab,
const char *title)
{
- QString refName=name;
+ QCString refName=name;
if (refName.right(5)!=".html") refName+=".html";
t << "<a href=\"" << refName << "#" << lab << "\">";
docify(title);
@@ -284,7 +288,7 @@ void HtmlGenerator::writeSectionRef(const char *name,const char *lab,
void HtmlGenerator::writeSectionRefItem(const char *name,const char *lab,
const char *title)
{
- QString refName=name;
+ QCString refName=name;
if (refName.right(5)!=".html") refName+=".html";
t << "<a href=\"" << refName << "#" << lab << "\">";
docify(title);
@@ -356,7 +360,7 @@ void HtmlGenerator::endClassDiagram(ClassDiagram &d,
void HtmlGenerator::startColorFont(uchar red,uchar green,uchar blue)
{
- QString colorString;
+ QCString colorString;
colorString.sprintf("%02x%02x%02x",red,green,blue);
t << "<font color=\"#" << colorString << "\">";
}
@@ -370,12 +374,12 @@ void HtmlGenerator::writeFormula(const char *n,const char *text)
{
if (text && text[0]=='\\') t << "<p><center>" << endl;
t << "<img align=\"top\" src=\"" << n << "\">" << endl;
- if (text && text[0]=='\\') t << "</center></p>" << endl;
+ if (text && text[0]=='\\') t << "</center><p>" << endl;
}
void HtmlGenerator::startMemberList()
{
- if (htmlAlignMemberFlag)
+ if (Config::htmlAlignMemberFlag)
{
//t << endl << "<p><table border=0 cellspacing=2 cellpadding=0>" << endl;
}
@@ -387,7 +391,7 @@ void HtmlGenerator::startMemberList()
void HtmlGenerator::endMemberList()
{
- if (htmlAlignMemberFlag)
+ if (Config::htmlAlignMemberFlag)
{
//t << "</table>" << endl;
}
@@ -399,7 +403,7 @@ void HtmlGenerator::endMemberList()
void HtmlGenerator::startMemberItem()
{
- if (htmlAlignMemberFlag)
+ if (Config::htmlAlignMemberFlag)
{
t << "<tr><td align=right valign=top>";
}
@@ -411,15 +415,15 @@ void HtmlGenerator::startMemberItem()
void HtmlGenerator::insertMemberAlign()
{
- if (htmlAlignMemberFlag)
+ if (Config::htmlAlignMemberFlag)
{
- t << "</td><td valign=top>";
+ t << "&nbsp;</td><td valign=top>";
}
}
void HtmlGenerator::endMemberItem()
{
- if (htmlAlignMemberFlag)
+ if (Config::htmlAlignMemberFlag)
{
t << "</td></tr>";
}
@@ -428,7 +432,7 @@ void HtmlGenerator::endMemberItem()
void HtmlGenerator::startMemberDescription()
{
- if (htmlAlignMemberFlag)
+ if (Config::htmlAlignMemberFlag)
{
t << "<tr><td></td><td><font size=-1><em>";
}
@@ -440,7 +444,7 @@ void HtmlGenerator::startMemberDescription()
void HtmlGenerator::endMemberDescription()
{
- if (htmlAlignMemberFlag)
+ if (Config::htmlAlignMemberFlag)
{
t << "</em></font><br><br></td></tr>" << endl;
}
@@ -452,7 +456,7 @@ void HtmlGenerator::endMemberDescription()
void HtmlGenerator::startMemberSections()
{
- if (htmlAlignMemberFlag)
+ if (Config::htmlAlignMemberFlag)
{
t << "<table border=0 cellpadding=0 cellspacing=1>" << endl;
}
@@ -460,7 +464,7 @@ void HtmlGenerator::startMemberSections()
void HtmlGenerator::endMemberSections()
{
- if (htmlAlignMemberFlag)
+ if (Config::htmlAlignMemberFlag)
{
t << "</table>" << endl;
}
@@ -468,7 +472,7 @@ void HtmlGenerator::endMemberSections()
void HtmlGenerator::startMemberHeader()
{
- if (htmlAlignMemberFlag)
+ if (Config::htmlAlignMemberFlag)
{
t << "<tr><td colspan=2><br><h2>";
}
@@ -480,7 +484,7 @@ void HtmlGenerator::startMemberHeader()
void HtmlGenerator::endMemberHeader()
{
- if (htmlAlignMemberFlag)
+ if (Config::htmlAlignMemberFlag)
{
t << "</h2></td></tr>" << endl;
}
@@ -490,3 +494,13 @@ void HtmlGenerator::endMemberHeader()
}
}
+void HtmlGenerator::startMemberSubtitle()
+{
+ if (Config::htmlAlignMemberFlag) t << "<tr><td colspan=2>";
+}
+
+void HtmlGenerator::endMemberSubtitle()
+{
+ if (Config::htmlAlignMemberFlag) t << "<br><br></td></tr>" << endl;
+}
+
diff --git a/src/htmlgen.h b/src/htmlgen.h
index 556a334..5eb4484 100644
--- a/src/htmlgen.h
+++ b/src/htmlgen.h
@@ -17,6 +17,7 @@
#ifndef HTMLGEN_H
#define HTMLGEN_H
+#include "qtbc.h"
#include "outputgen.h"
class QFile;
@@ -85,6 +86,8 @@ class HtmlGenerator : public OutputGenerator
void endMemberSections();
void startMemberHeader();
void endMemberHeader();
+ void startMemberSubtitle();
+ void endMemberSubtitle();
void startMemberList();
void endMemberList();
void startMemberItem();
@@ -169,9 +172,9 @@ class HtmlGenerator : public OutputGenerator
//static void docifyStatic(QTextStream &t,const char *str);
private:
- QString header;
- QString footer;
- QString lastTitle;
+ QCString header;
+ QCString footer;
+ QCString lastTitle;
HtmlGenerator &operator=(const HtmlGenerator &g);
HtmlGenerator(const HtmlGenerator &g);
diff --git a/src/image.cpp b/src/image.cpp
index 853d4ea..78f92c1 100644
--- a/src/image.cpp
+++ b/src/image.cpp
@@ -15,10 +15,10 @@
*
*/
+#include "qtbc.h"
#include "image.h"
#include "gifenc.h"
#include <qglobal.h>
-#include <qstring.h>
const int charSetWidth=80;
const int charHeight=12;
@@ -140,111 +140,6 @@ unsigned char fontRaw[charSetWidth*charHeight] = {
0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0xac, 0x00, 0x00
};
-
-#if 0
-const int charSetWidth=68;
-const int charHeight=12;
-const int numChars=80;
-
-unsigned short charPos[numChars] =
- { 0, 7, 14, 21, 28, 35, 42, 49,
- 56, 63, 70, 73, 76, 83, 90, 97,
- 104,116,125,133,142,151,159,167,
- 176,185,188,195,203,210,221,230,
- 240,248,258,266,274,281,289,298,
- 309,318,327,336,339,343,346,352,
- 359,362,369,376,383,390,397,401,
- 407,414,417,420,426,429,438,445,
- 452,459,465,470,476,479,486,493,
- 502,508,515,521,525,528,532,539
- };
-
-unsigned char charWidth[numChars] =
- {
- 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 3, 3, 7, 7, 7, 7,
- 12, 9, 8, 9, 9, 8, 8, 9,
- 9, 3, 7, 8, 7,11, 9,10,
- 8,10, 8, 8, 7, 8, 9,11,
- 9, 9, 9, 3, 4, 3, 6, 7,
- 3, 7, 7, 7, 7, 7, 4, 6,
- 7, 3, 3, 6, 3, 9, 7, 7,
- 7, 6, 5, 6, 3, 7, 7, 9,
- 6, 7, 6, 4, 3, 4, 7, 5
- };
-
-unsigned char fontRaw[charSetWidth*charHeight] = {
- 0x38, 0x20, 0xe1, 0xc0, 0x8f, 0x8e, 0x3e, 0x38, 0x70, 0x00, 0x00, 0x00,
- 0x1c, 0x0f, 0x80, 0x83, 0xe0, 0xf1, 0xf0, 0xfc, 0xfc, 0x3c, 0x41, 0x20,
- 0x48, 0x48, 0x10, 0x12, 0x08, 0x78, 0x7c, 0x1e, 0x1f, 0x0f, 0x3f, 0xa1,
- 0x20, 0x91, 0x12, 0x09, 0x04, 0xfe, 0x71, 0x80, 0x00, 0x80, 0x20, 0x00,
- 0x08, 0x01, 0x80, 0x81, 0x24, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0xc0, 0x00, 0x44, 0xe1, 0x12, 0x21,
- 0x88, 0x11, 0x02, 0x44, 0x88, 0x00, 0x00, 0x00, 0x22, 0x30, 0x41, 0x42,
- 0x11, 0x09, 0x08, 0x80, 0x80, 0x42, 0x41, 0x20, 0x48, 0x88, 0x18, 0x33,
- 0x08, 0x84, 0x42, 0x21, 0x10, 0x90, 0x84, 0x21, 0x20, 0x91, 0x11, 0x11,
- 0x04, 0x02, 0x50, 0x88, 0x01, 0x00, 0x20, 0x00, 0x08, 0x02, 0x00, 0x80,
- 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x22, 0x20, 0x00, 0x44, 0x20, 0x10, 0x22, 0x88, 0x10, 0x04, 0x44,
- 0x88, 0x00, 0x00, 0x00, 0x22, 0x26, 0xa1, 0x42, 0x12, 0x01, 0x04, 0x80,
- 0x80, 0x80, 0x41, 0x20, 0x49, 0x08, 0x18, 0x32, 0x89, 0x02, 0x42, 0x40,
- 0x90, 0x90, 0x04, 0x21, 0x11, 0x11, 0x11, 0x10, 0x88, 0x04, 0x48, 0x94,
- 0x01, 0x8e, 0x2c, 0x38, 0x68, 0xe7, 0x34, 0xb1, 0x24, 0x92, 0x91, 0x61,
- 0xc5, 0x86, 0x94, 0xce, 0x89, 0x14, 0x46, 0x14, 0x4f, 0x22, 0x20, 0x00,
- 0x44, 0x20, 0x20, 0xc2, 0x8f, 0x16, 0x04, 0x38, 0x89, 0x20, 0xc0, 0x18,
- 0x04, 0x49, 0x22, 0x22, 0x12, 0x01, 0x04, 0x80, 0x80, 0x80, 0x41, 0x20,
- 0x4a, 0x08, 0x14, 0x52, 0x89, 0x02, 0x42, 0x40, 0x90, 0x8c, 0x04, 0x21,
- 0x11, 0x09, 0x20, 0xa0, 0x88, 0x08, 0x48, 0xa2, 0x00, 0x11, 0x32, 0x44,
- 0x99, 0x12, 0x4c, 0xc9, 0x25, 0x13, 0x69, 0x92, 0x26, 0x49, 0x99, 0x24,
- 0x89, 0x14, 0x45, 0x24, 0x41, 0x22, 0x20, 0x00, 0x44, 0x20, 0x40, 0x24,
- 0x80, 0x99, 0x08, 0x44, 0x78, 0x03, 0x0f, 0x86, 0x04, 0x51, 0x22, 0x23,
- 0xe2, 0x01, 0x04, 0xfc, 0xf8, 0x8e, 0x7f, 0x20, 0x4e, 0x08, 0x14, 0x52,
- 0x49, 0x02, 0x7c, 0x40, 0x9f, 0x03, 0x04, 0x21, 0x11, 0x0a, 0xa0, 0x40,
- 0x50, 0x10, 0x44, 0x80, 0x00, 0x01, 0x22, 0x40, 0x89, 0x12, 0x44, 0x89,
- 0x26, 0x12, 0x49, 0x12, 0x24, 0x48, 0x91, 0x04, 0x89, 0x12, 0x48, 0xc4,
- 0x42, 0x22, 0x26, 0x40, 0x44, 0x20, 0x80, 0x28, 0x80, 0x91, 0x08, 0x44,
- 0x08, 0x0c, 0x00, 0x01, 0x88, 0x51, 0x23, 0xe2, 0x12, 0x01, 0x04, 0x80,
- 0x80, 0x82, 0x41, 0x20, 0x49, 0x08, 0x12, 0x92, 0x29, 0x02, 0x40, 0x44,
- 0x91, 0x00, 0x84, 0x21, 0x0a, 0x0a, 0xa0, 0xa0, 0x20, 0x20, 0x44, 0x80,
- 0x00, 0x0f, 0x22, 0x40, 0x89, 0xf2, 0x44, 0x89, 0x26, 0x12, 0x49, 0x12,
- 0x24, 0x48, 0x90, 0xc4, 0x88, 0xa2, 0x48, 0xc4, 0x84, 0x42, 0x19, 0x80,
- 0x44, 0x21, 0x02, 0x2f, 0xc8, 0x91, 0x08, 0x44, 0x08, 0x03, 0x0f, 0x86,
- 0x08, 0x53, 0x44, 0x12, 0x12, 0x01, 0x04, 0x80, 0x80, 0x82, 0x41, 0x24,
- 0x48, 0x88, 0x12, 0x92, 0x29, 0x02, 0x40, 0x42, 0x90, 0x90, 0x84, 0x21,
- 0x0a, 0x04, 0x41, 0x10, 0x20, 0x40, 0x44, 0x80, 0x00, 0x11, 0x22, 0x40,
- 0x89, 0x02, 0x44, 0x89, 0x25, 0x12, 0x49, 0x12, 0x24, 0x48, 0x90, 0x24,
- 0x88, 0xa2, 0xa9, 0x22, 0x84, 0x22, 0x20, 0x00, 0x44, 0x21, 0x02, 0x20,
- 0x88, 0x91, 0x10, 0x44, 0x88, 0x00, 0xc0, 0x18, 0x00, 0x4d, 0x84, 0x12,
- 0x11, 0x09, 0x08, 0x80, 0x80, 0x46, 0x41, 0x24, 0x48, 0x48, 0x11, 0x12,
- 0x18, 0x84, 0x40, 0x21, 0x10, 0x90, 0x84, 0x21, 0x04, 0x04, 0x41, 0x10,
- 0x20, 0x80, 0x42, 0x80, 0x00, 0x11, 0x32, 0x44, 0x99, 0x12, 0x4c, 0x89,
- 0x24, 0x92, 0x49, 0x12, 0x26, 0x49, 0x91, 0x24, 0x98, 0x41, 0x12, 0x12,
- 0x88, 0x22, 0x20, 0x00, 0x38, 0x21, 0xf1, 0xc0, 0x87, 0x0e, 0x10, 0x38,
- 0x71, 0x20, 0x00, 0x00, 0x08, 0x20, 0x04, 0x13, 0xe0, 0xf1, 0xf0, 0xfc,
- 0x80, 0x3a, 0x41, 0x23, 0x88, 0x2f, 0x91, 0x12, 0x08, 0x78, 0x40, 0x1e,
- 0x90, 0x8f, 0x04, 0x1e, 0x04, 0x04, 0x42, 0x08, 0x20, 0xfe, 0x42, 0x80,
- 0x00, 0x0e, 0xac, 0x38, 0x68, 0xe2, 0x34, 0x89, 0x24, 0x52, 0x49, 0x11,
- 0xc5, 0x86, 0x90, 0xc6, 0x68, 0x41, 0x12, 0x11, 0x0f, 0x22, 0x20, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
- 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00,
- 0x00, 0x00, 0x00, 0x01, 0x00, 0x22, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x40, 0x80, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00,
- 0x20, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x02,
- 0x00, 0x22, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x80,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x40, 0x00, 0x00, 0x00,
- 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1a, 0xc0, 0x00
-};
-#endif
-
static Color palette[] =
{
{ 0xff, 0xff, 0xff },
diff --git a/src/index.cpp b/src/index.cpp
index dcd457f..d8bd56c 100644
--- a/src/index.cpp
+++ b/src/index.cpp
@@ -34,7 +34,7 @@
//----------------------------------------------------------------------------
// strips w from s iff s starts with w
-bool stripWord(QString &s,QString w)
+bool stripWord(QCString &s,QCString w)
{
bool success=FALSE;
if (s.left(w.length())==w)
@@ -47,12 +47,12 @@ bool stripWord(QString &s,QString w)
//----------------------------------------------------------------------------
// some quasi intelligent brief description abbreviator :^)
-QString abbreviate(const char *s,const char *name)
+QCString abbreviate(const char *s,const char *name)
{
- QString result=s;
- QString start1=(QString)"The "+name+" class ";
- QString start2=(QString)"The "+name+" widget ";
- QString start3=(QString)"The "+name+" file ";
+ QCString result=s;
+ QCString start1=(QCString)"The "+name+" class ";
+ QCString start2=(QCString)"The "+name+" widget ";
+ QCString start3=(QCString)"The "+name+" file ";
result=result.simplifyWhiteSpace();
// strip trailing .
if (result.length()>0 && result.at(result.length()-1)=='.')
@@ -236,7 +236,7 @@ void writeHierarchicalIndex(OutputList &ol)
ol.disable(OutputGenerator::Man);
startFile(ol,"hierarchy","Hierarchical Index");
startTitle(ol);
- parseText(ol,projectName+" "+theTranslator->trClassHierarchy());
+ parseText(ol,Config::projectName+" "+theTranslator->trClassHierarchy());
endTitle(ol,0);
parseText(ol,theTranslator->trClassHierarchyDescription());
ol.newParagraph();
@@ -272,10 +272,10 @@ void writeFileIndex(OutputList &ol)
ol.disable(OutputGenerator::Man);
startFile(ol,"files","File Index");
startTitle(ol);
- parseText(ol,projectName+" "+theTranslator->trFileList());
+ parseText(ol,Config::projectName+" "+theTranslator->trFileList());
endTitle(ol,0);
ol.newParagraph();
- parseText(ol,theTranslator->trFileListDescription(extractAllFlag));
+ parseText(ol,theTranslator->trFileListDescription(Config::extractAllFlag));
ol.newParagraph();
ol.startIndexList();
@@ -289,13 +289,13 @@ void writeFileIndex(OutputList &ol)
{
//ol.writeIndexItem(fd->getReference(),fd->diskName(),
// fd->name());
- QString path;
- if (fullPathNameFlag)
+ QCString path;
+ if (Config::fullPathNameFlag)
{
path=fd->getPath().copy();
// strip part of the path
- if (path.left(stripFromPath.length())==stripFromPath)
- path=path.right(path.length()-stripFromPath.length());
+ if (path.left(Config::stripFromPath.length())==Config::stripFromPath)
+ path=path.right(path.length()-Config::stripFromPath.length());
}
ol.writeStartAnnoItem("file",
@@ -337,7 +337,7 @@ int countNamespaces()
NamespaceDef *nd;
for (;(nd=nli.current());++nli)
{
- if (!nd->getReference() && nd->hasDocumentation()) count++;
+ if (nd->isVisible()) count++;
}
return count;
}
@@ -350,17 +350,17 @@ void writeNamespaceIndex(OutputList &ol)
ol.disable(OutputGenerator::Man);
startFile(ol,"namespaces","Namespace Index");
startTitle(ol);
- parseText(ol,projectName+" "+theTranslator->trNamespaceList());
+ parseText(ol,Config::projectName+" "+theTranslator->trNamespaceList());
endTitle(ol,0);
ol.newParagraph();
- parseText(ol,theTranslator->trNamespaceListDescription(extractAllFlag));
+ parseText(ol,theTranslator->trNamespaceListDescription(Config::extractAllFlag));
ol.newParagraph();
ol.startIndexList();
NamespaceDef *nd=namespaceList.first();
while (nd)
{
- if (!nd->getReference() && nd->hasDocumentation())
+ if (nd->isVisible())
{
ol.writeStartAnnoItem("namespace",nd->getOutputFileBase(),0,nd->name());
ol.docify(" (");
@@ -419,12 +419,12 @@ void writeAnnotatedClassList(OutputList &ol)
{
if (!cd->isReference() &&
//!cd->name().isEmpty() && cd->name()[0]!='@' &&
- //(cd->protection()!=Private || extractPrivateFlag) &&
+ //(cd->protection()!=Private || Config::extractPrivateFlag) &&
//(cd->hasDocumentation() || !hideClassFlag)
cd->isVisible()
)
{
- QString type;
+ QCString type;
switch (cd->compoundType())
{
case ClassDef::Class: type="class"; break;
@@ -465,7 +465,7 @@ void writeAnnotatedIndex(OutputList &ol)
ol.disable(OutputGenerator::Man);
startFile(ol,"annotated","Annotated Index");
startTitle(ol);
- parseText(ol,projectName+" "+theTranslator->trCompoundList());
+ parseText(ol,Config::projectName+" "+theTranslator->trCompoundList());
endTitle(ol,0);
parseText(ol,theTranslator->trCompoundListDescription());
writeAnnotatedClassList(ol);
@@ -487,7 +487,7 @@ void writeMemberList(OutputList &ol)
while (md && !found)
{
ClassDef *cd;
- if ((md->isFriend() || md->protection()!=Private || extractPrivateFlag) &&
+ if ((md->isFriend() || md->protection()!=Private || Config::extractPrivateFlag) &&
!md->isReference() && md->hasDocumentation() &&
md->name()[0]!='@' && (cd=md->memberClass()) &&
cd->isVisible()
@@ -506,12 +506,12 @@ void writeMemberList(OutputList &ol)
ol.writeString("\n");
int count=0;
- md=mn->first();
- QString prevName;
+ md=mn->last();
+ QCString prevName;
while (md)
{
ClassDef *cd=md->memberClass();
- if (cd && (md->isFriend() || md->protection()!=Private || extractPrivateFlag) &&
+ if (cd && (md->isFriend() || md->protection()!=Private || Config::extractPrivateFlag) &&
!md->isReference() && md->hasDocumentation() &&
prevName!=cd->name() &&
cd->isVisible()
@@ -526,7 +526,7 @@ void writeMemberList(OutputList &ol)
count++;
prevName=cd->name();
}
- md=mn->next();
+ md=mn->prev();
}
}
mn=memberNameList.next();
@@ -548,11 +548,11 @@ int countClassMembers()
ClassDef *cd;
while (md && !found)
{
- if ((md->isFriend() || md->protection()!=Private || extractPrivateFlag) &&
+ if ((md->isFriend() || md->protection()!=Private || Config::extractPrivateFlag) &&
!md->isReference() && !md->isRelated() && md->hasDocumentation() &&
md->name()[0]!='@' && (cd=md->memberClass()) && cd->isVisible())
otherMd=md;
- if ((md->isFriend() || md->protection()!=Private || extractPrivateFlag) &&
+ if ((md->isFriend() || md->protection()!=Private || Config::extractPrivateFlag) &&
!md->isReference() && md->isRelated() && md->hasDocumentation() &&
md->name()[0]!='@' && (cd=md->memberClass()) && cd->isVisible())
found=TRUE;
@@ -574,9 +574,9 @@ void writeMemberIndex(OutputList &ol)
ol.disable(OutputGenerator::Latex);
startFile(ol,"functions","Compound Member Index");
startTitle(ol);
- parseText(ol,projectName+" "+theTranslator->trCompoundMembers());
+ parseText(ol,Config::projectName+" "+theTranslator->trCompoundMembers());
endTitle(ol,0);
- parseText(ol,theTranslator->trCompoundMembersDescription(extractAllFlag));
+ parseText(ol,theTranslator->trCompoundMembersDescription(Config::extractAllFlag));
writeMemberList(ol);
endFile(ol);
ol.enable(OutputGenerator::Latex);
@@ -615,8 +615,8 @@ void writeFileMemberList(OutputList &ol)
ol.writeString("\n");
int count=0;
- md=mn->first();
- QString prevName;
+ md=mn->last();
+ QCString prevName;
while (md)
{
FileDef *fd=md->getFileDef() ? md->getFileDef() : md->getFileDec();
@@ -633,7 +633,7 @@ void writeFileMemberList(OutputList &ol)
ol.docify(": ");
else
ol.docify(", ");
- QString baseName=fd->name().copy();
+ QCString baseName=fd->name().copy();
//int s;
//if ((s=baseName.findRev("/"))!=-1)
// baseName=baseName.right(baseName.length()-s-1);
@@ -642,7 +642,7 @@ void writeFileMemberList(OutputList &ol)
count++;
prevName=fd->name();
}
- md=mn->next();
+ md=mn->prev();
}
}
mn=functionNameList.next();
@@ -663,11 +663,9 @@ void writeNamespaceMemberList(OutputList &ol)
while (md && !found)
{
NamespaceDef *nd=md->getNamespace();
- if (nd && nd->hasDocumentation() &&
- !md->isReference() &&
- md->hasDocumentation() &&
- !md->name().isEmpty() &&
- md->name()[0]!='@') found=TRUE;
+ if (nd && nd->isVisible() &&
+ !md->isReference() && md->hasDocumentation() &&
+ !md->name().isEmpty() && md->name().at(0)!='@') found=TRUE;
else
md=mn->next();
}
@@ -679,16 +677,16 @@ void writeNamespaceMemberList(OutputList &ol)
ol.writeString("\n");
int count=0;
- md=mn->first();
- QString prevName;
+ md=mn->last();
+ QCString prevName;
while (md)
{
NamespaceDef *nd=md->getNamespace();
- if (nd && nd->hasDocumentation() &&
- !md->isReference() &&
- md->hasDocumentation() &&
- !md->name().isEmpty() && md->name()[0]!='@'
- )
+ if (nd && nd->isVisible() &&
+ !md->isReference() && md->hasDocumentation() &&
+ !md->name().isEmpty() && md->name().at(0)!='@' &&
+ prevName!=nd->name()
+ )
{
if (count==0)
ol.docify(": ");
@@ -697,8 +695,9 @@ void writeNamespaceMemberList(OutputList &ol)
ol.writeObjectLink(nd->getReference(),nd->getOutputFileBase(),
md->anchor(),nd->name());
count++;
+ prevName=nd->name();
}
- md=mn->next();
+ md=mn->prev();
}
}
mn=functionNameList.next();
@@ -718,10 +717,11 @@ int countNamespaceMembers()
bool found=FALSE;
while (md && !found)
{
- if (md->getNamespace() &&
+ NamespaceDef *nd=md->getNamespace();
+ if (nd && nd->isVisible() &&
!md->isReference() && md->hasDocumentation() &&
- !md->name().isEmpty() && md->name()[0]!='@'
- )
+ !md->name().isEmpty() && md->name().at(0)!='@'
+ )
found=TRUE;
else
md=mn->next();
@@ -771,9 +771,9 @@ void writeFileMemberIndex(OutputList &ol)
ol.disable(OutputGenerator::Latex);
startFile(ol,"globals","File Member Index");
startTitle(ol);
- parseText(ol,projectName+" "+theTranslator->trFileMembers());
+ parseText(ol,Config::projectName+" "+theTranslator->trFileMembers());
endTitle(ol,0);
- parseText(ol,theTranslator->trFileMembersDescription(extractAllFlag));
+ parseText(ol,theTranslator->trFileMembersDescription(Config::extractAllFlag));
writeFileMemberList(ol);
endFile(ol);
ol.enable(OutputGenerator::Latex);
@@ -789,9 +789,9 @@ void writeNamespaceMemberIndex(OutputList &ol)
ol.disable(OutputGenerator::Latex);
startFile(ol,"namespacemembers","Namespace Member Index");
startTitle(ol);
- parseText(ol,projectName+" "+theTranslator->trNamespaceMembers());
+ parseText(ol,Config::projectName+" "+theTranslator->trNamespaceMembers());
endTitle(ol,0);
- parseText(ol,theTranslator->trNamespaceMemberDescription(extractAllFlag));
+ parseText(ol,theTranslator->trNamespaceMemberDescription(Config::extractAllFlag));
writeNamespaceMemberList(ol);
endFile(ol);
ol.enable(OutputGenerator::Latex);
@@ -809,13 +809,13 @@ void writeHeaderFileList(OutputList &ol)
while (fd)
{
ol.writeListItem();
- QString path;
- if (fullPathNameFlag)
+ QCString path;
+ if (Config::fullPathNameFlag)
{
path=fd->getPath().copy();
// strip part of the path
- if (path.left(stripFromPath.length())==stripFromPath)
- path=path.right(path.length()-stripFromPath.length());
+ if (path.left(Config::stripFromPath.length())==Config::stripFromPath)
+ path=path.right(path.length()-Config::stripFromPath.length());
}
if (!path.isEmpty()) ol.docify(path);
ol.writeObjectLink(0,fd->includeName(),0,fd->name());
@@ -835,7 +835,7 @@ void writeHeaderIndex(OutputList &ol)
ol.disable(OutputGenerator::Latex);
startFile(ol,"headers","Header File Index");
startTitle(ol);
- parseText(ol,projectName+" "+theTranslator->trHeaderFiles());
+ parseText(ol,Config::projectName+" "+theTranslator->trHeaderFiles());
endTitle(ol,0);
parseText(ol,theTranslator->trHeaderFilesDescription());
writeHeaderFileList(ol);
@@ -852,7 +852,7 @@ void writeExampleIndex(OutputList &ol)
ol.disable(OutputGenerator::Man);
startFile(ol,"examples","Example Index");
startTitle(ol);
- parseText(ol,projectName+" "+theTranslator->trExamples());
+ parseText(ol,Config::projectName+" "+theTranslator->trExamples());
endTitle(ol,0);
parseText(ol,theTranslator->trExamplesDescription());
ol.startIndexList();
@@ -860,7 +860,7 @@ void writeExampleIndex(OutputList &ol)
while (pi)
{
ol.writeListItem();
- QString n=convertSlashes(pi->name,TRUE)+"-example";
+ QCString n=convertSlashes(pi->name,TRUE)+"-example";
if (!pi->title.isEmpty())
{
ol.writeObjectLink(0,n,0,pi->title);
@@ -885,16 +885,16 @@ void writePageIndex(OutputList &ol)
ol.disable(OutputGenerator::Man);
startFile(ol,"pages","Page Index");
startTitle(ol);
- ol.docify(projectName+" "+theTranslator->trRelatedPages());
+ ol.docify(Config::projectName+" "+theTranslator->trRelatedPages());
endTitle(ol,0);
parseText(ol,theTranslator->trRelatedPagesDescription());
ol.startIndexList();
PageInfo *pi=pageList.first();
while (pi)
{
- QString pageName,pageTitle;
+ QCString pageName,pageTitle;
- if (caseSensitiveNames)
+ if (Config::caseSensitiveNames)
pageName=pi->name.copy();
else
pageName=pi->name.lower();
@@ -960,7 +960,7 @@ void writeGroupIndex(OutputList &ol)
ol.disable(OutputGenerator::Man);
startFile(ol,"modules","Module Index");
startTitle(ol);
- parseText(ol,projectName+" "+theTranslator->trModules());
+ parseText(ol,Config::projectName+" "+theTranslator->trModules());
endTitle(ol,0);
parseText(ol,theTranslator->trModulesDescription());
writeGroupList(ol);
@@ -975,27 +975,27 @@ void writeIndex(OutputList &ol)
bool texEnabled = ol.isEnabled(OutputGenerator::Latex);
bool htmEnabled = ol.isEnabled(OutputGenerator::Html);
- QString projPrefix;
- if (!projectName.isEmpty())
+ QCString projPrefix;
+ if (!Config::projectName.isEmpty())
{
- projPrefix=projectName+" ";
+ projPrefix=Config::projectName+" ";
}
// write HTML index
ol.disable(OutputGenerator::Man);
ol.disable(OutputGenerator::Latex);
ol.startFile("index","Main Index",FALSE);
- if (!noIndexFlag) writeQuickLinks(ol,TRUE);
+ if (!Config::noIndexFlag) writeQuickLinks(ol,TRUE);
ol.startTitleHead();
parseText(ol,projPrefix+theTranslator->trDocumentation());
ol.endTitleHead(0);
ol.newParagraph();
- if (!projectNumber.isEmpty())
+ if (!Config::projectNumber.isEmpty())
{
ol.startProjectNumber();
- parseDoc(ol,0,0,projectNumber);
+ parseDoc(ol,0,0,Config::projectNumber);
ol.endProjectNumber();
}
- if (noIndexFlag) writeQuickLinks(ol,FALSE);
+ if (Config::noIndexFlag) writeQuickLinks(ol,FALSE);
endFile(ol);
ol.disable(OutputGenerator::Html);
@@ -1004,10 +1004,10 @@ void writeIndex(OutputList &ol)
ol.startFile("refman",0,FALSE);
ol.startIndexSection(isTitlePageStart);
parseText(ol,projPrefix+theTranslator->trReferenceManual());
- if (!projectNumber.isEmpty())
+ if (!Config::projectNumber.isEmpty())
{
ol.startProjectNumber();
- parseDoc(ol,0,0,projectNumber);
+ parseDoc(ol,0,0,Config::projectNumber);
ol.endProjectNumber();
}
ol.endIndexSection(isTitlePageStart);
diff --git a/src/index.h b/src/index.h
index 0091f6a..a472a7a 100644
--- a/src/index.h
+++ b/src/index.h
@@ -17,8 +17,9 @@
#ifndef INDEX_H
#define INDEX_H
+#include "qtbc.h"
#include <qfile.h>
-#include <qtstream.h>
+//#include <qtstream.h>
enum IndexSections
{
diff --git a/src/instdox.cpp b/src/instdox.cpp
index ad22c89..4faa2e6 100644
--- a/src/instdox.cpp
+++ b/src/instdox.cpp
@@ -16,7 +16,8 @@
#include <sys/types.h>
#include <sys/stat.h>
-#include <qstring.h>
+
+#include "qtbc.h"
#include <qfile.h>
#include <qfileinf.h>
#include <qtstream.h>
@@ -28,19 +29,19 @@
void writeInstallScript()
{
- QString fileName=htmlOutputDir+"/installdox";
+ QCString fileName=Config::htmlOutputDir+"/installdox";
QFile f(fileName);
if (f.open(IO_WriteOnly))
{
QTextStream t(&f);
- t << "#!" << perlPath << endl << endl << "%subst = ( ";
+ t << "#!" << Config::perlPath << endl << endl << "%subst = ( ";
- char *s=tagFileList.first();
+ char *s=Config::tagFileList.first();
while (s)
{
QFileInfo fi(s);
t << "\"" << fi.fileName() << "\", \"\"";
- s=tagFileList.next();
+ s=Config::tagFileList.next();
if (s) t << ", ";
}
diff --git a/src/language.cpp b/src/language.cpp
index f5e2dde..cee63a8 100644
--- a/src/language.cpp
+++ b/src/language.cpp
@@ -20,7 +20,9 @@
#include "translator_cz.h"
#include "translator_fr.h"
#include "translator_it.h"
-#include <qstring.h>
+#include "translator_de.h"
+#include "translator_jp.h"
+#include "translator_es.h"
#define L_EQUAL(a) !stricmp(langName,a)
@@ -52,6 +54,18 @@ bool setTranslator(const char *langName)
{
theTranslator=new TranslatorItalian;
}
+ else if (L_EQUAL("german"))
+ {
+ theTranslator=new TranslatorGerman;
+ }
+ else if (L_EQUAL("japanese"))
+ {
+ theTranslator=new TranslatorJapanese;
+ }
+ else if (L_EQUAL("spanish"))
+ {
+ theTranslator=new TranslatorSpanish;
+ }
else // use the default language (i.e. english)
{
theTranslator=new Translator;
diff --git a/src/latexgen.cpp b/src/latexgen.cpp
index 2f2f62b..2f49efa 100644
--- a/src/latexgen.cpp
+++ b/src/latexgen.cpp
@@ -15,6 +15,8 @@
*/
#include <stdlib.h>
+
+#include "qtbc.h"
#include <qdir.h>
#include "latexgen.h"
#include "config.h"
@@ -24,9 +26,9 @@
#include "diagram.h"
#include "language.h"
-//static QString escapeLabelName(const QString &s)
+//static QCString escapeLabelName(const QCString &s)
//{
-// QString result;
+// QCString result;
// uint i;
// for (i=0;i<s.length();i++)
// {
@@ -45,7 +47,7 @@
LatexGenerator::LatexGenerator()
: OutputGenerator()
{
- dir=latexOutputDir;
+ dir=Config::latexOutputDir;
col=0;
}
@@ -68,7 +70,7 @@ void LatexGenerator::append(const OutputGenerator *g)
void LatexGenerator::init()
{
- QString dir=latexOutputDir;
+ QCString dir=Config::latexOutputDir;
QDir d(dir);
if (!d.exists() && !d.mkdir(dir))
{
@@ -76,7 +78,7 @@ void LatexGenerator::init()
exit(1);
}
- QString fileName=dir+"/Makefile";
+ QCString fileName=dir+"/Makefile";
QFile file(fileName);
if (!file.open(IO_WriteOnly))
{
@@ -104,7 +106,7 @@ void LatexGenerator::init()
void LatexGenerator::startFile(const char *name,const char *,bool)
{
- QString fileName=name;
+ QCString fileName=name;
if (fileName.right(4)!=".tex" && fileName.right(4)!=".sty") fileName+=".tex";
startPlainFile(fileName);
}
@@ -126,16 +128,16 @@ void LatexGenerator::startProjectNumber()
void LatexGenerator::startIndexSection(IndexSections is)
{
- QString paperName;
+ QCString paperName;
switch (is)
{
case isTitlePageStart:
{
- if (paperType=="a4wide") paperName="a4"; else paperName=paperType;
+ if (Config::paperType=="a4wide") paperName="a4"; else paperName=Config::paperType;
t << "\\documentclass[" << paperName << "paper]{";
- if (compactLatexFlag) t << "article"; else t << "book";
+ if (Config::compactLatexFlag) t << "article"; else t << "book";
t << "}\n";
- if (paperType=="a4wide") t << "\\usepackage{a4wide}\n";
+ if (Config::paperType=="a4wide") t << "\\usepackage{a4wide}\n";
t << "\\usepackage{makeidx}\n"
"\\usepackage{fancyheadings}\n"
"\\usepackage{epsf}\n"
@@ -145,11 +147,11 @@ void LatexGenerator::startIndexSection(IndexSections is)
{
t << "\\usepackage{" << theTranslator->latexBabelPackage() << "}\n";
}
- const char *s=extraPackageList.first();
+ const char *s=Config::extraPackageList.first();
while (s)
{
t << "\\usepackage{" << s << "}\n";
- s=extraPackageList.next();
+ s=Config::extraPackageList.next();
}
t << "\\makeindex\n"
"\\setcounter{tocdepth}{1}\n"
@@ -169,23 +171,23 @@ void LatexGenerator::startIndexSection(IndexSections is)
t << "}\n\\author{";
break;
case isModuleIndex:
- if (compactLatexFlag) t << "\\section"; else t << "\\chapter";
+ if (Config::compactLatexFlag) t << "\\section"; else t << "\\chapter";
t << "{"; //Module Index}\n"
break;
case isNamespaceIndex:
- if (compactLatexFlag) t << "\\section"; else t << "\\chapter";
+ if (Config::compactLatexFlag) t << "\\section"; else t << "\\chapter";
t << "{"; //Namespace Index}\"
break;
case isClassHierarchyIndex:
- if (compactLatexFlag) t << "\\section"; else t << "\\chapter";
+ if (Config::compactLatexFlag) t << "\\section"; else t << "\\chapter";
t << "{"; //Hierarchical Index}\n"
break;
case isCompoundIndex:
- if (compactLatexFlag) t << "\\section"; else t << "\\chapter";
+ if (Config::compactLatexFlag) t << "\\section"; else t << "\\chapter";
t << "{"; //Annotated Compound Index}\n"
break;
case isFileIndex:
- if (compactLatexFlag) t << "\\section"; else t << "\\chapter";
+ if (Config::compactLatexFlag) t << "\\section"; else t << "\\chapter";
t << "{"; //Annotated File Index}\n"
break;
case isModuleDocumentation:
@@ -196,7 +198,7 @@ void LatexGenerator::startIndexSection(IndexSections is)
{
if (gd->hasDocumentation() || gd->countMembers()>0)
{
- if (compactLatexFlag) t << "\\section"; else t << "\\chapter";
+ if (Config::compactLatexFlag) t << "\\section"; else t << "\\chapter";
t << "{"; //Module Documentation}\n";
found=TRUE;
}
@@ -212,7 +214,7 @@ void LatexGenerator::startIndexSection(IndexSections is)
{
if (nd->hasDocumentation())
{
- if (compactLatexFlag) t << "\\section"; else t << "\\chapter";
+ if (Config::compactLatexFlag) t << "\\section"; else t << "\\chapter";
t << "{"; // Namespace Documentation}\n":
found=TRUE;
}
@@ -228,7 +230,7 @@ void LatexGenerator::startIndexSection(IndexSections is)
{
if (!cd->isReference() && cd->isVisible())
{
- if (compactLatexFlag) t << "\\section"; else t << "\\chapter";
+ if (Config::compactLatexFlag) t << "\\section"; else t << "\\chapter";
t << "{"; //Compound Documentation}\n";
found=TRUE;
}
@@ -249,7 +251,7 @@ void LatexGenerator::startIndexSection(IndexSections is)
{
if (isFirst)
{
- if (compactLatexFlag) t << "\\section"; else t << "\\chapter";
+ if (Config::compactLatexFlag) t << "\\section"; else t << "\\chapter";
t << "{"; //File Documentation}\n";
isFirst=FALSE;
break;
@@ -263,13 +265,13 @@ void LatexGenerator::startIndexSection(IndexSections is)
break;
case isExampleDocumentation:
{
- if (compactLatexFlag) t << "\\section"; else t << "\\chapter";
+ if (Config::compactLatexFlag) t << "\\section"; else t << "\\chapter";
t << "{"; //Example Documentation}\n";
}
break;
case isPageDocumentation:
{
- if (compactLatexFlag) t << "\\section"; else t << "\\chapter";
+ if (Config::compactLatexFlag) t << "\\section"; else t << "\\chapter";
t << "{"; //Page Documentation}\n";
}
break;
@@ -289,9 +291,9 @@ void LatexGenerator::endIndexSection(IndexSections is)
"\\date{" << dateToString(TRUE) << "}\n"
"\\maketitle\n"
"\\pagenumbering{roman}\n";
- if (!compactLatexFlag) t << "\\clearemptydoublepage\n";
+ if (!Config::compactLatexFlag) t << "\\clearemptydoublepage\n";
t << "\\tableofcontents\n";
- if (!compactLatexFlag) t << "\\clearemptydoublepage\n";
+ if (!Config::compactLatexFlag) t << "\\clearemptydoublepage\n";
t << "\\pagenumbering{arabic}\n";
break;
case isModuleIndex:
@@ -326,7 +328,7 @@ void LatexGenerator::endIndexSection(IndexSections is)
{
if (gd->hasDocumentation() || gd->countMembers()>0)
{
- if (compactLatexFlag) t << "\\input"; else t << "\\include";
+ if (Config::compactLatexFlag) t << "\\input"; else t << "\\include";
t << "{" << gd->getOutputFileBase() << "}\n";
}
gd=groupList.next();
@@ -350,7 +352,7 @@ void LatexGenerator::endIndexSection(IndexSections is)
{
if (nd->hasDocumentation() || nd->countMembers()>0)
{
- if (compactLatexFlag) t << "\\input"; else t << "\\include";
+ if (Config::compactLatexFlag) t << "\\input"; else t << "\\include";
t << "{" << nd->getOutputFileBase() << "}\n";
}
nd=namespaceList.next();
@@ -382,7 +384,7 @@ void LatexGenerator::endIndexSection(IndexSections is)
// )
if (!cd->isReference() && cd->isVisible())
{
- if (compactLatexFlag) t << "\\input"; else t << "\\include";
+ if (Config::compactLatexFlag) t << "\\input"; else t << "\\include";
t << "{" << cd->getOutputFileBase() << "}\n";
}
cd=classList.next();
@@ -407,7 +409,7 @@ void LatexGenerator::endIndexSection(IndexSections is)
}
else
{
- if (compactLatexFlag) t << "\\input" ; else t << "\\include";
+ if (Config::compactLatexFlag) t << "\\input" ; else t << "\\include";
t << "{" << fd->getOutputFileBase() << "}\n";
}
}
@@ -428,7 +430,7 @@ void LatexGenerator::endIndexSection(IndexSections is)
}
while (pi)
{
- if (compactLatexFlag) t << "\\input" ; else t << "\\include";
+ if (Config::compactLatexFlag) t << "\\input" ; else t << "\\include";
t << "{" << convertSlashes(pi->name,TRUE) << "-example}\n";
pi=exampleList.next();
}
@@ -440,8 +442,8 @@ void LatexGenerator::endIndexSection(IndexSections is)
PageInfo *pi=pageList.first();
if (pi)
{
- QString pageName;
- if (caseSensitiveNames)
+ QCString pageName;
+ if (Config::caseSensitiveNames)
pageName=pi->name.copy();
else
pageName=pi->name.lower();
@@ -450,9 +452,9 @@ void LatexGenerator::endIndexSection(IndexSections is)
}
while (pi)
{
- if (compactLatexFlag) t << "\\input" ; else t << "\\include";
- QString pageName;
- if (caseSensitiveNames)
+ if (Config::compactLatexFlag) t << "\\input" ; else t << "\\include";
+ QCString pageName;
+ if (Config::caseSensitiveNames)
pageName=pi->name.copy();
else
pageName=pi->name.lower();
@@ -473,7 +475,7 @@ void LatexGenerator::writeStyleInfo(int part)
{
case 0:
{
- QString pname=projectName.stripWhiteSpace();
+ QCString pname=Config::projectName.stripWhiteSpace();
startPlainFile("doxygen.sty");
t << "\\NeedsTeXFormat{LaTeX2e}\n";
t << "\\ProvidesPackage{doxygen}\n";
@@ -484,7 +486,7 @@ void LatexGenerator::writeStyleInfo(int part)
t << "\\addtolength{\\headwidth}{\\marginparwidth}\n";
t << "\\newcommand{\\clearemptydoublepage}{\\newpage{\\pagestyle{empty}";
t << "\\cleardoublepage}}\n";
- if (!compactLatexFlag)
+ if (!Config::compactLatexFlag)
t << "\\renewcommand{\\chaptermark}[1]{\\markboth{#1}{}}\n";
t << "\\renewcommand{\\sectionmark}[1]{\\markright{\\thesection\\ #1}}\n";
t << "\\lhead[\\fancyplain{}{\\bfseries\\thepage}]\n";
@@ -501,7 +503,7 @@ void LatexGenerator::writeStyleInfo(int part)
case 2:
{
t << " Dimitri van Heesch \\copyright 1997-1999}]{}\n";
- //QString dtString=dateToString(FALSE);
+ //QCString dtString=dateToString(FALSE);
t << "\\lfoot[]{\\fancyplain{}{\\bfseries\\scriptsize ";
}
break;
@@ -646,7 +648,7 @@ void LatexGenerator::writeObjectLink(const char *, const char *,
void LatexGenerator::writePageRef(const char *clname, const char *anchor)
{
- t << " {\\rm (p. \\pageref{";
+ t << " {\\rm (p.~\\pageref{";
if (clname) t << clname;
if (anchor) t << "_" << anchor;
t << "})}";
@@ -662,12 +664,12 @@ void LatexGenerator::writeCodeLink(const char *,const char *,
void LatexGenerator::startTitle()
{
- if (compactLatexFlag) t << "\\subsection{"; else t << "\\section{";
+ if (Config::compactLatexFlag) t << "\\subsection{"; else t << "\\section{";
}
void LatexGenerator::startGroupHeader()
{
- if (compactLatexFlag) t << "\\subsubsection*{"; else t << "\\subsection*{";
+ if (Config::compactLatexFlag) t << "\\subsubsection*{"; else t << "\\subsection*{";
}
void LatexGenerator::endGroupHeader()
@@ -700,7 +702,7 @@ void LatexGenerator::startMemberDoc(const char *clname,
}
t << "}" << endl;
//
- if (compactLatexFlag) t << "\\subsubsection{"; else t << "\\subsection{";
+ if (Config::compactLatexFlag) t << "\\subsubsection{"; else t << "\\subsection{";
t << "\\setlength{\\rightskip}{0pt plus 5cm}";
}
@@ -762,7 +764,7 @@ void LatexGenerator::writeSectionRefAnchor(const char *,const char *lab,
startBold();
docify(title);
endBold();
- t << " (p. \\pageref{" << lab << "})" << endl;
+ t << " (p.~\\pageref{" << lab << "})" << endl;
}
//void LatexGenerator::docify(const char *str)
@@ -808,78 +810,101 @@ void LatexGenerator::docify(const char *str)
else
{ t << "$\\backslash$"; }
break;
- // the Latin-1 characters
- case 161: t << "!`"; break;
- case 181: t << "$\\mu$"; break;
- case 191: t << "?`"; break;
- case 192: t << "\\`{A}"; break;
- case 193: t << "\\'{A}"; break;
- case 194: t << "\\^{A}"; break;
- case 195: t << "\\~{A}"; break;
- case 196: t << "\\\"{A}"; break;
- case 197: t << "\\AA "; break;
- case 198: t << "\\AE "; break;
- case 199: t << "\\c{C}"; break;
- case 200: t << "\\`{E}"; break;
- case 201: t << "\\'{E}"; break;
- case 202: t << "\\^{E}"; break;
- case 203: t << "\\\"{E}"; break;
- case 204: t << "\\`{I}"; break;
- case 205: t << "\\'{I}"; break;
- case 206: t << "\\^{I}"; break;
- case 207: t << "\\\"{I}"; break;
- case 208: t << "D "; break; // anyone know the real code?
- case 209: t << "\\~{N}"; break;
- case 210: t << "\\`{O}"; break;
- case 211: t << "\\'{O}"; break;
- case 212: t << "\\^{O}"; break;
- case 213: t << "\\~{O}"; break;
- case 214: t << "\\\"{O}"; break;
- case 215: t << "$\\times$"; break;
- case 216: t << "\\O"; break;
- case 217: t << "\\`{U}"; break;
- case 218: t << "\\'{U}"; break;
- case 219: t << "\\^{U}"; break;
- case 220: t << "\\\"{U}"; break;
- case 221: t << "\\'{Y}"; break;
- case 223: t << "\"s "; break; // assumes german package
- case 224: t << "\\`{a}"; break;
- case 225: t << "\\'{a}"; break;
- case 226: t << "\\^{a}"; break;
- case 227: t << "\\~{a}"; break;
- case 228: t << "\\\"{a}"; break;
- case 229: t << "\\aa "; break;
- case 230: t << "\\ae "; break;
- case 231: t << "\\c{c}"; break;
- case 232: t << "\\`{e}"; break;
- case 233: t << "\\'{e}"; break;
- case 234: t << "\\^{e}"; break;
- case 235: t << "\\\"{e}"; break;
- case 236: t << "\\`{\\i}"; break;
- case 237: t << "\\'{\\i}"; break;
- case 238: t << "\\^{\\i}"; break;
- case 239: t << "\\\"{\\i}"; break;
- case 241: t << "\\~{n}"; break;
- case 242: t << "\\`{o}"; break;
- case 243: t << "\\'{o}"; break;
- case 244: t << "\\^{o}"; break;
- case 245: t << "\\~{o}"; break;
- case 246: t << "\\\"{o}"; break;
- case 248: t << "\\o "; break;
- case 249: t << "\\`{u}"; break;
- case 250: t << "\\'{u}"; break;
- case 251: t << "\\^{u}"; break;
- case 252: t << "\\\"{u}"; break;
- case 253: t << "\\'{y}"; break;
- case 255: t << "\\\"{y}"; break;
default:
- if ((isupper(c) && islower(pc))
- // ||
- // (pc!=':' && c==':') ||
- // (pc==':' && c!=':')
- ) t << "\\-";
- t << (char)c;
+ if (theTranslator->latexBabelPackage()=="a4j")
+ { // language is japanese
+ if (c>=128) // wide character
+ {
+ t << (char)c;
+ if (*p)
+ {
+ c = *p++;
+ t << (char)c;
+ }
+ else // ascii char => see if we can insert hypenation hint
+ {
+ if (isupper(c) && islower(pc)) t << "\\-";
+ t << (char)c;
+ }
+ }
+ }
+ else // language is other than japanese
+ {
+ switch(c)
+ {
+ // the Latin-1 characters
+ case 161: t << "!`"; break;
+ case 181: t << "$\\mu$"; break;
+ case 191: t << "?`"; break;
+ case 192: t << "\\`{A}"; break;
+ case 193: t << "\\'{A}"; break;
+ case 194: t << "\\^{A}"; break;
+ case 195: t << "\\~{A}"; break;
+ case 196: t << "\\\"{A}"; break;
+ case 197: t << "\\AA "; break;
+ case 198: t << "\\AE "; break;
+ case 199: t << "\\c{C}"; break;
+ case 200: t << "\\`{E}"; break;
+ case 201: t << "\\'{E}"; break;
+ case 202: t << "\\^{E}"; break;
+ case 203: t << "\\\"{E}"; break;
+ case 204: t << "\\`{I}"; break;
+ case 205: t << "\\'{I}"; break;
+ case 206: t << "\\^{I}"; break;
+ case 207: t << "\\\"{I}"; break;
+ case 208: t << "D "; break; // anyone know the real code?
+ case 209: t << "\\~{N}"; break;
+ case 210: t << "\\`{O}"; break;
+ case 211: t << "\\'{O}"; break;
+ case 212: t << "\\^{O}"; break;
+ case 213: t << "\\~{O}"; break;
+ case 214: t << "\\\"{O}"; break;
+ case 215: t << "$\\times$"; break;
+ case 216: t << "\\O"; break;
+ case 217: t << "\\`{U}"; break;
+ case 218: t << "\\'{U}"; break;
+ case 219: t << "\\^{U}"; break;
+ case 220: t << "\\\"{U}"; break;
+ case 221: t << "\\'{Y}"; break;
+ case 223: t << "\"s "; break; // assumes german package
+ case 224: t << "\\`{a}"; break;
+ case 225: t << "\\'{a}"; break;
+ case 226: t << "\\^{a}"; break;
+ case 227: t << "\\~{a}"; break;
+ case 228: t << "\\\"{a}"; break;
+ case 229: t << "\\aa "; break;
+ case 230: t << "\\ae "; break;
+ case 231: t << "\\c{c}"; break;
+ case 232: t << "\\`{e}"; break;
+ case 233: t << "\\'{e}"; break;
+ case 234: t << "\\^{e}"; break;
+ case 235: t << "\\\"{e}"; break;
+ case 236: t << "\\`{\\i}"; break;
+ case 237: t << "\\'{\\i}"; break;
+ case 238: t << "\\^{\\i}"; break;
+ case 239: t << "\\\"{\\i}"; break;
+ case 241: t << "\\~{n}"; break;
+ case 242: t << "\\`{o}"; break;
+ case 243: t << "\\'{o}"; break;
+ case 244: t << "\\^{o}"; break;
+ case 245: t << "\\~{o}"; break;
+ case 246: t << "\\\"{o}"; break;
+ case 248: t << "\\o "; break;
+ case 249: t << "\\`{u}"; break;
+ case 250: t << "\\'{u}"; break;
+ case 251: t << "\\^{u}"; break;
+ case 252: t << "\\\"{u}"; break;
+ case 253: t << "\\'{y}"; break;
+ case 255: t << "\\\"{y}"; break;
+ default: // normal ascii char
+ {
+ // see if we can insert an hyphenation hint
+ if (isupper(c) && islower(pc)) t << "\\-";
+ t << (char)c;
+ }
+ }
+ }
}
pc = c;
}
@@ -916,7 +941,7 @@ void LatexGenerator::writeChar(char c)
void LatexGenerator::startClassDiagram()
{
- if (compactLatexFlag) t << "\\subsubsection*"; else t << "\\subsection*";
+ if (Config::compactLatexFlag) t << "\\subsubsection*"; else t << "\\subsection*";
t << "{";
}
diff --git a/src/latexgen.h b/src/latexgen.h
index 5cabe66..cfd8230 100644
--- a/src/latexgen.h
+++ b/src/latexgen.h
@@ -83,6 +83,8 @@ class LatexGenerator : public OutputGenerator
void endMemberSections() {}
void startMemberHeader() { startGroupHeader(); }
void endMemberHeader() { endGroupHeader(); }
+ void startMemberSubtitle() {}
+ void endMemberSubtitle() {}
void startMemberList() { t << "\\begin{CompactItemize}" << endl; }
void endMemberList() { t << "\\end{CompactItemize}" << endl; }
void startMemberItem() { t << "\\item " << endl; }
diff --git a/src/logos.cpp b/src/logos.cpp
index 090309a..ac6e782 100644
--- a/src/logos.cpp
+++ b/src/logos.cpp
@@ -14,10 +14,11 @@
*
*/
-#include <qstring.h>
-#include <qfile.h>
#include <stdio.h>
+#include "qtbc.h"
+#include <qfile.h>
+
unsigned char logo_data[] = {
0x47, 0x49, 0x46, 0x38, 0x37, 0x61, 0x76, 0x00, 0x35, 0x00, 0xf7, 0x00,
0x00, 0x31, 0x7b, 0x6b, 0x31, 0x7b, 0x73, 0x31, 0x84, 0x7b, 0x31, 0x84,
@@ -492,7 +493,7 @@ unsigned int search_len = 2010;
void writeLogo(const char *dir)
{
- QString fileName=(QString)dir+"/doxygen.gif";
+ QCString fileName=(QCString)dir+"/doxygen.gif";
QFile f(fileName);
if (f.open(IO_WriteOnly))
f.writeBlock((char *)logo_data,logo_len);
@@ -505,7 +506,7 @@ void writeLogo(const char *dir)
void writeSearchButton(const char *dir)
{
- QString fileName=(QString)dir+"/search.gif";
+ QCString fileName=(QCString)dir+"/search.gif";
QFile f(fileName);
if (f.open(IO_WriteOnly))
f.writeBlock((char *)search_data,search_len);
diff --git a/src/mangen.cpp b/src/mangen.cpp
index d1bc4c6..056bc90 100644
--- a/src/mangen.cpp
+++ b/src/mangen.cpp
@@ -14,8 +14,10 @@
*
*/
-#include <qdir.h>
#include <stdlib.h>
+
+#include "qtbc.h"
+#include <qdir.h>
#include "message.h"
#include "mangen.h"
#include "config.h"
@@ -24,7 +26,7 @@
ManGenerator::ManGenerator() : OutputGenerator()
{
- dir=manOutputDir+"/man3";
+ dir=Config::manOutputDir+"/man3";
firstCol=TRUE;
paragraph=FALSE;
col=0;
@@ -37,7 +39,7 @@ ManGenerator::~ManGenerator()
void ManGenerator::append(const OutputGenerator *g)
{
- QString r=g->getContents();
+ QCString r=g->getContents();
if (upperCase)
t << r.upper();
else
@@ -52,23 +54,23 @@ void ManGenerator::append(const OutputGenerator *g)
void ManGenerator::init()
{
- QDir d(manOutputDir);
- if (!d.exists() && !d.mkdir(manOutputDir))
+ QDir d(Config::manOutputDir);
+ if (!d.exists() && !d.mkdir(Config::manOutputDir))
{
- err("Could not create output directory %s\n",manOutputDir.data());
+ err("Could not create output directory %s\n",Config::manOutputDir.data());
exit(1);
}
- d.setPath(manOutputDir+"/man3");
- if (!d.exists() && !d.mkdir(manOutputDir+"/man3"))
+ d.setPath(Config::manOutputDir+"/man3");
+ if (!d.exists() && !d.mkdir(Config::manOutputDir+"/man3"))
{
- err("Could not create output directory %s/man3\n",manOutputDir.data());
+ err("Could not create output directory %s/man3\n",Config::manOutputDir.data());
exit(1);
}
}
void ManGenerator::startFile(const char *name,const char *,bool)
{
- QString fileName=name;
+ QCString fileName=name;
if (fileName.left(6)=="class_")
{
fileName=fileName.right(fileName.length()-6);
@@ -78,7 +80,8 @@ void ManGenerator::startFile(const char *name,const char *,bool)
{
fileName=fileName.left(i);
}
- if (fileName.right(2)!=manExtension) fileName+=manExtension;
+ if (convertToQCString(fileName.right(2))!=Config::manExtension)
+ fileName+=Config::manExtension;
startPlainFile(fileName);
firstCol=TRUE;
}
@@ -95,10 +98,10 @@ void ManGenerator::writeDoxyAnchor(const char *, const char *,const char *)
void ManGenerator::endTitleHead(const char *name)
{
t << ".TH " << name << " 3 \"" << dateToString(FALSE) << "\" \"";
- if (projectName.isEmpty())
+ if (Config::projectName.isEmpty())
t << "Doxygen";
else
- t << projectName;
+ t << Config::projectName;
t << "\" \\\" -*- nroff -*-" << endl;
t << ".ad l" << endl;
t << ".nh" << endl;
diff --git a/src/mangen.h b/src/mangen.h
index bcc9034..03a6a39 100644
--- a/src/mangen.h
+++ b/src/mangen.h
@@ -82,6 +82,8 @@ class ManGenerator : public OutputGenerator
void startMemberHeader();
void endMemberHeader();
void insertMemberAlign() {}
+ void startMemberSubtitle() {}
+ void endMemberSubtitle() {}
void writeListItem();
void startMemberList() { t << "\n.in +1c"; firstCol=FALSE; }
void endMemberList() { t << "\n.in -1c"; firstCol=FALSE; }
diff --git a/src/memberdef.cpp b/src/memberdef.cpp
index bd440c3..1321692 100644
--- a/src/memberdef.cpp
+++ b/src/memberdef.cpp
@@ -58,6 +58,7 @@ MemberDef::MemberDef(const char *t,const char *na,const char *a,const char *e,
enumFields=0;
enumScope=0;
enumDeclList=0;
+ scopeTAL=0;
type=substituteClassNames(t);
args=substituteClassNames(a);
if (type.isNull()) decl=name()+args; else decl=type+" "+name()+args;
@@ -107,7 +108,6 @@ MemberDef::MemberDef(const char *t,const char *na,const char *a,const char *e,
{
argList=0;
}
-
}
MemberDef::~MemberDef()
@@ -180,7 +180,7 @@ void MemberDef::writeExample(OutputList &ol)
}
#endif
-QString MemberDef::getOutputFileBase() const
+QCString MemberDef::getOutputFileBase() const
{
if (classDef)
{
@@ -202,3 +202,50 @@ QString MemberDef::getOutputFileBase() const
" container!\n",name().data());
return "dummy";
}
+
+void MemberDef::setScopeTemplateArguments(ArgumentList *tal)
+{
+ // copy function arguments (if any)
+ if (tal)
+ {
+ scopeTAL = new ArgumentList;
+ scopeTAL->setAutoDelete(TRUE);
+ ArgumentListIterator tali(*tal);
+ Argument *a;
+ for (;(a=tali.current());++tali)
+ {
+ scopeTAL->append(new Argument(*a));
+ }
+ scopeTAL->constSpecifier = tal->constSpecifier;
+ scopeTAL->volatileSpecifier = tal->volatileSpecifier;
+ scopeTAL->pureSpecifier = tal->pureSpecifier;
+ }
+}
+
+QCString MemberDef::getScopeTemplateNameString()
+{
+ QCString result;
+ if (!scopeTAL || scopeTAL->count()==0) return result;
+ result="<";
+ Argument *a=scopeTAL->first();
+ while (a)
+ {
+ if (a->name.length()>0) // add template argument name
+ {
+ result+=a->name;
+ }
+ else // extract name from type
+ {
+ int i=a->type.length()-1;
+ while (i>=0 && isId(a->type.at(i))) i--;
+ if (i>0)
+ {
+ result+=a->type.right(a->type.length()-i-1);
+ }
+ }
+ a=scopeTAL->next();
+ if (a) result+=", ";
+ }
+ result+=">";
+ return result;
+}
diff --git a/src/memberdef.h b/src/memberdef.h
index 67a9aa9..4c1893f 100644
--- a/src/memberdef.h
+++ b/src/memberdef.h
@@ -17,7 +17,7 @@
#ifndef MEMBERDEF_H
#define MEMBERDEF_H
-#include <qstring.h>
+#include "qtbc.h"
#include <qlist.h>
#include <qdict.h>
@@ -55,13 +55,14 @@ class MemberDef : public Definition
const ArgumentList *al);
~MemberDef();
- QString getOutputFileBase() const;
+ QCString getOutputFileBase() const;
const char *declaration() const { return decl; }
const char *definition() const { return def; }
const char *typeString() const { return type; }
const char *argsString() const { return args; }
const char *excpString() const { return exception; }
const char *anchor() const { return ref; }
+ QCString bodyCode() const { return body; }
ClassDef *memberClass() { return classDef; }
Protection protection() const { return prot; }
Specifier virtualness() const { return virt; }
@@ -74,17 +75,25 @@ class MemberDef : public Definition
void setFileDec(FileDef *fd) { fileDec=fd; }
void setAnchor(const char *a) { ref=a; }
void setProtection(Protection p) { prot=p; }
+ void setBody(const QCString &b) { body=b; }
FileDef *getFileDef() { return fileDef; }
FileDef *getFileDec() { return fileDec; }
void setMemberClass(ClassDef *cd) { classDef=cd; }
bool isRelated() const { return related; }
bool isStatic() const { return stat; }
+ bool hasDocumentation() // overrides hasDocumentation in definition.h
+ { return !documentation().isNull() ||
+ !briefDescription().isNull() ||
+ !body.isEmpty() ||
+ Config::extractAllFlag;
+ }
+
bool detailsAreVisible() const
- { return !documentation().isEmpty() ||
+ { return !documentation().isEmpty() || !body.isEmpty() ||
(mtype==Enumeration && docEnumValues) ||
(mtype==EnumValue && !briefDescription().isEmpty()) ||
(!briefDescription().isEmpty() &&
- !briefMemDescFlag && repeatBriefFlag);
+ !Config::briefMemDescFlag && Config::repeatBriefFlag);
}
// relation to other members
@@ -138,7 +147,14 @@ class MemberDef : public Definition
// argument related members
ArgumentList *argumentList() const { return argList; }
+ void setArgumentList(ArgumentList *al)
+ { if (argList) delete argList;
+ argList = al;
+ }
ArgumentList *templateArguments() const { return tArgList; }
+ void setScopeTemplateArguments(ArgumentList *t);
+ ArgumentList *scopeTemplateArguments() const { return scopeTAL; }
+ QCString getScopeTemplateNameString();
// namespace related members
NamespaceDef *getNamespace() { return nspace; }
@@ -158,20 +174,21 @@ class MemberDef : public Definition
MemberList *enumFields; // enumeration fields
OutputList *enumDeclList; // stored piece of documentation for enumeration.
NamespaceDef *nspace; // the namespace this member is in.
- QString type; // return type
- QString args; // function arguments/variable array specifiers
- QString exception; // exceptions that can be thrown
- QString decl; // member declaration in class
- QString declFile; // file where the declaration was found
+ QCString type; // return type
+ QCString args; // function arguments/variable array specifiers
+ QCString exception; // exceptions that can be thrown
+ QCString body; // function body code
+ QCString decl; // member declaration in class
+ QCString declFile; // file where the declaration was found
int declLine; // line where the declaration was found
- QString def; // member definition in code (fully qualified name)
- QString defFile; // file where the definition was found
+ QCString def; // member definition in code (fully qualified name)
+ QCString defFile; // file where the definition was found
int defLine; // line where the definition was found
- QString ref; // HTML anchor name
+ QCString ref; // HTML anchor name
Specifier virt; // normal/virtual/pure virtual
Protection prot; // protection type [Public/Protected/Private]
bool related; // is this a member that is only related to a class
- QString external; // anchor of a member if extracted from a tag file
+ QCString external; // anchor of a member if extracted from a tag file
bool stat; // is it a static function?
MemberType mtype; // returns the kind of member
bool eUsed; // is the enumerate already placed in a list
@@ -179,6 +196,7 @@ class MemberDef : public Definition
bool docEnumValues; // is an enum with documented enum values.
ArgumentList *argList; // argument list of this member
ArgumentList *tArgList; // template argument list of function template
+ ArgumentList *scopeTAL; // template argument list of class template
// disable copying of member defs
MemberDef(const MemberDef &);
diff --git a/src/memberlist.cpp b/src/memberlist.cpp
index e9fa8b0..99ad00a 100644
--- a/src/memberlist.cpp
+++ b/src/memberlist.cpp
@@ -40,10 +40,10 @@ void MemberList::countDecMembers()
MemberDef *md=first();
while (md)
{
- if ((!hideMemberFlag || md->hasDocumentation()) &&
- (!hideMemberFlag || !md->documentation().isEmpty() ||
- briefMemDescFlag || repeatBriefFlag
- ) || extractAllFlag ||
+ if ((!Config::hideMemberFlag || md->hasDocumentation()) &&
+ (!Config::hideMemberFlag || !md->documentation().isEmpty() ||
+ Config::briefMemDescFlag || Config::repeatBriefFlag
+ ) || Config::extractAllFlag ||
(md->isEnumerate() &&
md->hasDocumentedEnumValues()
)
@@ -59,7 +59,7 @@ void MemberList::countDecMembers()
case MemberDef::EnumValue: enumValCnt++; break;
case MemberDef::Typedef: typeCnt++; break;
case MemberDef::Prototype: protoCnt++; break;
- case MemberDef::Define: if (extractAllFlag || md->argsString() || md->hasDocumentation() )
+ case MemberDef::Define: if (Config::extractAllFlag || md->argsString() || md->hasDocumentation() )
defCnt++;
break;
case MemberDef::Friend: friendCnt++; break;
@@ -73,18 +73,11 @@ void MemberList::countDecMembers()
void MemberList::countDocMembers()
{
- varCnt=funcCnt=enumCnt=enumValCnt=typeCnt=protoCnt=defCnt=friendCnt;
+ varCnt=funcCnt=enumCnt=enumValCnt=typeCnt=protoCnt=defCnt=friendCnt=0;
MemberDef *md=first();
while (md)
{
- //if (extractAllFlag || /*md->hasDocumentation()*/
- // !md->documentation().isEmpty() ||
- // (!md->briefDescription().isEmpty() &&
- // !briefMemDescFlag &&
- // repeatBriefFlag
- // )
- // )
- if (extractAllFlag || md->detailsAreVisible())
+ if (Config::extractAllFlag || md->detailsAreVisible())
{
QRegExp r("@[0-9]+");
int dummy;
diff --git a/src/membername.h b/src/membername.h
index 4754fa7..c485dc8 100644
--- a/src/membername.h
+++ b/src/membername.h
@@ -29,7 +29,7 @@ class MemberName : public QList<MemberDef>
int compareItems(GCI item1,GCI item2);
private:
- QString name;
+ QCString name;
};
class MemberNameIterator : public QListIterator<MemberDef>
@@ -62,8 +62,8 @@ struct MemberInfo
MemberDef *memberDef;
Protection prot;
Specifier virt;
- QString scopePath;
- QString ambiguityResolutionScope;
+ QCString scopePath;
+ QCString ambiguityResolutionScope;
};
class MemberNameInfo : public QList<MemberInfo>
@@ -74,7 +74,7 @@ class MemberNameInfo : public QList<MemberInfo>
const char *memberName() const { return name; }
int compareItems(GCI item1,GCI item2);
private:
- QString name;
+ QCString name;
};
class MemberNameInfoIterator : public QListIterator<MemberInfo>
diff --git a/src/message.cpp b/src/message.cpp
index 9f98107..c7b2a34 100644
--- a/src/message.cpp
+++ b/src/message.cpp
@@ -20,7 +20,7 @@
void msg(const char *fmt, ...)
{
- if (!quietFlag)
+ if (!Config::quietFlag)
{
va_list args;
va_start(args, fmt);
@@ -31,7 +31,7 @@ void msg(const char *fmt, ...)
void warn(const char *fmt, ...)
{
- if (warningFlag)
+ if (Config::warningFlag)
{
va_list args;
va_start(args, fmt);
diff --git a/src/namespacedef.cpp b/src/namespacedef.cpp
index bde86c6..2574563 100644
--- a/src/namespacedef.cpp
+++ b/src/namespacedef.cpp
@@ -14,6 +14,7 @@
*
*/
+#include "qtbc.h"
#include "namespacedef.h"
#include "outputlist.h"
#include "util.h"
@@ -60,14 +61,14 @@ void NamespaceDef::computeAnchors()
void NamespaceDef::writeDocumentation(OutputList &ol)
{
- QString pageTitle=name()+" Namespace Reference";
+ QCString pageTitle=name()+" Namespace Reference";
startFile(ol,fileName,pageTitle);
startTitle(ol);
//ol.docify(pageTitle);
parseText(ol,theTranslator->trNamespaceReference(name()));
endTitle(ol,name());
- if (genTagFile.length()>0) tagFile << "%" << name() << ":\n";
+ if (Config::genTagFile.length()>0) tagFile << "%" << name() << ":\n";
OutputList briefOutput(&ol);
if (briefDescription())
@@ -103,7 +104,7 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
ol.startMemberList();
found=TRUE;
}
- QString clName=cd->name().copy();
+ QCString clName=cd->name().copy();
if (clName.left(name().length()+2)==name()+"::")
{
clName = clName.right(clName.length()-name().length()-2);
@@ -225,7 +226,7 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
ol.startGroupHeader();
parseText(ol,theTranslator->trAuthor());
ol.endGroupHeader();
- parseText(ol,theTranslator->trGeneratedAutomatically(projectName));
+ parseText(ol,theTranslator->trGeneratedAutomatically(Config::projectName));
ol.enableAll();
endFile(ol);
}
diff --git a/src/namespacedef.h b/src/namespacedef.h
index f888f43..ca25700 100644
--- a/src/namespacedef.h
+++ b/src/namespacedef.h
@@ -17,7 +17,7 @@
#ifndef NAMESPACEDEF_H
#define NAMESPACEDEF_H
-#include <qstring.h>
+#include "qtbc.h"
#include <qstrlist.h>
#include <qdict.h>
#include "definition.h"
@@ -33,8 +33,8 @@ class NamespaceDef : public Definition
public:
NamespaceDef(const char *name,const char *ref=0);
~NamespaceDef();
- //QString namespaceFile() const { return fileName; }
- QString getOutputFileBase() const { return fileName; }
+ //QCString namespaceFile() const { return fileName; }
+ QCString getOutputFileBase() const { return fileName; }
void insertUsedFile(const char *fname);
void writeDocumentation(OutputList &ol);
void insertClass(ClassDef *cd);
@@ -42,10 +42,20 @@ class NamespaceDef : public Definition
void computeAnchors();
int countMembers();
const char *getReference() { return reference; }
+ bool isVisible()
+ {
+ return !getReference() && hasDocumentation() &&
+ !name().isEmpty() && name().at(0)!='@';
+ }
+ bool isVisibleExt()
+ {
+ return (getReference() || hasDocumentation()) &&
+ !name().isEmpty() && name().at(0)!='@';
+ }
private:
- QString reference;
- QString fileName;
+ QCString reference;
+ QCString fileName;
QStrList files;
ClassList *classList;
MemberList *memList;
diff --git a/src/outputgen.cpp b/src/outputgen.cpp
index ca07302..3496aad 100644
--- a/src/outputgen.cpp
+++ b/src/outputgen.cpp
@@ -15,8 +15,9 @@
*/
#include <stdlib.h>
+
+#include "qtbc.h"
#include "outputgen.h"
-#include <qstring.h>
#include "message.h"
OutputGenerator::OutputGenerator()
@@ -38,7 +39,7 @@ OutputGenerator::~OutputGenerator()
void OutputGenerator::startPlainFile(const char *name)
{
//printf("startPlainFile(%s)\n",name);
- QString fileName=dir+"/"+name;
+ QCString fileName=dir+"/"+name;
file = new QFile(fileName);
if (!file)
{
@@ -66,9 +67,9 @@ void OutputGenerator::endPlainFile()
t.setDevice(&b);
}
-QString OutputGenerator::getContents() const
+QCString OutputGenerator::getContents() const
{
- QString s;
+ QCString s;
s.resize(a.size()+1);
memcpy(s.data(),a.data(),a.size());
s.at(a.size())='\0';
diff --git a/src/outputgen.h b/src/outputgen.h
index 5b9f981..7411d5c 100644
--- a/src/outputgen.h
+++ b/src/outputgen.h
@@ -17,7 +17,7 @@
#ifndef OUTPUTGEN_H
#define OUTPUTGEN_H
-#include <qstring.h>
+#include "qtbc.h"
#include <qtstream.h>
#include <qbuffer.h>
#include <qfile.h>
@@ -88,6 +88,8 @@ class OutputGenerator
virtual void endMemberSections() = 0;
virtual void startMemberHeader() = 0;
virtual void endMemberHeader() = 0;
+ virtual void startMemberSubtitle() = 0;
+ virtual void endMemberSubtitle() = 0;
virtual void startMemberList() = 0;
virtual void endMemberList() = 0;
virtual void startMemberItem() = 0;
@@ -168,7 +170,7 @@ class OutputGenerator
b.open(IO_WriteOnly); t.setDevice(&b); }
void startPlainFile(const char *name);
void endPlainFile();
- QString getContents() const;
+ QCString getContents() const;
bool isEnabled() const { return active; }
protected:
QTextStream fs;
@@ -176,7 +178,7 @@ class OutputGenerator
QBuffer b;
QTextStream t;
QFile *file;
- QString dir;
+ QCString dir;
bool active;
private:
diff --git a/src/outputlist.h b/src/outputlist.h
index 6f73271..8f66f63 100644
--- a/src/outputlist.h
+++ b/src/outputlist.h
@@ -17,8 +17,8 @@
#ifndef OUTPUTLIST_H
#define OUTPUTLIST_H
+#include "qtbc.h"
#include <qlist.h>
-#include <qstring.h>
#include "index.h" // for IndexSections
#include "outputgen.h"
@@ -137,6 +137,10 @@ class OutputList
{ forall(&OutputGenerator::startMemberHeader); }
void endMemberHeader()
{ forall(&OutputGenerator::endMemberHeader); }
+ void startMemberSubtitle()
+ { forall(&OutputGenerator::startMemberSubtitle); }
+ void endMemberSubtitle()
+ { forall(&OutputGenerator::endMemberSubtitle); }
void startMemberList()
{ forall(&OutputGenerator::startMemberList); }
void endMemberList()
diff --git a/src/pre.h b/src/pre.h
index 5028929..31badb1 100644
--- a/src/pre.h
+++ b/src/pre.h
@@ -17,23 +17,10 @@
#ifndef PRE_H
#define PRE_H
+#include "qtbc.h"
#include <stdio.h>
-#include <qstring.h>
#include <qfile.h>
-#if 0
-class Define
-{
- public:
- Define(const char *n) { name=n; }
- ~Define();
-
- private:
- QString name;
- QStrList args;
-};
-#endif
-
void initPreprocessor();
void addSearchDir(const char *dir);
void preprocessFile(const char *fileName,BufStr &output);
diff --git a/src/pre.l b/src/pre.l
index bc74cf1..6f5193a 100644
--- a/src/pre.l
+++ b/src/pre.l
@@ -25,8 +25,8 @@
#include <assert.h>
#include <ctype.h>
+#include "qtbc.h"
#include <qarray.h>
-#include <qstring.h>
#include <qstack.h>
#include <qfile.h>
#include <qstrlist.h>
@@ -55,7 +55,7 @@ struct FileState
int lineNr;
FILE *filePtr;
YY_BUFFER_STATE bufState;
- QString fileName;
+ QCString fileName;
};
/* -----------------------------------------------------------------
@@ -64,30 +64,30 @@ struct FileState
*/
static int yyLineNr = 1;
-static QString yyFileName;
+static QCString yyFileName;
static int ifcount = 0;
static QStrList *pathList = 0;
static QStack<FileState> includeStack;
static QDict<int> *argDict;
-static int defArgs = 0;
-static QString defName;
-static QString defText;
-static QString defArgsStr;
+static int defArgs = -1;
+static QCString defName;
+static QCString defText;
+static QCString defArgsStr;
static bool defVarArgs;
static int level;
static int lastCContext;
static int lastCPPContext;
static QArray<int> levelGuard;
-static QString guardExpr;
+static QCString guardExpr;
static BufStr *outputBuf;
-//static DefineCache *fileDefineCache;
static int roundCount;
-//static const Define *expandDefine;
static bool quoteArg;
static DefineDict *fileDefineDict;
static DefineDict *expandedDict;
static int findDefArgContext;
+static QCString lastGuardName;
+
static void incrLevel()
{
@@ -142,14 +142,14 @@ static FILE *findFile(const char *fileName)
char *s=pathList->first();
while (s)
{
- QString absName=(QString)s+"/"+fileName;
+ QCString absName=(QCString)s+"/"+fileName;
QFileInfo fi(absName);
if (fi.exists())
{
FILE *f;
- if (!inputFilter.isEmpty())
+ if (!Config::inputFilter.isEmpty())
{
- QString cmd = inputFilter+" "+absName;
+ QCString cmd = Config::inputFilter+" "+absName;
f=popen(cmd,"r");
if (!f) warn("Warning: could not execute filter %s\n",cmd.data());
}
@@ -171,14 +171,14 @@ static FILE *findFile(const char *fileName)
}
-static int getNextChar(const QString &expr,QString *rest,uint &pos);
-static int getCurrentChar(const QString &expr,QString *rest,uint pos);
-static void unputChar(const QString &expr,QString *rest,uint &pos,char c);
-static void expandExpression(QString &expr,QString *rest,int pos);
+static int getNextChar(const QCString &expr,QCString *rest,uint &pos);
+static int getCurrentChar(const QCString &expr,QCString *rest,uint pos);
+static void unputChar(const QCString &expr,QCString *rest,uint &pos,char c);
+static void expandExpression(QCString &expr,QCString *rest,int pos);
-static QString stringize(const QString &s)
+static QCString stringize(const QCString &s)
{
- QString result;
+ QCString result;
uint i=0;
bool inString=FALSE;
bool inChar=FALSE;
@@ -254,7 +254,7 @@ static QString stringize(const QString &s)
* marker (@-) then this is removed (before the concatenated macro name
* may be expanded again.
*/
-static void processConcatOperators(QString &expr)
+static void processConcatOperators(QCString &expr)
{
QRegExp r("[ \\t\\n]*##[ \\t\\n]*");
int l,n,i=0;
@@ -286,7 +286,7 @@ static void processConcatOperators(QString &expr)
* The replacement string will be returned in \a result and the
* length of the (unexpanded) argument list is stored in \a len.
*/
-static bool replaceFunctionMacro(const QString &expr,QString *rest,int pos,int &len,const Define *def,QString &result)
+static bool replaceFunctionMacro(const QCString &expr,QCString *rest,int pos,int &len,const Define *def,QCString &result)
{
//printf("replaceFunctionMacro(expr=%s,rest=%s,pos=%d,def=%s) level=%d\n",expr.data(),rest ? rest->data() : 0,pos,def->name.data(),level);
//bool replaced=FALSE;
@@ -312,101 +312,113 @@ static bool replaceFunctionMacro(const QString &expr,QString *rest,int pos,int &
//while (j<expr.length() && expr.at(j)!='(') j++;
//j++; // skip opening paren
- QDict<QString> argTable; // list of arguments
+ QDict<QCString> argTable; // list of arguments
argTable.setAutoDelete(TRUE);
- QString arg;
+ QCString arg;
int argCount=0;
bool done=FALSE;
+
// FASE 1: read the macro arguments
- while ((argCount<def->nargs || def->varArgs) &&
- ((cc=getNextChar(expr,rest,j))!=EOF) && !done
- )
+ if (def->nargs==0)
+ {
+ while ((cc=getNextChar(expr,rest,j))!=EOF)
+ {
+ char c = (char)cc;
+ if (c==')') break;
+ }
+ }
+ else
{
- char c=(char)cc;
- if (c=='(') // argument is a function => search for matching )
+ while ((argCount<def->nargs || def->varArgs) &&
+ ((cc=getNextChar(expr,rest,j))!=EOF) && !done
+ )
{
- int level=1;
- arg+=c;
- char term='\0';
- while ((cc=getNextChar(expr,rest,j))!=EOF)
+ char c=(char)cc;
+ if (c=='(') // argument is a function => search for matching )
{
- char c=(char)cc;
- if (c=='\'' || c=='\"') // skip ('s and )'s inside strings
+ int level=1;
+ arg+=c;
+ char term='\0';
+ while ((cc=getNextChar(expr,rest,j))!=EOF)
{
- if (term!='\0')
- {
- if (c==term && expr.at(j-2)!='\\') term='\0';
- }
- else
- {
- term=c;
+ char c=(char)cc;
+ if (c=='\'' || c=='\"') // skip ('s and )'s inside strings
+ {
+ if (term!='\0')
+ {
+ if (c==term && expr.at(j-2)!='\\') term='\0';
+ }
+ else
+ {
+ term=c;
+ }
+ }
+ if (term=='\0' && c==')')
+ {
+ level--;
+ arg+=c;
+ if (level==0) break;
}
+ else if (term=='\0' && c=='(')
+ {
+ level++;
+ arg+=c;
+ }
+ else
+ arg+=c;
}
- if (term=='\0' && c==')')
+ }
+ else if (c==')' || c==',') // last or next argument found
+ {
+ if (c==',' && argCount==def->nargs-1 && def->varArgs)
{
- level--;
- arg+=c;
- if (level==0) break;
+ arg=arg.stripWhiteSpace();
+ arg+=',';
}
- else if (term=='\0' && c=='(')
+ else
{
- level++;
- arg+=c;
+ QCString argKey;
+ argKey.sprintf("@%d",argCount++); // key name
+ arg=arg.stripWhiteSpace();
+ // add argument to the lookup table
+ argTable.insert(argKey, new QCString(arg));
+ arg.resize(0);
+ if (c==')') // end of the argument list
+ {
+ done=TRUE;
+ }
}
- else
- arg+=c;
- }
- }
- else if (c==')' || c==',') // last or next argument found
- {
- if (c==',' && argCount==def->nargs-1 && def->varArgs)
- {
- arg=arg.stripWhiteSpace();
- arg+=',';
- }
- else
+ }
+ else if (c=='\"') // append literal strings
{
- QString argKey;
- argKey.sprintf("@%d",argCount++); // key name
- arg=arg.stripWhiteSpace();
- // add argument to the lookup table
- argTable.insert(argKey, new QString(arg));
- arg.resize(0);
- if (c==')') // end of the argument list
+ arg+=c;
+ char pc=c;
+ bool found=FALSE;
+ while (!found && (cc=getNextChar(expr,rest,j))!=EOF)
{
- done=TRUE;
+ found = pc!='\\' && cc=='"';
+ c=(char)cc;
+ pc=c;
+ arg+=c;
}
}
- }
- else if (c=='\"') // append literal strings
- {
- arg+=c;
- char pc=c;
- bool found=FALSE;
- while (!found && (cc=getNextChar(expr,rest,j))!=EOF)
+ else if (c=='\'') // append literal characters
{
- found = pc!='\\' && cc=='"';
- c=(char)cc;
- pc=c;
arg+=c;
- }
- }
- else if (c=='\'') // append literal characters
- {
- arg+=c;
- char pc=c;
- bool found=FALSE;
- while (!found && (cc=getNextChar(expr,rest,j))!=EOF)
+ char pc=c;
+ bool found=FALSE;
+ while (!found && (cc=getNextChar(expr,rest,j))!=EOF)
+ {
+ found = pc!='\\' && cc=='\'';
+ c=(char)cc;
+ pc=c;
+ arg+=c;
+ }
+ }
+ else // append other characters
{
- found = pc!='\\' && cc=='\'';
- c=(char)cc;
- pc=c;
arg+=c;
}
- }
- else // append other characters
- {
- arg+=c;
}
}
@@ -416,8 +428,8 @@ static bool replaceFunctionMacro(const QString &expr,QString *rest,int pos,int &
{
uint k=0;
// substitution of all formal arguments
- QString resExpr;
- const QString d=def->definition.stripWhiteSpace();
+ QCString resExpr;
+ const QCString d=def->definition.stripWhiteSpace();
bool inString=FALSE;
while (k<d.length())
{
@@ -435,8 +447,8 @@ static bool replaceFunctionMacro(const QString &expr,QString *rest,int pos,int &
}
else // argument marker => read the argument number
{
- QString key="@";
- QString *subst=0;
+ QCString key="@";
+ QCString *subst=0;
bool hash=FALSE;
int l=k-1;
// search for ## backward
@@ -457,7 +469,7 @@ static bool replaceFunctionMacro(const QString &expr,QString *rest,int pos,int &
//printf("request key %s result %s\n",key.data(),args[key]->data());
if (key.length()>1 && (subst=argTable[key]))
{
- QString substArg=*subst;
+ QCString substArg=*subst;
// only if no ## operator is before or after the argument
// marker we do macro expansion.
if (!hash) expandExpression(substArg,0,0);
@@ -506,7 +518,7 @@ static bool replaceFunctionMacro(const QString &expr,QString *rest,int pos,int &
* The position of the identifier is returned (or -1 if nothing is found)
* and \a l is its length. Any quoted strings are skipping during the search.
*/
-static int getNextId(const QString &expr,int p,int *l)
+static int getNextId(const QCString &expr,int p,int *l)
{
int n;
while (p<(int)expr.length())
@@ -541,11 +553,11 @@ static int getNextId(const QString &expr,int p,int *l)
* If \a expandAll is \c TRUE then all macros in the expression are
* expanded, otherwise only the first is expanded.
*/
-static void expandExpression(QString &expr,QString *rest,int pos)
+static void expandExpression(QCString &expr,QCString *rest,int pos)
{
//printf("expandExpression(%s,%s)\n",expr.data(),rest ? rest->data() : 0);
- QString macroName;
- QString expMacro;
+ QCString macroName;
+ QCString expMacro;
int i=pos,l,p,len;
while ((p=getNextId(expr,i,&l))!=-1) // search for an macro name
{
@@ -558,7 +570,7 @@ static void expandExpression(QString &expr,QString *rest,int pos)
{
Define *def=isDefined(macroName);
//printf("name is not an expanded macro def=%s\n",def ? def->name.data() : 0);
- if (def && def->nargs==0) // simple macro
+ if (def && def->nargs==-1) // simple macro
{
// substitute the definition of the macro
expMacro=def->definition.stripWhiteSpace();
@@ -566,7 +578,7 @@ static void expandExpression(QString &expr,QString *rest,int pos)
len=l;
//printf("simple macro expansion=`%s'->`%s'\n",macroName.data(),expMacro.data());
}
- else if (def && def->nargs>0) // function macro
+ else if (def && def->nargs>=0) // function macro
{
replaced=replaceFunctionMacro(expr,rest,p+l,len,def,expMacro);
len+=l;
@@ -575,8 +587,8 @@ static void expandExpression(QString &expr,QString *rest,int pos)
if (replaced) // expand the macro and rescan the expression
{
//printf("replacing `%s'->`%s'\n",expr.mid(p,len).data(),expMacro.data());
- QString resultExpr=expMacro;
- QString restExpr=expr.right(expr.length()-len-p);
+ QCString resultExpr=expMacro;
+ QCString restExpr=expr.right(expr.length()-len-p);
processConcatOperators(resultExpr);
expandedDict->insert(macroName,def);
expandExpression(resultExpr,&restExpr,0);
@@ -612,13 +624,13 @@ static void expandExpression(QString &expr,QString *rest,int pos)
* \par assumption:
* \a s only contains pairs of @@'s.
*/
-QString removeIdsAndMarkers(const char *s)
+QCString removeIdsAndMarkers(const char *s)
{
//printf("removeIdsAndMarkers(%s)\n",s);
const char *p=s;
char c;
bool inNum=FALSE;
- QString result;
+ QCString result;
if (p)
{
while ((c=*p))
@@ -659,11 +671,11 @@ QString removeIdsAndMarkers(const char *s)
* \par assumption:
* \a s only contains pairs of @@'s
*/
-QString removeMarkers(const char *s)
+QCString removeMarkers(const char *s)
{
const char *p=s;
char c;
- QString result;
+ QCString result;
if (p)
{
while ((c=*p))
@@ -690,9 +702,9 @@ QString removeMarkers(const char *s)
* If needed the function may read additional characters from the input.
*/
-bool computeExpression(const QString &expr)
+bool computeExpression(const QCString &expr)
{
- QString e=expr;
+ QCString e=expr;
expandExpression(e,0,0);
e = removeIdsAndMarkers(e);
if (e.length()==0) return FALSE;
@@ -704,9 +716,9 @@ bool computeExpression(const QString &expr)
* If needed the function may read additional characters from the input
*/
-QString expandMacro(const QString &name)
+QCString expandMacro(const QCString &name)
{
- QString n=name;
+ QCString n=name;
expandExpression(n,0,0);
n=removeMarkers(n);
//printf("expandMacro `%s'->`%s'\n",name.data(),n.data());
@@ -761,9 +773,9 @@ static void outputArray(const char *a,int len)
if (includeStack.isEmpty()) outputBuf->addArray(a,len);
}
-static void readIncludeFile(const QString &inc)
+static void readIncludeFile(const QCString &inc)
{
- if (!searchIncludeFlag) return; // do not read include files
+ if (!Config::searchIncludeFlag) return; // do not read include files
uint i=0;
// find the start of the include file name
while (i<inc.length() &&
@@ -775,10 +787,10 @@ static void readIncludeFile(const QString &inc)
inc.at(i)!='"' && inc.at(i)!='>') i++;
if (s<inc.length() && i>s) // valid include file name found
{
- QString incFileName=inc.mid(s,i-s).stripWhiteSpace();
+ QCString incFileName=inc.mid(s,i-s).stripWhiteSpace();
FILE *f;
- QString oldFileName=yyFileName.copy();
+ QCString oldFileName=yyFileName.copy();
if ((f=findFile(incFileName))) // see if the include file can be found
{
#if SHOW_INCLUDES
@@ -815,6 +827,8 @@ ID [a-z_A-Z][a-z_A-Z0-9]*
B [ \t]
BN [ \t\r\n]
+%option noyywrap
+
%x Start
%x Command
%x SkipCommand
@@ -822,7 +836,7 @@ BN [ \t\r\n]
%x CopyLine
%x Include
%x IncludeID
-%x DefineName
+%x DefName
%x DefineArg
%x DefineText
%x SkipCPPBlock
@@ -871,16 +885,27 @@ BN [ \t\r\n]
}
*/
<CopyLine>{ID}/{BN}*"(" {
+ Define *def;
+ //printf("Search for define %s\n",yytext);
if (includeStack.isEmpty() &&
- macroExpansionFlag &&
+ Config::macroExpansionFlag &&
/* (expandDefine=fileDefineCache->findDefine(yyFileName,yytext)) */
- fileDefineDict->find(yytext)
+ (def=fileDefineDict->find(yytext))
)
{
+ //printf("Found it!\n");
roundCount=0;
defArgsStr=yytext;
- findDefArgContext = CopyLine;
- BEGIN(FindDefineArgs);
+ if (def->nargs==-1) // no function macro
+ {
+ QCString result = expandMacro(defArgsStr);
+ outputArray(result,result.length());
+ }
+ else // zero or more arguments
+ {
+ findDefArgContext = CopyLine;
+ BEGIN(FindDefineArgs);
+ }
}
else
{
@@ -889,14 +914,16 @@ BN [ \t\r\n]
}
<CopyLine>{ID} {
Define *def=0;
+ //printf("Search for define %s\n",yytext);
if (includeStack.isEmpty() &&
- macroExpansionFlag &&
+ Config::macroExpansionFlag &&
(def=fileDefineDict->find(yytext)) &&
- def->nargs==0
+ def->nargs==-1
)
{
- QString name=yytext;
- QString result=expandMacro(name);
+ //printf("Found it!\n");
+ QCString name=yytext;
+ QCString result=expandMacro(name);
outputArray(result,result.length());
}
else
@@ -921,7 +948,7 @@ BN [ \t\r\n]
roundCount--;
if (roundCount==0)
{
- QString result=expandMacro(defArgsStr);
+ QCString result=expandMacro(defArgsStr);
if (findDefArgContext==CopyLine)
{
outputArray(result,result.length());
@@ -964,15 +991,15 @@ BN [ \t\r\n]
defArgsStr+=*yytext;
}
<Command>"include"{B}*/{ID} {
- if (macroExpansionFlag)
+ if (Config::macroExpansionFlag)
BEGIN(IncludeID);
}
<Command>"include"{B}*[<"] {
BEGIN(Include);
}
<Command>"define"{B}+ {
- //printf("!!!DefineName\n");
- BEGIN(DefineName);
+ //printf("!!!DefName\n");
+ BEGIN(DefName);
}
<Command>"ifdef"/{B}*"(" {
incrLevel();
@@ -1094,6 +1121,7 @@ BN [ \t\r\n]
guardExpr+=" 1L ";
else
guardExpr+=" 0L ";
+ lastGuardName=yytext;
BEGIN(Guard);
}
<DefinedExpr2>{ID} {
@@ -1101,6 +1129,7 @@ BN [ \t\r\n]
guardExpr+=" 1L ";
else
guardExpr+=" 0L ";
+ lastGuardName.resize(0);
}
<DefinedExpr1,DefinedExpr2>\n { // should not happen, handle anyway
ifcount=0;
@@ -1133,11 +1162,12 @@ BN [ \t\r\n]
if (!otherCaseDone())
{
guardExpr.resize(0);
+ lastGuardName.resize(0);
BEGIN(Guard);
}
else
{
- BEGIN(Start);
+ BEGIN(SkipCPPBlock);
}
}
}
@@ -1184,9 +1214,9 @@ BN [ \t\r\n]
BEGIN(Start);
}
<Include>[^\">\n]+[\">] {
- QString incName=yytext;
+ QCString incName=yytext;
//int l=incName.length();
- //QString incFileName=incName.left(l-1);
+ //QCString incFileName=incName.left(l-1);
//if (fileDefineCache->fileCached(incFileName))
//{
// printf("file already cached!\n");
@@ -1197,7 +1227,7 @@ BN [ \t\r\n]
BEGIN(Start);
}
-<DefineName>{ID}/"(" {
+<DefName>{ID}/"(" {
//printf("Define() `%s'\n",yytext);
argDict = new QDict<int>(31);
argDict->setAutoDelete(TRUE);
@@ -1208,33 +1238,80 @@ BN [ \t\r\n]
defVarArgs = FALSE;
BEGIN(DefineArg);
}
-<DefineName>{ID}/{B}* {
+<DefName>{ID}/{B}* {
//printf("Define `%s'\n",yytext);
argDict = 0;
- defArgs = 0;
+ defArgs = -1;
defArgsStr.resize(0);
defText.resize(0);
defName = yytext;
defVarArgs = FALSE;
- QString tmp=(QString)"#define "+defName+defArgsStr;
+ QCString tmp=(QCString)"#define "+defName+defArgsStr;
outputArray(tmp.data(),tmp.length());
quoteArg=FALSE;
BEGIN(DefineText);
}
+<DefName>{ID}/{B}*"\n" {
+ argDict = 0;
+ defArgs = -1;
+ defName = yytext;
+ defArgsStr.resize(0);
+ defText.resize(0);
+ defVarArgs = FALSE;
+ if ( defName!=lastGuardName )
+ { // define may appear in the output
+ QCString tmp=(QCString)"#define "+defName+defArgsStr;
+ outputArray(tmp.data(),tmp.length());
+ quoteArg=FALSE;
+ BEGIN(DefineText);
+ }
+ else // define is a guard => hide
+ {
+ //printf("Found a guard %s\n",yytext);
+ Define *def=0;
+ //if (includeStack.isEmpty())
+ //{
+ // addDefine();
+ //}
+ if (!Config::onlyPredefinedFlag && (def=fileDefineDict->find(defName))==0)
+ {
+ fileDefineDict->insert(defName,newDefine());
+ }
+ else if (def)// name already exists
+ {
+ if (def->undef) // undefined name
+ {
+ def->undef = FALSE;
+ def->name = defName;
+ def->definition = defText.stripWhiteSpace();
+ def->nargs = defArgs;
+ def->fileName = yyFileName;
+ def->lineNr = yyLineNr;
+ }
+ else
+ {
+ //printf("Error: define %s is defined more than once!\n",defName.data());
+ }
+ }
+ outputChar('\n');
+ lastGuardName.resize(0);
+ BEGIN(Start);
+ }
+ }
<DefineArg>","{B}* { defArgsStr+=yytext; }
<DefineArg>"("{B}* { defArgsStr+=yytext; }
<DefineArg>")"{B}* {
defArgsStr+=yytext;
- QString tmp=(QString)"#define "+defName+defArgsStr;
+ QCString tmp=(QCString)"#define "+defName+defArgsStr;
outputArray(tmp.data(),tmp.length());
quoteArg=FALSE;
BEGIN(DefineText);
}
<DefineArg>{ID}("..."?) {
//printf("Define addArg(%s)\n",yytext);
- QString argName=yytext;
+ QCString argName=yytext;
defVarArgs = yytext[yyleng-1]=='.';
- if (defVarArgs)
+ if (defVarArgs) // strip ellipsis
argName=argName.left(argName.length()-3);
defArgsStr+=yytext;
argDict->insert(argName,new int(defArgs));
@@ -1301,14 +1378,6 @@ BN [ \t\r\n]
quoteArg=TRUE;
}
<DefineText>{ID} {
- //bool quote=FALSE;
- //char *p=yytext;
- //if (p[0]=='#')
- //{
- // p++;
- // quote=TRUE;
- // defText+="\"";
- //}
if (quoteArg)
{
defText+="\"";
@@ -1320,7 +1389,7 @@ BN [ \t\r\n]
{
if (!quoteArg) defText+=' ';
defText+='@';
- QString numStr;
+ QCString numStr;
numStr.setNum(*n);
defText+=numStr;
if (!quoteArg) defText+=' ';
@@ -1348,16 +1417,14 @@ BN [ \t\r\n]
outputChar('\n');
Define *def=0;
//printf("Define name=`%s' text=`%s'\n",defName.data(),defText.data());
- if (includeStack.isEmpty()) addDefine();
- if (!onlyPredefinedFlag && (def=fileDefineDict->find(defName))==0)
+ if (includeStack.isEmpty())
+ {
+ addDefine();
+ }
+ if (!Config::onlyPredefinedFlag && (def=fileDefineDict->find(defName))==0)
{
fileDefineDict->insert(defName,newDefine());
}
- //if ((def=fileDefineCache->findDefine(yyFileName,defName))==0)
- //{
- // printf("define is not found\n");
- // fileDefineCache->insertDefine(yyFileName,defName,newDefine());
- //}
else if (def)// name already exists
{
//printf("define found\n");
@@ -1377,6 +1444,7 @@ BN [ \t\r\n]
}
delete argDict;
yyLineNr++;
+ lastGuardName.resize(0);
BEGIN(Start);
}
<DefineText>{B}* { defText += ' '; }
@@ -1411,7 +1479,7 @@ BN [ \t\r\n]
{
FileState *fs=includeStack.pop();
//fileDefineCache->merge(yyFileName,fs->fileName);
- if (inputFilter.isEmpty())
+ if (Config::inputFilter.isEmpty())
fclose(fs->filePtr);
else
pclose(fs->filePtr);
@@ -1447,7 +1515,7 @@ BN [ \t\r\n]
/*@ ----------------------------------------------------------------------------
*/
-static int getNextChar(const QString &expr,QString *rest,uint &pos)
+static int getNextChar(const QCString &expr,QCString *rest,uint &pos)
{
//printf("getNextChar(%s,%s,%d)\n",expr.data(),rest ? rest->data() : 0,pos);
if (pos<expr.length())
@@ -1470,7 +1538,7 @@ static int getNextChar(const QString &expr,QString *rest,uint &pos)
}
}
-static int getCurrentChar(const QString &expr,QString *rest,uint pos)
+static int getCurrentChar(const QCString &expr,QCString *rest,uint pos)
{
//printf("getCurrentChar(%s,%s,%d)\n",expr.data(),rest ? rest->data() : 0,pos);
if (pos<expr.length())
@@ -1492,7 +1560,7 @@ static int getCurrentChar(const QString &expr,QString *rest,uint pos)
}
}
-static void unputChar(const QString &expr,QString *rest,uint &pos,char c)
+static void unputChar(const QCString &expr,QCString *rest,uint &pos,char c)
{
//printf("unputChar(%s,%s,%d,%c)\n",expr.data(),rest ? rest->data() : 0,pos,c);
if (pos<expr.length())
@@ -1554,37 +1622,92 @@ void preprocessFile(const char *fileName,BufStr &output)
expandedDict->clear();
// add predefined macros
- char *defStr = predefined.first();
+ char *defStr = Config::predefined.first();
while (defStr)
{
- QString ds = defStr;
- int i;
- if ((i=ds.find('='))==-1)
+ QCString ds = defStr;
+ int i_equals=ds.find('=');
+ int i_obrace=ds.find('(');
+ int i_cbrace=ds.find(')');
+
+ if (i_obrace==0) continue; // no define name
+
+ if (i_obrace<i_equals && i_cbrace<i_equals &&
+ i_obrace!=-1 && i_cbrace!=-1 &&
+ i_obrace<i_cbrace
+ ) // predefined function macro definition
{
- if (ds.length()>0)
- {
- Define *def = new Define;
- def->name = ds;
- def->definition = "1";
- def->nargs = 0;
- fileDefineDict->insert(ds,def);
+ QRegExp reId("[a-z_A-Z][a-z_A-Z0-9]*"); // regexp matching an id
+ QDict<int> argDict(17);
+ argDict.setAutoDelete(TRUE);
+ int i=i_obrace+1,p,l,count=0;
+ // gather the formal arguments in a dictionary
+ while (i<i_cbrace && (p=reId.match(ds,i,&l)))
+ {
+ argDict.insert(ds.mid(p,l),new int(count++));
+ i=p+l;
+ }
+ // strip definition part
+ QCString tmp=ds.right(ds.length()-i_equals-1);
+ QCString definition;
+ i=0;
+ // substitute all occurrences of formal arguments by their
+ // corresponding markers
+ while ((p=reId.match(tmp,i,&l))!=-1)
+ {
+ if (p>i) definition+=tmp.mid(i,p-i);
+ int *argIndex;
+ if ((argIndex=argDict[tmp.mid(p,l)])!=0)
+ {
+ QCString marker;
+ marker.sprintf(" @%d ",*argIndex);
+ definition+=marker;
+ }
+ else
+ {
+ definition+=tmp.mid(p,l);
+ }
+ i=p+l;
}
+ if (i<(int)tmp.length()) definition+=tmp.mid(i,tmp.length()-i);
+
+ // add define definition to the dictionary of defines for this file
+ Define *def = new Define;
+ def->name = ds.left(i_obrace);
+ def->definition = definition;
+ def->nargs = count;
+ fileDefineDict->insert(def->name,def);
+
+ //printf("#define `%s' `%s' #nargs=%d\n",
+ // def->name.data(),def->definition.data(),def->nargs);
}
- else
+ else if ((i_obrace==-1 || i_obrace>i_equals) &&
+ (i_cbrace==-1 || i_cbrace>i_equals) &&
+ ds.length()>0 && (int)ds.length()>i_equals
+ ) // predefined non-function macro definition
{
- if (i>0 && (int)ds.length()>i)
+ Define *def = new Define;
+ if (i_equals==-1) // simple define without argument
+ {
+ def->name = ds;
+ def->definition = "1"; // substitute occurrences by 1 (true)
+ }
+ else // simple define with argument
{
- Define *def = new Define;
- def->name = ds.left(i);
- def->definition = ds.right(ds.length()-i-1);
- def->nargs = 0;
- fileDefineDict->insert(ds.left(i),def);
- }
+ def->name = ds.left(i_equals);
+ def->definition = ds.right(ds.length()-i_equals-1);
+ }
+ def->nargs = -1;
+ fileDefineDict->insert(def->name,def);
+
+ //printf("#define `%s' `%s' #nargs=%d\n",
+ // def->name.data(),def->definition.data(),def->nargs);
}
- defStr=predefined.next();
+
+ defStr=Config::predefined.next();
}
- if (inputFilter.isEmpty())
+ if (Config::inputFilter.isEmpty())
{
preYYin = fopen(fileName,"r");
if (!preYYin)
@@ -1595,7 +1718,7 @@ void preprocessFile(const char *fileName,BufStr &output)
}
else
{
- QString cmd = inputFilter+" "+fileName;
+ QCString cmd = Config::inputFilter+" "+fileName;
preYYin = popen(cmd,"r");
if (!preYYin)
{
@@ -1605,10 +1728,15 @@ void preprocessFile(const char *fileName,BufStr &output)
}
yyLineNr = 1;
level = 0;
+ ifcount = 0;
yyFileName = fileName;
BEGIN( Start );
+
+ lastGuardName.resize(0);
+ guardExpr.resize(0);
+
preYYlex();
- if (inputFilter.isEmpty())
+ if (Config::inputFilter.isEmpty())
fclose(preYYin);
else
pclose(preYYin);
@@ -1629,8 +1757,7 @@ void preprocessFile(const char *fileName,BufStr &output)
#endif
}
-
extern "C" { // some bogus code to keep the compiler happy
- int preYYwrap() { return 1 ; }
+// int preYYwrap() { return 1 ; }
void preYYdummy() { yy_flex_realloc(0,0); }
}
diff --git a/src/qtbc.h b/src/qtbc.h
new file mode 100644
index 0000000..2049fdd
--- /dev/null
+++ b/src/qtbc.h
@@ -0,0 +1,42 @@
+/******************************************************************************
+ *
+ * $Id$
+ *
+ * Copyright (C) 1997-1999 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.
+ *
+ * All output generated with Doxygen is not covered by this license.
+ *
+ */
+
+#ifndef QTBC_H
+#define QTBC_H
+
+/*! This file contains some hacks to make Doxygen work with
+ * Qt version 2.00 and Qt version 1.xx
+ */
+
+#include <qglobal.h>
+
+#if QT_VERSION >= 200
+
+#define GCI QCollection::Item
+
+#include <qcstring.h>
+#include <qstring.h>
+inline QCString convertToQCString(const QString &s) { return s.local8Bit(); }
+
+#else /* QT_VERSION < 200 */
+
+#include <qstring.h>
+#define QCString QString
+inline QCString convertToQCString(const QCString &s) { return s; }
+
+#endif
+
+#endif
diff --git a/src/scanner.h b/src/scanner.h
index acebd5f..1e6bad7 100644
--- a/src/scanner.h
+++ b/src/scanner.h
@@ -17,9 +17,9 @@
#ifndef SCANNER_H
#define SCANNER_H
+#include "qtbc.h"
#include <stdio.h>
#include <qlist.h>
-#include <qstring.h>
#include "entry.h"
#include "code.h"
@@ -28,8 +28,8 @@ class OutputList;
extern void parseMain(Entry *);
extern void parseDoc(OutputList &ol,const char *clName, const char *memName,
- const QString &docString);
-extern void parseExample(OutputList &ol,const QString &docString,
+ const QCString &docString);
+extern void parseExample(OutputList &ol,const QCString &docString,
const char *fileName);
-extern void parseText(OutputList &ol,const QString &txtString);
+extern void parseText(OutputList &ol,const QCString &txtString);
#endif
diff --git a/src/scanner.l b/src/scanner.l
index 9737ff1..9c7b477 100644
--- a/src/scanner.l
+++ b/src/scanner.l
@@ -25,8 +25,8 @@
#include <assert.h>
#include <ctype.h>
+#include "qtbc.h"
#include <qarray.h>
-#include <qstring.h>
#include <qstack.h>
#include <qregexp.h>
@@ -51,14 +51,14 @@
* statics
*/
static bool insideArgumentList;
-static QString className;
-static QString memberName;
-static QString refName;
+static QCString className;
+static QCString memberName;
+static QCString refName;
static OutputList * outDoc;
-static QString code;
-static QString linkRef;
-static QString linkText;
-static QString codeBlock;
+static QCString code;
+static QCString linkRef;
+static QCString linkText;
+static QCString codeBlock;
static const char * inputString;
static int inputPosition;
static int lastContext;
@@ -78,6 +78,7 @@ static int lastGroupContext;
static int lastFormulaContext;
static int lastAnchorContext;
static int nextDefContext;
+static int overloadContext;
static Protection protection;
static Protection baseProt;
static int bracketCount = 0 ;
@@ -87,6 +88,8 @@ static int ifCount = 0 ;
static Entry* current_root = 0 ;
static Entry* global_root = 0 ;
static Entry* current = 0 ;
+static Entry* previous = 0 ;
+static Entry* tempEntry = 0 ;
static int yyLineNr = 0 ;
static int anonCount = 0 ;
static char yyFileName[2048] ;
@@ -97,10 +100,10 @@ static bool removeSlashes;
static Specifier virt;
static Specifier baseVirt;
static bool exampleDoc;
-static QString exampleName;
-static QString htmlUrl,htmlText;
-static QString currentIncludeFile;
-static QString msType,msName,msArgs;
+static QCString exampleName;
+static QCString htmlUrl,htmlText;
+static QCString currentIncludeFile;
+static QCString msType,msName,msArgs;
static int includeFileOffset = 0;
static int includeFileLength = 0;
static bool firstLine;
@@ -119,16 +122,16 @@ static bool firstSeeArg;
static bool javaDocSee;
static char afterDocTerminator;
static int tmpDocType;
-static QString sectionLabel;
-static QString sectionTitle;
+static QCString sectionLabel;
+static QCString sectionTitle;
static SectionInfo::SectionType
sectionType;
-static QString funcPtrType;
-static QString templateStr;
-static QString baseName;
-static QString *specName;
-static QString formulaText;
-static QString sectionRef;
+static QCString funcPtrType;
+static QCString templateStr;
+static QCString baseName;
+static QCString *specName;
+static QCString formulaText;
+static QCString sectionRef;
// state variable for reading the argument list of a function
static int argRoundCount;
@@ -136,7 +139,7 @@ static int argSharpCount;
static int currentArgumentContext;
static int lastCopyArgStringContext;
static int lastCopyArgContext;
-static QString *copyArgString;
+static QCString *copyArgString;
@@ -404,9 +407,9 @@ static void verbIncludeFile(OutputList &ol,const char *name)
}
-static QString stripQuotes(const char *s)
+static QCString stripQuotes(const char *s)
{
- QString name;
+ QCString name;
if (s==0 || *s==0) return name;
name=s;
if (name.at(0)=='"' && name.at(name.length()-1)=='"')
@@ -416,9 +419,9 @@ static QString stripQuotes(const char *s)
return name;
}
-static QString stripKnownExtensions(const char *text)
+static QCString stripKnownExtensions(const char *text)
{
- QString result=text;
+ QCString result=text;
if (result.right(4)==".tex") result=result.left(result.length()-4);
else if (result.right(5)==".html") result=result.left(result.length()-5);
//printf("%s stripKnowExtensions(%s)\n",result.data(),text);
@@ -430,7 +433,7 @@ static void skipLine(OutputList &ol,const char *key)
bool found=FALSE;
while (!found)
{
- QString s;
+ QCString s;
char c;
while ( includeFileOffset<includeFileLength &&
(c=currentIncludeFile[includeFileOffset++])!='\n' && c!=0
@@ -451,7 +454,7 @@ static void skipUntil(const char *key)
bool found=FALSE;
while (!found)
{
- QString s;
+ QCString s;
int i=includeFileOffset;
char c;
while ( i<includeFileLength &&
@@ -470,7 +473,7 @@ static void skipUntil(const char *key)
static void showLine(OutputList &ol,const char *key)
{
- QString s;
+ QCString s;
char c;
bool found=FALSE;
while (!found)
@@ -494,7 +497,7 @@ static void showUntil(OutputList &ol,const char *key)
bool found=FALSE;
while (!found)
{
- QString s;
+ QCString s;
char c;
while ( includeFileOffset<includeFileLength &&
(c=currentIncludeFile[includeFileOffset++])!='\n' && c!=0
@@ -537,8 +540,9 @@ static void addSection()
if (sectionDict[sectionLabel]==0)
{
SectionInfo *si=new SectionInfo(sectionLabel,sectionTitle,sectionType);
+ //printf("Adding section addr=%p label=`%s' sectionTitle=`%s' fileName=%s\n",si,sectionLabel.data(),sectionTitle.data(),si->fileName.data());
sectionDict.insert(sectionLabel,si);
- current->anchors->append(new QString(sectionLabel));
+ current->anchors->append(new QCString(sectionLabel));
}
else
{
@@ -548,10 +552,10 @@ static void addSection()
// Adds a formula text to the list/dictionary of formulas if it was
// not already added. Returns the label of the formula.
-static QString addFormula()
+static QCString addFormula()
{
- QString formLabel;
- QString fText=formulaText.simplifyWhiteSpace();
+ QCString formLabel;
+ QCString fText=formulaText.simplifyWhiteSpace();
Formula *f=0;
if ((f=formulaDict[fText])==0)
{
@@ -568,8 +572,17 @@ static QString addFormula()
return formLabel;
}
-/* -----------------------------------------------------------------
- */
+static bool nameIsOperator(QCString &name)
+{
+ return name.right(8)=="operator" &&
+ (name.length()==8 || !isId(name.at(name.length()-9)));
+}
+
+/* ----------------------------------------------------------------- */
+
+static void addToBody(const char *text);
+static void addToBodyCond(const char *text);
+/* ----------------------------------------------------------------- */
#undef YY_INPUT
#define YY_INPUT(buf,result,max_size) result=yyread(buf,max_size);
@@ -641,6 +654,8 @@ TT [tT][tT]
UL [uU][lL]
VAR [vV][aA][rR]
+%option noyywrap
+
%x Define
%x DefineArg
%x DefineEnd
@@ -664,13 +679,15 @@ VAR [vV][aA][rR]
%x NameSpaceDocArg1
%x SkipCurly
%x SkipCurlyCpp
+%x SkipCurlyEndDoc
%x SkipString
%x SkipInits
%x SkipCPP
%x SkipCPPBlock
%x SkipComment
%x SkipCxxComment
-%x SkipBlock
+%x SkipCurlyBlock
+%x SkipRoundBlock
%x SkipCode
%x Sharp
%x SkipSharp
@@ -688,6 +705,7 @@ VAR [vV][aA][rR]
%x ClassDocFunc
%x ClassDocFuncPtr
%x ClassDocFuncQual
+%x ClassDocFuncSkipLine
%x ClassDocFuncExc
%x ClassDocDefine
%x ClassDocRelates
@@ -818,7 +836,7 @@ VAR [vV][aA][rR]
<DocScan,Text>"&"[AEIOUaeiou]"circ;" { outDoc->writeCirc(yytext[1]); }
<DocScan,Text>"&"[ANOano]"tilde;" { outDoc->writeTilde(yytext[1]); }
<DocScan,DocHtmlScan,DocLatexScan>"$("[a-z_A-Z]+")" {
- QString envvar=&yytext[2];
+ QCString envvar=&yytext[2];
envvar=envvar.left(envvar.length()-1);
outDoc->docify(getenv(envvar));
}
@@ -879,7 +897,7 @@ VAR [vV][aA][rR]
outDoc->codify(c);
}
<DocScan>("\\"|"@")"internal"/{BN} {
- if (!internalDocsFlag)
+ if (!Config::internalDocsFlag)
{
outDoc->newParagraph();
scanString(theTranslator->trForInternalUseOnly()+"\n");
@@ -921,7 +939,7 @@ VAR [vV][aA][rR]
Formula *formula=formulaNameDict[yytext];
if (formula)
{
- QString formName;
+ QCString formName;
formName.sprintf("form-%d.gif",formula->getId());
outDoc->writeFormula(formName,formula->getFormulaText());
}
@@ -952,7 +970,7 @@ VAR [vV][aA][rR]
inParBlock=TRUE;
outDoc->startDescList();
outDoc->startBold();
- outDoc->docify(((QString)yytext).stripWhiteSpace());
+ outDoc->docify(((QCString)yytext).stripWhiteSpace());
outDoc->endBold();
outDoc->endDescTitle();
outDoc->writeDescItem();
@@ -1137,7 +1155,7 @@ VAR [vV][aA][rR]
BEGIN(DocScan);
}
<DocScan>"\\section "{ID}"\n" {
- QString secName=&yytext[9]; // skip "\section "
+ QCString secName=&yytext[9]; // skip "\section "
secName=secName.left(secName.length()-1); // remove \n
//printf("SectionName %s found\n",secName.data());
SectionInfo *sec;
@@ -1149,7 +1167,7 @@ VAR [vV][aA][rR]
}
}
<DocScan>"\\anchor "{ID}"\n" {
- QString secName=&yytext[8];
+ QCString secName=&yytext[8];
secName=secName.left(secName.length()-1);
SectionInfo *sec;
if ((sec=sectionDict[secName]))
@@ -1164,11 +1182,11 @@ VAR [vV][aA][rR]
BEGIN(DocRefItem);
}
<DocRefName>{ID} {
- QString ref=yytext;
+ QCString ref=yytext;
SectionInfo *sec;
if ((sec=sectionDict[ref]))
{
- QString text;
+ QCString text;
if (sec->title.isEmpty())
text=sec->label;
else
@@ -1179,6 +1197,7 @@ VAR [vV][aA][rR]
}
else
{
+ //printf(" ref sec=%p sec->fileName=%s\n",sec,sec->fileName.data());
outDoc->writeSectionRef(sec->fileName,sec->label,text);
}
}
@@ -1198,7 +1217,7 @@ VAR [vV][aA][rR]
}
<DocRefArg>[^\"\n]+[\n\"] {
yytext[yyleng-1]='\0';
- QString text=substitute(yytext,"\\\\","\\");
+ QCString text=substitute(yytext,"\\\\","\\");
SectionInfo *sec;
if ((sec=sectionDict[sectionRef]))
{
@@ -1250,13 +1269,13 @@ VAR [vV][aA][rR]
<DocScan>{SCOPEMASK}(("()")?) {
generateRef(*outDoc,className,yytext,inSeeBlock);
}
-<DocScan>({SCOPEMASK}"::")?"operator"[^(\r\n.,]*"("[a-z_A-Z,\<\> \t\*\&]*")" {
- QString oName=yytext;
+<DocScan>({SCOPEMASK}"::")?"operator()("[a-z_A-Z,\<\> \t\*\&]*")" {
+ QCString oName=yytext;
generateRef(*outDoc,className,
removeRedundantWhiteSpace(oName),inSeeBlock);
}
-<DocScan>({SCOPEMASK}"::")?"operator()("[a-z_A-Z,\<\> \t\*\&]*")" {
- QString oName=yytext;
+<DocScan>({SCOPEMASK}"::")?"operator"[^(\r\n.,]*"("[a-z_A-Z,\<\> \t\*\&]*")" {
+ QCString oName=yytext;
generateRef(*outDoc,className,
removeRedundantWhiteSpace(oName),inSeeBlock);
}
@@ -1532,9 +1551,28 @@ VAR [vV][aA][rR]
<DocCode,DocEmphasis,DocBold,DocScan,Text>. {
outDoc->writeChar(*yytext);
}
-<NextSemi>"{" { BEGIN(SkipBlock); }
-<SkipBlock>"{" { ++bracketCount ; }
-<SkipBlock>"}" { if( bracketCount )
+<NextSemi>"{" {
+ bracketCount=0;
+ BEGIN(SkipCurlyBlock);
+ }
+<NextSemi>"(" {
+ roundCount=0;
+ BEGIN(SkipRoundBlock);
+ }
+<SkipRoundBlock>"(" {
+ ++roundCount;
+ }
+<SkipRoundBlock>")" {
+ if (roundCount )
+ --roundCount ;
+ else
+ BEGIN( NextSemi ) ;
+ }
+<SkipCurlyBlock>"{" {
+ ++bracketCount ;
+ }
+<SkipCurlyBlock>"}" {
+ if( bracketCount )
--bracketCount ;
else
BEGIN( NextSemi ) ;
@@ -1653,7 +1691,7 @@ VAR [vV][aA][rR]
BEGIN( ClassName );
}
<FindMembers>{B}*(("typedef"{BN}+)?)"class"{BN}+ {
- isTypedef=((QString)yytext).find("typedef")!=-1;
+ isTypedef=((QCString)yytext).find("typedef")!=-1;
current->section = Entry::CLASS_SEC ;
addType( current ) ;
current->type += " class" ;
@@ -1663,7 +1701,7 @@ VAR [vV][aA][rR]
BEGIN( ClassName ) ;
}
<FindMembers>{B}*(("typedef"{BN}+)?)"struct"{BN}+ {
- isTypedef=((QString)yytext).find("typedef")!=-1;
+ isTypedef=((QCString)yytext).find("typedef")!=-1;
current->section = Entry::STRUCT_SEC ;
addType( current ) ;
current->type += " struct" ;
@@ -1673,7 +1711,7 @@ VAR [vV][aA][rR]
BEGIN( ClassName ) ;
}
<FindMembers>{B}*(("typedef"{BN}+)?)"union"{BN}+ {
- isTypedef=((QString)yytext).find("typedef")!=-1;
+ isTypedef=((QCString)yytext).find("typedef")!=-1;
current->section = Entry::UNION_SEC ;
addType( current ) ;
current->type += " union" ;
@@ -1683,7 +1721,7 @@ VAR [vV][aA][rR]
BEGIN( ClassName ) ;
}
<FindMembers>{B}*(("typedef"{BN}+)?)"enum"{BN}+ {
- isTypedef=((QString)yytext).find("typedef")!=-1;
+ isTypedef=((QCString)yytext).find("typedef")!=-1;
current->section = Entry::ENUM_SEC ;
addType( current ) ;
current->type += " enum" ;
@@ -1751,7 +1789,7 @@ VAR [vV][aA][rR]
<FindMembers>"using"{BN}+ { lineCount(); BEGIN(Using); }
<Using>";" { BEGIN(FindMembers); }
<FindMembers>{SCOPENAME}{BN}*"<>" { // guided template decl
- QString n=yytext;
+ QCString n=yytext;
addType( current );
current->name=n.left(n.length()-2);
}
@@ -1761,7 +1799,7 @@ VAR [vV][aA][rR]
addType( current );
current->name=yytext;
current->name=current->name.stripWhiteSpace();
- if (current->name.right(8)=="operator")
+ if (nameIsOperator(current->name))
BEGIN( Operator );
else
BEGIN( EndTemplate );
@@ -1813,7 +1851,7 @@ VAR [vV][aA][rR]
{
current->name += yytext;
}
- QString tmp=yytext;
+ QCString tmp=yytext;
if (tmp.right(8)=="operator")
BEGIN( Operator );
else
@@ -1868,7 +1906,7 @@ VAR [vV][aA][rR]
<DefineEnd>.
<FindMembers>[*&]+ { current->name += yytext ; }
-<FindMembers,MemberSpec,Function,NextSemi>";"{BN}*("/**"|"//!"|"/*!")"<" {
+<FindMembers,MemberSpec,Function,NextSemi>";"{BN}*("/**"|"//!"|"/*!"|"///")"<" {
lineCount();
current->doc.resize(0);
current->brief.resize(0);
@@ -1876,12 +1914,12 @@ VAR [vV][aA][rR]
afterDocTerminator = ';';
if (yytext[yyleng-3]=='/')
BEGIN(AfterDocLine);
- else if (yytext[yyleng-2]=='*')
+ else if (yytext[yyleng-2]=='*' && Config::autoBriefFlag)
BEGIN(AfterDocBrief);
else
BEGIN(AfterDoc);
}
-<MemberSpec,FindFields,FindMembers,NextSemi>","{BN}*("/**"|"//!"|"/*!")"<" {
+<MemberSpec,FindFields,FindMembers,NextSemi>","{BN}*("/**"|"//!"|"/*!"|"///")"<" {
lineCount();
current->doc.resize(0);
current->brief.resize(0);
@@ -1889,12 +1927,12 @@ VAR [vV][aA][rR]
afterDocTerminator = ',';
if (yytext[yyleng-3]=='/')
BEGIN(AfterDocLine);
- else if (yytext[yyleng-2]=='*')
+ else if (yytext[yyleng-2]=='*' && Config::autoBriefFlag)
BEGIN(AfterDocBrief);
else
BEGIN(AfterDoc);
}
-<DefineEnd,FindFields,FindFieldArg>{BN}*("/**"|"//!"|"/*!")"<" {
+<DefineEnd,FindFields,FindFieldArg>{BN}*("/**"|"//!"|"/*!"|"///")"<" {
lineCount();
current->doc.resize(0);
current->brief.resize(0);
@@ -1905,7 +1943,7 @@ VAR [vV][aA][rR]
afterDocTerminator = 0;
if (yytext[yyleng-3]=='/')
BEGIN(AfterDocLine);
- else if (yytext[yyleng-2]=='*')
+ else if (yytext[yyleng-2]=='*' && Config::autoBriefFlag)
BEGIN(AfterDocBrief);
else
BEGIN(AfterDoc);
@@ -1914,8 +1952,10 @@ VAR [vV][aA][rR]
BEGIN(NextSemi);
}
<FindMembers>[:;,] {
- QString oldType = current->type.copy();
- QString oldDocs = current->doc.copy();
+ QCString oldType = current->type.copy();
+ QCString oldDocs = current->doc.copy();
+ if ( *yytext != ':')
+ {
current->type=current->type.simplifyWhiteSpace();
current->args=current->args.simplifyWhiteSpace();
current->name=current->name.stripWhiteSpace();
@@ -1931,9 +1971,12 @@ VAR [vV][aA][rR]
current->sig = sig = FALSE;
current->virt = Normal;
current->stat = gstat;
+ }
// skip expression or bitfield if needed
if ( *yytext == ':')
+ {
BEGIN( NextSemi );
+ }
else
{
if ( *yytext == ',' )
@@ -2004,7 +2047,7 @@ VAR [vV][aA][rR]
current->slot = slot;
}
<FindFieldArg>"," { unput(*yytext); BEGIN(FindFields); }
-<Curly>[^\r\n{}"/]* { current->program += yytext ; }
+<Curly>[^\r\n{}"'/]* { current->program += yytext ; }
<Curly>"//".* { current->program += yytext ; }
<Curly>\"[^\r\n"]*\" { current->program += yytext ; }
<Curly>"/*"{B}* { current->program += yytext ;
@@ -2016,6 +2059,9 @@ VAR [vV][aA][rR]
lastContext = Curly ;
BEGIN( Comment ) ;
}
+<Curly>"'"\\[0-7]{1,3}"'" { current->program += yytext; }
+<Curly>"'"\\."'" { current->program += yytext; }
+<Curly>"'"."'" { current->program += yytext; }
<Curly>"{" { current->program += yytext ;
++bracketCount ;
}
@@ -2026,16 +2072,15 @@ VAR [vV][aA][rR]
}
else
{
- QString &cn = current->name;
- QString &rn = current_root->name;
- //printf("current->name=`%s' current_root->name=`%s'\n",
- // cn.data(),rn.data());
- if (cn && cn[0]!='@' &&
+ QCString &cn = current->name;
+ QCString rn = stripAnnonymousScope(current_root->name);
+ //printf("cn=`%s' rn=`%s'\n",cn.data(),rn.data());
+ if (!cn.isEmpty() && !rn.isEmpty() &&
(current_root->section & Entry::SCOPE_MASK))
{
cn.prepend(rn+"::");
}
- if (isTypedef && cn.length()==0)
+ if (isTypedef && cn.isEmpty())
{
//printf("Typedef Name\n");
BEGIN( TypedefName );
@@ -2150,6 +2195,7 @@ VAR [vV][aA][rR]
<MemberSpecSkip>"{" {
bracketCount=0;
lastCurlyContext = MemberSpecSkip;
+ previous = current;
BEGIN(SkipCurly);
}
<MemberSpecSkip>"," { BEGIN(MemberSpec); }
@@ -2392,8 +2438,8 @@ VAR [vV][aA][rR]
current->name=current->name.simplifyWhiteSpace();
current->type=current->type.simplifyWhiteSpace();
current->args=current->args.simplifyWhiteSpace();
- QString &cn=current->name;
- QString &rn=current_root->name;
+ QCString &cn=current->name;
+ QCString &rn=current_root->name;
//printf("current_root->name=`%s'\n",rn.data());
//printf("Function: `%s' `%s' `%s'\n",current->type.data(),cn.data(),current->args.data());
int i;
@@ -2415,7 +2461,7 @@ VAR [vV][aA][rR]
if (*yytext!=';' || (current_root->section&Entry::SCOPE_MASK) )
{
int tempArg=current->name.find('<');
- QString tempName;
+ QCString tempName;
if (tempArg==-1)
tempName=current->name;
else
@@ -2437,7 +2483,7 @@ VAR [vV][aA][rR]
else // a global function prototype or function variable
{
//printf("Scanner.l: prototype? type=`%s' name=`%s' args=`%s'\n",current->type.data(),current->name.data(),current->args.data());
- QRegExp re("([^)])");
+ QRegExp re("([^)]*)");
if (!current->type.isNull() && current->type.find(re,0)!=-1)
{
//printf("Scanner.l: found function variable!\n");
@@ -2450,6 +2496,7 @@ VAR [vV][aA][rR]
current->proto = TRUE;
}
}
+ previous = current;
current_root->addSubEntry(current);
current = new Entry ;
current->protection = protection;
@@ -2459,46 +2506,127 @@ VAR [vV][aA][rR]
current->slot = slot;
lastCurlyContext = FindMembers;
if( *yytext == '{' )
- BEGIN( SkipCurly ) ;
+ {
+ addToBody(yytext);
+ BEGIN( SkipCurly ) ;
+ }
else if( *yytext == ':' )
- BEGIN( SkipInits ) ;
+ {
+ addToBody(yytext);
+ BEGIN( SkipInits ) ;
+ }
else
- BEGIN( FindMembers ) ;
+ BEGIN( FindMembers ) ;
}
<SkipInits>"{" {
+ addToBody(yytext);
lastCurlyContext = FindMembers;
BEGIN( SkipCurly ) ;
}
-<SkipCurly,SkipCurlyCpp>"{" { ++bracketCount ; }
-<SkipCurly,SkipCurlyCpp>"}" { if( bracketCount )
+<SkipCurly>"{" {
+ addToBody(yytext);
+ ++bracketCount ;
+ }
+<SkipCurly>"}" {
+ addToBody(yytext);
+ if( bracketCount )
--bracketCount ;
else
- //BEGIN( FindMembers ) ;
BEGIN( lastCurlyContext ) ;
}
-<SkipCurly>"'"\\[0-7]{1,3}"'"
-<SkipCurly>"'"\\."'"
-<SkipCurly>"'"."'"
+<SkipCurly>"}"{BN}*("/*!"|"/**"|"//!"|"///")"<" {
+ if ( bracketCount )
+ {
+ addToBody(yytext);
+ --bracketCount ;
+ }
+ else
+ {
+ lineCount();
+ tempEntry = current; // temporarily switch to the previous entry
+ current = previous;
+ current->doc.resize(0);
+ current->brief.resize(0);
+ lastAfterDocContext = SkipCurlyEndDoc;
+ afterDocTerminator = '}';
+ if (yytext[yyleng-3]=='/')
+ BEGIN(AfterDocLine);
+ else if (yytext[yyleng-2]=='*' && Config::autoBriefFlag)
+ BEGIN(AfterDocBrief);
+ else
+ BEGIN(AfterDoc);
+ }
+ }
+<SkipCurlyEndDoc>"}" {
+ addToBody("}");
+ current = tempEntry;
+ BEGIN( lastCurlyContext );
+ }
+<SkipCurly>"'"\\[0-7]{1,3}"'" {
+ addToBody(yytext);
+ }
+<SkipCurly>"'"\\."'" {
+ addToBody(yytext);
+ }
+<SkipCurly>"'"."'" {
+ addToBody(yytext);
+ }
<SkipCurly>\" {
+ addToBody(yytext);
lastStringContext=SkipCurly;
BEGIN( SkipString );
}
-<SkipCurly>^{B}*"#" { BEGIN( SkipCurlyCpp ); }
-<SkipCurlyCpp>\n { yyLineNr++;
+<SkipCurly>^{B}*"#" {
+ addToBody(yytext);
+ BEGIN( SkipCurlyCpp );
+ }
+<SkipCurly,SkipInits>\n {
+ yyLineNr++;
+ addToBody(yytext);
+ }
+<SkipCurly,SkipCurlyCpp>. {
+ addToBody(yytext);
+ }
+<SkipCurlyCpp>\n {
+ addToBody(yytext);
+ yyLineNr++;
lastCurlyContext = FindMembers;
BEGIN( SkipCurly );
}
-<SkipCurlyCpp>\\[\r]*"\n"[\r]* { yyLineNr++; }
-<SkipCurlyCpp>"/*"
-<SkipCurlyCpp>"*/"
-<SkipCurlyCpp>"//"
-<SkipString>\\.
-<SkipString>\" { BEGIN( lastStringContext ); }
-<SkipString>"/*"
-<SkipString>"*/"
-<SkipString>"//"
-
+<SkipCurlyCpp>\\[\r]*"\n"[\r]* {
+ addToBody(yytext);
+ yyLineNr++;
+ }
+<SkipInits,SkipCurly,SkipCurlyCpp>"/*" {
+ addToBody(yytext);
+ }
+<SkipInits,SkipCurly,SkipCurlyCpp>"*/" {
+ addToBody(yytext);
+ }
+<SkipInits,SkipCurly,SkipCurlyCpp>"//".* {
+ addToBody(yytext);
+ }
+<SkipInits,SkipCurly,SkipCurlyCpp>. {
+ addToBody(yytext);
+ }
+<SkipString>\\. {
+ addToBodyCond(yytext);
+ }
+<SkipString>\" {
+ addToBodyCond(yytext);
+ BEGIN( lastStringContext );
+ }
+<SkipString>"/*"|"*/"|"//" {
+ addToBodyCond(yytext);
+ }
+<SkipString>\n {
+ yyLineNr++;
+ addToBodyCond(yytext);
+ }
+<SkipString>. {
+ addToBodyCond(yytext);
+ }
<Bases,ClassName>";" {
current->section = Entry::EMPTY_SEC ;
current->type.resize(0) ;
@@ -2507,7 +2635,7 @@ VAR [vV][aA][rR]
current->argList->clear();
BEGIN( FindMembers ) ;
}
-<ClassName>{ID} {
+<ClassName>{SCOPENAME} {
current->name = yytext ;
BEGIN( ClassVar );
}
@@ -2522,7 +2650,7 @@ VAR [vV][aA][rR]
<ClassVar>{ID} {
if (isTypedef)
{
- typedefDict.insert(yytext,new QString(current->name));
+ typedefDict.insert(yytext,new QCString(current->name));
current->type.prepend("typedef ");
}
current->type += ' ' ;
@@ -2638,22 +2766,34 @@ VAR [vV][aA][rR]
}
<FindMembers,FindFields,MemberSpec,FuncQual,SkipCurly,Operator>("//"{B}*)?"/**"/[^/*] {
removeSlashes=(yytext[1]=='/');
+ lastDocContext = YY_START;
if (current_root->section & Entry::SCOPE_MASK)
current->inside = current_root->name+"::";
- if (YY_START==Curly)
+ if (!Config::autoBriefFlag) // use the Qt style
{
tmpDocType=-1;
- current->doc+="\n\n";
- lastDocContext = Curly;
+ if (YY_START==Curly)
+ current->doc+="\n\n";
+ else
+ current->doc.resize(0);
BEGIN( Doc );
}
- else
- {
- tmpDocType=Doc;
- current->doc.resize(0);
- current->brief.resize(0);
- lastDocContext = YY_START;
- BEGIN( JavaDoc );
+ else // Use the javadoc style
+ {
+ if (YY_START==Curly)
+ {
+ tmpDocType=-1;
+ current->doc+="\n\n";
+ lastDocContext = Curly;
+ BEGIN( Doc );
+ }
+ else
+ {
+ tmpDocType=Doc;
+ current->doc.resize(0);
+ current->brief.resize(0);
+ BEGIN( JavaDoc );
+ }
}
}
<FindMembers,FindFields,MemberSpec,FuncQual,Operator>"//!" {
@@ -2679,7 +2819,7 @@ VAR [vV][aA][rR]
current->args.resize(0);
current->argList->clear();
bracketCount=0;
- BEGIN( SkipBlock );
+ BEGIN( SkipCurlyBlock );
}
<JavaDoc>"@short"{B}+ {
@@ -2728,24 +2868,31 @@ VAR [vV][aA][rR]
current->startLine = yyLineNr;
BEGIN( ClassDocFunc );
}
-<LineDoc,Doc,JavaDoc>{B}*("\\"|"@")"def"{B}* {
+<Doc,JavaDoc>{B}*("\\"|"@")"def"{B}+ {
nextDefContext = YY_START==LineDoc ? DefLineDoc : ClassDoc;
current->section = Entry::DEFINEDOC_SEC;
current->fileName = yyFileName;
current->startLine = yyLineNr;
BEGIN( ClassDocDefine );
}
-<Doc,JavaDoc>{B}*("\\"|"@")"overload"{B}* {
+<LineDoc,Doc,JavaDoc>{B}*("\\"|"@")"overload"{B}* {
+ overloadContext = YY_START;
BEGIN( ClassDocOverload );
}
-<ClassDocOverload>{B}*"\n" {
- QString orgDoc = current->doc;
+<ClassDocOverload>{B}*/"\n" {
+ QCString orgDoc = current->doc;
current->doc = getOverloadDocs();
current->doc += "\n\n";
current->doc += orgDoc;
- yyLineNr++;
- BEGIN( Doc );
+ BEGIN( overloadContext );
}
+<ClassDocOverload>{B}*/"*/" {
+ QCString orgDoc = current->doc;
+ current->doc = getOverloadDocs();
+ current->doc += "\n\n";
+ current->doc += orgDoc;
+ BEGIN( overloadContext );
+ }
<ClassDocOverload>. { unput(*yytext);
current->section = Entry::OVERLOADDOC_SEC;
current->fileName = yyFileName;
@@ -3104,7 +3251,7 @@ VAR [vV][aA][rR]
}
<GroupName>{ID} {
current->groups->append(
- new QString(yytext)
+ new QCString(yytext)
);
}
<GroupName>\n {
@@ -3177,6 +3324,9 @@ VAR [vV][aA][rR]
current->section = Entry::VARIABLEDOC_SEC;
newDocState();
}
+<ClassDocFunc>"operator"{B}*"("{B}*")" {
+ current->name+=yytext;
+ }
<ClassDocFunc>"(" {
current->args+=*yytext;
currentArgumentContext = ClassDocFuncQual;
@@ -3194,6 +3344,9 @@ VAR [vV][aA][rR]
current->name+=')';
BEGIN( ClassDocFunc );
}
+<ClassDocFuncQual>"{" {
+ BEGIN( ClassDocFuncSkipLine);
+ }
<ClassDocFuncQual>{B}*"const"{B}* {
current->args += " const ";
current->argList->constSpecifier=TRUE;
@@ -3221,7 +3374,7 @@ VAR [vV][aA][rR]
<ClassDocFunc,ClassDocFuncQual>. {
current->name += *yytext;
}
-<ClassDocFuncQual>"\n" {
+<ClassDocFuncQual,ClassDocFuncSkipLine>"\n" {
yyLineNr++;
current->name = current->name.stripWhiteSpace();
newDocState();
@@ -3229,6 +3382,7 @@ VAR [vV][aA][rR]
<Doc>. { current->doc += *yytext; }
<DefLineDoc,LineDoc>. { current->brief += *yytext; }
<Doc>\n { yyLineNr++; current->doc += *yytext; }
+<LineDoc>[\n\r]{B}*"//"[!/]
<LineDoc>\n {
yyLineNr++;
BEGIN( lastDocContext );
@@ -3306,6 +3460,20 @@ VAR [vV][aA][rR]
//----------------------------------------------------------------------------
+static void addToBody(const char *text)
+{
+ if (Config::includeSourceFlag)
+ previous->body+=text;
+}
+
+static void addToBodyCond(const char *text)
+{
+ if (Config::includeSourceFlag && lastStringContext==SkipCurly)
+ previous->body+=text;
+}
+
+//----------------------------------------------------------------------------
+
void scanString(const char *s)
{
const char *oldInputString = inputString;
@@ -3414,7 +3582,7 @@ void parseMain(Entry *rt)
//----------------------------------------------------------------------------
-void parseDocument(OutputList &ol,const QString &docString)
+void parseDocument(OutputList &ol,const QCString &docString)
{
//inParamBlock=inSeeBlock=inReturnBlock=FALSE;
curTable = 0;
@@ -3441,7 +3609,7 @@ void parseDocument(OutputList &ol,const QString &docString)
//----------------------------------------------------------------------------
void parseDoc(OutputList &ol,const char *clName,
- const char *memName,const QString &docString)
+ const char *memName,const QCString &docString)
{
initParser();
initParseCodeContext();
@@ -3461,7 +3629,7 @@ void parseDoc(OutputList &ol,const char *clName,
//----------------------------------------------------------------------------
-void parseText(OutputList &ol,const QString &txtString)
+void parseText(OutputList &ol,const QCString &txtString)
{
inputString = txtString;
outDoc = new OutputList(&ol);
@@ -3476,7 +3644,7 @@ void parseText(OutputList &ol,const QString &txtString)
//----------------------------------------------------------------------------
-void parseExample(OutputList &ol,const QString &docString,
+void parseExample(OutputList &ol,const QCString &docString,
const char *fileName)
{
initParser();
@@ -3487,9 +3655,3 @@ void parseExample(OutputList &ol,const QString &docString,
}
//----------------------------------------------------------------------------
-
-extern "C" { // some sillyness to keep the compiler happy
-int scanYYwrap() { return 1 ; }
-void bogus() { yy_flex_realloc(0,0); }
-}
-
diff --git a/src/searchindex.cpp b/src/searchindex.cpp
index 241d0a8..50d6556 100644
--- a/src/searchindex.cpp
+++ b/src/searchindex.cpp
@@ -14,6 +14,7 @@
*
*/
+#include "qtbc.h"
#include "searchindex.h"
#include "suffixtree.h"
@@ -44,7 +45,7 @@ bool SearchIndex::addWord(const char *key,const char *word,bool special)
DocRef *dr=0;
if (word && key && strlen(key)>0 && (dr=refDict[key]))
{
- suffixTree->insertWord(((QString)word).lower(),dr->index(),special);
+ suffixTree->insertWord(((QCString)word).lower(),dr->index(),special);
return TRUE;
}
else if (word)
diff --git a/src/searchindex.h b/src/searchindex.h
index 64071fb..f51afa6 100644
--- a/src/searchindex.h
+++ b/src/searchindex.h
@@ -17,8 +17,8 @@
#ifndef _SEARCHINDEX_H
#define _SEARCHINDEX_H
+#include "qtbc.h"
#include <qintdict.h>
-#include <qstring.h>
#include <qlist.h>
#include <qdict.h>
@@ -40,8 +40,8 @@ class DocRef
int offset() const { return o; }
private:
- QString n;
- QString u;
+ QCString n;
+ QCString u;
int i;
int o;
};
diff --git a/src/section.h b/src/section.h
index fc287ae..aa9a674 100644
--- a/src/section.h
+++ b/src/section.h
@@ -18,9 +18,9 @@
#ifndef SECTION_H
#define SECTION_H
+#include "qtbc.h"
#include <qlist.h>
#include <qdict.h>
-#include <qstring.h>
class Definition;
@@ -29,11 +29,11 @@ struct SectionInfo
enum SectionType { Section, Subsection, Anchor };
SectionInfo(const char *l,const char *t,SectionType st)
{ label=l; title=t; type=st; definition=0; }
- QString fileName;
- QString label;
- QString title;
+ QCString label;
+ QCString title;
SectionType type;
Definition *definition;
+ QCString fileName;
};
class SectionList : public QList<SectionInfo>
diff --git a/src/suffixtree.cpp b/src/suffixtree.cpp
index 604531f..8b8ce88 100644
--- a/src/suffixtree.cpp
+++ b/src/suffixtree.cpp
@@ -15,6 +15,8 @@
*/
#include <stdio.h>
+
+#include "qtbc.h"
#include "suffixtree.h"
#define MAXWORDLEN 1024
@@ -112,7 +114,7 @@ int SuffixNode::insert(const char *word,int refId,int inName,int fullWord)
SuffixNode *sn=children->first();
while (sn)
{
- char *lab=sn->label.data();
+ const char *lab=sn->label.data();
char w=word[0],l=lab[0],i=0;
while (w!=0 && l!=0 && w==l) { i++; w=word[i]; l=lab[i]; }
if (w==0 && l==0) // match found
@@ -320,7 +322,7 @@ SuffixTree::~SuffixTree()
void SuffixTree::insertWord(const char *word,int index,bool inName)
{
- QString suffix=word;
+ QCString suffix=word;
uint i;
for (i=2;i<suffix.length()-1;i++)
{
diff --git a/src/suffixtree.h b/src/suffixtree.h
index 381253c..a93d45e 100644
--- a/src/suffixtree.h
+++ b/src/suffixtree.h
@@ -17,9 +17,9 @@
#ifndef SUFFIXTREE_H
#define SUFFIXTREE_H
+#include "qtbc.h"
#include <qlist.h>
#include <qarray.h>
-#include <qstring.h>
#include <qfile.h>
class SuffixNodeList;
@@ -56,7 +56,7 @@ class SuffixNode
private:
SuffixNodeList *children;
QArray<WordRef> references;
- QString label;
+ QCString label;
int branchOffset;
int totalFreq;
};
diff --git a/src/tag.l b/src/tag.l
index 9a6aa02..8e02d92 100644
--- a/src/tag.l
+++ b/src/tag.l
@@ -20,7 +20,8 @@
* includes
*/
#include <stdio.h>
-#include <qstring.h>
+
+#include "qtbc.h"
#include <qfileinf.h>
#include "classdef.h"
@@ -30,18 +31,19 @@
#include "doxygen.h"
#include "util.h"
#include "message.h"
+#include "defargs.h"
#define YY_NO_UNPUT
#define YY_NEVER_INTERACTIVE 1
static int yyLineNr;
-static QString className;
-static QString fileName;
-static QString namespaceName;
-static QString tagName;
-static QString memberName;
-static QString anchorName;
-static QString argString;
+static QCString className;
+static QCString fileName;
+static QCString namespaceName;
+static QCString tagName;
+static QCString memberName;
+static QCString anchorName;
+static QCString argString;
static ClassDef *cd;
static FileDef *fd;
static NamespaceDef *nd;
@@ -105,8 +107,11 @@ static void addMember(const char *name,const char *anchor,const char *args)
MemberNameDict *mnd=0;
MemberNameList *mnl=0;
MemberDef *md;
+ ArgumentList *argList = new ArgumentList;
+ stringToArgumentList(args,argList);
md=new MemberDef(0,name,args,0,Public,Normal,FALSE,FALSE,
- MemberDef::Function,0,0);
+ MemberDef::Function,0,argList);
+ delete argList;
md->setReference(anchor);
if (cd) // member of a class
{
@@ -129,7 +134,7 @@ static void addMember(const char *name,const char *anchor,const char *args)
mnd=&functionNameDict;
mnl=&functionNameList;
}
- MemberName *mn;
+ MemberName *mn = 0;
if ((mn=(*mnd)[memberName]))
{
//printf("mn->inSort()\n");
@@ -156,6 +161,8 @@ ID [a-z_A-Z][a-z_A-Z0-9]*
FILE [a-z_A-Z0-9\.\-\+\:\\\/]+
SCOPE ({ID}"::")*{ID}
+%option noyywrap
+
%x Pass1
%x Pass2
%x AnchorName
@@ -272,6 +279,6 @@ void parseTagFile(const char *fileName)
fclose(f);
}
-extern "C" { // some bogus code to keep the compiler happy
- int tagYYwrap() { return 1 ; }
-}
+//extern "C" { // some bogus code to keep the compiler happy
+// int tagYYwrap() { return 1 ; }
+//}
diff --git a/src/translator.h b/src/translator.h
index 6f69c9b..d5c4f67 100644
--- a/src/translator.h
+++ b/src/translator.h
@@ -17,7 +17,7 @@
#ifndef TRANSLATOR_H
#define TRANSLATOR_H
-#include <qstring.h>
+#include "qtbc.h"
#include "classdef.h"
#include "util.h"
@@ -28,166 +28,164 @@ class Translator
// NOTICE:
// the following functions are now obsolete: these are no longer used and
// will disappear in future versions. You do not have to translate them!
- virtual QString trInherits()
+ virtual QCString trInherits()
{ return "Inherits"; }
- virtual QString trAnd()
+ virtual QCString trAnd()
{ return "and"; }
- virtual QString trInheritedBy()
+ virtual QCString trInheritedBy()
{ return "Inherited By"; }
- virtual QString trReference()
+ virtual QCString trReference()
{ return "Reference"; }
- virtual QString trReimplementedFrom()
+ virtual QCString trReimplementedFrom()
{ return "Reimplemented from"; }
- virtual QString trReimplementedIn()
+ virtual QCString trReimplementedIn()
{ return "Reimplemented in"; }
- virtual QString trIncludeFile()
+ virtual QCString trIncludeFile()
{ return "Include File"; }
- virtual QString trNamespaces()
- { return "Namespace List"; }
// end of obsolete functions
//--------------------------------------------------------------------
- virtual QString latexBabelPackage()
+ virtual QCString latexBabelPackage()
// returns the name of the package that is included by LaTeX
{ return ""; }
- virtual QString trRelatedFunctions()
+ virtual QCString trRelatedFunctions()
// used in the compound documentation before a list of related functions.
{ return "Related Functions"; }
- virtual QString trRelatedSubscript()
+ virtual QCString trRelatedSubscript()
// subscript for the related functions.
{ return "(Note that these are not member functions.)"; }
- virtual QString trDetailedDescription()
+ virtual QCString trDetailedDescription()
// header that is put before the detailed description of files, classes and namespaces.
{ return "Detailed Description"; }
- virtual QString trMemberTypedefDocumentation()
+ virtual QCString trMemberTypedefDocumentation()
// header that is put before the list of typedefs.
{ return "Member Typedef Documentation"; }
- virtual QString trMemberEnumerationDocumentation()
+ virtual QCString trMemberEnumerationDocumentation()
// header that is put before the list of enumerations.
{ return "Member Enumeration Documentation"; }
- virtual QString trMemberFunctionDocumentation()
+ virtual QCString trMemberFunctionDocumentation()
// header that is put before the list of member functions.
{ return "Member Function Documentation"; }
- virtual QString trMemberDataDocumentation()
+ virtual QCString trMemberDataDocumentation()
// header that is put before the list of member attributes.
{ return "Member Data Documentation"; }
- virtual QString trGeneratedFrom(const char *s,bool single)
+ virtual QCString trGeneratedFrom(const char *s,bool single)
{ // here s is one of " Class", " Struct" or " Union"
// single is true implies a single file
- QString result=(QString)"The documentation for this"+s+
+ QCString result=(QCString)"The documentation for this"+s+
" was generated from the following file";
if (single) result+=":"; else result+="s:";
return result;
}
- virtual QString trMore()
+ virtual QCString trMore()
// this is the text of a link put after brief descriptions.
{ return "More..."; }
- virtual QString trListOfAllMembers()
+ virtual QCString trListOfAllMembers()
// put in the class documentation
{ return "List of all members."; }
- virtual QString trMemberList()
+ virtual QCString trMemberList()
// used as the title of the "list of all members" page of a class
{ return "Member List"; }
- virtual QString trThisIsTheListOfAllMembers()
+ virtual QCString trThisIsTheListOfAllMembers()
// this is the first part of a sentence that is followed by a class name
{ return "This is the complete list of members for "; }
- virtual QString trIncludingInheritedMembers()
+ virtual QCString trIncludingInheritedMembers()
// this is the remainder of the sentence after the class name
{ return ", including all inherited members."; }
- virtual QString trGeneratedAutomatically(const char *s)
+ virtual QCString trGeneratedAutomatically(const char *s)
// this is put at the author sections at the bottom of man pages.
// parameter s is name of the project name.
- { QString result="Generated automatically by Doxygen";
- if (s) result+=(QString)" for "+s;
+ { QCString result="Generated automatically by Doxygen";
+ if (s) result+=(QCString)" for "+s;
result+=" from the source code.";
return result;
}
- virtual QString trEnumName()
+ virtual QCString trEnumName()
// put after an enum name in the list of all members
{ return "enum name"; }
- virtual QString trEnumValue()
+ virtual QCString trEnumValue()
// put after an enum value in the list of all members
{ return "enum value"; }
- virtual QString trDefinedIn()
+ virtual QCString trDefinedIn()
// put after an undocumented member in the list of all members
{ return "defined in"; }
- virtual QString trVerbatimText(const char *f)
+ virtual QCString trVerbatimText(const char *f)
// put as in introduction in the verbatim header file of a class.
// parameter f is the name of the include file.
- { return (QString)"This is the verbatim text of the "+f+" include file."; }
+ { return (QCString)"This is the verbatim text of the "+f+" include file."; }
// quick reference sections
- virtual QString trModules()
+ virtual QCString trModules()
// This is put above each page as a link to the list of all groups of
// compounds or files (see the \group command).
{ return "Modules"; }
- virtual QString trClassHierarchy()
+ virtual QCString trClassHierarchy()
// This is put above each page as a link to the class hierarchy
{ return "Class Hierarchy"; }
- virtual QString trCompoundList()
+ virtual QCString trCompoundList()
// This is put above each page as a link to the list of annotated classes
{ return "Compound List"; }
- virtual QString trFileList()
+ virtual QCString trFileList()
// This is put above each page as a link to the list of documented files
{ return "File List"; }
- virtual QString trHeaderFiles()
+ virtual QCString trHeaderFiles()
// This is put above each page as a link to the list of all verbatim headers
{ return "Header Files"; }
- virtual QString trCompoundMembers()
+ virtual QCString trCompoundMembers()
// This is put above each page as a link to all members of compounds.
{ return "Compound Members"; }
- virtual QString trFileMembers()
+ virtual QCString trFileMembers()
// This is put above each page as a link to all members of files.
{ return "File Members"; }
- virtual QString trRelatedPages()
+ virtual QCString trRelatedPages()
// This is put above each page as a link to all related pages.
{ return "Related Pages"; }
- virtual QString trExamples()
+ virtual QCString trExamples()
// This is put above each page as a link to all examples.
{ return "Examples"; }
- virtual QString trSearch()
+ virtual QCString trSearch()
// This is put above each page as a link to the search engine.
{ return "Search"; }
- virtual QString trClassHierarchyDescription()
+ virtual QCString trClassHierarchyDescription()
// This is an introduction to the class hierarchy.
{ return "This inheritance list is sorted roughly, "
"but not completely, alphabetically:";
}
- virtual QString trFileListDescription(bool extractAll)
+ virtual QCString trFileListDescription(bool extractAll)
// This is an introduction to the list with all files.
{
- QString result="Here is a list of all ";
+ QCString result="Here is a list of all ";
if (!extractAll) result+="documented ";
result+="files with brief descriptions:";
return result;
}
- virtual QString trCompoundListDescription()
+ virtual QCString trCompoundListDescription()
// This is an introduction to the annotated compound list
{ return "Here are the classes, structs and "
"unions with brief descriptions:";
}
- virtual QString trCompoundMembersDescription(bool extractAll)
+ virtual QCString trCompoundMembersDescription(bool extractAll)
// This is an introduction to the page with all class members
{
- QString result="Here is a list of all ";
+ QCString result="Here is a list of all ";
if (!extractAll) result+="documented ";
result+="class members with links to ";
if (extractAll)
@@ -196,10 +194,10 @@ class Translator
result+="the classes they belong to:";
return result;
}
- virtual QString trFileMembersDescription(bool extractAll)
+ virtual QCString trFileMembersDescription(bool extractAll)
// This is an introduction to the page with all file members
{
- QString result="Here is a list of all ";
+ QCString result="Here is a list of all ";
if (!extractAll) result+="documented ";
result+="file members with links to ";
if (extractAll)
@@ -208,207 +206,207 @@ class Translator
result+="the files they belong to:";
return result;
}
- virtual QString trHeaderFilesDescription()
+ virtual QCString trHeaderFilesDescription()
// This is an introduction to the page with the list of all header files
{ return "Here are the header files that make up the API:"; }
- virtual QString trExamplesDescription()
+ virtual QCString trExamplesDescription()
// This is an introduction to the page with the list of all examples
{ return "Here is a list of all examples:"; }
- virtual QString trRelatedPagesDescription()
+ virtual QCString trRelatedPagesDescription()
// This is an introduction to the page with the list of related pages
{ return "Here is a list of all related documentation pages:"; }
- virtual QString trModulesDescription()
+ virtual QCString trModulesDescription()
// This is an introduction to the page with the list of class/file groups
{ return "Here is a list of all modules:"; }
- virtual QString trNoDescriptionAvailable()
+ virtual QCString trNoDescriptionAvailable()
// This sentences is used in the annotated class/file lists if no brief
// description is given.
{ return "No description available"; }
// index titles (the project name is prepended for these)
- virtual QString trDocumentation()
+ virtual QCString trDocumentation()
// This is used in HTML as the title of index.html.
{ return "Documentation"; }
- virtual QString trModuleIndex()
+ virtual QCString trModuleIndex()
// This is used in LaTeX as the title of the chapter with the
// index of all groups.
{ return "Module Index"; }
- virtual QString trHierarchicalIndex()
+ virtual QCString trHierarchicalIndex()
// This is used in LaTeX as the title of the chapter with the
// class hierarchy.
{ return "Hierarchical Index"; }
- virtual QString trCompoundIndex()
+ virtual QCString trCompoundIndex()
// This is used in LaTeX as the title of the chapter with the
// annotated compound index
{ return "Compound Index"; }
- virtual QString trFileIndex()
+ virtual QCString trFileIndex()
// This is used in LaTeX as the title of the chapter with the
// list of all files.
{ return "File Index"; }
- virtual QString trModuleDocumentation()
+ virtual QCString trModuleDocumentation()
// This is used in LaTeX as the title of the chapter containing
// the documentation of all groups.
{ return "Module Documentation"; }
- virtual QString trClassDocumentation()
+ virtual QCString trClassDocumentation()
// This is used in LaTeX as the title of the chapter containing
// the documentation of all classes, structs and unions.
{ return "Class Documentation"; }
- virtual QString trFileDocumentation()
+ virtual QCString trFileDocumentation()
// This is used in LaTeX as the title of the chapter containing
// the documentation of all files.
{ return "File Documentation"; }
- virtual QString trExampleDocumentation()
+ virtual QCString trExampleDocumentation()
// This is used in LaTeX as the title of the chapter containing
// the documentation of all examples.
{ return "Example Documentation"; }
- virtual QString trPageDocumentation()
+ virtual QCString trPageDocumentation()
// This is used in LaTeX as the title of the chapter containing
// the documentation of all related pages.
{ return "Page Documentation"; }
- virtual QString trReferenceManual()
+ virtual QCString trReferenceManual()
// This is used in LaTeX as the title of the document
{ return "Reference Manual"; }
- virtual QString trDefines()
+ virtual QCString trDefines()
// This is used in the documentation of a file as a header before the
// list of defines
{ return "Defines"; }
- virtual QString trFuncProtos()
+ virtual QCString trFuncProtos()
// This is used in the documentation of a file as a header before the
// list of function prototypes
{ return "Function Prototypes"; }
- virtual QString trTypedefs()
+ virtual QCString trTypedefs()
// This is used in the documentation of a file as a header before the
// list of typedefs
{ return "Typedefs"; }
- virtual QString trEnumerations()
+ virtual QCString trEnumerations()
// This is used in the documentation of a file as a header before the
// list of enumerations
{ return "Enumerations"; }
- virtual QString trFunctions()
+ virtual QCString trFunctions()
// This is used in the documentation of a file as a header before the
// list of (global) functions
{ return "Functions"; }
- virtual QString trVariables()
+ virtual QCString trVariables()
// This is used in the documentation of a file as a header before the
// list of (global) variables
{ return "Variables"; }
- virtual QString trEnumerationValues()
+ virtual QCString trEnumerationValues()
// This is used in the documentation of a file as a header before the
// list of (global) variables
{ return "Enumeration values"; }
- virtual QString trAuthor()
+ virtual QCString trAuthor()
// This is used in man pages as the author section.
{ return "Author"; }
- virtual QString trDefineDocumentation()
+ virtual QCString trDefineDocumentation()
// This is used in the documentation of a file before the list of
// documentation blocks for defines
{ return "Define Documentation"; }
- virtual QString trFunctionPrototypeDocumentation()
+ virtual QCString trFunctionPrototypeDocumentation()
// This is used in the documentation of a file/namespace before the list
// of documentation blocks for function prototypes
{ return "Function Prototype Documentation"; }
- virtual QString trTypedefDocumentation()
+ virtual QCString trTypedefDocumentation()
// This is used in the documentation of a file/namespace before the list
// of documentation blocks for typedefs
{ return "Typedef Documentation"; }
- virtual QString trEnumerationTypeDocumentation()
+ virtual QCString trEnumerationTypeDocumentation()
// This is used in the documentation of a file/namespace before the list
// of documentation blocks for enumeration types
{ return "Enumeration Type Documentation"; }
- virtual QString trEnumerationValueDocumentation()
+ virtual QCString trEnumerationValueDocumentation()
// This is used in the documentation of a file/namespace before the list
// of documentation blocks for enumeration values
{ return "Enumeration Value Documentation"; }
- virtual QString trFunctionDocumentation()
+ virtual QCString trFunctionDocumentation()
// This is used in the documentation of a file/namespace before the list
// of documentation blocks for functions
{ return "Function Documentation"; }
- virtual QString trVariableDocumentation()
+ virtual QCString trVariableDocumentation()
// This is used in the documentation of a file/namespace before the list
// of documentation blocks for variables
{ return "Variable Documentation"; }
- virtual QString trCompounds()
+ virtual QCString trCompounds()
// This is used in the documentation of a file/namespace/group before
// the list of links to documented compounds
{ return "Compounds"; }
- virtual QString trFiles()
+ virtual QCString trFiles()
// This is used in the documentation of a group before the list of
// links to documented files
{ return "Files"; }
- virtual QString trGeneratedAt(const char *date,const char *projName)
+ virtual QCString trGeneratedAt(const char *date,const char *projName)
{
- QString result=(QString)"Generated at "+date;
- if (projName) result+=(QString)" for "+projName;
- result+=(QString)" by";
+ QCString result=(QCString)"Generated at "+date;
+ if (projName) result+=(QCString)" for "+projName;
+ result+=(QCString)" by";
return result;
}
- virtual QString trWrittenBy()
+ virtual QCString trWrittenBy()
{
return "written by";
}
- virtual QString trClassDiagram(const char *clName)
+ virtual QCString trClassDiagram(const char *clName)
// this text is put before a class diagram
{
- return (QString)"Class diagram for "+clName;
+ return (QCString)"Class diagram for "+clName;
}
- virtual QString trForInternalUseOnly()
+ virtual QCString trForInternalUseOnly()
// this text is generated when the \internal command is used.
{ return "For internal use only."; }
- virtual QString trReimplementedForInternalReasons()
+ virtual QCString trReimplementedForInternalReasons()
// this text is generated when the \reimp command is used.
{ return "Reimplemented for internal reasons; the API is not affected."; }
- virtual QString trWarning()
+ virtual QCString trWarning()
// this text is generated when the \warning command is used.
{ return "Warning"; }
- virtual QString trBugsAndLimitations()
+ virtual QCString trBugsAndLimitations()
// this text is generated when the \bug command is used.
{ return "Bugs and limitations"; }
- virtual QString trVersion()
+ virtual QCString trVersion()
// this text is generated when the \version command is used.
{ return "Version"; }
- virtual QString trDate()
+ virtual QCString trDate()
// this text is generated when the \date command is used.
{ return "Date"; }
- virtual QString trAuthors()
+ virtual QCString trAuthors()
// this text is generated when the \author command is used.
{ return "Author(s)"; }
- virtual QString trReturns()
+ virtual QCString trReturns()
// this text is generated when the \return command is used.
{ return "Returns"; }
- virtual QString trSeeAlso()
+ virtual QCString trSeeAlso()
// this text is generated when the \sa command is used.
{ return "See also"; }
- virtual QString trParameters()
+ virtual QCString trParameters()
// this text is generated when the \param command is used.
{ return "Parameters"; }
- virtual QString trExceptions()
+ virtual QCString trExceptions()
// this text is generated when the \exception command is used.
{ return "Exceptions"; }
- virtual QString trGeneratedBy()
+ virtual QCString trGeneratedBy()
// this text is used in the title page of a LaTeX document.
{ return "Generated by"; }
// new since 0.49-990307
- virtual QString trNamespaceList()
+ virtual QCString trNamespaceList()
// used as the title of page containing all the index of all namespaces.
{ return "Namespace List"; }
- virtual QString trNamespaceListDescription(bool extractAll)
+ virtual QCString trNamespaceListDescription(bool extractAll)
// used as an introduction to the namespace list
{
- QString result="Here is a list of all ";
+ QCString result="Here is a list of all ";
if (!extractAll) result+="documented ";
result+="namespaces with brief descriptions:";
return result;
}
- virtual QString trFriends()
+ virtual QCString trFriends()
// used in the class documentation as a header before the list of all
// friends of a class
{ return "Friends"; }
@@ -417,7 +415,7 @@ class Translator
// new since 0.49-990405
//////////////////////////////////////////////////////////////////////////
- virtual QString trRelatedFunctionDocumentation()
+ virtual QCString trRelatedFunctionDocumentation()
// used in the class documentation as a header before the list of all
// related classes
{ return "Friends And Related Function Documentation"; }
@@ -426,11 +424,11 @@ class Translator
// new since 0.49-990425
//////////////////////////////////////////////////////////////////////////
- virtual QString trCompoundReference(const char *clName,
+ virtual QCString trCompoundReference(const char *clName,
ClassDef::CompoundType compType)
// used as the title of the HTML page of a class/struct/union
{
- QString result=(QString)clName+" ";
+ QCString result=(QCString)clName+" ";
switch(compType)
{
case ClassDef::Class: result+=" Class"; break;
@@ -440,49 +438,49 @@ class Translator
result+=" Reference";
return result;
}
- virtual QString trFileReference(const char *fileName)
+ virtual QCString trFileReference(const char *fileName)
// used as the title of the HTML page of a file
{
- QString result=fileName;
+ QCString result=fileName;
result+=" File Reference";
return result;
}
- virtual QString trNamespaceReference(const char *namespaceName)
+ virtual QCString trNamespaceReference(const char *namespaceName)
// used as the title of the HTML page of a namespace
{
- QString result=namespaceName;
+ QCString result=namespaceName;
result+=" Namespace Reference";
return result;
}
// these are for the member sections of a class, struct or union
- virtual QString trPublicMembers()
+ virtual QCString trPublicMembers()
{ return "Public Members"; }
- virtual QString trPublicSlots()
+ virtual QCString trPublicSlots()
{ return "Public Slots"; }
- virtual QString trSignals()
+ virtual QCString trSignals()
{ return "Signals"; }
- virtual QString trStaticPublicMembers()
+ virtual QCString trStaticPublicMembers()
{ return "Static Public Members"; }
- virtual QString trProtectedMembers()
+ virtual QCString trProtectedMembers()
{ return "Protected Members"; }
- virtual QString trProtectedSlots()
+ virtual QCString trProtectedSlots()
{ return "Protected Slots"; }
- virtual QString trStaticProtectedMembers()
+ virtual QCString trStaticProtectedMembers()
{ return "Static Protected Members"; }
- virtual QString trPrivateMembers()
+ virtual QCString trPrivateMembers()
{ return "Private Members"; }
- virtual QString trPrivateSlots()
+ virtual QCString trPrivateSlots()
{ return "Private Slots"; }
- virtual QString trStaticPrivateMembers()
+ virtual QCString trStaticPrivateMembers()
{ return "Static Private Members"; }
// end of member sections
- virtual QString trWriteList(int numEntries)
+ virtual QCString trWriteList(int numEntries)
{
// this function is used to produce a comma-separated list of items.
// use generateMarker(i) to indicate where item i should be put.
- QString result;
+ QCString result;
int i;
// the inherits list contain `numEntries' classes
for (i=0;i<numEntries;i++)
@@ -502,38 +500,38 @@ class Translator
return result;
}
- virtual QString trInheritsList(int numEntries)
+ virtual QCString trInheritsList(int numEntries)
// used in class documentation to produce a list of base classes,
// if class diagrams are disabled.
{
return "Inherits "+trWriteList(numEntries)+".";
}
- virtual QString trInheritedByList(int numEntries)
+ virtual QCString trInheritedByList(int numEntries)
// used in class documentation to produce a list of super classes,
// if class diagrams are disabled.
{
return "Inherited by "+trWriteList(numEntries)+".";
}
- virtual QString trReimplementedFromList(int numEntries)
+ virtual QCString trReimplementedFromList(int numEntries)
// used in member documentation blocks to produce a list of
// members that are hidden by this one.
{
return "Reimplemented from "+trWriteList(numEntries)+".";
}
- virtual QString trReimplementedInList(int numEntries)
+ virtual QCString trReimplementedInList(int numEntries)
{
// used in member documentation blocks to produce a list of
// all member that overwrite the implementation of this member.
return "Reimplemented in "+trWriteList(numEntries)+".";
}
- virtual QString trNamespaceMembers()
+ virtual QCString trNamespaceMembers()
// This is put above each page as a link to all members of namespaces.
{ return "Namespace Members"; }
- virtual QString trNamespaceMemberDescription(bool extractAll)
+ virtual QCString trNamespaceMemberDescription(bool extractAll)
// This is an introduction to the page with all namespace members
{
- QString result="Here is a list of all ";
+ QCString result="Here is a list of all ";
if (!extractAll) result+="documented ";
result+="namespace members with links to ";
if (extractAll)
@@ -542,14 +540,23 @@ class Translator
result+="the namespaces they belong to:";
return result;
}
- virtual QString trNamespaceIndex()
+ virtual QCString trNamespaceIndex()
// This is used in LaTeX as the title of the chapter with the
// index of all namespaces.
{ return "Namespace Index"; }
- virtual QString trNamespaceDocumentation()
+ virtual QCString trNamespaceDocumentation()
// This is used in LaTeX as the title of the chapter containing
// the documentation of all namespaces.
{ return "Namespace Documentation"; }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 0.49-990522
+//////////////////////////////////////////////////////////////////////////
+
+ // This is used in the documentation before the list of all
+ // namespaces in a file.
+ virtual QCString trNamespaces()
+ { return "Namespaces"; }
};
#endif
diff --git a/src/translator_cz.h b/src/translator_cz.h
index 9a0656e..a867de8 100644
--- a/src/translator_cz.h
+++ b/src/translator_cz.h
@@ -17,7 +17,7 @@
#ifndef TRANSLATOR_CZ_H
#define TRANSLATOR_CZ_H
-#include <qstring.h>
+#include "translator.h"
// The translation from English to Czech by Vlastimil Havran.
// In the cases where are more translations possible I hope
@@ -29,247 +29,247 @@
class TranslatorCzech : public Translator
{
public:
- QString latexBabelPackage()
+ QCString latexBabelPackage()
{ return "czech"; }
- QString trInherits()
+ QCString trInherits()
{ return "Dedi"; }
- QString trAnd()
+ QCString trAnd()
{ return "a"; }
- QString trInheritedBy()
+ QCString trInheritedBy()
{ return "Je Potomkem"; }
- QString trRelatedFunctions()
+ QCString trRelatedFunctions()
{ return "Pribuzne Metody"; }
- QString trRelatedSubscript()
+ QCString trRelatedSubscript()
{ return "(Tyto funkce nejsou metody.)"; }
- QString trDetailedDescription()
+ QCString trDetailedDescription()
{ return "Podrobna Dokumentace"; }
- QString trMemberTypedefDocumentation()
+ QCString trMemberTypedefDocumentation()
{ return "Dokumentace pro Deklaraci Typu (typedef) ve Tride";}
- QString trMemberEnumerationDocumentation()
+ QCString trMemberEnumerationDocumentation()
{ return "Dokumentace Vyctovych Typu"; }
- QString trEnumerationValueDocumentation()
+ QCString trEnumerationValueDocumentation()
{ return "Dokumentace Hodnot Vyctovych Typu"; }
- QString trMemberFunctionDocumentation()
+ QCString trMemberFunctionDocumentation()
{ return "Dokumentace Metod"; }
- QString trMemberDataDocumentation()
+ QCString trMemberDataDocumentation()
{ return "Dokumentace Datovych Slozek Tridy"; }
- QString trGeneratedFrom(const char *s,bool single)
+ QCString trGeneratedFrom(const char *s,bool single)
{
- QString result=(QString)"Dokumentace pro tento"+s+
+ QCString result=(QCString)"Dokumentace pro tento"+s+
" byla generovana z nasledujiciho souboru";
if (single) result+=":"; else result+="s:";
return result;
}
- QString trMore()
+ QCString trMore()
{ return "Detaily"; }
- QString trReference()
+ QCString trReference()
{ return "Reference"; }
- QString trListOfAllMembers()
+ QCString trListOfAllMembers()
{ return "Seznam vsech datovych slozek a metod tridy."; }
- QString trMemberList()
+ QCString trMemberList()
{ return "Seznam datovych polozek a metod tridy"; }
- QString trThisIsTheListOfAllMembers()
+ QCString trThisIsTheListOfAllMembers()
{ return "Toto je uplny seznam datovych slozek a metod tridy pro"; }
- QString trIncludingInheritedMembers()
+ QCString trIncludingInheritedMembers()
{ return "zahrnuje vsechny nasledujici zdedene datove slozky a metody."; }
- QString trGeneratedAutomatically(const char *s)
- { QString result="Automaticky vygenerovany pomoci programu Doxygen";
- if (s) result+=(QString)" pro "+s;
+ QCString trGeneratedAutomatically(const char *s)
+ { QCString result="Automaticky vygenerovany pomoci programu Doxygen";
+ if (s) result+=(QCString)" pro "+s;
result+=" ze zdrojoveho souboru.";
return result;
}
- QString trEnumName()
+ QCString trEnumName()
{ return "pojmenovani vyctoveho typu"; }
- QString trEnumValue()
+ QCString trEnumValue()
{ return "hodnota vyctoveho typu"; }
- QString trDefinedIn()
+ QCString trDefinedIn()
{ return "definovany v"; }
- QString trIncludeFile()
+ QCString trIncludeFile()
{ return "Vklada soubor"; }
- QString trVerbatimText(const char *f)
- { return (QString)"Toto je presny text z vlozeneho souboru "+f+""; }
- QString trModules()
+ QCString trVerbatimText(const char *f)
+ { return (QCString)"Toto je presny text z vlozeneho souboru "+f+""; }
+ QCString trModules()
{ return "Moduly"; }
- QString trClassHierarchy()
+ QCString trClassHierarchy()
{ return "Hierarchie trid"; }
- QString trCompoundList()
+ QCString trCompoundList()
{ return "Seznam objektovych typu"; }
- QString trFileList()
+ QCString trFileList()
{ return "Seznam souboru"; }
- QString trHeaderFiles()
+ QCString trHeaderFiles()
{ return "Hlavickove soubory"; }
- QString trCompoundMembers()
+ QCString trCompoundMembers()
{ return "Datove slozky a metody objektovych typu"; }
- QString trFileMembers()
+ QCString trFileMembers()
{ return "Globalni deklarace"; }
- QString trRelatedPages()
+ QCString trRelatedPages()
{ return "Souvisejici stranky"; }
- QString trExamples()
+ QCString trExamples()
{ return "Priklady:"; }
- QString trSearch()
+ QCString trSearch()
{ return "Hledej"; }
- QString trClassHierarchyDescription()
+ QCString trClassHierarchyDescription()
{ return "Tento seznam dedicnych zavislosti je temer setriden"
" podle abecedy:";
}
- QString trFileListDescription(bool extractAll)
+ QCString trFileListDescription(bool extractAll)
{
- QString result="A toto je seznam vsech ";
+ QCString result="A toto je seznam vsech ";
if (!extractAll) result+="dokumentovanych ";
result+="souboru s kratkymi popisy:";
return result;
}
- QString trCompoundListDescription()
+ QCString trCompoundListDescription()
{ return "Zde jsou tridy, struktury a "
"unie s kratkymi popisy:";
}
- QString trCompoundMembersDescription(bool extractAll)
+ QCString trCompoundMembersDescription(bool extractAll)
{
- QString result="Zde je seznam vsech ";
+ QCString result="Zde je seznam vsech ";
if (!extractAll) result+="dokumentovanych ";
result+="clenu tridy (metod a datovych slozek) s odkazy na ";
if (extractAll) result+="dokumentaci tridy pro kazdo polozku:";
else result+="tridy, kam patri:";
return result;
}
- QString trFileMembersDescription(bool extractAll)
+ QCString trFileMembersDescription(bool extractAll)
{
- QString result="Zde je seznam vsech ";
+ QCString result="Zde je seznam vsech ";
if (!extractAll) result+="zdokumentovanych ";
result+="globalnich deklaraci s odkazy ";
if (extractAll) result+="na dokumentaci k souboru pro kazdou deklaraci:";
else result+="na soubory, kde jsou umisteny:";
return result;
}
- QString trHeaderFilesDescription()
+ QCString trHeaderFilesDescription()
{return "Zde jsou hlavickove soubory ktere tvori programove"
" rozhrani aplikace(API):";
}
- QString trExamplesDescription()
+ QCString trExamplesDescription()
{ return "Zde je seznam vsech prikladu:"; }
- QString trRelatedPagesDescription()
+ QCString trRelatedPagesDescription()
{ return "Zde je seznam vsech souvisejicich stranek dokumentace:"; }
- QString trModulesDescription()
+ QCString trModulesDescription()
{ return "Zde je seznam vsech modulu:"; }
- QString trNoDescriptionAvailable()
+ QCString trNoDescriptionAvailable()
{ return "Zadny popis neni k dispozici."; }
- QString trDocumentation()
+ QCString trDocumentation()
{ return "Dokumentace"; }
- QString trModuleIndex()
+ QCString trModuleIndex()
{ return "Index modulu"; }
- QString trHierarchicalIndex()
+ QCString trHierarchicalIndex()
{ return "Index Hierarchie"; }
- QString trCompoundIndex()
+ QCString trCompoundIndex()
{ return "Index objektovych typu"; }
- QString trFileIndex()
+ QCString trFileIndex()
{ return "Index souboru"; }
- QString trModuleDocumentation()
+ QCString trModuleDocumentation()
{ return "Dokumentace modulu"; }
- QString trClassDocumentation()
+ QCString trClassDocumentation()
{ return "Dokumentace tridy"; }
- QString trFileDocumentation()
+ QCString trFileDocumentation()
{ return "Dokumentace souboru"; }
- QString trExampleDocumentation()
+ QCString trExampleDocumentation()
{ return "Dokumentace prikladu"; }
- QString trPageDocumentation()
+ QCString trPageDocumentation()
{ return "Dokumentace stranek"; }
- QString trReferenceManual()
+ QCString trReferenceManual()
{ return "Referencni manual"; }
- QString trDefines()
+ QCString trDefines()
{ return "Definice"; }
- QString trFuncProtos()
+ QCString trFuncProtos()
{ return "Prototypy funkci"; }
- QString trTypedefs()
+ QCString trTypedefs()
{ return "Deklarace datovych typu(typedefs)"; }
- QString trEnumerations()
+ QCString trEnumerations()
{ return "Vyctove typy (enumerations)"; }
- QString trFunctions()
+ QCString trFunctions()
{ return "Funkce"; }
- QString trVariables()
+ QCString trVariables()
{ return "Promenne"; }
- QString trEnumerationValues()
+ QCString trEnumerationValues()
{ return "Hodnoty vyctovych typu"; }
- QString trReimplementedFrom()
+ QCString trReimplementedFrom()
{ return "Je znovu implementovan z"; }
- QString trReimplementedIn()
+ QCString trReimplementedIn()
{ return "Je znovu implementovan v"; }
- QString trAuthor()
+ QCString trAuthor()
{ return "Autor"; }
- QString trDefineDocumentation()
+ QCString trDefineDocumentation()
{ return "Dokumentace definic pomoci maker"; }
- QString trFunctionPrototypeDocumentation()
+ QCString trFunctionPrototypeDocumentation()
{ return "Dokumentace prototypu funkci"; }
- QString trTypedefDocumentation()
+ QCString trTypedefDocumentation()
{ return "Dokumentace deklaraci datovych typu(typedefs)"; }
- QString trEnumerationTypeDocumentation()
+ QCString trEnumerationTypeDocumentation()
{ return "Dokumentace vyctovych typu"; }
- QString trFunctionDocumentation()
+ QCString trFunctionDocumentation()
{ return "Dokumentace funkci"; }
- QString trVariableDocumentation()
+ QCString trVariableDocumentation()
{ return "Dokumentace promennych"; }
- QString trCompounds()
+ QCString trCompounds()
{ return "Polozky objektovych typu"; }
- QString trFiles()
+ QCString trFiles()
{ return "Soubory:"; }
- QString trGeneratedAt(const char *date,const char *projName)
+ QCString trGeneratedAt(const char *date,const char *projName)
{
- QString result=(QString)"Gegenerovany v "+date;
- if (projName) result+=(QString)" pro "+projName;
- result+=(QString)" ";
+ QCString result=(QCString)"Gegenerovany v "+date;
+ if (projName) result+=(QCString)" pro "+projName;
+ result+=(QCString)" ";
return result;
}
- QString trWrittenBy()
+ QCString trWrittenBy()
{
return "napsany ";
}
- QString trClassDiagram(const char *clName)
+ QCString trClassDiagram(const char *clName)
{
- return (QString)"Diagram trid pro "+clName;
+ return (QCString)"Diagram trid pro "+clName;
}
- QString trForInternalUseOnly()
+ QCString trForInternalUseOnly()
{ return "Jen pro interni pouziti."; }
- QString trReimplementedForInternalReasons()
+ QCString trReimplementedForInternalReasons()
{
return "Znovu implementovany z internich duvodu; programove rozhrani"
" aplikace(API) neni zmeneno.";
}
- QString trWarning()
+ QCString trWarning()
{ return "Upozorneni"; }
- QString trBugsAndLimitations()
+ QCString trBugsAndLimitations()
{ return "Chyby a omezeni"; }
- QString trVersion()
+ QCString trVersion()
{ return "Verze"; }
- QString trDate()
+ QCString trDate()
{ return "Datum"; }
- QString trAuthors()
+ QCString trAuthors()
{ return "Autor(i)"; }
- QString trReturns()
+ QCString trReturns()
{ return "ma navratovou hodnotu"; }
- QString trSeeAlso()
+ QCString trSeeAlso()
{ return "Podivej se take na"; }
- QString trParameters()
+ QCString trParameters()
{ return "Parametry"; }
- QString trExceptions()
+ QCString trExceptions()
{ return "Vyjimky"; }
- QString trGeneratedBy()
+ QCString trGeneratedBy()
{ return "Gegenerovan podle"; }
// new since 0.49-990307
- QString trNamespaces()
+ QCString trNamespaces()
{ return "Prostory jmen"; }
- QString trNamespaceList()
+ QCString trNamespaceList()
{ return "Seznam prostoru jmen"; }
- QString trNamespaceListDescription(bool extractAll)
+ QCString trNamespaceListDescription(bool extractAll)
{
- QString result="Zde jsou vsechny ";
+ QCString result="Zde jsou vsechny ";
if (!extractAll) result+="dokumentovane ";
result+="prostory jem s kratkymi popisy:";
return result;
}
- QString trFriends()
+ QCString trFriends()
{ return "Spratelene tridy, funkce a metody"; }
};
diff --git a/src/translator_de.h b/src/translator_de.h
new file mode 100644
index 0000000..8cf43b6
--- /dev/null
+++ b/src/translator_de.h
@@ -0,0 +1,559 @@
+/******************************************************************************
+ *
+ * $Id$
+ *
+ * Copyright (C) 1997-1999 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.
+ *
+ * All output generated with Doxygen is not covered by this license.
+ *
+ * The translation into German was provided by
+ * Jens Breitenstein (Jens.Breitenstein@tlc.de)
+ */
+
+#ifndef TRANSLATOR_DE_H
+#define TRANSLATOR_DE_H
+
+#include "translator.h"
+
+class TranslatorGerman : public Translator
+{
+ public:
+ //--------------------------------------------------------------------
+ // NOTICE:
+ // the following functions are now obsolete: these are no longer used and
+ // will disappear in future versions. You do not have to translate them!
+ QCString trInherits()
+ { return "Abgeleitet von "; }
+ QCString trAnd()
+ { return "und"; }
+ QCString trInheritedBy()
+ { return "Basisklasse f&uuml;r"; }
+ QCString trReference()
+ { return "Verweis"; }
+ QCString trReimplementedFrom()
+ { return "Implementiert von"; }
+ QCString trReimplementedIn()
+ { return "erneute Implementation in"; }
+ QCString trIncludeFile()
+ { return "Include-Datei"; }
+ QCString trNamespaces()
+ { return "Namensbereiche"; }
+ // end of obsolete functions
+ //--------------------------------------------------------------------
+
+ QCString latexBabelPackage()
+ // returns the name of the package that is included by LaTeX
+ { return "deutsch"; }
+
+ QCString trRelatedFunctions()
+ // used in the compound documentation before a list of related functions.
+ { return "Verwandte Funktionen"; }
+
+ QCString trRelatedSubscript()
+ // subscript for the related functions.
+ { return "(Es handelt sich hierbei nicht um Elementfunktionen.)"; }
+
+ QCString trDetailedDescription()
+ // header that is put before the detailed description of files, classes and namespaces.
+ { return "Ausf&uuml;hrliche Beschreibung"; }
+
+ QCString trMemberTypedefDocumentation()
+ // header that is put before the list of typedefs.
+ { return "Dokumentation der benutzerdefinierten Datentypen"; }
+
+ QCString trMemberEnumerationDocumentation()
+ // header that is put before the list of enumerations.
+ { return "Dokumentation der Aufz&auml;hlungstypen"; }
+
+ QCString trMemberFunctionDocumentation()
+ // header that is put before the list of member functions.
+ { return "Dokumentation der Elementfunktionen"; }
+
+ QCString trMemberDataDocumentation()
+ // header that is put before the list of member attributes.
+ { return "Dokumentation der Datenelemente"; }
+
+ QCString trGeneratedFrom(const char *s,bool single)
+ { // here s is one of " Class", " Struct" or " Union"
+ // single is true implies a single file
+ QCString result=(QCString)"Die Dokumentation f&uuml;r diese"+s+
+ " wurde aus ";
+ if (single)
+ result+="folgender Datei erzeugt:";
+ else
+ result+="folgenden Dateien erzeugt:";
+
+ return result;
+ }
+
+ QCString trMore()
+ // this is the text of a link put after brief descriptions.
+ { return "Mehr..."; }
+
+ QCString trListOfAllMembers()
+ // put in the class documentation
+ { return "Aufstellung aller Elemente"; }
+
+ QCString trMemberList()
+ // used as the title of the "list of all members" page of a class
+ { return "Elementverzeichnis"; }
+
+ QCString trThisIsTheListOfAllMembers()
+ // this is the first part of a sentence that is followed by a class name
+ { return "Vollst&auml;ndige Aufstellung aller Elemente f&uuml;r"; }
+
+ QCString trIncludingInheritedMembers()
+ // this is the remainder of the sentence after the class name
+ { return "einschlie&suml;lich aller geerbten Elemente."; }
+
+ QCString trGeneratedAutomatically(const char *s)
+ // this is put at the author sections at the bottom of man pages.
+ // parameter s is name of the project name.
+ { QCString result="Automatisch erzeugt von Doxygen";
+ if (s) result+=(QCString)" f&uuml;r "+s;
+ result+=" aus dem Quellcode.";
+ return result;
+ }
+
+ QCString trEnumName()
+ // put after an enum name in the list of all members
+ { return "enum Bezeichner"; }
+
+ QCString trEnumValue()
+ // put after an enum value in the list of all members
+ { return "enum Wert"; }
+
+ QCString trDefinedIn()
+ // put after an undocumented member in the list of all members
+ { return "Definiert in"; }
+
+ QCString trVerbatimText(const char *f)
+ // put as in introduction in the verbatim header file of a class.
+ // parameter f is the name of the include file.
+ { return (QCString)"Dieses ist der unver&auml;nderte Text aus der "
+ "Include-Datei "+f+"."; }
+
+ // quick reference sections
+ QCString trModules()
+ // This is put above each page as a link to the list of all groups of
+ // compounds or files (see the \group command).
+ { return "Module"; }
+ QCString trClassHierarchy()
+ // This is put above each page as a link to the class hierarchy
+ { return "Klassenhierarchie"; }
+ QCString trCompoundList()
+ // This is put above each page as a link to the list of annotated classes
+ { return "&Uuml;bersicht"; }
+ QCString trFileList()
+ // This is put above each page as a link to the list of documented files
+ { return "Auflistung der Dateien"; }
+ QCString trHeaderFiles()
+ // This is put above each page as a link to the list of all verbatim headers
+ { return "Auflistung der Header-Dateien"; }
+ QCString trCompoundMembers()
+ // This is put above each page as a link to all members of compounds.
+ { return "Element&uuml;bersicht"; }
+ QCString trFileMembers()
+ // This is put above each page as a link to all members of files.
+ { return "Datei-Elemente"; }
+ QCString trRelatedPages()
+ // This is put above each page as a link to all related pages.
+ { return "Zus&auml;tzliche Informationen"; }
+ QCString trExamples()
+ // This is put above each page as a link to all examples.
+ { return "Beispiele"; }
+ QCString trSearch()
+ // This is put above each page as a link to the search engine.
+ { return "Suchen"; }
+
+ QCString trClassHierarchyDescription()
+ // This is an introduction to the class hierarchy.
+ { return "Die Liste der Ableitungen ist -mit Einschr&auml;nkungen- "
+ "alphabetisch sortiert:";
+ }
+ QCString trFileListDescription(bool extractAll)
+ // This is an introduction to the list with all files.
+ {
+ QCString result="Hier folgt die Aufz&auml;hlung aller ";
+ if (!extractAll) result+="dokumentierten ";
+ result+="Dateien mit einer Kurzbeschreibung:";
+ return result;
+ }
+ QCString trCompoundListDescription()
+ // This is an introduction to the annotated compound list
+ { return "Hier folgt die Aufz&auml;hlung aller Klassen, Strukturen "
+ "und Varianten mit einer Kurzbeschreibung:";
+ }
+ QCString trCompoundMembersDescription(bool extractAll)
+ // This is an introduction to the page with all class members
+ {
+ QCString result="Hier folgt die Aufz&auml;hlung aller ";
+ if (!extractAll) result+="dokumentierten ";
+ result+="Klassenelemente mit Verweisen auf ";
+ if (extractAll) result+="die Klassendokumentation zu jedem Element:";
+ else result+="die zugeh&ouml;rigen Klassen:";
+ return result;
+ }
+ QCString trFileMembersDescription(bool extractAll)
+ // This is an introduction to the page with all file members
+ {
+ QCString result="Hier folgt die Aufz&auml;hlung aller ";
+ if (!extractAll) result+="dokumentierter ";
+ result+="Dateielemente mit Verweisen auf ";
+ if (extractAll) result+="die Dateidokumentation zu jedem Element:";
+ else result+="die zugeh&ouml;rigen Dateien:";
+ return result;
+ }
+ QCString trHeaderFilesDescription()
+ // This is an introduction to the page with the list of all header files
+ { return "Hier folgen die Headerdateien, welche die API definieren:"; }
+ QCString trExamplesDescription()
+ // This is an introduction to the page with the list of all examples
+ { return "Hier folgt eine Liste mit allen Beispielen:"; }
+ QCString trRelatedPagesDescription()
+ // This is an introduction to the page with the list of related pages
+ { return "Hier folgt eine Liste mit zusammengeh&ouml;rigen Themengebieten:"; }
+ QCString trModulesDescription()
+ // This is an introduction to the page with the list of class/file groups
+ { return "Hier folgt die Aufz&auml;hlung aller Module:"; }
+ QCString trNoDescriptionAvailable()
+ // This sentences is used in the annotated class/file lists if no brief
+ // description is given.
+ { return "Keine Beschreibung verf&uuml;gbar"; }
+
+ // index titles (the project name is prepended for these)
+ QCString trDocumentation()
+ // This is used in HTML as the title of index.html.
+ { return "Dokumentation"; }
+ QCString trModuleIndex()
+ // This is used in LaTeX as the title of the chapter with the
+ // index of all groups.
+ { return "Modul-Verzeichnis"; }
+ QCString trHierarchicalIndex()
+ // This is used in LaTeX as the title of the chapter with the
+ // class hierarchy.
+ { return "Hierarchie-Verzeichnis"; }
+ QCString trCompoundIndex()
+ // This is used in LaTeX as the title of the chapter with the
+ // annotated compound index
+ { return "Compound-Verzeichnis"; }
+ QCString trFileIndex()
+ // This is used in LaTeX as the title of the chapter with the
+ // list of all files.
+ { return "Datei-Verzeichnis"; }
+ QCString trModuleDocumentation()
+ // This is used in LaTeX as the title of the chapter containing
+ // the documentation of all groups.
+ { return "Modul-Dokumentation"; }
+ QCString trClassDocumentation()
+ // This is used in LaTeX as the title of the chapter containing
+ // the documentation of all classes, structs and unions.
+ { return "Klassen-Dokumentation"; }
+ QCString trFileDocumentation()
+ // This is used in LaTeX as the title of the chapter containing
+ // the documentation of all files.
+ { return "Datei-Dokumentation"; }
+ QCString trExampleDocumentation()
+ // This is used in LaTeX as the title of the chapter containing
+ // the documentation of all examples.
+ { return "Dokumentation der Beispiele"; }
+ QCString trPageDocumentation()
+ // This is used in LaTeX as the title of the chapter containing
+ // the documentation of all related pages.
+ { return "Seitenbeschreibung"; }
+ QCString trReferenceManual()
+ // This is used in LaTeX as the title of the document
+ { return "Nachschlagewerk"; }
+
+ QCString trDefines()
+ // This is used in the documentation of a file as a header before the
+ // list of defines
+ { return "Makrodefinitionen"; }
+ QCString trFuncProtos()
+ // This is used in the documentation of a file as a header before the
+ // list of function prototypes
+ { return "Funktionsprototypen"; }
+ QCString trTypedefs()
+ // This is used in the documentation of a file as a header before the
+ // list of typedefs
+ { return "Typendefinitionen"; }
+ QCString trEnumerations()
+ // This is used in the documentation of a file as a header before the
+ // list of enumerations
+ { return "Aufz&auml;hlungen"; }
+ QCString trFunctions()
+ // This is used in the documentation of a file as a header before the
+ // list of (global) functions
+ { return "Funktionen"; }
+ QCString trVariables()
+ // This is used in the documentation of a file as a header before the
+ // list of (global) variables
+ { return "Variablen"; }
+ QCString trEnumerationValues()
+ // This is used in the documentation of a file as a header before the
+ // list of (global) variables
+ { return "Aufz&auml;hlungswerte"; }
+
+ QCString trAuthor()
+ // This is used in man pages as the author section.
+ { return "Autor"; }
+
+ QCString trDefineDocumentation()
+ // This is used in the documentation of a file before the list of
+ // documentation blocks for defines
+ { return "Makro-Dokumentation"; }
+ QCString trFunctionPrototypeDocumentation()
+ // This is used in the documentation of a file/namespace before the list
+ // of documentation blocks for function prototypes
+ { return "Funktionsprototypen Dokumentation"; }
+ QCString trTypedefDocumentation()
+ // This is used in the documentation of a file/namespace before the list
+ // of documentation blocks for typedefs
+ { return "Dokumentation der benutzerdefinerten Typen"; }
+ QCString trEnumerationTypeDocumentation()
+ // This is used in the documentation of a file/namespace before the list
+ // of documentation blocks for enumeration types
+ { return "Dokumentation der Aufz&auml;hlungstypen"; }
+ QCString trEnumerationValueDocumentation()
+ // This is used in the documentation of a file/namespace before the list
+ // of documentation blocks for enumeration values
+ { return "Dokumentation des Wertebereiches der Aufz&auml;hlungstypen"; }
+ QCString trFunctionDocumentation()
+ // This is used in the documentation of a file/namespace before the list
+ // of documentation blocks for functions
+ { return "Dokumentation der Funktionen"; }
+ QCString trVariableDocumentation()
+ // This is used in the documentation of a file/namespace before the list
+ // of documentation blocks for variables
+ { return "Variablen-Dokumentation"; }
+ QCString trCompounds()
+ // This is used in the documentation of a file/namespace/group before
+ // the list of links to documented compounds
+ { return "&Uuml;bersicht"; }
+ QCString trFiles()
+ // This is used in the documentation of a group before the list of
+ // links to documented files
+ { return "Dateien"; }
+
+ QCString trGeneratedAt(const char *date,const char *projName)
+ {
+ QCString result=(QCString)"Erzeugt am "+date;
+ if (projName) result+=(QCString)" f&uuml;r "+projName;
+ result+=(QCString)" von";
+ return result;
+ }
+ QCString trWrittenBy()
+ {
+ return "geschrieben von";
+ }
+
+ QCString trClassDiagram(const char *clName)
+ // this text is put before a class diagram
+ {
+ return (QCString)"Klassendiagramm f&uuml;r "+clName;
+ }
+
+ QCString trForInternalUseOnly()
+ // this text is generated when the \internal command is used.
+ { return "Nur f&uuml;r den internen Gebrauch."; }
+ QCString trReimplementedForInternalReasons()
+ // this text is generated when the \reimp command is used.
+ { return "Aufgrund interner Gr&uuml;nde neu implementiert; "
+ "Das API wird davon nicht ber&uuml;hrt.";
+ }
+ QCString trWarning()
+ // this text is generated when the \warning command is used.
+ { return "Warnung"; }
+ QCString trBugsAndLimitations()
+ // this text is generated when the \bug command is used.
+ { return "Fehler und Einschr&auml;nkungen"; }
+ QCString trVersion()
+ // this text is generated when the \version command is used.
+ { return "Version"; }
+ QCString trDate()
+ // this text is generated when the \date command is used.
+ { return "Datum"; }
+ QCString trAuthors()
+ // this text is generated when the \author command is used.
+ { return "Autor(en)"; }
+ QCString trReturns()
+ // this text is generated when the \return command is used.
+ { return "R&uuml;ckgabe"; }
+ QCString trSeeAlso()
+ // this text is generated when the \sa command is used.
+ { return "Siehe auch"; }
+ QCString trParameters()
+ // this text is generated when the \param command is used.
+ { return "Parameter"; }
+ QCString trExceptions()
+ // this text is generated when the \exception command is used.
+ { return "Ausnahmebehandlung"; }
+ QCString trGeneratedBy()
+ // this text is used in the title page of a LaTeX document.
+ { return "Erzeugt von"; }
+
+ // new since 0.49-990307
+
+ QCString trNamespaceList()
+ // used as the title of page containing all the index of all namespaces.
+ { return ""; }
+ QCString trNamespaceListDescription(bool extractAll)
+ // used as an introduction to the namespace list
+ {
+ QCString result="Lister aller ";
+ if (!extractAll) result+="dokumentierter ";
+ result+="Namensbereiche mit Kurzbeschreibung:";
+ return result;
+ }
+ QCString trFriends()
+ // used in the class documentation as a header before the list of all
+ // friends of a class
+ { return "Freundbeziehungen"; }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 0.49-990405
+//////////////////////////////////////////////////////////////////////////
+
+ QCString trRelatedFunctionDocumentation()
+ // used in the class documentation as a header before the list of all
+ // related classes
+ { return "Freundbeziehungen und Funktionsdokumentation"; }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 0.49-990425
+//////////////////////////////////////////////////////////////////////////
+
+ QCString trCompoundReference(const char *clName,
+ ClassDef::CompoundType compType)
+ // used as the title of the HTML page of a class/struct/union
+ {
+ QCString result=(QCString)clName+" ";
+ switch(compType)
+ {
+ case ClassDef::Class: result+=" Klassen"; break;
+ case ClassDef::Struct: result+=" Strukturen"; break;
+ case ClassDef::Union: result+=" Varianten"; break;
+ }
+ result+="referenz";
+ return result;
+ }
+ QCString trFileReference(const char *fileName)
+ // used as the title of the HTML page of a file
+ {
+ QCString result=fileName;
+ result+=" Dateireferenz";
+ return result;
+ }
+ QCString trNamespaceReference(const char *namespaceName)
+ // used as the title of the HTML page of a namespace
+ {
+ QCString result=namespaceName;
+ result+=" Namensbereichsreferenz";
+ return result;
+ }
+
+ // these are for the member sections of a class, struct or union
+ QCString trPublicMembers()
+ { return "&Ouml;ffentliche Datenelemente"; }
+ QCString trPublicSlots()
+ { return "&Ouml;ffentliche Slots"; }
+ QCString trSignals()
+ { return "Signale"; }
+ QCString trStaticPublicMembers()
+ { return "&Ouml;ffentliche, statische Datenelemente"; }
+ QCString trProtectedMembers()
+ { return "Gesch&uuml;tzte Datenelemente"; }
+ QCString trProtectedSlots()
+ { return "Gesch&uuml;tzte Slots"; }
+ QCString trStaticProtectedMembers()
+ { return "Gesch&uuml;tzte, statische Datenelemente"; }
+ QCString trPrivateMembers()
+ { return "Private Datenelemente"; }
+ QCString trPrivateSlots()
+ { return "Private Slots"; }
+ QCString trStaticPrivateMembers()
+ { return "Private, statische Datenelemente"; }
+ // end of member sections
+
+ QCString trWriteList(int numEntries)
+ {
+ // this function is used to produce a comma-separated list of items.
+ // use generateMarker(i) to indicate where item i should be put.
+ QCString result;
+ int i;
+ // the inherits list contain `numEntries' classes
+ for (i=0;i<numEntries;i++)
+ {
+ // use generateMarker to generate placeholders for the class links!
+ result+=generateMarker(i); // generate marker for entry i in the list
+ // (order is left to right)
+
+ if (i!=numEntries-1) // not the last entry, so we need a separator
+ {
+ if (i<numEntries-2) // not the fore last entry
+ result+=", ";
+ else // the fore last entry
+ result+=", und ";
+ }
+ }
+ return result;
+ }
+
+ QCString trInheritsList(int numEntries)
+ // used in class documentation to produce a list of base classes,
+ // if class diagrams are disabled.
+ {
+ return "Abgeleitet von "+trWriteList(numEntries)+".";
+ }
+ QCString trInheritedByList(int numEntries)
+ // used in class documentation to produce a list of super classes,
+ // if class diagrams are disabled.
+ {
+ return "Basisklasse f&uuml;r "+trWriteList(numEntries)+".";
+ }
+ QCString trReimplementedFromList(int numEntries)
+ // used in member documentation blocks to produce a list of
+ // members that are hidden by this one.
+ {
+ return "Implementiert von "+trWriteList(numEntries)+".";
+ }
+ QCString trReimplementedInList(int numEntries)
+ {
+ // used in member documentation blocks to produce a list of
+ // all member that overwrite the implementation of this member.
+ return "Erneute Implementation in "+trWriteList(numEntries)+".";
+ }
+
+ QCString trNamespaceMembers()
+ // This is put above each page as a link to all members of namespaces.
+ { return "Elemente eines Namensbereiches"; }
+ QCString trNamespaceMemberDescription(bool extractAll)
+ // This is an introduction to the page with all namespace members
+ {
+ QCString result="Hier folgt die Aufz&auml;hlung aller ";
+ if (!extractAll) result+="dokumentierter ";
+ result+="Namensbereichselemente mit Verweisen auf ";
+ if (extractAll)
+ result+="die Namensbereichsdokumentation f&uuml;r jedes Element:";
+ else
+ result+="die zugeh&ouml;rigen Dateien:";
+ return result;
+ }
+ QCString trNamespaceIndex()
+ // This is used in LaTeX as the title of the chapter with the
+ // index of all namespaces.
+ { return "Verzeichnis der Namensbereiche"; }
+ QCString trNamespaceDocumentation()
+ // This is used in LaTeX as the title of the chapter containing
+ // the documentation of all namespaces.
+ { return "Dokumentation der Namensbereiche"; }
+};
+
+#endif
+
diff --git a/src/translator_es.h b/src/translator_es.h
new file mode 100644
index 0000000..9fcda7b
--- /dev/null
+++ b/src/translator_es.h
@@ -0,0 +1,405 @@
+/******************************************************************************
+ *
+ * $Id$
+ *
+ * Copyright (C) 1997-1999 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.
+ *
+ * All output generated with Doxygen is not covered by this license.
+ *
+ */
+
+
+/**
+ * translator_es.h modifief by Francisco Oltra
+ * Some notes:
+ * - Computer related use of the spanish language differs from
+ * country to country, so some words might not sound so good
+ * to some people (but it does to me, *grin* ). A good example
+ * is the spanish for File: i use "Archivo", others may prefer
+ * "Fichero".
+ * - Some words were not translated for understandability, since
+ * we are talking about a computer program here!
+ * - Some of the functions are called in some order coherent with
+ * the english grammar, this results in some ugly constructs.
+ */
+
+#ifndef TRANSLATOR_ES_H
+#define TRANSLATOR_ES_H
+
+#include "translator.h"
+
+class TranslatorSpanish : public Translator
+{
+ public:
+ QCString latexBabelPackage()
+ { return "spanish"; }
+ QCString trRelatedFunctions()
+ { return "Funciones Relacionadas"; }
+ QCString trRelatedSubscript()
+ { return "(Note que estos no son funciones miembro.)"; }
+ QCString trDetailedDescription()
+ { return "Descripción Detallada"; }
+ QCString trMemberTypedefDocumentation()
+ { return "Documentación de Miembros Typedef"; }
+ QCString trMemberEnumerationDocumentation()
+ { return "Documentación de Miembros de Enumeración"; }
+ QCString trEnumerationValueDocumentation()
+ { return "Documentación de los Valores de Enumeración"; }
+ QCString trMemberFunctionDocumentation()
+ { return "Documentación de Funciones Miembro"; }
+ QCString trMemberDataDocumentation()
+ { return "Documentación de Datos Miembro"; }
+ QCString trGeneratedFrom(const char *s,bool single)
+ {
+ QCString result=(QCString)"La documentación para esta"+s+
+ " fue generada del siguiente archivo";
+ if (single) result+=":"; else result+="s:";
+ return result;
+ }
+ QCString trMore()
+ { return "Más..."; }
+ QCString trListOfAllMembers()
+ { return "Lista de todos los miembros."; }
+ QCString trMemberList()
+ { return "Lista de Miembros"; }
+ QCString trThisIsTheListOfAllMembers()
+ { return "Esta es la lista completa de miembros para "; }
+ QCString trIncludingInheritedMembers()
+ { return ", incluyendo todos los miembros heredados."; }
+ QCString trGeneratedAutomatically(const char *s)
+ { QCString result="Generado automáticamente por Doxygen";
+ if (s) result+=(QCString)" para "+s;
+ result+=" desde el código fuente.";
+ return result;
+ }
+ QCString trEnumName()
+ { return "nombre de enum"; }
+ QCString trEnumValue()
+ { return "valor de enum"; }
+ QCString trDefinedIn()
+ { return "definido en"; }
+ QCString trVerbatimText(const char *f)
+ { return (QCString)"Esto es texto verbatim del archivo incluído "+f+"."; }
+ QCString trModules()
+ { return "Modulos"; }
+ QCString trClassHierarchy()
+ { return "Jerarquía de la clase"; }
+ QCString trCompoundList()
+ { return "Lista de Tipos Compuestos"; }
+ QCString trFileList()
+ { return "Lista de Archivos"; }
+ QCString trHeaderFiles()
+ { return "Archivos de Cabecera"; }
+ QCString trCompoundMembers()
+ { return "Miembros de Compuestos"; }
+ QCString trFileMembers()
+ { return "Miembros de los Archivos"; }
+ QCString trRelatedPages()
+ { return "Páginas Relacionadas"; }
+ QCString trExamples()
+ { return "Ejemplos"; }
+ QCString trSearch()
+ { return "Buscar"; }
+ QCString trClassHierarchyDescription()
+ { return "Esta lista de herencia está ordenada alfabéticamente, "
+ "pero no completamente:";
+ }
+ QCString trFileListDescription(bool extractAll)
+ {
+ QCString result="Esta es una lista de todos ";
+ result+="los archivos ";
+ if (!extractAll) result+="documentados ";
+ result+="con breves descripciones:";
+ return result;
+ }
+ QCString trCompoundListDescription()
+ { return "Aquí estan las clases, estructuras y "
+ "uniones con descripciones breves:";
+ }
+ QCString trCompoundMembersDescription(bool extractAll)
+ {
+ QCString result="Esta es una lista de todos ";
+ result+="miembros de clases ";
+ if (!extractAll) result+="documentados ";
+ result+="con enlaces a ";
+ if (extractAll) result+="la documentación de clase para cada miembro:";
+ else result+="las clases a que pertenecen:";
+ return result;
+ }
+ QCString trFileMembersDescription(bool extractAll)
+ {
+ QCString result="Esta es una lista de todos los miembros de los archivos ";
+ if (!extractAll) result+="documentados ";
+ result+="con enlaces a ";
+ if (extractAll) result+="la documentación de archivo para cada miembro:";
+ else result+="los archivos a que pertenecen:";
+ return result;
+ }
+ QCString trHeaderFilesDescription()
+ { return "Aquí estan los archivos de cabecera que forman el API:"; }
+ QCString trExamplesDescription()
+ { return "Esta es la lista de todos los ejemplos:"; }
+ QCString trRelatedPagesDescription()
+ { return "Esta es una lista de todos las páginas con documentación relacionada:"; }
+ QCString trModulesDescription()
+ { return "Esta es una lista con todos los modulos:"; }
+ QCString trNoDescriptionAvailable()
+ { return "No existe descripción disponible"; }
+
+ QCString trDocumentation()
+ { return "Documentación"; }
+ QCString trModuleIndex()
+ { return "Índice de Modulos"; }
+ QCString trHierarchicalIndex()
+ { return "Índice Jerárquico"; }
+ QCString trCompoundIndex()
+ { return "Índice de Tipos Compuestos"; }
+ QCString trFileIndex()
+ { return "Índice de Archivos"; }
+ QCString trModuleDocumentation()
+ { return "Documentación de los Modulos"; }
+ QCString trClassDocumentation()
+ { return "Documentación de las clases"; }
+ QCString trFileDocumentation()
+ { return "Documentación de los Archivos"; }
+ QCString trExampleDocumentation()
+ { return "Documentación de los Ejemplos"; }
+ QCString trPageDocumentation()
+ { return "Documentación de las Páginas Relacionadas"; }
+ QCString trReferenceManual()
+ { return "Manual de Referencia"; }
+
+ QCString trDefines()
+ { return "Definiciones"; }
+ QCString trFuncProtos()
+ { return "Prototipo de Funciones"; }
+ QCString trTypedefs()
+ { return "Typedefs"; }
+ QCString trEnumerations()
+ { return "Enumeraciones"; }
+ QCString trFunctions()
+ { return "Funciones"; }
+ QCString trVariables()
+ { return "Variables"; }
+ QCString trEnumerationValues()
+ { return "Valores de Enumeraciones"; }
+ QCString trAuthor()
+ { return "Autor"; }
+ QCString trDefineDocumentation()
+ { return "Documentación de las Definiciones"; }
+ QCString trFunctionPrototypeDocumentation()
+ { return "Documentación de los Prototipos de Funciones"; }
+ QCString trTypedefDocumentation()
+ { return "Documentación de Typedefs"; }
+ QCString trEnumerationTypeDocumentation()
+ { return "Documentación de Enumeración de tipos"; }
+ QCString trFunctionDocumentation()
+ { return "Documentación de Funciones"; }
+ QCString trVariableDocumentation()
+ { return "Documentación de Variables"; }
+ QCString trCompounds()
+ { return "Tipos Compuestos"; }
+ QCString trFiles()
+ { return "Archivos"; }
+ QCString trGeneratedAt(const char *date,const char *projName)
+ {
+ QCString result=(QCString)"Generado el "+date;
+ if (projName) result+=(QCString)" para "+projName;
+ result+=(QCString)" por";
+ return result;
+ }
+ QCString trWrittenBy()
+ {
+ return "escrito por";
+ }
+ QCString trClassDiagram(const char *clName)
+ {
+ return (QCString)"Diagrama de clases para "+clName;
+ }
+
+ QCString trForInternalUseOnly()
+ { return "Para uso interno solamente."; }
+ QCString trReimplementedForInternalReasons()
+ { return "Reimplementado por razones internas; el API no se ve afectado.";
+ }
+ QCString trWarning()
+ { return "Atención"; }
+ QCString trBugsAndLimitations()
+ { return "Bugs y Limitaciones"; }
+ QCString trVersion()
+ { return "Versión"; }
+ QCString trDate()
+ { return "Fecha"; }
+ QCString trAuthors()
+ { return "Autor(es)"; }
+ QCString trReturns()
+ { return "Devuelve"; }
+ QCString trSeeAlso()
+ { return "Ver también"; }
+ QCString trParameters()
+ { return "Parámetros"; }
+ QCString trExceptions()
+ { return "Excepciones"; }
+ QCString trGeneratedBy()
+ { return "Generado por"; }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 0.49-990307
+//////////////////////////////////////////////////////////////////////////
+
+ QCString trNamespaceList()
+ { return "Lista de Namespaces"; }
+ QCString trNamespaceListDescription(bool extractAll)
+ {
+ QCString result="Esta es una lista de los namespaces ";
+ if (!extractAll) result+="documentados ";
+ result+="con descripciones breves:";
+ return result;
+ }
+ QCString trFriends()
+ { return "Clases Amigas"; }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 0.49-990405
+//////////////////////////////////////////////////////////////////////////
+
+ QCString trRelatedFunctionDocumentation()
+ { return "Documentación de Clases Amigas y Funciones Relacionadas"; }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 0.49-990425
+//////////////////////////////////////////////////////////////////////////
+
+ virtual QCString trCompoundReference(const char *clName,
+ ClassDef::CompoundType compType)
+ // used as the title of the HTML page of a class/struct/union
+ {
+ QCString result=(QCString)clName+" ";
+ switch(compType)
+ {
+ case ClassDef::Class: result+=" Clase"; break;
+ case ClassDef::Struct: result+=" Estructura"; break;
+ case ClassDef::Union: result+=" Unión"; break;
+ }
+ result+=" Referencia";
+ return result;
+ }
+ virtual QCString trFileReference(const char *fileName)
+ // used as the title of the HTML page of a file
+ {
+ QCString result=fileName;
+ result+=" Referencia de Archivos";
+ return result;
+ }
+ virtual QCString trNamespaceReference(const char *namespaceName)
+ // used as the title of the HTML page of a namespace
+ {
+ QCString result=namespaceName;
+ result+=" Referencia de Namespace";
+ return result;
+ }
+
+ // these are for the member sections of a class, struct or union
+ virtual QCString trPublicMembers()
+ { return "Miembros Públicos"; }
+ virtual QCString trPublicSlots()
+ { return "Slots Públicos"; }
+ virtual QCString trSignals()
+ { return "Señales"; }
+ virtual QCString trStaticPublicMembers()
+ { return "Miembros Estáticos Públicos"; }
+ virtual QCString trProtectedMembers()
+ { return "Miembros Protegidos"; }
+ virtual QCString trProtectedSlots()
+ { return "Slots Protegidos"; }
+ virtual QCString trStaticProtectedMembers()
+ { return "Miembros Protegidos Estáticos"; }
+ virtual QCString trPrivateMembers()
+ { return "Miembros Privados"; }
+ virtual QCString trPrivateSlots()
+ { return "Slots Privados"; }
+ virtual QCString trStaticPrivateMembers()
+ { return "Miembros Estáticos Privados"; }
+ // end of member sections
+
+ virtual QCString trWriteList(int numEntries)
+ {
+ // this function is used to produce a comma-separated list of items.
+ // use generateMarker(i) to indicate where item i should be put.
+ QCString result;
+ int i;
+ // the inherits list contain `numEntries' classes
+ for (i=0;i<numEntries;i++)
+ {
+ // use generateMarker to generate placeholders for the class links!
+ result+=generateMarker(i); // generate marker for entry i in the list
+ // (order is left to right)
+
+ if (i!=numEntries-1) // not the last entry, so we need a separator
+ {
+ if (i<numEntries-2) // not the fore last entry
+ result+=", ";
+ else // the fore last entry
+ result+=" y ";
+ }
+ }
+ return result;
+ }
+
+ virtual QCString trInheritsList(int numEntries)
+ // used in class documentation to produce a list of base classes,
+ // if class diagrams are disabled.
+ {
+ return "Hereda a "+trWriteList(numEntries)+".";
+ }
+ virtual QCString trInheritedByList(int numEntries)
+ // used in class documentation to produce a list of super classes,
+ // if class diagrams are disabled.
+ {
+ return "Heredado por "+trWriteList(numEntries)+".";
+ }
+ virtual QCString trReimplementedFromList(int numEntries)
+ // used in member documentation blocks to produce a list of
+ // members that are hidden by this one.
+ {
+ return "Reimplementado por "+trWriteList(numEntries)+".";
+ }
+ virtual QCString trReimplementedInList(int numEntries)
+ {
+ // used in member documentation blocks to produce a list of
+ // all member that overwrite the implementation of this member.
+ return "Reimplementado en "+trWriteList(numEntries)+".";
+ }
+
+ virtual QCString trNamespaceMembers()
+ // This is put above each page as a link to all members of namespaces.
+ { return "Miembros del Namespace"; }
+ virtual QCString trNamespaceMemberDescription(bool extractAll)
+ // This is an introduction to the page with all namespace members
+ {
+ QCString result="Esta es una lista de todos los miembros de namespace ";
+ if (!extractAll) result+="documentados ";
+ result+="con enlaces a ";
+ if (extractAll)
+ result+="a la documentación de namespaces para cada miembro:";
+ else
+ result+="los namespaces a los que pertenecen:";
+ return result;
+ }
+ virtual QCString trNamespaceIndex()
+ // This is used in LaTeX as the title of the chapter with the
+ // index of all namespaces.
+ { return "Índice de Namespaces"; }
+ virtual QCString trNamespaceDocumentation()
+ // This is used in LaTeX as the title of the chapter containing
+ // the documentation of all namespaces.
+ { return "Documentación de Namespaces"; }
+};
+
+#endif
diff --git a/src/translator_fr.h b/src/translator_fr.h
index 319f156..8214221 100644
--- a/src/translator_fr.h
+++ b/src/translator_fr.h
@@ -12,122 +12,124 @@
*
* All output generated with Doxygen is not covered by this license.
*
+ * The translation into French was provided by
+ * Christophe Bordeux (bordeux@lig.di.epfl.ch)
*/
#ifndef TRANSLATOR_FR_H
#define TRANSLATOR_FR_H
-#include <qstring.h>
+#include "translator.h"
class TranslatorFrench : public Translator
{
public:
- QString latexBabelPackage()
+ QCString latexBabelPackage()
{ return "french"; }
- QString trInherits()
+ QCString trInherits()
{ return "Hérite de"; }
- QString trAnd()
+ QCString trAnd()
{ return "et"; }
- QString trInheritedBy()
+ QCString trInheritedBy()
{ return "Dérivée par"; }
- QString trRelatedFunctions()
+ QCString trRelatedFunctions()
{ return "Fonctions associées"; }
- QString trRelatedSubscript()
+ QCString trRelatedSubscript()
{ return "(Noter que ces fonctions ne sont pas des méthodes de la classe)"; }
- QString trDetailedDescription()
+ QCString trDetailedDescription()
{ return "Description détaillée"; }
- QString trMemberTypedefDocumentation()
+ QCString trMemberTypedefDocumentation()
{ return "Documentation des types imbriqués"; }
- QString trMemberEnumerationDocumentation()
+ QCString trMemberEnumerationDocumentation()
{ return "Documentation des énumérations imbriqués"; }
- QString trMemberFunctionDocumentation()
+ QCString trMemberFunctionDocumentation()
{ return "Documentation des méthodes"; }
- QString trMemberDataDocumentation()
+ QCString trMemberDataDocumentation()
{ return "Documentation des données imbriqués"; }
- QString trGeneratedFrom(const char *s,bool single)
+ QCString trGeneratedFrom(const char *s,bool single)
{
- QString result=(QString)"La documentation pour cette"+s+
+ QCString result=(QCString)"La documentation pour cette"+s+
" a été générée à partir ";
if (single) result+="du fichier suivant:";
else result+="des fichiers suivants:";
return result;
}
- QString trMore()
+ QCString trMore()
{ return "Plus de détails..."; }
- QString trReference()
+ QCString trReference()
{ return "Référence"; }
- QString trListOfAllMembers()
+ QCString trListOfAllMembers()
{ return "Liste de tous les membres"; }
- QString trMemberList()
+ QCString trMemberList()
{ return "Liste des membres"; }
- QString trThisIsTheListOfAllMembers()
+ QCString trThisIsTheListOfAllMembers()
{ return "Ceci est la liste complète des membres de"; }
- QString trIncludingInheritedMembers()
+ QCString trIncludingInheritedMembers()
{ return "y compris des membres des classes héritées."; }
- QString trGeneratedAutomatically(const char *s)
- { QString result="Généré automatiquement par Doxygen";
- if (s) result+=(QString)" pour "+s;
+ QCString trGeneratedAutomatically(const char *s)
+ { QCString result="Généré automatiquement par Doxygen";
+ if (s) result+=(QCString)" pour "+s;
result+=" à partir du code source.";
return result;
}
- QString trEnumName()
+ QCString trEnumName()
{ return "énumération"; }
- QString trEnumValue()
+ QCString trEnumValue()
{ return "élément d'une énumération"; }
- QString trDefinedIn()
+ QCString trDefinedIn()
{ return "défini dans"; }
- QString trIncludeFile()
+ QCString trIncludeFile()
{ return "Fichier inclu"; }
- QString trVerbatimText(const char *f)
- { return (QString)"Ce texte provient du fichier inclu "+f+"."; }
+ QCString trVerbatimText(const char *f)
+ { return (QCString)"Ce texte provient du fichier inclu "+f+"."; }
- QString trModules()
+ QCString trModules()
{ return "Modules"; }
- QString trClassHierarchy()
+ QCString trClassHierarchy()
{ return "Hiérarchie des classes"; }
- QString trCompoundList()
+ QCString trCompoundList()
{ return "Liste des composants"; }
- QString trFileList()
+ QCString trFileList()
{ return "Liste des fichiers"; }
- QString trHeaderFiles()
+ QCString trHeaderFiles()
{ return "Fichiers d'entête"; }
- QString trCompoundMembers()
+ QCString trCompoundMembers()
{ return "Composants"; }
- QString trFileMembers()
+ QCString trFileMembers()
{ return "Déclarations"; }
- QString trRelatedPages()
+ QCString trRelatedPages()
{ return "Pages associées"; }
- QString trExamples()
+ QCString trExamples()
{ return "Exemples"; }
- QString trSearch()
+ QCString trSearch()
{ return "Recherche"; }
- QString trClassHierarchyDescription()
+ QCString trClassHierarchyDescription()
{ return "Cette liste d'héritage est, autant que possible, "
"classée par ordre alphabétique"; }
- QString trFileListDescription(bool extractAll)
+ QCString trFileListDescription(bool extractAll)
{
- QString result="Liste de tous les fichiers ";
+ QCString result="Liste de tous les fichiers ";
if (!extractAll) result+="documentés ";
result+="avec une brève description :";
return result;
}
- QString trCompoundListDescription()
+ QCString trCompoundListDescription()
{ return "Liste des classes, des strutures et des unions "
"avec une brève description :";
}
- QString trCompoundMembersDescription(bool extractAll)
+ QCString trCompoundMembersDescription(bool extractAll)
{
- QString result="Liste de tous les membres de classe ";
+ QCString result="Liste de tous les membres de classe ";
if (!extractAll) result+="documentés ";
result+="avec les liens vers ";
if (extractAll) result+="la documentation de la classe correspondante :";
else result+="les classes auxquelles ils appartiennent :";
return result;
}
- QString trFileMembersDescription(bool extractAll)
+ QCString trFileMembersDescription(bool extractAll)
{
- QString result="Liste de toutes les déclarations";
+ QCString result="Liste de toutes les déclarations";
if (!extractAll) result+="documentées ";
result+="avec liens sur ";
if (extractAll) result+="la documentation du fichier correspondant "
@@ -135,140 +137,140 @@ class TranslatorFrench : public Translator
else result+="les fichiers dans lesquels elles sont définies :";
return result;
}
- QString trHeaderFilesDescription()
+ QCString trHeaderFilesDescription()
{ return "Liste de tous les fichiers d'entête constituant "
"l'interface de programmation :"; }
- QString trExamplesDescription()
+ QCString trExamplesDescription()
{ return "Liste de tous les exemples :"; }
- QString trRelatedPagesDescription()
+ QCString trRelatedPagesDescription()
{ return "Liste de toutes les pages de documentation associées :"; }
- QString trModulesDescription()
+ QCString trModulesDescription()
{ return "Liste de tous les modules"; }
- QString trNoDescriptionAvailable()
+ QCString trNoDescriptionAvailable()
{ return "Aucune description n'est disponible"; }
- QString trDocumentation()
+ QCString trDocumentation()
{ return "Documentation"; }
- QString trModuleIndex()
+ QCString trModuleIndex()
{ return "Index des modules"; }
- QString trHierarchicalIndex()
+ QCString trHierarchicalIndex()
{ return "Index hiérarchique"; }
- QString trCompoundIndex()
+ QCString trCompoundIndex()
{ return "Index des composants"; }
- QString trFileIndex()
+ QCString trFileIndex()
{ return "Index des fichiers"; }
- QString trModuleDocumentation()
+ QCString trModuleDocumentation()
{ return "Documentation du module"; }
- QString trClassDocumentation()
+ QCString trClassDocumentation()
{ return "Documentation de la classe"; }
- QString trFileDocumentation()
+ QCString trFileDocumentation()
{ return "Documentation du fichier"; }
- QString trExampleDocumentation()
+ QCString trExampleDocumentation()
{ return "Documentation de l'exemple"; }
- QString trPageDocumentation()
+ QCString trPageDocumentation()
{ return "Documentation de la page"; }
- QString trReferenceManual()
+ QCString trReferenceManual()
{ return "Manuel de référence"; }
- QString trDefines()
+ QCString trDefines()
{ return "Définitions des macros"; }
- QString trFuncProtos()
+ QCString trFuncProtos()
{ return "Prototypes des fonctions"; }
- QString trTypedefs()
+ QCString trTypedefs()
{ return "Définitions des types"; }
- QString trEnumerations()
+ QCString trEnumerations()
{ return "Enumérations"; }
- QString trFunctions()
+ QCString trFunctions()
{ return "Fonctions"; }
- QString trVariables()
+ QCString trVariables()
{ return "Variables"; }
- QString trEnumerationValues()
+ QCString trEnumerationValues()
{ return "Eléments énumérés"; }
- QString trReimplementedFrom()
+ QCString trReimplementedFrom()
{ return "Redéfini à partir de"; }
- QString trReimplementedIn()
+ QCString trReimplementedIn()
{ return "Redéfini dans"; }
- QString trAuthor()
+ QCString trAuthor()
{ return "Auteur"; }
- QString trDefineDocumentation()
+ QCString trDefineDocumentation()
{ return "Documentation de la macro"; }
- QString trFunctionPrototypeDocumentation()
+ QCString trFunctionPrototypeDocumentation()
{ return "Documentation du prototype de la fonction"; }
- QString trTypedefDocumentation()
+ QCString trTypedefDocumentation()
{ return "Documentation du type"; }
- QString trEnumerationTypeDocumentation()
+ QCString trEnumerationTypeDocumentation()
{ return "Documentation du type de l'énumeration"; }
- QString trEnumerationValueDocumentation()
+ QCString trEnumerationValueDocumentation()
{ return "Documentation de l'élément de l'énumeration"; }
- QString trFunctionDocumentation()
+ QCString trFunctionDocumentation()
{ return "Documentation de la fonction"; }
- QString trVariableDocumentation()
+ QCString trVariableDocumentation()
{ return "Documentation de la variable"; }
- QString trCompounds()
+ QCString trCompounds()
{ return "Composants"; }
- QString trFiles()
+ QCString trFiles()
{ return "Fichiers"; }
- QString trGeneratedAt(const char *date,const char *projName)
+ QCString trGeneratedAt(const char *date,const char *projName)
{
- QString result=(QString)"Généré le "+date;
- if (projName) result+=(QString)" pour "+projName;
- result+=(QString)" par ";
+ QCString result=(QCString)"Généré le "+date;
+ if (projName) result+=(QCString)" pour "+projName;
+ result+=(QCString)" par ";
return result;
}
- QString trWrittenBy()
+ QCString trWrittenBy()
{
return "écrit par";
}
- QString trClassDiagram(const char *clName)
+ QCString trClassDiagram(const char *clName)
{
- return (QString)"Graphe d'héritage de la classe "+clName;
+ return (QCString)"Graphe d'héritage de la classe "+clName;
}
- QString trForInternalUseOnly()
+ QCString trForInternalUseOnly()
{ return "A usage interne uniquement."; }
- QString trReimplementedForInternalReasons()
+ QCString trReimplementedForInternalReasons()
{ return "Redéfini pour des raisons internes; "
"l'interface n'est pas modifiée";
}
- QString trWarning()
+ QCString trWarning()
{ return "Avertissement"; }
- QString trBugsAndLimitations()
+ QCString trBugsAndLimitations()
{ return "Bogues et limitations"; }
- QString trVersion()
+ QCString trVersion()
{ return "Version"; }
- QString trDate()
+ QCString trDate()
{ return "Date"; }
- QString trAuthors()
+ QCString trAuthors()
{ return "Auteur(s)"; }
- QString trReturns()
+ QCString trReturns()
{ return "Renvoie"; }
- QString trSeeAlso()
+ QCString trSeeAlso()
{ return "Voir également"; }
- QString trParameters()
+ QCString trParameters()
{ return "Paramètres"; }
- QString trExceptions()
+ QCString trExceptions()
{ return "Exceptions"; }
- QString trGeneratedBy()
+ QCString trGeneratedBy()
{ return "Généré par"; }
// new since 0.49-990307
- virtual QString trNamespaces()
+ virtual QCString trNamespaces()
{ return "Namespaces"; }
- virtual QString trNamespaceList()
+ virtual QCString trNamespaceList()
{ return "Liste des Namespaces"; }
- virtual QString trNamespaceListDescription(bool extractAll)
+ virtual QCString trNamespaceListDescription(bool extractAll)
{
- QString result="Liste de tous les namespaces ";
+ QCString result="Liste de tous les namespaces ";
if (!extractAll) result+="documentés ";
result+="avec une brève description :";
return result;
}
- virtual QString trFriends()
+ virtual QCString trFriends()
{ return "Friends"; }
// new since 0.49-990405
- virtual QString trRelatedFunctionDocumentation()
+ virtual QCString trRelatedFunctionDocumentation()
{ return "Documentation des fonctions amies et associées"; }
};
diff --git a/src/translator_it.h b/src/translator_it.h
index 316f43a..e2f76dc 100644
--- a/src/translator_it.h
+++ b/src/translator_it.h
@@ -4,6 +4,9 @@
*
* Copyright (C) 1997-1999 by Dimitri van Heesch.
*
+ * Initial Italian Translation by Ahmed Aldo Faisal
+ * Revised and completed by Alessandro Falappa (June 1999)
+ *
* 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
@@ -17,250 +20,360 @@
#ifndef TRANSLATOR_IT_H
#define TRANSLATOR_IT_H
-#include <qstring.h>
+#include "translator.h"
class TranslatorItalian : public Translator
{
public:
- QString latexBabelPackage()
+ QCString latexBabelPackage()
{ return "italian"; }
- QString trInherits()
+ QCString trInherits()
{ return "eredita"; }
- QString trAnd()
+ QCString trAnd()
{ return "e"; }
- QString trInheritedBy()
- { return "Ereditato da"; }
- QString trRelatedFunctions()
- { return "Funzioni relative"; }
- QString trRelatedSubscript()
- { return "(Nota che questo no sono funzioni membro)"; }
- QString trDetailedDescription()
+ QCString trInheritedBy()
+ //{ return "Ereditato da"; }
+ { return "Ereditate da"; }
+ QCString trRelatedFunctions()
+ //{ return "Funzioni relative"; }
+ { return "Funzioni collegate"; }
+ QCString trRelatedSubscript()
+ //{ return "(Nota che questo no sono funzioni membro)"; }
+ { return "(Attenzione, queste non sono funzioni membro)"; }
+ QCString trDetailedDescription()
{ return "Descrizione dettagliata"; }
- QString trMemberTypedefDocumentation()
- { return "Documentazione dei membri Typedef"; }
- QString trMemberEnumerationDocumentation()
- { return "Documentazione dei membri enumerati"; }
- QString trEnumerationValueDocumentation()
- { return "Documentazione dei tipi enumerati"; }
- QString trMemberFunctionDocumentation()
+ QCString trMemberTypedefDocumentation()
+ //{ return "Documentazione dei membri Typedef"; }
+ { return "Documentazione delle ridefinizioni dei tipi (typedef)"; }
+ QCString trMemberEnumerationDocumentation()
+ //{ return "Documentazione dei membri enumerati"; }
+ { return "Documentazione dei tipi enumerati (enum)"; }
+ QCString trEnumerationValueDocumentation()
+ { return "Documentazione dei valori dei tipi enumerati"; }
+ QCString trMemberFunctionDocumentation()
{ return "Documentazione delle funzioni membro"; }
- QString trMemberDataDocumentation()
+ QCString trMemberDataDocumentation()
{ return "Documentazione dei dati membro"; }
- QString trGeneratedFrom(const char *s,bool single)
+ QCString trGeneratedFrom(const char *s,bool single)
{
- QString result=(QString)"La documentazione di questa "+s+
- " e stata generata dal seguente file";
- if (single) result+=":"; else result+=":";
+ QCString result=(QCString)"La documentazione di questa "+s+
+ " è stata generata a partire";
+ if (single) result+=" dal seguente file:";
+ else result+=" dai seguenti files:";
return result;
}
- QString trMore()
+ QCString trMore()
{ return "Continua..."; }
- QString trReference()
+ QCString trReference()
{ return "Riferimento"; }
- QString trListOfAllMembers()
- { return "Lista di tuti i memberi."; }
- QString trMemberList()
- { return "Lista membri"; }
- QString trThisIsTheListOfAllMembers()
- { return "Questa e la lista completa di tutti i membri"; }
- QString trIncludingInheritedMembers()
- { return "includendo tutti i membri ereditati."; }
- QString trGeneratedAutomatically(const char *s)
- { QString result="Generato automaticalmenta da Doxygen";
- if (s) result+=(QString)" per "+s;
- result+=" dall codice.";
+ QCString trListOfAllMembers()
+ { return "Lista di tutti i membri."; }
+ QCString trMemberList()
+ { return "Lista dei membri"; }
+ QCString trThisIsTheListOfAllMembers()
+ { return "Questa è la lista completa di tutti i membri di "; }
+ QCString trIncludingInheritedMembers()
+ { return ", includendo tutti i membri ereditati."; }
+ QCString trGeneratedAutomatically(const char *s)
+ {
+ QCString result="Generato automaticamente da Doxygen";
+ if (s) result+=(QCString)" per "+s;
+ result+=" a partire dal codice sorgente.";
return result;
}
- QString trEnumName()
- { return "nome dell enum"; }
- QString trEnumValue()
- { return "valore dell enum"; }
- QString trDefinedIn()
+ QCString trEnumName()
+ { return "nome di tipo enumerato"; }
+ QCString trEnumValue()
+ { return "valore di tipo enumerato"; }
+ QCString trDefinedIn()
{ return "definito in"; }
- QString trIncludeFile()
+ QCString trIncludeFile()
{ return "Include il file"; }
- QString trVerbatimText(const char *f)
- { return (QString)"Questo e il contenuto verbatim dell file "+f+"."; }
- QString trModules()
+ QCString trVerbatimText(const char *f)
+ { return (QCString)"Questo è il contenuto integrale dell file "+f+"."; }
+ QCString trModules()
{ return "Moduli"; }
- QString trClassHierarchy()
- { return "gerarchia delle classi"; }
- QString trCompoundList()
- { return "Lista dei tipi composti"; }
- QString trFileList()
- { return "Lista dei file"; }
- QString trHeaderFiles()
- { return "List dei fei file header"; }
- QString trCompoundMembers()
- { return "Membri composti"; }
- QString trFileMembers()
- { return "Membri dell file"; }
- QString trRelatedPages()
- { return "Relativo a pagina"; }
- QString trExamples()
- { return "Esempio"; }
- QString trSearch()
- { return "Ricerca"; }
- QString trClassHierarchyDescription()
- { return "Qua sono la lista delle classi, structs e unions"
- "gesorte:";
+ QCString trClassHierarchy()
+ { return "Gerarchia delle classi"; }
+ QCString trCompoundList()
+ { return "Lista dei composti"; }
+ QCString trFileList()
+ { return "Lista dei files"; }
+ QCString trHeaderFiles()
+ { return "Lista dei file header"; }
+ QCString trCompoundMembers()
+ { return "Membri dei composti"; }
+ QCString trFileMembers()
+ { return "Membri dei files"; }
+ QCString trRelatedPages()
+ { return "Pagine collegate"; }
+ QCString trExamples()
+ { return "Esempi"; }
+ QCString trSearch()
+ { return "Cerca"; }
+ QCString trClassHierarchyDescription()
+ {
+ return "Questa lista di ereditarietà è ordinata "
+ "approssimativamente, ma non completamente, in ordine alfabetico:";
}
- QString trFileListDescription(bool extractAll)
+ QCString trFileListDescription(bool extractAll)
{
- QString result="Hieronder volgt de lijst met alle ";
- if (!extractAll) result+="gedocumenteerde ";
- result+="files, elk met een korte beschrijving:";
+ QCString result="Questa è una lista ";
+ if (!extractAll) result+="dei files documentati ";
+ else result+="di tutti i files ";
+ result+="con una loro breve descrizione:";
return result;
}
- QString trCompoundListDescription()
- { return "Hieronder volgen de klassen, structs en "
- "unions met voor elk een korte beschrijving:";
+ QCString trCompoundListDescription()
+ { return "Queste sono le classi, structs e "
+ "unions con una loro breve descrizione:";
}
- QString trCompoundMembersDescription(bool extractAll)
+ QCString trCompoundMembersDescription(bool extractAll)
{
- QString result="Hieronder volgt de lijst met alle ";
- if (!extractAll) result+="gedocumenteerde ";
- result+="klasse members met links naar ";
- if (extractAll) result+="de klasse Documentazione voor elke member:";
- else result+="de klassen waartoe ze behoren:";
+ QCString result="Questa è una lista ";
+ if (!extractAll) result+="dei membri documentati, ";
+ else result+="di tutti i membri ";
+ result+="con collegamenti ";
+ if (extractAll) result+="alla documentazione della classe di ciascun membro:";
+ else result+="alla documentazione delle classi a cui appartengono:";
return result;
}
- QString trFileMembersDescription(bool extractAll)
+ QCString trFileMembersDescription(bool extractAll)
{
- QString result="Hieronder volgt de lijst met alle ";
- if (!extractAll) result+="gedocumenteerde ";
- result+="file members met links naar ";
- if (extractAll) result+="de file Documentazione voor elke member:";
- else result+="de files waartoe ze behoren:";
+ QCString result="Questa è una lista ";
+ if (!extractAll) result+="dei membri dei files documentati, ";
+ else result+="di tutti i membri dei files ";
+ result+="con collegamenti ";
+ if (extractAll) result+="alla documentazione del file di ciascun membro:";
+ else result+="alla documentazione dei files a cui appartengono:";
return result;
}
- QString trHeaderFilesDescription()
- { return "Hieronder volgen de header files die de API vormen:"; }
- QString trExamplesDescription()
- { return "Hieronder volgt de lijst met alle voorbeelden:"; }
- QString trRelatedPagesDescription()
- { return "Hieronder volgt de lijst met alle pagina's die gerelateerde Documentazione bevatten:"; }
- QString trModulesDescription()
- { return "Hieronder volgt de lijst met alle modules:"; }
- QString trNoDescriptionAvailable()
- { return "Geen korte beschrijving beschikbaar"; }
+ QCString trHeaderFilesDescription()
+ { return "Questi sono gli header files che compongono l'API:"; }
+ QCString trExamplesDescription()
+ { return "Questa è la lista di tutti gli esempi:"; }
+ QCString trRelatedPagesDescription()
+ { return "Questa è la lista di tutte le pagine di documentazione collegate fra loro:"; }
+ QCString trModulesDescription()
+ { return "Questa è la lista di tutti i moduli:"; }
+ QCString trNoDescriptionAvailable()
+ { return "Descrizione non disponibile"; }
- QString trDocumentation()
+ QCString trDocumentation()
{ return "Documentazione"; }
- QString trModuleIndex()
- { return "Module Index"; }
- QString trHierarchicalIndex()
- { return "Hi&euml;rarchische Index"; }
- QString trCompoundIndex()
- { return "Compound Index"; }
- QString trFileIndex()
- { return "File Index"; }
- QString trModuleDocumentation()
- { return "Module Documentazione"; }
- QString trClassDocumentation()
- { return "Klasse Documentazione"; }
- QString trFileDocumentation()
- { return "File Documentazione"; }
- QString trExampleDocumentation()
- { return "Documentazione di voorbeelden"; }
- QString trPageDocumentation()
- { return "Documentazione di gerelateerde pagina's"; }
- QString trReferenceManual()
- { return "Naslagwerk"; }
+ QCString trModuleIndex()
+ { return "Indice dei moduli"; }
+ QCString trHierarchicalIndex()
+ { return "Indice della gerarchia"; }
+ QCString trCompoundIndex()
+ { return "Indice dei composti"; }
+ QCString trFileIndex()
+ { return "Indice dei files"; }
+ QCString trModuleDocumentation()
+ { return "Documentazione dei moduli"; }
+ QCString trClassDocumentation()
+ { return "Documentazione delle classi"; }
+ QCString trFileDocumentation()
+ { return "Documentazione dei files"; }
+ QCString trExampleDocumentation()
+ { return "Documentazione degli esempi"; }
+ QCString trPageDocumentation()
+ { return "Documentazione delle pagine"; }
+ QCString trReferenceManual()
+ { return "Manuale di riferimento"; }
- QString trDefines()
- { return "Defines"; }
- QString trFuncProtos()
- { return "Functie Prototypes"; }
- QString trTypedefs()
+ QCString trDefines()
+ { return "Definizioni"; }
+ QCString trFuncProtos()
+ { return "Prototipi delle funzioni"; }
+ QCString trTypedefs()
{ return "Typedefs"; }
- QString trEnumerations()
- { return "Enumeraties"; }
- QString trFunctions()
- { return "Functies"; }
- QString trVariables()
- { return "Variabelen"; }
- QString trEnumerationValues()
- { return "Enumeratie waarden"; }
- QString trReimplementedFrom()
- { return "Nieuwe implementatie di"; }
- QString trReimplementedIn()
- { return "Opnieuw ge&iuml;mplementeerd in"; }
- QString trAuthor()
- { return "auteur"; }
- QString trDefineDocumentation()
- { return "Lista "; }
- QString trFunctionPrototypeDocumentation()
- { return "Documentazione di functie Prototypes"; }
- QString trTypedefDocumentation()
- { return "Documentazione di typedefs"; }
- QString trEnumerationTypeDocumentation()
- { return "Documentazione di enumeratie types"; }
- QString trFunctionDocumentation()
- { return "Documentazione di functies"; }
- QString trVariableDocumentation()
- { return "Lista variabelen"; }
- QString trCompounds()
- { return "Compounds"; }
- QString trFiles()
+ QCString trEnumerations()
+ { return "Tipi enumerati"; }
+ QCString trFunctions()
+ { return "Funzioni"; }
+ QCString trVariables()
+ { return "Variabili"; }
+ QCString trEnumerationValues()
+ { return "Valori dei tipi enumerati"; }
+ QCString trReimplementedFrom()
+ { return "Nuova implementazione di"; }
+ QCString trReimplementedIn()
+ { return "Reimplementato in"; }
+ QCString trAuthor()
+ { return "Autore"; }
+ QCString trDefineDocumentation()
+ { return "Documentazione delle definizioni"; }
+ QCString trFunctionPrototypeDocumentation()
+ { return "Documentazione dei prototipi delle funzioni"; }
+ QCString trTypedefDocumentation()
+ { return "Documentazione dei typedefs"; }
+ QCString trEnumerationTypeDocumentation()
+ { return "Documentazione dei tipi enumerati"; }
+ QCString trFunctionDocumentation()
+ { return "Documentazione delle funzioni"; }
+ QCString trVariableDocumentation()
+ { return "Documentazione delle variabili"; }
+ QCString trCompounds()
+ { return "Composti"; }
+ QCString trFiles()
{ return "Files"; }
- QString trGeneratedAt(const char *date,const char *projName)
+ QCString trGeneratedAt(const char *date,const char *projName)
{
- QString result=(QString)"Gegenereerd op "+date;
- if (projName) result+=(QString)" voor "+projName;
- result+=(QString)" door";
+ QCString result=(QCString)"Generato il "+date;
+ if (projName) result+=(QCString)" per "+projName;
+ result+=(QCString)" da";
return result;
}
- QString trWrittenBy()
+ QCString trWrittenBy()
{
- return "geschreven door";
+ return "scritto da";
}
- QString trClassDiagram(const char *clName)
+ QCString trClassDiagram(const char *clName)
{
- return (QString)"Klasse diagram voor "+clName;
+ return (QCString)"Diagramma delle classi per "+clName;
}
- QString trForInternalUseOnly()
- { return "Alleen voor intern gebruik."; }
- QString trReimplementedForInternalReasons()
- { return "Om interne rederene opnieuwd ge&iuml;mplemented; "
- "de API wordt er niet door be&iuml;nvloed.";
+ QCString trForInternalUseOnly()
+ { return "Solo per uso interno."; }
+ QCString trReimplementedForInternalReasons()
+ { return "Reimplementato per motivi interni; "
+ "l'API non è stata modificata.";
}
- QString trWarning()
- { return "Waarschuwing"; }
- QString trBugsAndLimitations()
- { return "Fouten en beperkingen"; }
- QString trVersion()
- { return "Versie"; }
- QString trDate()
- { return "Datum"; }
- QString trAuthors()
- { return "Auteur(s)"; }
- QString trReturns()
- { return "Retourneerd"; }
- QString trSeeAlso()
- { return "Zie ook"; }
- QString trParameters()
- { return "Parameters"; }
- QString trExceptions()
- { return "Excepties"; }
- QString trGeneratedBy()
- { return "Gegenereerd door"; }
+ QCString trWarning()
+ { return "Attenzione"; }
+ QCString trBugsAndLimitations()
+ { return "Bugs e limitazioni"; }
+ QCString trVersion()
+ { return "Versione"; }
+ QCString trDate()
+ { return "Data"; }
+ QCString trAuthors()
+ { return "Autore(i)"; }
+ QCString trReturns()
+ { return "Restituisce"; }
+ QCString trSeeAlso()
+ { return "Vedi anche"; }
+ QCString trParameters()
+ { return "Parametri"; }
+ QCString trExceptions()
+ { return "Eccezioni"; }
+ QCString trGeneratedBy()
+ { return "Generato da"; }
- // new since 0.49-990307
+//////////////////////////////////////////////////////////////////////////
+// new since 0.49-990307
+//////////////////////////////////////////////////////////////////////////
- QString trNamespaces()
+ QCString trNamespaces()
{ return "Namespaces"; }
- QString trNamespaceList()
- { return "Namespace Lijst"; }
- QString trNamespaceListDescription(bool extractAll)
+ QCString trNamespaceList()
+ { return "Lista dei namespaces"; }
+ QCString trNamespaceListDescription(bool extractAll)
{
- QString result="Hier is een lijst met alle ";
- if (!extractAll) result+="gedocumenteerde ";
- result+="namespaces met voor elk een korte beschrijving:";
+ QCString result="Questa è la lista ";
+ if (!extractAll) result+="dei namespaces documentati, ";
+ else result+="di tutti i namespaces ";
+ result+="con una loro breve descrizione:";
return result;
}
- QString trFriends()
+ QCString trFriends()
{ return "Friends"; }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 0.49-990405
+//////////////////////////////////////////////////////////////////////////
+
+ QCString trRelatedFunctionDocumentation()
+ { return "Documentazione dei friends e delle funzioni collegate"; }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 0.49-990425
+//////////////////////////////////////////////////////////////////////////
+
+ QCString trCompoundReference(const char *clName,
+ ClassDef::CompoundType compType)
+ {
+ QCString result="Riferimenti per la";
+ switch(compType)
+ {
+ case ClassDef::Class: result+=" classe"; break;
+ case ClassDef::Struct: result+=" struct"; break;
+ case ClassDef::Union: result+=" union"; break;
+ }
+ result+=" "+(QCString)clName;
+ return result;
+ }
+ QCString trFileReference(const char *fileName)
+ {
+ QCString result="Riferimenti per il file ";
+ result+=(QCString)fileName;
+ return result;
+ }
+ QCString trNamespaceReference(const char *namespaceName)
+ {
+ QCString result="Riferimenti per il namespace ";
+ result+=(QCString)namespaceName;
+ return result;
+ }
+
+ // these are for the member sections of a class, struct or union
+ QCString trPublicMembers()
+ { return "Membri pubblici"; }
+ QCString trPublicSlots()
+ { return "Slots pubblici"; }
+ QCString trSignals()
+ { return "Signals"; }
+ QCString trStaticPublicMembers()
+ { return "Membri pubblici statici"; }
+ QCString trProtectedMembers()
+ { return "Membri protetti"; }
+ QCString trProtectedSlots()
+ { return "Slots protetti"; }
+ QCString trStaticProtectedMembers()
+ { return "Membri protetti statici"; }
+ QCString trPrivateMembers()
+ { return "Membri privati"; }
+ QCString trPrivateSlots()
+ { return "Slots privati"; }
+ QCString trStaticPrivateMembers()
+ { return "Membri privati statici"; }
+
+
+ QCString trInheritsList(int numEntries)
+ {
+ return "Eredita da "+trWriteList(numEntries)+".";
+ }
+ QCString trInheritedByList(int numEntries)
+ {
+ return "Base per "+trWriteList(numEntries)+".";
+ }
+ QCString trReimplementedFromList(int numEntries)
+ {
+ return "Reimplementa "+trWriteList(numEntries)+".";
+ }
+ QCString trReimplementedInList(int numEntries)
+ {
+ return "Reimplementata in "+trWriteList(numEntries)+".";
+ }
+
+ QCString trNamespaceMembers()
+ { return "Membri dei namespaces"; }
+ QCString trNamespaceMemberDescription(bool extractAll)
+ {
+ QCString result="Questa è la lista ";
+ if (!extractAll) result+="dei membri dei namespaces documentati, ";
+ else result+="di tutti i membri dei namespaces ";
+ result+="con collegamenti ";
+ if (extractAll)
+ result+="alla documentazione del namespace per ciascun membro:";
+ else
+ result+="ai namespaces a cui appartengono:";
+ return result;
+ }
+ QCString trNamespaceIndex()
+ { return "Indice dei namespaces"; }
+ QCString trNamespaceDocumentation()
+ { return "Documentazione dei namespaces"; }
};
#endif
diff --git a/src/translator_jp.h b/src/translator_jp.h
new file mode 100644
index 0000000..a2e2bfd
--- /dev/null
+++ b/src/translator_jp.h
@@ -0,0 +1,268 @@
+/******************************************************************************
+ *
+ * $Id$
+ *
+ * Copyright (C) 1997-1999 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.
+ *
+ * All output generated with Doxygen is not covered by this license.
+ *
+ */
+
+#ifndef TRANSLATOR_JP_H
+#define TRANSLATOR_JP_H
+
+#include "translator.h"
+
+class TranslatorJapanese : public Translator
+{
+ public:
+ QCString latexBabelPackage()
+ { return "a4j"; }
+ QCString trInherits()
+ { return "·Ñ¾µ"; }
+ QCString trAnd()
+ { return "¤È"; }
+ QCString trInheritedBy()
+ { return "¼¡¤Ë·Ñ¾µ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£"; }
+ QCString trRelatedFunctions()
+ { return "´ØÏ¢¤¹¤ë´Ø¿ô"; }
+ QCString trRelatedSubscript()
+ { return "¡Ê¤³¤ì¤é¤Ï¥á¥ó¥Ð´Ø¿ô¤Ç¤Ê¤¤¤³¤È¤ËÃí°Õ¡Ë"; }
+ QCString trDetailedDescription()
+ { return "²òÀâ"; }
+ QCString trMemberTypedefDocumentation()
+ { return "¥á¥ó¥Ð·¿ÄêµÁ¤Î²òÀâ"; }
+ QCString trMemberEnumerationDocumentation()
+ { return "¥á¥ó¥ÐÎóµó·¿¤Î²òÀâ"; }
+ QCString trEnumerationValueDocumentation()
+ { return "Îóµó·¿ÃͤβòÀâ"; }
+ QCString trMemberFunctionDocumentation()
+ { return "¥á¥ó¥Ð´Ø¿ô¤Î²òÀâ"; }
+ QCString trMemberDataDocumentation()
+ { return "¥á¥ó¥Ð¥Ç¡¼¥¿¤Î²òÀâ"; }
+ QCString trGeneratedFrom(const char *s,bool)
+ {
+ QCString result=(QCString)"¤³¤Î"+s+
+ "¤ËÂФ¹¤ë¥É¥­¥å¥á¥ó¥È¤Ï°Ê²¼¤Î¥Õ¥¡¥¤¥ë¤«¤éÀ¸À®¤µ¤ì¤Þ¤·¤¿¡£";
+ return result;
+ }
+ QCString trMore()
+ { return "¤è¤ê¾Ü¤·¤¯..."; }
+ QCString trReference()
+ { return "¥ê¥Õ¥¡¥ì¥ó¥¹"; }
+ QCString trListOfAllMembers()
+ { return "¤¹¤Ù¤Æ¤Î¥á¥ó¥Ð¥ê¥¹¥È"; }
+ QCString trMemberList()
+ { return "¥á¥ó¥Ð¥ê¥¹¥È"; }
+ QCString trThisIsTheListOfAllMembers()
+ { return "¤³¤ì¤Ï¼¡¤ÎÁ´¥á¥ó¥Ð¥ê¥¹¥È¤Ç¤¹¡£"; }
+ QCString trIncludingInheritedMembers()
+ { return "·Ñ¾µ¥á¥ó¥Ð¤¹¤Ù¤Æ¤ò´Þ¤ó¤Ç¡£"; }
+ QCString trGeneratedAutomatically(const char *s)
+ { QCString result;
+ if (s) result=(QCString)s+"¤ËÂФ·¤Æ";
+ result+="¥½¡¼¥¹¥³¡¼¥É¤«¤é Doxygen ¤¬¼«Æ°Åª¤ËÀ¸À®¤·¤Þ¤·¤¿¡£";
+ return result;
+ }
+ QCString trEnumName()
+ { return "enum ·¿"; }
+ QCString trEnumValue()
+ { return "enum ÃÍ"; }
+ QCString trDefinedIn()
+ { return "¼¡¤ÇÄêµÁ¤µ¤ì¤Þ¤·¤¿¡£"; }
+ QCString trIncludeFile()
+ { return "¥¤¥ó¥¯¥ë¡¼¥É¥Õ¥¡¥¤¥ë"; }
+ QCString trVerbatimText(const char *f)
+ { return (QCString)"¤³¤ì¤Ï¥¤¥ó¥¯¥ë¡¼¥É¥Õ¥¡¥¤¥ë"+f+
+ "¤Î Verbatim ¥Æ¥­¥¹¥È¤Ç¤¹¡£"; }
+ QCString trModules()
+ { return "¥â¥¸¥å¡¼¥ë"; }
+ QCString trClassHierarchy()
+ { return "¥¯¥é¥¹³¬ÁØ"; }
+ QCString trCompoundList()
+ { return "¥Ç¡¼¥¿¹½Â¤¥ê¥¹¥È"; }
+ QCString trFileList()
+ { return "¥Õ¥¡¥¤¥ë¥ê¥¹¥È"; }
+ QCString trHeaderFiles()
+ { return "¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë"; }
+ QCString trCompoundMembers()
+ { return "¥Ç¡¼¥¿¹½Â¤¥á¥ó¥Ð"; }
+ QCString trFileMembers()
+ { return "¥Õ¥¡¥¤¥ë¥á¥ó¥Ð"; }
+ QCString trRelatedPages()
+ { return "´ØÏ¢¥Ú¡¼¥¸"; }
+ QCString trExamples()
+ { return "Îã"; }
+ QCString trSearch()
+ { return "¸¡º÷"; }
+ QCString trClassHierarchyDescription()
+ { return "¤³¤Î·Ñ¾µ¥ê¥¹¥È¤Ï¤ª¤ª¤Þ¤«¤Ë¤Ï¥½¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤¹¤¬¡¢"
+ "¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È½ç¤Ç´°Á´¤Ë¥½¡¼¥È¤µ¤ì¤Æ¤Ï¤¤¤Þ¤»¤ó¡£";
+ }
+ QCString trFileListDescription(bool extractAll)
+ {
+ QCString result="¤³¤Î¥ê¥¹¥È¤Ï¡¢";
+ if (!extractAll) result+="¥É¥­¥å¥á¥ó¥È²½¤µ¤ì¡¢";
+ result+="´Ê°×ÀâÌÀ¤ò»ý¤Ä¥Õ¥¡¥¤¥ë¤¹¤Ù¤Æ¤Î¥ê¥¹¥È¤Ç¤¹¡£";
+ return result;
+ }
+ QCString trCompoundListDescription()
+ { return "¤³¤ì¤Ï´Ê°×ÀâÌÀ¤ò»ý¤Ä¡¢¥¯¥é¥¹¡¢¹½Â¤ÂΡ¢¶¦ÍÑÂΤΥꥹ¥È¤Ç¤¹¡£";}
+ QCString trCompoundMembersDescription(bool extractAll)
+ {
+ QCString result="¤³¤ì¤Ï";
+ if (!extractAll) result+="¥É¥­¥å¥á¥ó¥È²½¤µ¤ì¤¿";
+ result+="¥¯¥é¥¹¥á¥ó¥Ð¤¹¤Ù¤Æ¤Î¥ê¥¹¥È¤Ç¡¢¤½¤ì¤¾¤ì";
+ if (extractAll) result+="¤¬Â°¤·¤Æ¤¤¤ë¥¯¥é¥¹";
+ result+="¤Î²òÀâ¤Ø¤Î¥ê¥ó¥¯¤¬Ä¥¤é¤ì¤Æ¤¤¤Þ¤¹¡£";
+ return result;
+ }
+ QCString trFileMembersDescription(bool extractAll)
+ {
+ QCString result="¤³¤ì¤Ï";
+ if (!extractAll) result+="¥É¥­¥å¥á¥ó¥È²½¤µ¤ì¤¿";
+ result+="¥Õ¥¡¥¤¥ë¥á¥ó¥Ð¤¹¤Ù¤Æ¤Î¥ê¥¹¥È¤Ç¡¢¤½¤ì¤¾¤ì";
+ if (extractAll) result+="¤¬Â°¤·¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë";
+ result+="¤Î²òÀâ¤Ø¤Î¥ê¥ó¥¯¤¬Ä¥¤é¤ì¤Æ¤¤¤Þ¤¹¡£";
+ return result;
+ }
+ QCString trHeaderFilesDescription()
+ { return "API¤ò¹½À®¤¹¤ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤Ç¤¹¡£"; }
+ QCString trExamplesDescription()
+ { return "¤¹¤Ù¤Æ¤ÎÎã¤Î¥ê¥¹¥È¤Ç¤¹¡£"; }
+ QCString trRelatedPagesDescription()
+ { return "´ØÏ¢¤¹¤ë¥É¥­¥å¥á¥ó¥È¥Ú¡¼¥¸¤¹¤Ù¤Æ¤Î¥ê¥¹¥È¤Ç¤¹¡£"; }
+ QCString trModulesDescription()
+ { return "¤¹¤Ù¤Æ¤Î¥â¥¸¥å¡¼¥ë¤Î¥ê¥¹¥È¤Ç¤¹¡£"; }
+ QCString trNoDescriptionAvailable()
+ { return "¥É¥­¥å¥á¥ó¥È¤¬µ­½Ò¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£"; }
+
+ QCString trDocumentation()
+ { return "¥É¥­¥å¥á¥ó¥È"; }
+ QCString trModuleIndex()
+ { return "¥â¥¸¥å¡¼¥ëº÷°ú"; }
+ QCString trHierarchicalIndex()
+ { return "³¬Áغ÷°ú"; }
+ QCString trCompoundIndex()
+ { return "¥Ç¡¼¥¿¹½Â¤º÷°ú"; }
+ QCString trFileIndex()
+ { return "¥Õ¥¡¥¤¥ëº÷°ú"; }
+ QCString trModuleDocumentation()
+ { return "¥â¥¸¥å¡¼¥ë¤Î²òÀâ"; }
+ QCString trClassDocumentation()
+ { return "¥¯¥é¥¹¤Î²òÀâ"; }
+ QCString trFileDocumentation()
+ { return "¥Õ¥¡¥¤¥ë¤Î²òÀâ"; }
+ QCString trExampleDocumentation()
+ { return "ÎãÂê¤Î²òÀâ"; }
+ QCString trPageDocumentation()
+ { return "¥Ú¡¼¥¸¤Î²òÀâ"; }
+ QCString trReferenceManual()
+ { return "¥ê¥Õ¥¡¥ì¥ó¥¹¥Þ¥Ë¥å¥¢¥ë"; }
+
+ QCString trDefines()
+ { return "¥Þ¥¯¥íÄêµÁ"; }
+ QCString trFuncProtos()
+ { return "´Ø¿ô¥×¥í¥È¥¿¥¤¥×"; }
+ QCString trTypedefs()
+ { return "·¿ÄêµÁ"; }
+ QCString trEnumerations()
+ { return "Îóµó·¿"; }
+ QCString trFunctions()
+ { return "´Ø¿ô"; }
+ QCString trVariables()
+ { return "ÊÑ¿ô"; }
+ QCString trEnumerationValues()
+ { return "Îóµó·¿ÃÍ"; }
+ QCString trReimplementedFrom()
+ { return "¼¡¤òºÆÄêµÁ"; }
+ QCString trReimplementedIn()
+ { return "¼¡¤ÇºÆÄêµÁ"; }
+ QCString trAuthor()
+ { return "ºî¼Ô"; }
+ QCString trDefineDocumentation()
+ { return "¥Þ¥¯¥íÄêµÁ¤Î²òÀâ"; }
+ QCString trFunctionPrototypeDocumentation()
+ { return "´Ø¿ô¥×¥í¥È¥¿¥¤¥×¤Î²òÀâ"; }
+ QCString trTypedefDocumentation()
+ { return "·¿ÄêµÁ¤Î²òÀâ"; }
+ QCString trEnumerationTypeDocumentation()
+ { return "Îóµó·¿¤Î²òÀâ"; }
+ QCString trFunctionDocumentation()
+ { return "´Ø¿ô¤Î²òÀâ"; }
+ QCString trVariableDocumentation()
+ { return "ÊÑ¿ô¤Î²òÀâ"; }
+ QCString trCompounds()
+ { return "¥Ç¡¼¥¿¹½Â¤"; }
+ QCString trFiles()
+ { return "¥Õ¥¡¥¤¥ë"; }
+ QCString trGeneratedAt(const char *date,const char *projName)
+ {
+ QCString result;
+ if (projName) result+=(QCString)projName+"¤ËÂФ·¤Æ";
+ result+=(QCString)date+"¤ËÀ¸À®¤µ¤ì¤Þ¤·¤¿¡£";
+ return result;
+ }
+ QCString trWrittenBy()
+ {
+ return "¤ò³«È¯¤·¤¿¤Î¤Ï";
+ }
+ QCString trClassDiagram(const char *clName)
+ {
+ return (QCString)clName+"¤ËÂФ¹¤ë¥¯¥é¥¹³¬ÁØ¿Þ";
+ }
+ QCString trForInternalUseOnly()
+ { return "ÆâÉô»ÈÍѤΤߡ£"; }
+ QCString trReimplementedForInternalReasons()
+ { return "ÆâÉôŪ¤ÊÍýͳ¤Ë¤è¤êºÆ¼ÂÁõ¤µ¤ì¤Þ¤·¤¿¤¬¡¢API¤Ë¤Ï±Æ¶Á¤·¤Þ¤»¤ó¡£";
+ }
+ QCString trWarning()
+ { return "Ãí°Õ"; }
+ QCString trBugsAndLimitations()
+ { return "¥Ð¥°¤ÈÀ©¸Â"; }
+ QCString trVersion()
+ { return "¥Ð¡¼¥¸¥ç¥ó"; }
+ QCString trDate()
+ { return "ÆüÉÕ"; }
+ QCString trAuthors()
+ { return "ºî¼Ô"; }
+ QCString trReturns()
+ { return "Ìá¤êÃÍ"; }
+ QCString trSeeAlso()
+ { return "»²¾È"; }
+ QCString trParameters()
+ { return "°ú¿ô"; }
+ QCString trExceptions()
+ { return "Îã³°"; }
+ QCString trGeneratedBy()
+ { return ""; }
+
+ // new since 0.49-990307
+
+ QCString trNamespaces()
+ { return "̾Á°¶õ´Ö"; }
+ QCString trNamespaceList()
+ { return "̾Á°¶õ´Ö¥ê¥¹¥È"; }
+ QCString trNamespaceListDescription(bool extractAll)
+ {
+ QCString result="¤³¤Î¥ê¥¹¥È¤Ï¡¢´Ê°×ÀâÌÀ¤ò»ý¤Ä¤¹¤Ù¤Æ¤Î";
+ if (!extractAll) result+="¥É¥­¥å¥á¥ó¥È²½¤µ¤ì¤¿";
+ result+="̾Á°¶õ´Ö¤Î¥ê¥¹¥È¤Ç¤¹¡£";
+ return result;
+ }
+ QCString trFriends()
+ { return "¥Õ¥ì¥ó¥É"; }
+
+ // new since 0.49-990405
+
+ virtual QCString trRelatedFunctionDocumentation()
+ { return "¥Õ¥ì¥ó¥É¤È´ØÏ¢¤¹¤ë´Ø¿ô¤Î²òÀâ"; }
+};
+
+#endif
diff --git a/src/translator_nl.h b/src/translator_nl.h
index c9a96bc..f5ceea9 100644
--- a/src/translator_nl.h
+++ b/src/translator_nl.h
@@ -17,253 +17,253 @@
#ifndef TRANSLATOR_NL_H
#define TRANSLATOR_NL_H
-#include <qstring.h>
+#include "translator.h"
class TranslatorDutch : public Translator
{
public:
- QString latexBabelPackage()
+ QCString latexBabelPackage()
{ return "dutch"; }
- QString trRelatedFunctions()
+ QCString trRelatedFunctions()
{ return "Gerelateerde functies"; }
- QString trRelatedSubscript()
+ QCString trRelatedSubscript()
{ return "(Merk op dat dit geen member functies zijn.)"; }
- QString trDetailedDescription()
+ QCString trDetailedDescription()
{ return "Gedetaileerde Beschrijving"; }
- QString trMemberTypedefDocumentation()
+ QCString trMemberTypedefDocumentation()
{ return "Documentatie van type definitie members"; }
- QString trMemberEnumerationDocumentation()
+ QCString trMemberEnumerationDocumentation()
{ return "Documentatie van enumeratie members"; }
- QString trEnumerationValueDocumentation()
+ QCString trEnumerationValueDocumentation()
{ return "Documentatie van enumeratie waarden"; }
- QString trMemberFunctionDocumentation()
+ QCString trMemberFunctionDocumentation()
{ return "Documentatie van functie members"; }
- QString trMemberDataDocumentation()
+ QCString trMemberDataDocumentation()
{ return "Documentatie van data members"; }
- QString trGeneratedFrom(const char *s,bool single)
+ QCString trGeneratedFrom(const char *s,bool single)
{
- QString result=(QString)"De documentatie voor deze"+s+
+ QCString result=(QCString)"De documentatie voor deze"+s+
" is gegenereerd op grond van de volgende file";
if (single) result+=":"; else result+="s:";
return result;
}
- QString trMore()
+ QCString trMore()
{ return "Meer..."; }
- QString trListOfAllMembers()
+ QCString trListOfAllMembers()
{ return "Lijst van alle members."; }
- QString trMemberList()
+ QCString trMemberList()
{ return "Member Lijst"; }
- QString trThisIsTheListOfAllMembers()
+ QCString trThisIsTheListOfAllMembers()
{ return "Dit is de complete lijst van alle members voor"; }
- QString trIncludingInheritedMembers()
+ QCString trIncludingInheritedMembers()
{ return ", inclusief alle overge&euml;rfde members."; }
- QString trGeneratedAutomatically(const char *s)
- { QString result="Automatisch gegenereerd door Doxygen";
- if (s) result+=(QString)" voor "+s;
+ QCString trGeneratedAutomatically(const char *s)
+ { QCString result="Automatisch gegenereerd door Doxygen";
+ if (s) result+=(QCString)" voor "+s;
result+=" uit de programmacode.";
return result;
}
- QString trEnumName()
+ QCString trEnumName()
{ return "enum naam"; }
- QString trEnumValue()
+ QCString trEnumValue()
{ return "enum waarde"; }
- QString trDefinedIn()
+ QCString trDefinedIn()
{ return "gedefinieerd in"; }
- QString trVerbatimText(const char *f)
- { return (QString)"Dit is de letterlijke tekst van de include file "+f+"."; }
- QString trModules()
+ QCString trVerbatimText(const char *f)
+ { return (QCString)"Dit is de letterlijke tekst van de include file "+f+"."; }
+ QCString trModules()
{ return "Modules"; }
- QString trClassHierarchy()
+ QCString trClassHierarchy()
{ return "Klasse Hi&euml;rarchie"; }
- QString trCompoundList()
+ QCString trCompoundList()
{ return "Compound Lijst"; }
- QString trFileList()
+ QCString trFileList()
{ return "File Lijst"; }
- QString trHeaderFiles()
+ QCString trHeaderFiles()
{ return "Header Lijst"; }
- QString trCompoundMembers()
+ QCString trCompoundMembers()
{ return "Compound Members"; }
- QString trFileMembers()
+ QCString trFileMembers()
{ return "File members"; }
- QString trRelatedPages()
+ QCString trRelatedPages()
{ return "Gerelateerde pagina's"; }
- QString trExamples()
+ QCString trExamples()
{ return "Voorbeelden"; }
- QString trSearch()
+ QCString trSearch()
{ return "Zoeken"; }
- QString trClassHierarchyDescription()
+ QCString trClassHierarchyDescription()
{ return "Deze inheritance lijst is min of meer alfabetisch "
"gesorteerd:";
}
- QString trFileListDescription(bool extractAll)
+ QCString trFileListDescription(bool extractAll)
{
- QString result="Hieronder volgt de lijst met alle ";
+ QCString result="Hieronder volgt de lijst met alle ";
if (!extractAll) result+="gedocumenteerde ";
result+="files, elk met een korte beschrijving:";
return result;
}
- QString trCompoundListDescription()
+ QCString trCompoundListDescription()
{ return "Hieronder volgen de klassen, structs en "
"unions met voor elk een korte beschrijving:";
}
- QString trCompoundMembersDescription(bool extractAll)
+ QCString trCompoundMembersDescription(bool extractAll)
{
- QString result="Hieronder volgt de lijst met alle ";
+ QCString result="Hieronder volgt de lijst met alle ";
if (!extractAll) result+="gedocumenteerde ";
result+="klasse members met links naar ";
if (extractAll) result+="de klasse documentatie voor elke member:";
else result+="de klassen waartoe ze behoren:";
return result;
}
- QString trFileMembersDescription(bool extractAll)
+ QCString trFileMembersDescription(bool extractAll)
{
- QString result="Hieronder volgt de lijst met alle ";
+ QCString result="Hieronder volgt de lijst met alle ";
if (!extractAll) result+="gedocumenteerde ";
result+="file members met links naar ";
if (extractAll) result+="de file documentatie voor elke member:";
else result+="de files waartoe ze behoren:";
return result;
}
- QString trHeaderFilesDescription()
+ QCString trHeaderFilesDescription()
{ return "Hieronder volgen de header files die de API vormen:"; }
- QString trExamplesDescription()
+ QCString trExamplesDescription()
{ return "Hieronder volgt de lijst met alle voorbeelden:"; }
- QString trRelatedPagesDescription()
+ QCString trRelatedPagesDescription()
{ return "Hieronder volgt de lijst met alle pagina's die gerelateerde documentatie bevatten:"; }
- QString trModulesDescription()
+ QCString trModulesDescription()
{ return "Hieronder volgt de lijst met alle modules:"; }
- QString trNoDescriptionAvailable()
+ QCString trNoDescriptionAvailable()
{ return "Geen korte beschrijving beschikbaar"; }
- QString trDocumentation()
+ QCString trDocumentation()
{ return "Documentatie"; }
- QString trModuleIndex()
+ QCString trModuleIndex()
{ return "Module Index"; }
- QString trHierarchicalIndex()
+ QCString trHierarchicalIndex()
{ return "Hi&euml;rarchische Index"; }
- QString trCompoundIndex()
+ QCString trCompoundIndex()
{ return "Compound Index"; }
- QString trFileIndex()
+ QCString trFileIndex()
{ return "File Index"; }
- QString trModuleDocumentation()
+ QCString trModuleDocumentation()
{ return "Module Documentatie"; }
- QString trClassDocumentation()
+ QCString trClassDocumentation()
{ return "Klasse Documentatie"; }
- QString trFileDocumentation()
+ QCString trFileDocumentation()
{ return "File Documentatie"; }
- QString trExampleDocumentation()
+ QCString trExampleDocumentation()
{ return "Documentatie van voorbeelden"; }
- QString trPageDocumentation()
+ QCString trPageDocumentation()
{ return "Documentatie van gerelateerde pagina's"; }
- QString trReferenceManual()
+ QCString trReferenceManual()
{ return "Naslagwerk"; }
- QString trDefines()
+ QCString trDefines()
{ return "Defines"; }
- QString trFuncProtos()
+ QCString trFuncProtos()
{ return "Functie Prototypes"; }
- QString trTypedefs()
+ QCString trTypedefs()
{ return "Typedefs"; }
- QString trEnumerations()
+ QCString trEnumerations()
{ return "Enumeraties"; }
- QString trFunctions()
+ QCString trFunctions()
{ return "Functies"; }
- QString trVariables()
+ QCString trVariables()
{ return "Variabelen"; }
- QString trEnumerationValues()
+ QCString trEnumerationValues()
{ return "Enumeratie waarden"; }
- QString trAuthor()
+ QCString trAuthor()
{ return "auteur"; }
- QString trDefineDocumentation()
+ QCString trDefineDocumentation()
{ return "Documentatie van defines"; }
- QString trFunctionPrototypeDocumentation()
+ QCString trFunctionPrototypeDocumentation()
{ return "Documentatie van functie Prototypes"; }
- QString trTypedefDocumentation()
+ QCString trTypedefDocumentation()
{ return "Documentatie van typedefs"; }
- QString trEnumerationTypeDocumentation()
+ QCString trEnumerationTypeDocumentation()
{ return "Documentatie van enumeratie types"; }
- QString trFunctionDocumentation()
+ QCString trFunctionDocumentation()
{ return "Documentatie van functies"; }
- QString trVariableDocumentation()
+ QCString trVariableDocumentation()
{ return "Documentatie van variabelen"; }
- QString trCompounds()
+ QCString trCompounds()
{ return "Compounds"; }
- QString trFiles()
+ QCString trFiles()
{ return "Files"; }
- QString trGeneratedAt(const char *date,const char *projName)
+ QCString trGeneratedAt(const char *date,const char *projName)
{
- QString result=(QString)"Gegenereerd op "+date;
- if (projName) result+=(QString)" voor "+projName;
- result+=(QString)" door";
+ QCString result=(QCString)"Gegenereerd op "+date;
+ if (projName) result+=(QCString)" voor "+projName;
+ result+=(QCString)" door";
return result;
}
- QString trWrittenBy()
+ QCString trWrittenBy()
{
return "geschreven door";
}
- QString trClassDiagram(const char *clName)
+ QCString trClassDiagram(const char *clName)
{
- return (QString)"Klasse diagram voor "+clName;
+ return (QCString)"Klasse diagram voor "+clName;
}
- QString trForInternalUseOnly()
+ QCString trForInternalUseOnly()
{ return "Alleen voor intern gebruik."; }
- QString trReimplementedForInternalReasons()
+ QCString trReimplementedForInternalReasons()
{ return "Om interne rederene opnieuwd ge&iuml;mplemented; "
"de API wordt er niet door be&iuml;nvloed.";
}
- QString trWarning()
+ QCString trWarning()
{ return "Waarschuwing"; }
- QString trBugsAndLimitations()
+ QCString trBugsAndLimitations()
{ return "Fouten en beperkingen"; }
- QString trVersion()
+ QCString trVersion()
{ return "Versie"; }
- QString trDate()
+ QCString trDate()
{ return "Datum"; }
- QString trAuthors()
+ QCString trAuthors()
{ return "Auteur(s)"; }
- QString trReturns()
+ QCString trReturns()
{ return "Retourneerd"; }
- QString trSeeAlso()
+ QCString trSeeAlso()
{ return "Zie ook"; }
- QString trParameters()
+ QCString trParameters()
{ return "Parameters"; }
- QString trExceptions()
+ QCString trExceptions()
{ return "Excepties"; }
- QString trGeneratedBy()
+ QCString trGeneratedBy()
{ return "Gegenereerd door"; }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990307
//////////////////////////////////////////////////////////////////////////
- QString trNamespaceList()
+ QCString trNamespaceList()
{ return "Namespace Lijst"; }
- QString trNamespaceListDescription(bool extractAll)
+ QCString trNamespaceListDescription(bool extractAll)
{
- QString result="Hier is een lijst met alle ";
+ QCString result="Hier is een lijst met alle ";
if (!extractAll) result+="gedocumenteerde ";
result+="namespaces met voor elk een korte beschrijving:";
return result;
}
- QString trFriends()
+ QCString trFriends()
{ return "Friends"; }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990405
//////////////////////////////////////////////////////////////////////////
- QString trRelatedFunctionDocumentation()
+ QCString trRelatedFunctionDocumentation()
{ return "Documentatie van friends en gerelateerde functies"; }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990425
//////////////////////////////////////////////////////////////////////////
- virtual QString trCompoundReference(const char *clName,
+ virtual QCString trCompoundReference(const char *clName,
ClassDef::CompoundType compType)
// used as the title of the HTML page of a class/struct/union
{
- QString result=(QString)clName+" ";
+ QCString result=(QCString)clName+" ";
switch(compType)
{
case ClassDef::Class: result+=" Class"; break;
@@ -273,49 +273,49 @@ class TranslatorDutch : public Translator
result+=" Referentie";
return result;
}
- virtual QString trFileReference(const char *fileName)
+ virtual QCString trFileReference(const char *fileName)
// used as the title of the HTML page of a file
{
- QString result=fileName;
+ QCString result=fileName;
result+=" File Referentie";
return result;
}
- virtual QString trNamespaceReference(const char *namespaceName)
+ virtual QCString trNamespaceReference(const char *namespaceName)
// used as the title of the HTML page of a namespace
{
- QString result=namespaceName;
+ QCString result=namespaceName;
result+=" Namespace Referentie";
return result;
}
// these are for the member sections of a class, struct or union
- virtual QString trPublicMembers()
+ virtual QCString trPublicMembers()
{ return "Public Members"; }
- virtual QString trPublicSlots()
+ virtual QCString trPublicSlots()
{ return "Public Slots"; }
- virtual QString trSignals()
+ virtual QCString trSignals()
{ return "Signals"; }
- virtual QString trStaticPublicMembers()
+ virtual QCString trStaticPublicMembers()
{ return "Static Public Members"; }
- virtual QString trProtectedMembers()
+ virtual QCString trProtectedMembers()
{ return "Protected Members"; }
- virtual QString trProtectedSlots()
+ virtual QCString trProtectedSlots()
{ return "Protected Slots"; }
- virtual QString trStaticProtectedMembers()
+ virtual QCString trStaticProtectedMembers()
{ return "Static Protected Members"; }
- virtual QString trPrivateMembers()
+ virtual QCString trPrivateMembers()
{ return "Private Members"; }
- virtual QString trPrivateSlots()
+ virtual QCString trPrivateSlots()
{ return "Private Slots"; }
- virtual QString trStaticPrivateMembers()
+ virtual QCString trStaticPrivateMembers()
{ return "Static Private Members"; }
// end of member sections
- virtual QString trWriteList(int numEntries)
+ virtual QCString trWriteList(int numEntries)
{
// this function is used to produce a comma-separated list of items.
// use generateMarker(i) to indicate where item i should be put.
- QString result;
+ QCString result;
int i;
// the inherits list contain `numEntries' classes
for (i=0;i<numEntries;i++)
@@ -335,38 +335,38 @@ class TranslatorDutch : public Translator
return result;
}
- virtual QString trInheritsList(int numEntries)
+ virtual QCString trInheritsList(int numEntries)
// used in class documentation to produce a list of base classes,
// if class diagrams are disabled.
{
return "Erft over van "+trWriteList(numEntries)+".";
}
- virtual QString trInheritedByList(int numEntries)
+ virtual QCString trInheritedByList(int numEntries)
// used in class documentation to produce a list of super classes,
// if class diagrams are disabled.
{
return "Wordt overge&euml;rfd door "+trWriteList(numEntries)+".";
}
- virtual QString trReimplementedFromList(int numEntries)
+ virtual QCString trReimplementedFromList(int numEntries)
// used in member documentation blocks to produce a list of
// members that are hidden by this one.
{
return "Nieuwe implementatie van "+trWriteList(numEntries)+".";
}
- virtual QString trReimplementedInList(int numEntries)
+ virtual QCString trReimplementedInList(int numEntries)
{
// used in member documentation blocks to produce a list of
// all member that overwrite the implementation of this member.
return "Opnieuw ge&iuml;mplementeerd in "+trWriteList(numEntries)+".";
}
- virtual QString trNamespaceMembers()
+ virtual QCString trNamespaceMembers()
// This is put above each page as a link to all members of namespaces.
{ return "Namespace Members"; }
- virtual QString trNamespaceMemberDescription(bool extractAll)
+ virtual QCString trNamespaceMemberDescription(bool extractAll)
// This is an introduction to the page with all namespace members
{
- QString result="Hier is een lijst van alle ";
+ QCString result="Hier is een lijst van alle ";
if (!extractAll) result+="gedocumenteerde ";
result+="namespace members met links naar ";
if (extractAll)
@@ -375,11 +375,11 @@ class TranslatorDutch : public Translator
result+="de namespaces waartoe ze behoren:";
return result;
}
- virtual QString trNamespaceIndex()
+ virtual QCString trNamespaceIndex()
// This is used in LaTeX as the title of the chapter with the
// index of all namespaces.
{ return "Namespace Index"; }
- virtual QString trNamespaceDocumentation()
+ virtual QCString trNamespaceDocumentation()
// This is used in LaTeX as the title of the chapter containing
// the documentation of all namespaces.
{ return "Namespace Documentatie"; }
diff --git a/src/translator_se.h b/src/translator_se.h
index 4f24e0f..761d81d 100644
--- a/src/translator_se.h
+++ b/src/translator_se.h
@@ -14,245 +14,484 @@
*
*/
-/*-------------------------------------------------------------------------
+/*
+==================================================================================
Svensk översättning av:
Samuel Hägglund <sahag96@ite.mh.se>
Xet Erixon <xet@xeqt.com>
+==================================================================================
+Uppdateringar.
+1999/04/29
+* Omskrivningar av en hel del ordval, t.ex.
+ ENG INNAN EFTER
+ compound inhängnad sammansatt
+ structs structs strukter
+ unions unions unioner
-Skicka gärna synpunkter.
---------------------------------------------------------------------------*/
+ osv...
+
+* Alla översättnings-strängar returnerar i alla fall en något så när vettig
+ förklaring...
+
+1999/05/27
+* Det verkade som vi glömt en del mellanslag i vissa strängar vilket resulterade
+ i att en del ord blev ihopskrivna.
+
+* Bytt en del ordval igen...
+ ENG INNAN EFTER
+ reference manual Uppslagsbok referensmanual
+
+* Skrivit ihop en del ord som innan hade bindestreck
+* En del nya översättningar är tillagda.
+* Gamla översättningar borttagna
+
+===================================================================================
+Problem!
+ Namespace och slot: har de nån hygglig svensk översättning???
+
+ Skicka gärna synpunkter.
+===================================================================================
+*/
#ifndef TRANSLATOR_SE_H
#define TRANSLATOR_SE_H
-#include <qstring.h>
+#include "translator.h"
class TranslatorSwedish : public Translator
{
public:
- QString latexBabelPackage()
+ QCString latexBabelPackage()
{ return "swedish"; }
- QString trInherits()
- { return "Ärver"; }
- QString trAnd()
- { return "och"; }
- QString trInheritedBy()
- { return "Ärvd av"; }
- QString trRelatedFunctions()
+
+ QCString trRelatedFunctions()
{ return "Besläktade funktioner"; }
- QString trRelatedSubscript()
+
+ QCString trRelatedSubscript()
{ return "(Observera att dessa inte är medlemsfunktioner)"; }
- QString trDetailedDescription()
+
+ QCString trDetailedDescription()
{ return "Detaljerad beskrivning"; }
- QString trMemberTypedefDocumentation()
+
+ QCString trMemberTypedefDocumentation()
{ return "Dokumentation över typdefinierade medlemmar"; }
- QString trMemberEnumerationDocumentation()
+
+ QCString trMemberEnumerationDocumentation()
{ return "Dokumentation över egenuppräknande medlemmar"; }
- QString trMemberFunctionDocumentation()
+
+ QCString trMemberFunctionDocumentation()
{ return "Dokumentation över medlemsfunktioner"; }
- QString trMemberDataDocumentation()
+
+ QCString trMemberDataDocumentation()
{ return "Dokumentation över datamedlemmar"; }
- QString trGeneratedFrom(const char *s,bool single)
+
+ QCString trGeneratedFrom(const char *s,bool single)
{
- QString result=(QString)"Dokumentationen för denna"+s+
+
+ QCString result=(QCString)"Dokumentationen för denna"+s+
" är skapad utifrån följande fil";
if (single) result+=":"; else result+="er:";
return result;
}
- QString trMore()
+ QCString trMore()
{ return "Mer..."; }
- QString trReference()
- { return "Referens"; }
- QString trListOfAllMembers()
+
+ QCString trListOfAllMembers()
{ return "Lista över alla medlemmar."; }
- QString trMemberList()
+
+ QCString trMemberList()
{ return "Medlemslista"; }
- QString trThisIsTheListOfAllMembers()
- { return "Det här är en fullständig lista över medlemmar för"; }
- QString trIncludingInheritedMembers()
- { return "med alla ärvda medlemmar."; }
- QString trGeneratedAutomatically(const char *s)
- { QString result="Automatiskt skapad av Doxygen";
- if (s) result+=(QString)" för "+s;
+
+ QCString trThisIsTheListOfAllMembers()
+ { return "Det här är en fullständig lista över medlemmar för "; }
+
+ QCString trIncludingInheritedMembers()
+ { return " med alla ärvda medlemmar."; }
+
+ QCString trGeneratedAutomatically(const char *s)
+ { QCString result="Automatiskt skapad av Doxygen";
+ if (s) result+=(QCString)" för "+s;
result+=" från källkoden.";
return result;
}
- QString trEnumName()
+
+ QCString trEnumName()
{ return "enum namn"; }
- QString trEnumValue()
+
+ QCString trEnumValue()
{ return "enum värde"; }
- QString trDefinedIn()
- { return "deklarerad i"; }
- QString trIncludeFile()
- { return "Inkluderingsfil"; }
- QString trVerbatimText(const char *f)
- { return (QString)"Detta är den ordagranna texten från inkluderingsfilen"+f; }
- QString trModules()
+
+ QCString trDefinedIn()
+ { return "definierad i"; }
+
+
+ QCString trVerbatimText(const char *f)
+ { return (QCString)"Detta är den ordagranna texten från inkluderingsfilen "+f; }
+
+ QCString trModules()
{ return "Moduler"; }
- QString trClassHierarchy()
+
+ QCString trClassHierarchy()
{ return "Klasshierarki"; }
- QString trCompoundList()
+
+ QCString trCompoundList()
{ return "Sammansatt klasslista"; }
- QString trFileList()
+
+ QCString trFileList()
{ return "Fillista"; }
- QString trHeaderFiles()
+
+ QCString trHeaderFiles()
{ return "Headerfiler"; }
- QString trCompoundMembers()
+
+ QCString trCompoundMembers()
{ return "Sammansatta klassmedlemmar"; }
- QString trFileMembers()
+
+ QCString trFileMembers()
{ return "Filmedlemmar"; }
- QString trRelatedPages()
+
+ QCString trRelatedPages()
{ return "Besläktade sidor"; }
- QString trExamples()
+
+ QCString trExamples()
{ return "Exempel"; }
- QString trSearch()
+
+ QCString trSearch()
{ return "Sök"; }
- QString trClassHierarchyDescription()
+
+ QCString trClassHierarchyDescription()
{ return "Denna lista över arv är grovt, men inte helt, "
"sorterad i alfabetisk ordning:";
}
- QString trFileListDescription(bool extractAll)
+
+ QCString trFileListDescription(bool extractAll)
{
- QString result="Här följer en lista över alla ";
+ QCString result="Här följer en lista över alla ";
if (!extractAll) result+="dokumenterade ";
result+="filer, med en kort beskrivning:";
return result;
}
- QString trCompoundListDescription()
- { return "Här följer klasserna, structerna och "
+
+ QCString trCompoundListDescription()
+ { return "Här följer klasserna, strukterna och "
"unionerna med en kort beskrivning:";
}
- QString trCompoundMembersDescription(bool extractAll)
+
+ QCString trCompoundMembersDescription(bool extractAll)
{
- QString result="Här följer en lista över alla ";
+
+ QCString result="Här följer en lista över alla ";
if (!extractAll) result+="dokumenterade ";
result+="klassmedlemmar med länkar till ";
if (extractAll) result+="klassdokumentationen för varje medlem:";
else result+="klasserna som de tillhör:";
return result;
}
- QString trFileMembersDescription(bool extractAll)
+
+ QCString trFileMembersDescription(bool extractAll)
{
- QString result="Här följer en lista över alla ";
+ QCString result="Här följer en lista över alla ";
if (!extractAll) result+="dokumenterade ";
result+="filmedlemmar med länkar till ";
if (extractAll) result+="dokumentationsfilen för varje medlem:";
else result+="filerna som de tillhör:";
return result;
}
- QString trHeaderFilesDescription()
+
+ QCString trHeaderFilesDescription()
{ return "Här följer headerfilerna som API:n består av:"; }
- QString trExamplesDescription()
+
+ QCString trExamplesDescription()
{ return "Här följer en lista med alla exempel:"; }
- QString trRelatedPagesDescription()
- { return "Här följer en lista över alla relaterade dokumentationssidor:";
-} QString trModulesDescription()
+
+ QCString trRelatedPagesDescription()
+ { return "Här följer en lista över alla besläktade dokumentationssidor:";}
+
+ QCString trModulesDescription()
{ return "Här följer en lista över alla moduler:"; }
- QString trNoDescriptionAvailable()
+
+ QCString trNoDescriptionAvailable()
{ return "Beskrivning saknas"; }
- QString trDocumentation()
+ QCString trDocumentation()
{ return "Dokumentation"; }
- QString trModuleIndex()
- { return "Modul Index"; }
- QString trHierarchicalIndex()
+
+ QCString trModuleIndex()
+ { return "Modulindex"; }
+
+ QCString trHierarchicalIndex()
{ return "Hierarkiskt Index"; }
- QString trCompoundIndex()
+
+ QCString trCompoundIndex()
{ return "Sammansatt Index"; }
- QString trFileIndex()
- { return "Fil Index"; }
- QString trModuleDocumentation()
+
+ QCString trFileIndex()
+ { return "Filindex"; }
+
+ QCString trModuleDocumentation()
{ return "Dokumentation över moduler"; }
- QString trClassDocumentation()
+
+ QCString trClassDocumentation()
{ return "Dokumentation över klasser"; }
- QString trFileDocumentation()
+
+ QCString trFileDocumentation()
{ return "Dokumentation över filer"; }
- QString trExampleDocumentation()
+
+ QCString trExampleDocumentation()
{ return "Dokumentation över exempel"; }
- QString trPageDocumentation()
+
+ QCString trPageDocumentation()
{ return "Dokumentation av sidor"; }
- QString trReferenceManual()
- { return "Uppslagsbok"; }
- QString trDefines()
+ QCString trReferenceManual()
+ { return "Referensmanual"; }
+
+ QCString trDefines()
{ return "Definitioner"; }
- QString trFuncProtos()
+ QCString trFuncProtos()
{ return "Funktionsprototyper"; }
- QString trTypedefs()
+ QCString trTypedefs()
{ return "Typdefinitioner"; }
- QString trEnumerations()
+ QCString trEnumerations()
{ return "Egenuppräknande typer"; }
- QString trFunctions()
+ QCString trFunctions()
{ return "Funktioner"; }
- QString trVariables()
+
+ QCString trVariables()
{ return "Variabler"; }
- QString trEnumerationValues()
- { return "Egenuppräknade värden"; }
- QString trReimplementedFrom()
- { return "Återanvänd från"; }
- QString trReimplementedIn()
- { return "Återanvänd i"; }
- QString trAuthor()
+
+ QCString trEnumerationValues()
+ { return "Egenuppräknade typers värden"; }
+
+ QCString trAuthor()
{ return "Författare"; }
- QString trDefineDocumentation()
+
+ QCString trDefineDocumentation()
{ return "Dokumentation över definitioner"; }
- QString trFunctionPrototypeDocumentation()
+
+ QCString trFunctionPrototypeDocumentation()
{ return "Dokumentation över funktionsprototyper"; }
- QString trTypedefDocumentation()
+
+ QCString trTypedefDocumentation()
{ return "Dokumentation över typdefinitioner"; }
- QString trEnumerationTypeDocumentation()
- { return "Dokumentation över egenuppräknande typer (enum)"; }
- QString trEnumerationValueDocumentation()
+
+ QCString trEnumerationTypeDocumentation()
+ { return "Dokumentation över egenuppräknande typer"; }
+
+ QCString trEnumerationValueDocumentation()
{ return "Dokumentation över egenuppräknande typers värden"; }
- QString trFunctionDocumentation()
+
+ QCString trFunctionDocumentation()
{ return "Dokumentation över funktioner"; }
- QString trVariableDocumentation()
+
+ QCString trVariableDocumentation()
{ return "Dokumentation över variabler"; }
- QString trCompounds()
+
+ QCString trCompounds()
{ return "Sammansättning"; }
- QString trFiles()
+
+ QCString trFiles()
{ return "Filer"; }
- QString trGeneratedAt(const char *date,const char *projName)
- {
- QString result=(QString)"Skapad "+date;
- if (projName) result+=(QString)" för "+projName;
- result+=(QString)" av";
+
+ QCString trGeneratedAt(const char *date,const char *projName)
+ {
+ QCString result=(QCString)"Skapad "+date;
+ if (projName) result+=(QCString)" för "+projName;
+ result+=(QCString)" av";
return result;
}
- QString trWrittenBy()
+
+ QCString trWrittenBy()
{
return "skriven av";
}
- QString trClassDiagram(const char *clName)
+
+ QCString trClassDiagram(const char *clName)
{
- return (QString)"Klass-diagram för "+clName;
+ return (QCString)"Klassdiagram för "+clName;
}
- QString trForInternalUseOnly()
+
+ QCString trForInternalUseOnly()
{ return "Endast för internt bruk."; }
- QString trReimplementedForInternalReasons()
- { return "Omskriven av intern anledning ; "
- "API:n påverkas inte.";
- }
- QString trWarning()
+
+ QCString trReimplementedForInternalReasons()
+ { return "Omskriven av intern anledning ; API:n påverkas inte.";}
+
+ QCString trWarning()
{ return "Varning"; }
- QString trBugsAndLimitations()
+
+ QCString trBugsAndLimitations()
{ return "Fel och begränsningar"; }
- QString trVersion()
+
+ QCString trVersion()
{ return "Version"; }
- QString trDate()
+
+ QCString trDate()
{ return "Datum"; }
- QString trAuthors()
+
+ QCString trAuthors()
{ return "Författare"; }
- QString trReturns()
+
+ QCString trReturns()
{ return "Returnerar"; }
- QString trSeeAlso()
+
+ QCString trSeeAlso()
{ return "Se även"; }
- QString trParameters()
+
+ QCString trParameters()
{ return "Parametrar"; }
- QString trExceptions()
+
+ QCString trExceptions()
{ return "Undantag"; }
- QString trGeneratedBy()
+
+ QCString trGeneratedBy()
{ return "Skapad av"; }
+
+// new since 0.49-990307
+
+ virtual QCString trNamespaceList()
+ { return "Namespacelista"; }
+
+ virtual QCString trNamespaceListDescription(bool extractAll)
+ {
+ QCString result="Här är en lista över alla ";
+ if (!extractAll) result+="dokumenterade ";
+ result+="namespaces med en kort förklaring:";
+ return result;
+ }
+
+ virtual QCString trFriends()
+ { return "Vänner"; }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 0.49-990405
+//////////////////////////////////////////////////////////////////////////
+
+ virtual QCString trRelatedFunctionDocumentation()
+ { return "Vänners och besläktade funktioners dokumentation"; }
+
+//////////////////////////////////////////////////////////////////////////
+// new since 0.49-990425
+//////////////////////////////////////////////////////////////////////////
+
+ virtual QCString trCompoundReference(const char *clName,
+ ClassDef::CompoundType compType)
+ {
+ QCString result=(QCString)clName+" ";
+ switch(compType)
+ {
+ case ClassDef::Class: result+=" Klass"; break;
+ case ClassDef::Struct: result+=" Strukt"; break;
+ case ClassDef::Union: result+=" Union"; break;
+ }
+ result+="referens";
+ return result;
+ }
+
+ virtual QCString trFileReference(const char *fileName)
+ {
+ QCString result=fileName;
+ result+=" filreferens";
+ return result;
+ }
+
+ virtual QCString trNamespaceReference(const char *namespaceName)
+ {
+ QCString result=namespaceName;
+ result+=" namespacereferens";
+ return result;
+ }
+
+ virtual QCString trPublicMembers()
+ { return "Publika medlemmar"; }
+ virtual QCString trPublicSlots()
+ { return "Publika slots"; }
+ virtual QCString trSignals()
+ { return "Signaler"; }
+ virtual QCString trStaticPublicMembers()
+ { return "Statiska publika medlemmar"; }
+ virtual QCString trProtectedMembers()
+ { return "Skyddade medlemmar"; }
+ virtual QCString trProtectedSlots()
+ { return "Skyddade slots"; }
+ virtual QCString trStaticProtectedMembers()
+ { return "Statiska skyddade medlemmar"; }
+ virtual QCString trPrivateMembers()
+ { return "Privata medlemmar"; }
+ virtual QCString trPrivateSlots()
+ { return "Privata slots"; }
+ virtual QCString trStaticPrivateMembers()
+ { return "Statiska privata medlemmar"; }
+ // end of member sections
+
+ virtual QCString trWriteList(int numEntries)
+ {
+ // this function is used to produce a comma-separated list of items.
+ // use generateMarker(i) to indicate where item i should be put.
+ QCString result;
+ int i;
+ // the inherits list contain `numEntries' classes
+ for (i=0;i<numEntries;i++)
+ {
+ // use generateMarker to generate placeholders for the class links!
+ result+=generateMarker(i); // generate marker for entry i in the list
+ // (order is left to right)
+
+ if (i!=numEntries-1) // not the last entry, so we need a separator
+ {
+ if (i<numEntries-2) // not the fore last entry
+ result+=", ";
+ else // the fore last entry
+ result+=", och ";
+ }
+ }
+ return result;
+ }
+
+ virtual QCString trInheritsList(int numEntries)
+ // used in class documentation to produce a list of base classes,
+ // if class diagrams are disabled.
+ {
+ return "Ärver "+trWriteList(numEntries)+".";
+ }
+ virtual QCString trInheritedByList(int numEntries)
+ // used in class documentation to produce a list of super classes,
+ // if class diagrams are disabled.
+ {
+ return "Ärvd av "+trWriteList(numEntries)+".";
+ }
+ virtual QCString trReimplementedFromList(int numEntries)
+ // used in member documentation blocks to produce a list of
+ // members that are hidden by this one.
+ {
+ return "Återskapad från "+trWriteList(numEntries)+".";
+ }
+ virtual QCString trReimplementedInList(int numEntries)
+ {
+ // used in member documentation blocks to produce a list of
+ // all member that overwrite the implementation of this member.
+ return "Återskapad i "+trWriteList(numEntries)+".";
+ }
+
+ virtual QCString trNamespaceMembers()
+ { return "Namespacemedlemmar"; }
+ virtual QCString trNamespaceMemberDescription(bool extractAll)
+ {
+ QCString result="Här är en lista över alla ";
+ if (!extractAll) result+="dokumenterade ";
+ result+="namespacemedlemmar med länkar till ";
+ if (extractAll)
+ result+=" namespace-dokumentationen för varje medlem:";
+ else
+ result+="de namespaces de tillhör:";
+ return result;
+ }
+
+ virtual QCString trNamespaceIndex()
+ { return "Namespaceindex"; }
+
+ virtual QCString trNamespaceDocumentation()
+
+{ return "Namespace-dokumentation"; }
};
#endif
diff --git a/src/util.cpp b/src/util.cpp
index 9064b2e..49fdee5 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -15,9 +15,10 @@
*/
#include <stdlib.h>
-#include <qregexp.h>
-#include <qstring.h>
#include <ctype.h>
+
+#include "qtbc.h"
+#include <qregexp.h>
#include "util.h"
#include "message.h"
#include "classdef.h"
@@ -37,9 +38,22 @@ bool isId(char c)
return c=='_' || isalnum(c);
}
-QString generateMarker(int id)
+// strip annonymous part of the scope
+QCString stripAnnonymousScope(const QCString &s)
+{
+ QCString result=s;
+ int i;
+ while (!result.isEmpty() && result.at(0)=='@' && (i=result.find("::"))!=-1)
+ {
+ result=result.right(result.length()-i-2);
+ }
+ return result;
+}
+
+
+QCString generateMarker(int id)
{
- QString result;
+ QCString result;
result.sprintf("@%d\n",id);
return result;
}
@@ -49,7 +63,7 @@ QString generateMarker(int id)
// If anyone knows or uses another extension please let me know :-)
int guessSection(const char *name)
{
- QString n=((QString)name).lower();
+ QCString n=((QCString)name).lower();
if (n.right(2)==".c" ||
n.right(3)==".cc" ||
n.right(4)==".cxx" ||
@@ -66,7 +80,7 @@ int guessSection(const char *name)
}
-//QString resolveDefines(const char *n)
+//QCString resolveDefines(const char *n)
//{
// return n;
// if (n)
@@ -81,9 +95,9 @@ int guessSection(const char *name)
// return 0;
//}
-QString resolveTypedefs(const QString &n)
+QCString resolveTypedefs(const QCString &n)
{
- QString *subst=typedefDict[n];
+ QCString *subst=typedefDict[n];
if (subst && !subst->isNull())
{
return *subst;
@@ -97,7 +111,7 @@ QString resolveTypedefs(const QString &n)
ClassDef *getClass(const char *name)
{
if (!name) return 0;
- //QString key=resolveTypedefs(resolveDefines(name));
+ //QCString key=resolveTypedefs(resolveDefines(name));
//Define *def=defineDict[key];
//if (def && def->nargs==0 && def->definition.length()>0) // normal define
// key=def->definition; // use substitution
@@ -105,10 +119,10 @@ ClassDef *getClass(const char *name)
return classDict[resolveTypedefs(name)];
}
-QString removeRedundantWhiteSpace(const QString &s)
+QCString removeRedundantWhiteSpace(const QCString &s)
{
if (s.length()==0) return s;
- QString result;
+ QCString result;
uint i;
for (i=0;i<s.length();i++)
{
@@ -152,11 +166,11 @@ void writeTemplatePrefix(OutputList &ol,ArgumentList *al)
if (manEnabled) ol.enable(OutputGenerator::Man);
}
-QString addTemplateNames(const QString &s,const QString &n,const QString &t)
+QCString addTemplateNames(const QCString &s,const QCString &n,const QCString &t)
{
//printf("addTemplateNames(%s)\n",s.data());
- QString result;
- QString clRealName=n;
+ QCString result;
+ QCString clRealName=n;
int p=0,i;
if ((i=clRealName.find('<'))!=-1)
{
@@ -183,11 +197,11 @@ QString addTemplateNames(const QString &s,const QString &n,const QString &t)
return result;
}
-static void linkifyText(OutputList &ol,const char *clName,const char *name,const char *text)
+static void linkifyText(OutputList &ol,const char *scName,const char *name,const char *text)
{
- //printf("class %s name %s Text: %s\n",clName,name,text);
+ //printf("scope=`%s' name=`%s' Text: `%s'\n",scName,name,text);
QRegExp regExp("[a-z_A-Z0-9:<>]+");
- QString txtStr=text;
+ QCString txtStr=text;
OutputList result(&ol);
int matchLen;
int index=0;
@@ -199,55 +213,86 @@ static void linkifyText(OutputList &ol,const char *clName,const char *name,const
// add non-word part to the result
result.docify(txtStr.mid(skipIndex,newIndex-skipIndex));
// get word from string
- QString word=txtStr.mid(newIndex,matchLen);
+ QCString word=txtStr.mid(newIndex,matchLen);
ClassDef *cd=0;
FileDef *fd=0;
MemberDef *md=0;
NamespaceDef *nd=0;
+ QCString scopeName=scName;
+ QCString searchName=name;
+ //printf("word=`%s' scopeName=`%s' searchName=`%s'\n",
+ // word.data(),scopeName.data(),searchName.data());
// check if `word' is a documented class name
- if (word.length()>0 && word!=name && word!=clName)
+ if (word.length()>0 &&
+ word.right(searchName.length())!=searchName &&
+ word!=scopeName.right(word.length())
+ )
{
- if ((cd=getClass(word)))
+ //printf("Searching...\n");
+ int scopeOffset=scopeName.length();
+ bool found=FALSE;
+ do // for each scope (starting with full scope and going to empty scope)
{
- // add link to the result
- if (cd->isVisible())
+ QCString fullName = word.copy();
+ if (scopeOffset>0)
{
- result.writeObjectLink(cd->getReference(),cd->getOutputFileBase(),0,word);
+ fullName.prepend(scopeName.left(scopeOffset)+"::");
}
- else
+ //printf("Trying class %s\n",fullName.data());
+
+ if ((cd=getClass(fullName)))
{
- result.docify(word);
+ // add link to the result
+ if (cd->isVisible())
+ {
+ result.writeObjectLink(cd->getReference(),cd->getOutputFileBase(),0,word);
+ found=TRUE;
+ }
}
- }
- else if (getDefs(word,clName,0,md,cd,fd,nd) && md->hasDocumentation())
+
+ if (scopeOffset==0)
+ {
+ scopeOffset=-1;
+ }
+ else if ((scopeOffset=scopeName.findRev("::",scopeOffset-1))==-1)
+ {
+ scopeOffset=0;
+ }
+ } while (!found && scopeOffset>=0);
+
+ if (!found &&
+ getDefs(scName,word,0,md,cd,fd,nd) &&
+ (md->isTypedef() || md->isEnumerate()) &&
+ md->hasDocumentation()
+ )
{
- if (cd && cd->isVisible() && !md->isFunction()) // word is a member of cd
+ if (cd && cd->isVisible()) // fullName is a member of cd
{
result.writeObjectLink(cd->getReference(),
- cd->getOutputFileBase(),md->anchor(),word);
+ cd->getOutputFileBase(),md->anchor(),word);
+ found=TRUE;
}
else if (nd && nd->hasDocumentation())
{
result.writeObjectLink(nd->getReference(),
- nd->getOutputFileBase(),md->anchor(),word);
+ nd->getOutputFileBase(),md->anchor(),word);
+ found=TRUE;
}
- else if (fd && fd->hasDocumentation()) // word is a global in file fd
+ else if (fd && fd->hasDocumentation()) // fullName is a global in file fd
{
result.writeObjectLink(fd->getReference(),
- fd->getOutputFileBase(),md->anchor(),word);
- }
- else // add word to the result
- {
- result.docify(word);
+ fd->getOutputFileBase(),md->anchor(),word);
+ found=TRUE;
}
}
- else // add word to the result
+
+ if (!found) // add word to the result
{
result.docify(word);
}
}
- else // add word to the result
+ else
{
result.docify(word);
}
@@ -261,13 +306,13 @@ static void linkifyText(OutputList &ol,const char *clName,const char *name,const
}
static void writeDefArgumentList(OutputList &ol,ClassDef *cd,
- const QString &scopeName,MemberDef *md)
+ const QCString &scopeName,MemberDef *md)
{
ArgumentList *argList=md->argumentList();
if (argList==0) return; // member has no function like argument list
ol.docify(" ("); // start argument list
Argument *a=argList->first();
- QString cName;
+ QCString cName;
if (cd && cd->templateArguments())
{
cName=cd->getTemplateNameString();
@@ -278,13 +323,13 @@ static void writeDefArgumentList(OutputList &ol,ClassDef *cd,
int vp;
if ((vp=a->type.find(re))!=-1) // argument type is a function pointer
{
- QString n=a->type.left(vp);
+ QCString n=a->type.left(vp);
if (cName.length()>0) n=addTemplateNames(n,cd->name(),cName);
linkifyText(ol,scopeName,md->name(),n);
}
else // non-function pointer type
{
- QString n=a->type;
+ QCString n=a->type;
if (cName.length()>0) n=addTemplateNames(n,cd->name(),cName);
linkifyText(ol,scopeName,md->name(),n);
}
@@ -306,7 +351,7 @@ static void writeDefArgumentList(OutputList &ol,ClassDef *cd,
}
if (a->defval.length()>0) // write the default value
{
- QString n=a->defval;
+ QCString n=a->defval;
if (cName.length()>0) n=addTemplateNames(n,cd->name(),cName);
ol.docify(" = ");
linkifyText(ol,scopeName,md->name(),n);
@@ -327,7 +372,7 @@ static void writeDefArgumentList(OutputList &ol,ClassDef *cd,
void writeExample(OutputList &ol,ExampleList *el)
{
- QString exampleLine=theTranslator->trWriteList(el->count());
+ QCString exampleLine=theTranslator->trWriteList(el->count());
QRegExp marker("@[0-9]+");
int index=0,newIndex,matchLen;
@@ -347,9 +392,9 @@ void writeExample(OutputList &ol,ExampleList *el)
-QString argListToString(ArgumentList *al)
+QCString argListToString(ArgumentList *al)
{
- QString result;
+ QCString result;
if (al==0) return result;
Argument *a=al->first();
result+="(";
@@ -416,7 +461,7 @@ void writeQuickLinks(OutputList &ol,bool compact,bool ext)
{
bool manEnabled = ol.isEnabled(OutputGenerator::Man);
bool texEnabled = ol.isEnabled(OutputGenerator::Latex);
- QString extLink,absPath;
+ QCString extLink,absPath;
if (ext) { extLink="_doc:"; absPath="/"; }
if (manEnabled) ol.disable(OutputGenerator::Man);
if (texEnabled) ol.disable(OutputGenerator::Latex);
@@ -456,7 +501,7 @@ void writeQuickLinks(OutputList &ol,bool compact,bool ext)
parseText(ol,theTranslator->trFileList());
ol.endQuickIndexItem();
}
- if (includeFiles.count()>0 && verbatimHeaderFlag)
+ if (includeFiles.count()>0 && Config::verbatimHeaderFlag)
{
if (!compact) ol.writeListItem();
ol.startQuickIndexItem(extLink,absPath+"headers.html");
@@ -498,7 +543,7 @@ void writeQuickLinks(OutputList &ol,bool compact,bool ext)
parseText(ol,theTranslator->trExamples());
ol.endQuickIndexItem();
}
- if (searchEngineFlag)
+ if (Config::searchEngineFlag)
{
if (!compact) ol.writeListItem();
ol.startQuickIndexItem("_cgi:","");
@@ -521,7 +566,7 @@ void writeQuickLinks(OutputList &ol,bool compact,bool ext)
void startFile(OutputList &ol,const char *name,const char *title,bool external)
{
ol.startFile(name,title,external);
- if (!noIndexFlag) writeQuickLinks(ol,TRUE,external);
+ if (!Config::noIndexFlag) writeQuickLinks(ol,TRUE,external);
}
void endFile(OutputList &ol,bool external)
@@ -531,15 +576,15 @@ void endFile(OutputList &ol,bool external)
if (latexEnabled) ol.disable(OutputGenerator::Latex);
if (manEnabled) ol.disable(OutputGenerator::Man);
ol.writeFooter(0,external); // write the footer
- if (footerFile.length()==0)
+ if (Config::footerFile.length()==0)
{
parseText(ol,theTranslator->trGeneratedAt(
dateToString(TRUE),
- projectName
+ Config::projectName
));
}
ol.writeFooter(1,external); // write the link to the picture
- if (footerFile.length()==0)
+ if (Config::footerFile.length()==0)
{
parseText(ol,theTranslator->trWrittenBy());
}
@@ -555,14 +600,14 @@ static void writeMemberDef(OutputList &ol, ClassDef *cd, NamespaceDef *nd,
{
int i,l;
bool hasDocs=md->hasDocumentation();
- if ((!hasDocs && hideMemberFlag) ||
- (hideMemberFlag &&
+ if ((!hasDocs && Config::hideMemberFlag) ||
+ (Config::hideMemberFlag &&
md->documentation().isEmpty() &&
- !briefMemDescFlag &&
- !repeatBriefFlag
+ !Config::briefMemDescFlag &&
+ !Config::repeatBriefFlag
)
) return;
- QString type=md->typeString();
+ QCString type=md->typeString();
QRegExp r("@[0-9]+");
if ((i=r.match(type,0,&l))==-1 || !md->enumUsed())
{
@@ -571,22 +616,23 @@ static void writeMemberDef(OutputList &ol, ClassDef *cd, NamespaceDef *nd,
// strip `friend' keyword from type
if (type.left(7)=="friend ") type=type.right(type.length()-7);
- if (genTagFile.length()>0)
+ if (Config::genTagFile.length()>0)
{
tagFile << md->name() << " " << md->anchor() << " \""
<< md->argsString() << "\"\n";
}
- QString cname;
+ QCString cname;
if (cd) cname=cd->name();
else if (nd) cname=nd->name();
else if (fd) cname=fd->name();
+ ol.startMemberItem();
// If there is no detailed description we need to write the anchor here.
bool detailsVisible = md->detailsAreVisible();
- if (!detailsVisible && !extractAllFlag)
+ if (!detailsVisible && !Config::extractAllFlag)
{
- QString doxyName=md->name().copy();
+ QCString doxyName=md->name().copy();
if (!cname.isEmpty()) doxyName.prepend(cname+"::");
ol.writeDoxyAnchor(cname,md->anchor(),doxyName);
ol.addToIndex(md->name(),cname);
@@ -601,35 +647,37 @@ static void writeMemberDef(OutputList &ol, ClassDef *cd, NamespaceDef *nd,
ol.addToIndex(cname,md->name());
ol.writeLatexLabel(cname,md->anchor());
}
- ol.startMemberItem();
// write type
if (i!=-1)
{
- QString newType = type.left(i) + " { ... } " +
+ QCString newType = type.left(i) + " { ... } " +
type.right(type.length()-i-l);
type = newType;
- ol.docify(type);
+ //ol.docify(type);
+ linkifyText(ol,cname,md->name(),type);
}
else
{
- ol.docify(type);
+ //ol.docify(type);
+ linkifyText(ol,cname,md->name(),type);
+ }
+ QCString name=md->name().copy();
+ bool htmlOn = ol.isEnabled(OutputGenerator::Html);
+ if (htmlOn && Config::htmlAlignMemberFlag && type.length()>0)
+ {
+ ol.disable(OutputGenerator::Html);
+ }
+ if (!type.isEmpty()) ol.docify(" ");
+ if (htmlOn)
+ {
+ ol.enable(OutputGenerator::Html);
}
- QString name=md->name().copy();
- if (type.length()>0) ol.writeString(" ");
ol.insertMemberAlign();
// write name
- if ( extractAllFlag ||
- (md->briefDescription().isEmpty() || !briefMemDescFlag) &&
- (!md->documentation().isEmpty() ||
- (!md->briefDescription().isEmpty() &&
- !briefMemDescFlag &&
- repeatBriefFlag
- )
- )
- )
+ if (md->hasDocumentation())
{
//printf("writeLink %s->%d\n",name.data(),md->hasDocumentation());
writeLink(ol,cd,nd,fd,md,name);
@@ -643,7 +691,8 @@ static void writeMemberDef(OutputList &ol, ClassDef *cd, NamespaceDef *nd,
if (md->argsString())
{
ol.writeString(" ");
- ol.docify(md->argsString());
+ //ol.docify(md->argsString());
+ linkifyText(ol,cname,md->name(),md->argsString());
}
if (md->excpString())
@@ -655,22 +704,21 @@ static void writeMemberDef(OutputList &ol, ClassDef *cd, NamespaceDef *nd,
ol.endMemberItem();
// write brief description
- if (!md->briefDescription().isEmpty() && briefMemDescFlag)
+ if (!md->briefDescription().isEmpty() && Config::briefMemDescFlag)
{
ol.startMemberDescription();
parseDoc(ol,cname,md->name(),md->briefDescription());
- if (!md->documentation().isEmpty())
- {
- ol.disableAllBut(OutputGenerator::Html);
- ol.endEmphasis();
- ol.docify(" ");
- ol.startTextLink(0,md->anchor());
- //ol.writeObjectLink(0,0,md->anchor()," More...");
- parseText(ol,theTranslator->trMore());
- ol.endTextLink();
- ol.startEmphasis();
- ol.enableAll();
- }
+ //if (!md->documentation().isEmpty())
+ //{
+ // ol.disableAllBut(OutputGenerator::Html);
+ // ol.endEmphasis();
+ // ol.docify(" ");
+ // ol.startTextLink(0,md->anchor());
+ // parseText(ol,theTranslator->trMore());
+ // ol.endTextLink();
+ // ol.startEmphasis();
+ // ol.enableAll();
+ //}
ol.endMemberDescription();
ol.newParagraph();
}
@@ -695,7 +743,9 @@ void writeMemberDecs(OutputList &ol,ClassDef *cd,NamespaceDef *nd, FileDef *fd,
}
if (subtitle)
{
+ ol.startMemberSubtitle();
parseText(ol,subtitle);
+ ol.endMemberSubtitle();
}
if (!fd && !nd) ol.startMemberList();
@@ -711,7 +761,7 @@ void writeMemberDecs(OutputList &ol,ClassDef *cd,NamespaceDef *nd, FileDef *fd,
for ( ; (md=mli.current()); ++mli )
{
if (md->isDefine() &&
- (md->argsString() || md->hasDocumentation() || extractAllFlag)
+ (md->argsString() || md->hasDocumentation() || Config::extractAllFlag)
)
writeMemberDef(ol,cd,nd,fd,md);
}
@@ -763,34 +813,35 @@ void writeMemberDecs(OutputList &ol,ClassDef *cd,NamespaceDef *nd, FileDef *fd,
for ( ; (md=mli.current()) ; ++mli )
{
/*bool hasDocs=md->hasDocumentation();*/
- QString type=md->typeString();
+ QCString type=md->typeString();
type=type.stripWhiteSpace();
- if (md->isEnumerate() /*&& (hasDocs || !hideMemberFlag)*/)
+ if (md->isEnumerate() /*&& (hasDocs || !Config::hideMemberFlag)*/)
{
- if (!hideMemberFlag || // do not hide undocumented members or
+ if (!Config::hideMemberFlag || // do not hide undocumented members or
!md->documentation().isEmpty() || // member has detailed descr. or
md->hasDocumentedEnumValues() || // member has documented enum vales.
- briefMemDescFlag || // brief descr. is shown or
- repeatBriefFlag // brief descr. is repeated.
+ Config::briefMemDescFlag || // brief descr. is shown or
+ Config::repeatBriefFlag // brief descr. is repeated.
)
{
OutputList typeDecl(&ol);
- QString name=md->name().copy();
+ QCString name=md->name().copy();
int i=name.findRev("::");
if (i!=-1) name=name.right(name.length()-i-2); // strip scope
if (name[0]!='@') // not an anonymous enum
{
- if (extractAllFlag ||
- (md->briefDescription().isEmpty() || !briefMemDescFlag) &&
- (!md->documentation().isEmpty() || md->hasDocumentedEnumValues() ||
- (!md->briefDescription().isEmpty() &&
- !briefMemDescFlag &&
- repeatBriefFlag
- )
- )
- )
+ //if (Config::extractAllFlag ||
+ // (md->briefDescription().isEmpty() || !Config::briefMemDescFlag) &&
+ // (!md->documentation().isEmpty() || md->hasDocumentedEnumValues() ||
+ // (!md->briefDescription().isEmpty() &&
+ // !Config::briefMemDescFlag &&
+ // Config::repeatBriefFlag
+ // )
+ // )
+ // )
+ if (md->hasDocumentation() || md->hasDocumentedEnumValues())
{
- if (genTagFile.length()>0)
+ if (Config::genTagFile.length()>0)
tagFile << md->name() << " " << md->anchor()
<< " \"" << md->argsString() << "\"";
writeLink(typeDecl,cd,nd,fd,md,name);
@@ -811,7 +862,7 @@ void writeMemberDecs(OutputList &ol,ClassDef *cd,NamespaceDef *nd, FileDef *fd,
{
if (fmd->hasDocumentation())
{
- if (genTagFile.length()>0)
+ if (Config::genTagFile.length()>0)
tagFile << fmd->name() << " " << fmd->anchor()
<< " \"" << fmd->argsString() << "\"";
writeLink(typeDecl,cd,nd,fd,fmd,fmd->name());
@@ -834,7 +885,7 @@ void writeMemberDecs(OutputList &ol,ClassDef *cd,NamespaceDef *nd, FileDef *fd,
{
for ( ; (vmd=vmli.current()) ; ++vmli)
{
- QString vtype=vmd->typeString();
+ QCString vtype=vmd->typeString();
if ((vtype.find(name))!=-1) enumVars++;
}
}
@@ -845,25 +896,25 @@ void writeMemberDecs(OutputList &ol,ClassDef *cd,NamespaceDef *nd, FileDef *fd,
ol.insertMemberAlign();
ol+=typeDecl;
ol.endMemberItem();
- //QString brief=md->briefDescription();
+ //QCString brief=md->briefDescription();
//brief=brief.stripWhiteSpace();
- if (!md->briefDescription().isEmpty() && briefMemDescFlag)
+ if (!md->briefDescription().isEmpty() && Config::briefMemDescFlag)
{
ol.startMemberDescription();
parseDoc(ol,cd?cd->name().data():0,
md->name().data(),md->briefDescription());
- if (!md->documentation().isEmpty() || md->hasDocumentedEnumValues())
- {
- ol.disableAllBut(OutputGenerator::Html);
- ol.endEmphasis();
- ol.docify(" ");
- ol.startTextLink(0,md->anchor());
- //ol.writeObjectLink(0,0,md->anchor()," More...");
- parseText(ol,theTranslator->trMore());
- ol.endTextLink();
- ol.startEmphasis();
- ol.enableAll();
- }
+ //if (!md->documentation().isEmpty() || md->hasDocumentedEnumValues())
+ //{
+ // ol.disableAllBut(OutputGenerator::Html);
+ // ol.endEmphasis();
+ // ol.docify(" ");
+ // ol.startTextLink(0,md->anchor());
+ // //ol.writeObjectLink(0,0,md->anchor()," More...");
+ // parseText(ol,theTranslator->trMore());
+ // ol.endTextLink();
+ // ol.startEmphasis();
+ // ol.enableAll();
+ //}
ol.endMemberDescription();
ol.disable(OutputGenerator::Man);
ol.newParagraph();
@@ -904,7 +955,7 @@ void writeMemberDecs(OutputList &ol,ClassDef *cd,NamespaceDef *nd, FileDef *fd,
{
if ( md->isFriend())
{
- QString type=md->typeString();
+ QCString type=md->typeString();
//printf("Friend: type=%s name=%s\n",type.data(),md->name().data());
if (md->hasDocumentation() && type!="friend class")
{
@@ -930,7 +981,7 @@ void writeMemberDecs(OutputList &ol,ClassDef *cd,NamespaceDef *nd, FileDef *fd,
ol.writeObjectLink(cd->getReference(),cd->getOutputFileBase(),0,cd->name());
ol.endMemberItem();
}
- else if (!hideMemberFlag) // no documentation
+ else if (!Config::hideMemberFlag) // no documentation
{
ol.startMemberItem();
ol.docify("class ");
@@ -971,7 +1022,7 @@ void setAnchors(char id,MemberList *ml)
MemberDef *md=ml->first();
while (md)
{
- QString anchor;
+ QCString anchor;
anchor.sprintf("%c%d",id,count++);
//printf("Member %s anchor %s\n",md->name(),anchor.data());
md->setAnchor(anchor);
@@ -992,21 +1043,21 @@ void writeMemberDocs(OutputList &ol,MemberList *ml,const char *scopeName,
// md->hasDocumentedEnumValues() // one of its values is documented
// ) || // or
// (!md->briefDescription().isEmpty() && // member has brief description and
- // !briefMemDescFlag && // brief description not shown earlier and
- // repeatBriefFlag // brief description should be repeated.
+ // !Config::briefMemDescFlag && // brief description not shown earlier and
+ // Config::repeatBriefFlag // brief description should be repeated.
// );
if (md->memberType()==m && // filter member type
- (extractAllFlag || hasDocs)
+ (Config::extractAllFlag || hasDocs)
)
{
- if (extractAllFlag && !hasDocs)
+ if (Config::extractAllFlag && !hasDocs)
{
ol.disable(OutputGenerator::Latex); // Latex cannot insert a pagebreak
// if there are a lot of empty sections,
// so we disable LaTeX for all empty
- // sections even if extractAllFlag is enabled
+ // sections even if Config::extractAllFlag is enabled
}
- QString cname;
+ QCString cname;
NamespaceDef *nd=md->getNamespace();
ClassDef *cd=md->memberClass();
FileDef *fd=md->getFileDef();
@@ -1014,11 +1065,11 @@ void writeMemberDocs(OutputList &ol,MemberList *ml,const char *scopeName,
else if (nd) cname=nd->name();
else if (fd) cname=fd->name();
// get member name
- QString doxyName=md->name().copy();
- // prepend scope if there is any (TODO: prepend namespace scope as well)
- if (scopeName) doxyName.prepend((QString)scopeName+"::");
+ QCString doxyName=md->name().copy();
+ // prepend scope if there is any
+ if (scopeName) doxyName.prepend((QCString)scopeName+"::");
- QString def = md->definition();
+ QCString def = md->definition();
if (md->isEnumerate()) def.prepend("enum ");
MemberDef *smd;
if (md->isEnumValue() && def[0]=='@') def = def.right(def.length()-2);
@@ -1060,7 +1111,8 @@ void writeMemberDocs(OutputList &ol,MemberList *ml,const char *scopeName,
ol.writeDoxyAnchor(cname,md->anchor(),doxyName);
ArgumentList *al=0;
if (cd && (!md->isRelated() || !md->templateArguments()) &&
- (al=cd->templateArguments())) // class template prefix
+ ((al=md->scopeTemplateArguments()) || (al=cd->templateArguments()))
+ ) // class template prefix
{
writeTemplatePrefix(ol,al);
}
@@ -1070,7 +1122,11 @@ void writeMemberDocs(OutputList &ol,MemberList *ml,const char *scopeName,
{
writeTemplatePrefix(ol,al);
}
- if (cd && cd->templateArguments())
+ if (cd && md->scopeTemplateArguments())
+ {
+ def=addTemplateNames(def,cd->name(),md->getScopeTemplateNameString());
+ }
+ else if (cd && cd->templateArguments())
{
// add template name lists to all occurrences of the class name.
def=addTemplateNames(def,cd->name(),cd->getTemplateNameString());
@@ -1129,8 +1185,8 @@ void writeMemberDocs(OutputList &ol,MemberList *ml,const char *scopeName,
ol.newParagraph();
if (!md->briefDescription().isEmpty() &&
- (repeatBriefFlag ||
- (!briefMemDescFlag && md->documentation().isEmpty())
+ (Config::repeatBriefFlag ||
+ (!Config::briefMemDescFlag && md->documentation().isEmpty())
)
)
{
@@ -1141,6 +1197,12 @@ void writeMemberDocs(OutputList &ol,MemberList *ml,const char *scopeName,
{
parseDoc(ol,scopeName,md->name(),md->documentation()+"\n");
}
+ if (!md->bodyCode().isEmpty())
+ {
+ ol.startCodeFragment();
+ parseCode(ol,scopeName,md->bodyCode(),FALSE,0);
+ ol.endCodeFragment();
+ }
if (md->isEnumerate())
{
@@ -1193,149 +1255,149 @@ void writeMemberDocs(OutputList &ol,MemberList *ml,const char *scopeName,
}
MemberDef *bmd=md->reimplements();
- if (bmd)
+ ClassDef *bcd=0;
+ if (bmd && (bcd=bmd->memberClass()))
{
if (virt!=Normal) // search for virtual member of the deepest base class
{
MemberDef *lastBmd=bmd;
while (lastBmd)
{
- if (lastBmd->virtualness()!=Normal) bmd=lastBmd;
+ ClassDef *lastBcd = lastBmd->memberClass();
+ if (lastBmd->virtualness()!=Normal &&
+ lastBmd->hasDocumentation() &&
+ (lastBmd->protection()!=Private || Config::extractPrivateFlag) &&
+ lastBcd->hasDocumentation() &&
+ (lastBcd->protection()!=Private || Config::extractPrivateFlag)
+ ) { bmd=lastBmd; bcd=lastBcd; }
lastBmd=lastBmd->reimplements();
}
}
// write class that contains a member that is reimplemented by this one
- ClassDef *bcd = bmd->memberClass();
- ol.newParagraph();
- //parseText(ol,theTranslator->trReimplementedFrom());
- //ol.docify(" ");
-
- QString reimplFromLine = theTranslator->trReimplementedFromList(1);
- int markerPos = reimplFromLine.find("@0");
- if (markerPos!=-1) // should always pass this.
+ if (bcd->hasDocumentation() || bcd->isReference())
{
- parseText(ol,reimplFromLine.left(markerPos)); //text left from marker
- if (bmd->hasDocumentation() &&
- (bmd->protection()!=Private || extractPrivateFlag)
- ) // replace marker with link
+ ol.newParagraph();
+
+ QCString reimplFromLine = theTranslator->trReimplementedFromList(1);
+ int markerPos = reimplFromLine.find("@0");
+ if (markerPos!=-1) // should always pass this.
{
- ol.writeObjectLink(bcd->getReference(),bcd->getOutputFileBase(),
- bmd->anchor(),bcd->name());
- if (
- !bcd->isReference() &&
- //(bcd->hasDocumentation() || !hideClassFlag) &&
- //(bcd->protection()!=Private || extractPrivateFlag)
- bcd->isVisible()
- /*&& bmd->detailsAreVisible()*/
- ) ol.writePageRef(bcd->name(),bmd->anchor());
+ parseText(ol,reimplFromLine.left(markerPos)); //text left from marker
+ if (bmd->hasDocumentation() &&
+ (bmd->protection()!=Private || Config::extractPrivateFlag)
+ ) // replace marker with link
+ {
+ ol.writeObjectLink(bcd->getReference(),bcd->getOutputFileBase(),
+ bmd->anchor(),bcd->name());
+ if (
+ !bcd->isReference() &&
+ //(bcd->hasDocumentation() || !Config::hideClassFlag) &&
+ //(bcd->protection()!=Private || Config::extractPrivateFlag)
+ bcd->isVisible()
+ /*&& bmd->detailsAreVisible()*/
+ ) ol.writePageRef(bcd->name(),bmd->anchor());
+ }
+ else
+ {
+ ol.writeObjectLink(bcd->getReference(),bcd->getOutputFileBase(),
+ 0,bcd->name());
+ if (
+ !bcd->isReference() &&
+ //(bcd->hasDocumentation() || !Config::hideClassFlag) &&
+ //(bcd->protection()!=Private || Config::extractPrivateFlag)
+ bcd->isVisible()
+ ) ol.writePageRef(bcd->name(),0);
+ }
+ parseText(ol,reimplFromLine.right(
+ reimplFromLine.length()-markerPos-2)); // text right from marker
+
}
else
{
- ol.writeObjectLink(bcd->getReference(),bcd->getOutputFileBase(),
- 0,bcd->name());
- if (
- !bcd->isReference() &&
- //(bcd->hasDocumentation() || !hideClassFlag) &&
- //(bcd->protection()!=Private || extractPrivateFlag)
- bcd->isVisible()
- ) ol.writePageRef(bcd->name(),0);
+ err("Error: translation error: no marker in trReimplementsFromList()\n");
}
- parseText(ol,reimplFromLine.right(
- reimplFromLine.length()-markerPos-2)); // text right from marker
-
- }
- else
- {
- err("Error: translation error: no marker in trReimplementsFromList()\n");
}
//ol.writeString(".");
}
MemberList *bml=md->reimplementedBy();
- int count;
- if (bml && (count=bml->count())>0)
+ if (bml)
{
- // write the list of classes that overwrite this member
- ol.newParagraph();
- //parseText(ol,theTranslator->trReimplementedIn());
- //ol.writeString("Reimplemented in ");
- //ol.docify(" ");
-
- QString reimplInLine =
- theTranslator->trReimplementedInList(bml->count());
- QRegExp marker("@[0-9]+");
- int index=0,newIndex,matchLen;
- // now replace all markers in reimplInLine with links to the classes
- while ((newIndex=marker.match(reimplInLine,index,&matchLen))!=-1)
+ MemberListIterator mli(*bml);
+ MemberDef *bmd=0;
+ uint count=0;
+ ClassDef *bcd=0;
+ for (mli.toFirst();(bmd=mli.current()) && (bcd=bmd->memberClass());++mli)
+ {
+ // count the members that directly inherit from md and for
+ // which the member and class are visible in the docs.
+ if (bmd->hasDocumentation() &&
+ (bmd->protection()!=Private || Config::extractPrivateFlag) &&
+ bcd->hasDocumentation() &&
+ (bcd->protection()!=Private || Config::extractPrivateFlag)
+ ) count++;
+ }
+ if (count>0)
{
- parseText(ol,reimplInLine.mid(index,newIndex-index));
- bool ok;
- uint entryIndex = reimplInLine.mid(newIndex+1,matchLen-1).toUInt(&ok);
- bmd=bml->at(entryIndex);
- if (ok && bmd) // write link for marker
+ mli.toFirst();
+ // write the list of classes that overwrite this member
+ ol.newParagraph();
+ //parseText(ol,theTranslator->trReimplementedIn());
+ //ol.writeString("Reimplemented in ");
+ //ol.docify(" ");
+
+ QCString reimplInLine =
+ theTranslator->trReimplementedInList(count);
+ QRegExp marker("@[0-9]+");
+ int index=0,newIndex,matchLen;
+ // now replace all markers in reimplInLine with links to the classes
+ while ((newIndex=marker.match(reimplInLine,index,&matchLen))!=-1)
{
- ClassDef *bcd = bmd->memberClass();
- if (bmd->hasDocumentation() &&
- (bmd->protection()!=Private || extractPrivateFlag)
- )
+ parseText(ol,reimplInLine.mid(index,newIndex-index));
+ bool ok;
+ uint entryIndex = reimplInLine.mid(newIndex+1,matchLen-1).toUInt(&ok);
+ //bmd=bml->at(entryIndex);
+
+ count=0;
+ // find the entryIndex-th documented entry in the inheritance list.
+ for (mli.toFirst();(bmd=mli.current()) && (bcd=bmd->memberClass());++mli)
{
- ol.writeObjectLink(bcd->getReference(),bcd->getOutputFileBase(),
- bmd->anchor(),bcd->name());
- if (!bcd->isReference() && bcd->isVisible())
- ol.writePageRef(bcd->name(),bmd->anchor());
+ if (bmd->hasDocumentation() &&
+ (bmd->protection()!=Private || Config::extractPrivateFlag) &&
+ bcd->hasDocumentation() &&
+ (bcd->protection()!=Private || Config::extractPrivateFlag)
+ )
+ {
+ if (count==entryIndex) break;
+ count++;
+ }
}
- else
+
+ if (ok && bcd && bmd) // write link for marker
{
+ //if (bmd->hasDocumentation() &&
+ // (bmd->protection()!=Private || Config::extractPrivateFlag)
+ // )
+ //{
ol.writeObjectLink(bcd->getReference(),bcd->getOutputFileBase(),
- 0,bcd->name());
+ bmd->anchor(),bcd->name());
if (!bcd->isReference() && bcd->isVisible())
- ol.writePageRef(bcd->name(),0);
+ ol.writePageRef(bcd->name(),bmd->anchor());
+ //}
+ //else
+ //{
+ // ol.writeObjectLink(bcd->getReference(),bcd->getOutputFileBase(),
+ // 0,bcd->name());
+ // if (!bcd->isReference() && bcd->isVisible())
+ // ol.writePageRef(bcd->name(),0);
+ //}
}
- }
- index=newIndex+matchLen;
- }
- parseText(ol,reimplInLine.right(reimplInLine.length()-index));
+ ++mli;
+ index=newIndex+matchLen;
+ }
+ parseText(ol,reimplInLine.right(reimplInLine.length()-index));
-#if 0
- bmd=bml->first();
- while (bmd)
- {
- ClassDef *bcd = bmd->memberClass();
- if (bmd->hasDocumentation())
- {
- ol.writeObjectLink(bcd->getReference(),bcd->getOutputFileBase(),
- bmd->anchor(),bcd->name());
- if (
- !bcd->isReference() &&
- //(bcd->hasDocumentation() || !hideClassFlag) &&
- //(bcd->protection()!=Private || extractPrivateFlag)
- bcd->isVisible()
- /*&& bmd->detailsAreVisible()*/
- ) ol.writePageRef(bcd->name(),bmd->anchor());
- }
- else
- {
- ol.writeObjectLink(bcd->getReference(),bcd->getOutputFileBase(),
- 0,bcd->name());
- if (
- !bcd->isReference() &&
- //(bcd->hasDocumentation() || !hideClassFlag) &&
- //(bcd->protection()!=Private || extractPrivateFlag)
- bcd->isVisible()
- ) ol.writePageRef(bcd->name(),0);
- }
- bmd=bml->next();
- if (bmd)
- {
- if (bml->at()==count-1)
- //ol.writeString(" and ");
- parseText(ol," "+theTranslator->trAnd()+" ");
- else
- ol.writeString(", ");
- }
}
- ol.writeString(".");
-#endif
}
// write the list of examples that use this member
if (md->hasExamples())
@@ -1353,7 +1415,7 @@ void writeMemberDocs(OutputList &ol,MemberList *ml,const char *scopeName,
}
ol.endIndent();
// enable LaTeX again
- if (extractAllFlag && !hasDocs) ol.enable(OutputGenerator::Latex);
+ if (Config::extractAllFlag && !hasDocs) ol.enable(OutputGenerator::Latex);
}
}
@@ -1362,7 +1424,7 @@ void writeMemberDocs(OutputList &ol,MemberList *ml,const char *scopeName,
//----------------------------------------------------------------------------
// read a file with `name' to a string.
-QString fileToString(const char *name)
+QCString fileToString(const char *name)
{
if (name==0 || name[0]==0) return 0;
QFileInfo fi(name);
@@ -1378,32 +1440,32 @@ QString fileToString(const char *name)
exit(1);
}
int fsize=fi.size();
- QString contents(fsize+1);
+ QCString contents(fsize+1);
f.readBlock(contents.data(),fsize);
contents[fsize]='\0';
f.close();
return contents;
}
-QString dateToString(bool includeTime)
+QCString dateToString(bool includeTime)
{
if (includeTime)
{
- return QDateTime::currentDateTime().toString();
+ return convertToQCString(QDateTime::currentDateTime().toString());
}
else
{
const QDate &d=QDate::currentDate();
- QString result;
+ QCString result;
result.sprintf("%d %s %d",
d.day(),
- d.monthName(d.month()),
+ convertToQCString(d.monthName(d.month())).data(),
d.year());
return result;
}
//QDate date=dt.date();
//QTime time=dt.time();
- //QString dtString;
+ //QCString dtString;
//dtString.sprintf("%02d:%02d, %04d/%02d/%02d",
// time.hour(),time.minute(),date.year(),date.month(),date.day());
//return dtString;
@@ -1440,11 +1502,11 @@ static int minClassDistance(ClassDef *cd,ClassDef *bcd,int level=0)
//}
// strip any template specifiers that follow className in string s
-static QString trimTemplateSpecifiers(const QString &className,const QString &s)
+static QCString trimTemplateSpecifiers(const QCString &className,const QCString &s)
{
// first we resolve any defines
//int i=0,p,l;
- //QString result;
+ //QCString result;
//QRegExp r("[A-Z_a-z][A-Z_a-z0-9]*");
//while ((p=r.match(s,i,&l))!=-1)
//{
@@ -1455,7 +1517,7 @@ static QString trimTemplateSpecifiers(const QString &className,const QString &s)
//if (i<(int)s.length()) result+=s.mid(i,s.length()-i);
// We strip the template arguments following className (if any)
- QString result=s.copy();
+ QCString result=s.copy();
int l=className.length();
if (l>0) // there is a class name
{
@@ -1488,17 +1550,31 @@ static QString trimTemplateSpecifiers(const QString &className,const QString &s)
}
// removes the (one and only) occurrence of name:: from s.
-static QString trimScope(const QString &name,const QString &s)
+static QCString trimScope(const QCString &name,const QCString &s)
{
- int spos=s.find(name+"::");
- if (spos!=-1)
+ int scopeOffset=name.length();
+ QCString result=s;
+ do // for each scope
{
- return s.left(spos)+s.right(s.length()-spos-name.length()-2);
- }
- return s;
+ QCString tmp;
+ QCString scope=name.left(scopeOffset)+"::";
+ //printf("Trying with scope=`%s'\n",scope.data());
+
+ int i,p=0;
+ while ((i=result.find(scope,p))!=-1) // for each occurrence
+ {
+ tmp+=result.mid(p,i-p); // add part before pattern
+ p=i+scope.length();
+ }
+ tmp+=result.right(result.length()-p); // add trailing part
+
+ scopeOffset=name.findRev("::",scopeOffset-1);
+ result = tmp;
+ } while (scopeOffset>0);
+ return result;
}
-static QString trimBaseClassScope(BaseClassList *bcl,const QString &s)
+static QCString trimBaseClassScope(BaseClassList *bcl,const QCString &s)
{
BaseClassListIterator bcli(*bcl);
BaseClassDef *bcd;
@@ -1528,12 +1604,14 @@ static QString trimBaseClassScope(BaseClassList *bcl,const QString &s)
bool matchArguments(ArgumentList *srcAl,ArgumentList *dstAl,
const char *cl,const char *ns)
{
- QString className=cl;
- QString namespaceName=ns;
+ QCString className=cl;
+ QCString namespaceName=ns;
+
//printf("matchArguments(%s,%s) className=%s namespaceName=%s\n",
// srcAl ? argListToString(srcAl).data() : "",
// dstAl ? argListToString(dstAl).data() : "",
// cl,ns);
+
if (srcAl==0 || dstAl==0)
{
return srcAl==dstAl; // at least one of the members is not a function
@@ -1544,6 +1622,7 @@ bool matchArguments(ArgumentList *srcAl,ArgumentList *dstAl,
Argument *a=new Argument;
a->type = "void";
srcAl->append(a);
+ return TRUE;
}
if ( dstAl->count()==0 && srcAl->count()==1 &&
srcAl->getFirst()->type=="void" )
@@ -1555,6 +1634,7 @@ bool matchArguments(ArgumentList *srcAl,ArgumentList *dstAl,
}
if (srcAl->count() != dstAl->count())
{
+ //printf("Different number of arguments!\n");
return FALSE; // different number of arguments -> no match
}
if (srcAl->constSpecifier != dstAl->constSpecifier)
@@ -1572,15 +1652,15 @@ bool matchArguments(ArgumentList *srcAl,ArgumentList *dstAl,
Argument *srcA,*dstA;
for (;(srcA=srcAli.current(),dstA=dstAli.current());++srcAli,++dstAli)
{
- QString srcAType=trimTemplateSpecifiers(className,srcA->type);
- QString dstAType=trimTemplateSpecifiers(className,dstA->type);
+ QCString srcAType=trimTemplateSpecifiers(className,srcA->type);
+ QCString dstAType=trimTemplateSpecifiers(className,dstA->type);
if (srcAType!=dstAType) // check if the argument only differs on name
{
- //printf("`%s' <=> `%s'\n",srcAType.data(),dstAType.data());
+ //printf("scope=`%s': `%s' <=> `%s'\n",className.data(),srcAType.data(),dstAType.data());
- QString srcScope;
- QString dstScope;
+ QCString srcScope;
+ QCString dstScope;
// strip redundant scope specifiers
if (!className.isEmpty())
@@ -1778,6 +1858,10 @@ void mergeArguments(ArgumentList *srcAl,ArgumentList *dstAl)
dstA->type = srcA->type.copy();
dstA->name = dstA->name.copy();
}
+ else if (!srcA->name.isEmpty() && !dstA->name.isEmpty())
+ {
+ srcA->name = dstA->name.copy();
+ }
int i1=srcA->type.find("::"),
i2=dstA->type.find("::"),
j1=srcA->type.length()-i1-2,
@@ -1801,335 +1885,523 @@ void mergeArguments(ArgumentList *srcAl,ArgumentList *dstAl)
// argListToString(srcAl).data(),argListToString(dstAl).data());
}
-//----------------------------------------------------------------------
-// searches for the class and member definitions corresponding with
-// memberName and className.
-// These classes are returned using `md' and `cd'.
-// returns TRUE if the class and member both could be found
-
-bool getDefs(const QString &memberName,const QString &className,
+/*!
+ * Searches for a member definition given its name `memberName' as a string.
+ * memberName may also include a (partial) scope to indicate the scope
+ * in which the member is located.
+ *
+ * The parameter `scName' is a string representing the name of the scope in
+ * which the link was found.
+ *
+ * In case of a function args contains a string representation of the
+ * argument list. Passing 0 means the member has no arguments.
+ * Passing "()" means any argument list will do, but "()" is preferred.
+ *
+ * The function returns TRUE if the member is known and documented or
+ * FALSE if it is not.
+ * If TRUE is returned parameter `md' contains a pointer to the member
+ * definition. Furthermore exactly one of the parameter `cd', `nd', or `fd'
+ * will be non-zero:
+ * - if `cd' is non zero, the member was found in a class pointed to by cd.
+ * - if `nd' is non zero, the member was found in a namespace pointed to by nd.
+ * - if `fd' is non zero, the member was found in the global namespace of
+ * file fd.
+ */
+bool getDefs(const QCString &scName,const QCString &memberName,
const char *args,
MemberDef *&md, ClassDef *&cd, FileDef *&fd,NamespaceDef *&nd)
{
- //printf("Search for %s::%s %s\n",className.data(),memberName.data(),args);
fd=0, md=0, cd=0, nd=0;
- if (memberName.length()==0) return FALSE;
- MemberName *mn;
- if ((mn=memberNameDict[memberName]) && className.length()>0)
+ if (memberName.length()==0) return FALSE; /* empty name => nothing to link */
+
+ QCString scopeName=scName.copy();
+ //printf("Search for name=%s args=%s in scope=%s\n",
+ // memberName.data(),args,scopeName.data());
+
+ int is,im,pm=0;
+ // strip common part of the scope from the scopeName
+ while ((is=scopeName.findRev("::"))!=-1 &&
+ (im=memberName.find("::",pm))!=-1 &&
+ (scopeName.right(scopeName.length()-is-2)==memberName.mid(pm,im-pm))
+ )
+ {
+ scopeName=scopeName.left(is);
+ pm=im+2;
+ }
+ //printf("result after scope corrections scope=%s name=%s\n",
+ // scopeName.data(),memberName.data());
+
+ QCString mName=memberName;
+ QCString mScope;
+ if ((im=memberName.findRev("::"))!=-1)
+ {
+ mScope=memberName.left(im);
+ mName=memberName.right(memberName.length()-im-2);
+ }
+
+ // handle special the case where both scope name and member scope are equal
+ if (mScope==scopeName) scopeName.resize(0);
+
+ //printf("mScope=`%s' mName=`%s'\n",mScope.data(),mName.data());
+
+ MemberName *mn = memberNameDict[mName];
+ if (mn && scopeName.length()+mScope.length()>0)
{
//printf(" >member name found\n");
- ClassDef *fcd=0;
- //printf("className=%s\n",className.data());
- if ((fcd=getClass(className)) && fcd->hasDocumentation())
- {
- //printf(" >member class found\n");
- MemberDef *mmd=mn->first();
- int mdist=maxInheritanceDepth;
- while (mmd)
+ int scopeOffset=scopeName.length();
+ do
+ {
+ QCString className = scopeName.left(scopeOffset);
+ if (!className.isEmpty() && !mScope.isEmpty())
{
- if ((mmd->protection()!=Private || extractPrivateFlag) &&
- mmd->hasDocumentation()
- /*mmd->detailsAreVisible()*/
- /* && (args==0 || matchArgumentsOld(mmd->argsString(),args)) */
- )
+ className.append("::"+mScope);
+ }
+ else if (!mScope.isEmpty())
+ {
+ className=mScope.copy();
+ }
+ //printf("Trying class scope %s\n",className.data());
+
+ ClassDef *fcd=0;
+ if ((fcd=getClass(className)) && // is it a documented class
+ fcd->isVisibleExt()
+ )
+ {
+ //printf(" Found fcd=%p\n",fcd);
+ MemberDef *mmd=mn->first();
+ int mdist=maxInheritanceDepth;
+ while (mmd)
{
- bool match=TRUE;
- ArgumentList *argList=0;
- if (args)
- {
- match=FALSE;
- argList=new ArgumentList;
- stringToArgumentList(args,argList);
- match=matchArguments(mmd->argumentList(),argList);
- }
- if (match)
+ if ((mmd->protection()!=Private || Config::extractPrivateFlag) &&
+ mmd->hasDocumentation()
+ /*mmd->detailsAreVisible()*/
+ /* && (args==0 || matchArgumentsOld(mmd->argsString(),args)) */
+ )
{
- ClassDef *mcd=mmd->memberClass();
- int m=minClassDistance(fcd,mcd);
- if (m<mdist && mcd->isVisible())
+ bool match=TRUE;
+ ArgumentList *argList=0;
+ if (args)
{
- mdist=m;
- cd=mcd;
- md=mmd;
+ argList=new ArgumentList;
+ stringToArgumentList(args,argList);
+ match=matchArguments(mmd->argumentList(),argList);
+ }
+ if (match)
+ {
+ ClassDef *mcd=mmd->memberClass();
+ int m=minClassDistance(fcd,mcd);
+ if (m<mdist && mcd->isVisible())
+ {
+ mdist=m;
+ cd=mcd;
+ md=mmd;
+ }
+ }
+ if (argList)
+ {
+ delete argList;
}
}
- if (argList)
- {
- delete argList;
- }
+ mmd=mn->next();
}
- mmd=mn->next();
- }
- if (mdist==maxInheritanceDepth && !strcmp(args,"()"))
- // no exact match found, but if args="()" an arbitrary member will do
- {
- //printf(" >Searching for arbitrary member\n");
- mmd=mn->first();
- while (mmd)
+ if (mdist==maxInheritanceDepth && !strcmp(args,"()"))
+ // no exact match found, but if args="()" an arbitrary member will do
{
- if ((mmd->protection()!=Private || extractPrivateFlag) &&
- (
- mmd->hasDocumentation()
- /*mmd->detailsAreVisible()*/
- || mmd->isReference()
- )
- )
+ //printf(" >Searching for arbitrary member\n");
+ mmd=mn->last();
+ while (mmd)
{
- ClassDef *mcd=mmd->memberClass();
- //printf(" >Class %s found\n",mcd->name().data());
- int m=minClassDistance(fcd,mcd);
- if (m<mdist && mcd->isVisible())
+ if ((mmd->protection()!=Private || Config::extractPrivateFlag) &&
+ (
+ mmd->hasDocumentation()
+ /*mmd->detailsAreVisible()*/
+ || mmd->isReference()
+ )
+ )
{
- //printf("Class distance %d\n",m);
- mdist=m;
- cd=mcd;
- md=mmd;
+ ClassDef *mcd=mmd->memberClass();
+ //printf(" >Class %s found\n",mcd->name().data());
+ int m=minClassDistance(fcd,mcd);
+ if (m<mdist && mcd->isVisible())
+ {
+ //printf("Class distance %d\n",m);
+ mdist=m;
+ cd=mcd;
+ md=mmd;
+ }
}
+ mmd=mn->prev();
}
- mmd=mn->next();
}
+ //printf(" >Succes=%d\n",mdist<maxInheritanceDepth);
+ if (mdist<maxInheritanceDepth) return TRUE; /* found match */
+ }
+ /* goto the parent scope */
+
+ if (scopeOffset==0)
+ {
+ scopeOffset=-1;
}
- //printf(" >Succes=%d\n",mdist<maxInheritanceDepth);
- return mdist<maxInheritanceDepth;
- }
+ else if ((scopeOffset=scopeName.findRev("::",scopeOffset-1))==-1)
+ {
+ scopeOffset=0;
+ }
+ } while (scopeOffset>=0);
+
+ // unknown or undocumented scope
}
else // maybe an namespace or file member ?
{
- MemberName *mn;
- if ((mn=functionNameDict[memberName])) // name is known
+ //printf("Testing for global function scopeName=`%s' mScope=`%s' :: mName=`%s'\n",
+ // scopeName.data(),mScope.data(),mName.data());
+ //printf(" >member name found\n");
+ if ((mn=functionNameDict[mName])) // name is known
{
NamespaceDef *fnd=0;
- if (className.length()>0 && (fnd=namespaceDict[className]) &&
- fnd->hasDocumentation())
- { // inside a namespace
- MemberDef *mmd=mn->first();
- while (mmd)
+ int scopeOffset=scopeName.length();
+ do
+ {
+ QCString namespaceName = scopeName.left(scopeOffset);
+ if (!namespaceName.isEmpty() && !mScope.isEmpty())
+ {
+ namespaceName.append("::"+mScope);
+ }
+ else if (!mScope.isEmpty())
{
- if (mmd->getNamespace()==fnd && mmd->hasDocumentation())
- { // namespace is found
- nd=fnd;
- md=mmd;
- return TRUE;
+ namespaceName=mScope.copy();
+ }
+ if (namespaceName.length()>0 &&
+ (fnd=namespaceDict[namespaceName]) &&
+ fnd->isVisibleExt()
+ )
+ {
+ //printf("Function inside existing namespace `%s'\n",namespaceName.data());
+ bool found=FALSE;
+ MemberDef *mmd=mn->first();
+ while (mmd && !found)
+ {
+ //printf("mmd->getNamespace()=%p fnd=%p\n",
+ // mmd->getNamespace(),fnd);
+ if (mmd->getNamespace()==fnd &&
+ (mmd->isReference() || mmd->hasDocumentation())
+ )
+ { // namespace is found
+ bool match=TRUE;
+ ArgumentList *argList=0;
+ if (args)
+ {
+ argList=new ArgumentList;
+ stringToArgumentList(args,argList);
+ match=matchArguments(mmd->argumentList(),argList);
+ }
+ if (match)
+ {
+ nd=fnd;
+ md=mmd;
+ found=TRUE;
+ }
+ if (args)
+ {
+ delete argList;
+ }
+ }
+ mmd=mn->next();
}
- mmd=mn->next();
+ if (!found && !strcmp(args,"()"))
+ // no exact match found, but if args="()" an arbitrary
+ // member will do
+ {
+ MemberDef *mmd=mn->last(); // searching backward will get
+ // the first defined!
+ while (mmd && !found)
+ {
+ if (mmd->getNamespace()==fnd &&
+ (mmd->isReference() || mmd->hasDocumentation())
+ )
+ {
+ nd=fnd;
+ md=mmd;
+ found=TRUE;
+ }
+ mmd=mn->prev();
+ }
+ }
+ if (found) return TRUE;
}
- }
- // maybe a file member (e.g. global function or variable)
- md=mn->first();
- while (md)
- {
- if (/*md->detailsAreVisible()*/ md->hasDocumentation())
+ else // no scope => global function
{
- fd=md->getFileDef();
- if (fd && fd->hasDocumentation())
+ //printf("Function with global scope `%s'\n",namespaceName.data());
+ md=mn->first();
+ while (md)
+ {
+ if (md->isReference() || md->hasDocumentation())
+ {
+ //printf("md->name()=`%s'\n",md->name().data());
+ fd=md->getFileDef();
+ if (fd && (fd->isReference() || fd->hasDocumentation()))
+ {
+ //printf("fd->name()=`%s'\n",fd->name().data());
+ bool match=TRUE;
+ ArgumentList *argList=0;
+ if (args)
+ {
+ argList=new ArgumentList;
+ stringToArgumentList(args,argList);
+ match=matchArguments(md->argumentList(),argList);
+ delete argList;
+ }
+ if (match) return TRUE;
+ }
+ }
+ md=mn->next();
+ }
+ if (!strcmp(args,"()"))
{
- return TRUE;
+ // no exact match found, but if args="()" an arbitrary
+ // member will do
+ md=mn->last();
+ while (md)
+ {
+ if (md->isReference() || md->hasDocumentation())
+ {
+ //printf("md->name()=`%s'\n",md->name().data());
+ fd=md->getFileDef();
+ if (fd && (fd->isReference() || fd->hasDocumentation()))
+ {
+ return TRUE;
+ }
+ }
+ md=mn->prev();
+ }
}
}
- md=mn->next();
- }
+ if (scopeOffset==0)
+ {
+ scopeOffset=-1;
+ }
+ else if ((scopeOffset=scopeName.findRev("::",scopeOffset-1))==-1)
+ {
+ scopeOffset=0;
+ }
+ } while (scopeOffset>=0);
+ }
+ else
+ {
+ //printf("Unknown function `%s'\n",mName.data());
}
}
return FALSE;
}
-//----------------------------------------------------------------------
-// Generate a hypertext link to the class with name `clName'.
-// If linkTxt is not null this text is used as the link, otherwise
-// the name of the class will be used. If the class could be found a
-// hypertext link (in HTML) is written, otherwise the text of the link will
-// be written.
-
-void generateClassRef(OutputList &ol,const char *clName,const char *linkTxt)
+/*!
+ * Searches for a scope definition given its name as a string via parameter
+ * `scope'.
+ *
+ * The parameter `docScope' is a string representing the name of the scope in
+ * which the `scope' string was found.
+ *
+ * The function returns TRUE if the scope is known and documented or
+ * FALSE if it is not.
+ * If TRUE is returned exactly one of the parameter `cd', `nd'
+ * will be non-zero:
+ * - if `cd' is non zero, the scope was a class pointed to by cd.
+ * - if `nd' is non zero, the scope was a namespace pointed to by nd.
+ */
+bool getScopeDefs(const char *docScope,const char *scope,
+ ClassDef *&cd, NamespaceDef *&nd)
{
- QString className=clName;
- QString linkText=linkTxt ? linkTxt : (const char *)className;
- if (className.length()==0)
- {
- ol.docify(linkText);
- return;
- }
- ClassDef *cd=0;
- NamespaceDef *nd=0;
- if ((cd=getClass(className)) && cd->isVisible())
- {
- ol.writeObjectLink(cd->getReference(),cd->getOutputFileBase(),0,linkText);
- if (!cd->isReference()) ol.writePageRef(cd->name(),0);
- }
- else if ((nd=namespaceDict[className]) && nd->hasDocumentation())
+ cd=0;nd=0;
+
+ QCString scopeName=scope;
+ //printf("getScopeDefs: docScope=`%s' scope=`%s'\n",docScope,scope);
+ if (scopeName.length()==0) return FALSE;
+
+ QCString docScopeName=docScope;
+ int scopeOffset=docScopeName.length();
+
+ do // for each possible docScope (from largest to and including empty)
{
- ol.writeObjectLink(nd->getReference(),nd->getOutputFileBase(),0,linkText);
- ol.writePageRef(nd->name(),0);
- }
- else
- ol.docify(linkText);
+ QCString fullName=scopeName.copy();
+ if (scopeOffset>0) fullName.prepend(docScopeName.left(scopeOffset)+"::");
+
+ if ((cd=getClass(fullName)) && cd->isVisibleExt())
+ {
+ return TRUE; // class link written => quit
+ }
+ else if ((nd=namespaceDict[fullName]) && nd->isVisibleExt())
+ {
+ return TRUE; // namespace link written => quit
+ }
+ if (scopeOffset==0)
+ {
+ scopeOffset=-1;
+ }
+ else if ((scopeOffset=docScopeName.findRev("::",scopeOffset-1))==-1)
+ {
+ scopeOffset=0;
+ }
+ } while (scopeOffset>=0);
+
+ return FALSE;
}
-//----------------------------------------------------------------------
-// generate a reference to a class or member.
-// `clName' is the name of the class that contains the documentation
-// string that is returned.
-// `name' is the name of the member or class that we want to link to.
-// `name' may have five formats:
-// 1) "ClassName"
-// 2) "memberName()" one of the (overloaded) function or define
-// with name memberName.
-// 3) "memberName(...)" a specific (overloaded) function or define
-// with name memberName
-// 4) "::memberName a non-function member or define
-// 5) ("ClassName::")+"memberName()"
-// 6) ("ClassName::")+"memberName(...)"
-// 7) ("ClassName::")+"memberName"
-
-void generateRef(OutputList &ol,const char *clName,
+/*!
+ * generate a reference to a class, namespace or member.
+ * `scName' is the name of the scope that contains the documentation
+ * string that is returned.
+ * `name' is the name that we want to link to.
+ * `name' may have five formats:
+ * 1) "ScopeName"
+ * 2) "memberName()" one of the (overloaded) function or define
+ * with name memberName.
+ * 3) "memberName(...)" a specific (overloaded) function or define
+ * with name memberName
+ * 4) "::memberName a non-function member or define
+ * 5) ("ScopeName::")+"memberName()"
+ * 6) ("ScopeName::")+"memberName(...)"
+ * 7) ("ScopeName::")+"memberName"
+ * instead of :: the # symbol may also be used.
+ */
+
+void generateRef(OutputList &ol,const char *scName,
const char *name,bool inSeeBlock,const char *rt)
{
- //printf("generateRef(clName=%s,name=%s,rt=%s)\n",clName,name,rt);
+ //printf("generateRef(scName=%s,name=%s,rt=%s)\n",scName,name,rt);
- // check if we have a plane name
- QString tmpName = substitute(name,"#","::");
- QString linkText = rt;
+ QCString tmpName = substitute(name,"#","::");
+ QCString linkText = rt;
int scopePos=tmpName.findRev("::");
- int bracePos=tmpName.find('(');
- if (scopePos==-1 && bracePos==-1)
+ int bracePos=tmpName.findRev('('); // reverse is needed for operator()(...)
+ if (bracePos==-1) // simple name
{
- if (!inSeeBlock) /* check for class link */
+ ClassDef *cd=0;
+ NamespaceDef *nd=0;
+ if (linkText.isNull()) linkText=tmpName;
+ // check if this is a class or namespace reference
+ if (scName!=tmpName && getScopeDefs(scName,name,cd,nd))
{
- if (linkText.isNull()) linkText=tmpName;
- // check if this is a class reference
- if (clName!=tmpName)
- generateClassRef(ol,name,linkText);
- else
- ol.docify(linkText);
+ if (cd) // scope matches that of a class
+ {
+ ol.writeObjectLink(cd->getReference(),
+ cd->getOutputFileBase(),0,linkText);
+ if (!cd->isReference())
+ ol.writePageRef(cd->name(),0);
+ }
+ else // scope matches that of a namespace
+ {
+ ol.writeObjectLink(nd->getReference(),
+ nd->getOutputFileBase(),0,linkText);
+ if (!nd->getReference())
+ ol.writePageRef(nd->name(),0);
+ }
+ // link has been written, stop now.
return;
}
- else /* check if it is a class, if not continue to search */
+ else if (scName==tmpName || (!inSeeBlock && scopePos==-1)) // nothing to link => output plain text
{
- if (clName!=tmpName && getClass(tmpName)!=0)
- {
- generateClassRef(ol,tmpName,linkText);
- return;
- }
+ ol.docify(linkText);
+ // text has been written, stop now.
+ return;
}
+ // continue search...
+ linkText = rt;
}
// extract scope
- QString scopeContext=clName;
- QString scopeUser;
- if (scopePos>0) scopeUser=tmpName.left(scopePos);
-
+ QCString scopeStr=scName;
+
//printf("scopeContext=%s scopeUser=%s\n",scopeContext.data(),scopeUser.data());
- // extract name
- int startNamePos=scopePos!=-1 ? scopePos+2 : 0;
+ // extract userscope+name
int endNamePos=bracePos!=-1 ? bracePos : tmpName.length();
- QString nameStr=tmpName.mid(startNamePos,endNamePos-startNamePos);
+ QCString nameStr=tmpName.left(endNamePos);
// extract arguments
- QString argsStr;
+ QCString argsStr;
if (bracePos!=-1) argsStr=tmpName.right(tmpName.length()-bracePos);
// create a default link text if none was explicitly given
bool explicitLink=TRUE;
if (linkText.isNull())
{
- if (!scopeUser.isEmpty()) linkText=scopeUser+"::";
- linkText+=nameStr;
+ //if (!scopeUser.isEmpty()) linkText=scopeUser+"::";
+ linkText=nameStr;
+ if (linkText.left(2)=="::") linkText=linkText.right(linkText.length()-2);
explicitLink=FALSE;
}
//printf("scope=`%s' name=`%s' arg=`%s' linkText=`%s'\n",
// scopeStr.data(),nameStr.data(),argsStr.data(),linkText.data());
- //Define *d=0;
MemberDef *md = 0;
ClassDef *cd = 0;
FileDef *fd = 0;
NamespaceDef *nd = 0;
- int scopeOffset=scopeContext.length();
- do
+
+ //printf("Try with scName=`%s' nameStr=`%s' argsStr=`%s'\n",
+ // scopeStr.data(),nameStr.data(),argsStr.data());
+
+ // check if nameStr is a member or global.
+ if (getDefs(scopeStr,nameStr,argsStr,md,cd,fd,nd))
{
- QString totalScope=scopeUser.copy();
- if (scopeOffset>0)
+ //printf("after getDefs nd=%p\n",nd);
+ QCString anchor = (md->isReference() || md->hasDocumentation()) ? md->anchor() : 0;
+ QCString cName,aName;
+ if (cd) // nameStr is a member of cd
{
- if (!totalScope.isEmpty()) totalScope.prepend("::");
- totalScope.prepend(scopeContext.left(scopeOffset));
+ //printf("addObjectLink(%s,%s,%s,%s)\n",cd->getReference(),
+ // cd->getOutputFileBase(),anchor.data(),resultName.stripWhiteSpace().data());
+ ol.writeObjectLink(cd->getReference(),cd->getOutputFileBase(),
+ anchor,linkText.stripWhiteSpace());
+ cName=cd->name();
+ aName=md->anchor();
}
- //printf("Try with totalScope=`%s'\n",totalScope.data());
- // check if nameStr is a member or global.
- if (getDefs(nameStr,totalScope,argsStr,md,cd,fd,nd))
+ else if (nd) // nameStr is a member of nd
{
- QString anchor = md->hasDocumentation() ? md->anchor() : 0;
- QString cName,aName;
- if (cd) // nameStr is a member of cd
- {
- //printf("addObjectLink(%s,%s,%s,%s)\n",cd->getReference(),
- // cd->getOutputFileBase(),anchor.data(),resultName.stripWhiteSpace().data());
- ol.writeObjectLink(cd->getReference(),cd->getOutputFileBase(),
- anchor,linkText.stripWhiteSpace());
- cName=cd->name();
- aName=md->anchor();
- }
- else if (nd) // nameStr is a member of nd
- {
- ol.writeObjectLink(nd->getReference(),nd->getOutputFileBase(),
- anchor,linkText.stripWhiteSpace());
- cName=nd->name();
- aName=md->anchor();
- }
- else if (fd) // nameStr is a global in file fd
- {
- //printf("addFileLink(%s,%s,%s)\n",fd->getOutputFileBase(),anchor.data(),
- // resultName.stripWhiteSpace().data());
- ol.writeObjectLink(fd->getReference(),fd->getOutputFileBase(),
- anchor,linkText.stripWhiteSpace());
- cName=fd->name();
- aName=md->anchor();
- }
- else // should not be reached
- {
- //printf("add no link fd=cd=0\n");
- ol.docify(linkText);
- }
+ //printf("writing namespace link\n");
+ ol.writeObjectLink(nd->getReference(),nd->getOutputFileBase(),
+ anchor,linkText.stripWhiteSpace());
+ cName=nd->name();
+ aName=md->anchor();
+ }
+ else if (fd) // nameStr is a global in file fd
+ {
+ //printf("addFileLink(%s,%s,%s)\n",fd->getOutputFileBase(),anchor.data(),
+ // resultName.stripWhiteSpace().data());
+ ol.writeObjectLink(fd->getReference(),fd->getOutputFileBase(),
+ anchor,linkText.stripWhiteSpace());
+ cName=fd->name();
+ aName=md->anchor();
+ }
+ else // should not be reached
+ {
+ //printf("add no link fd=cd=0\n");
+ ol.docify(linkText);
+ }
- // for functions we add the arguments if explicitly specified or else "()"
- if (!rt && (md->isFunction() || md->isPrototype() || md->isSignal() || md->isSlot()))
- {
- if (argsStr.isNull())
- ol.writeString("()");
- else
- ol.docify(argsStr);
- }
+ // for functions we add the arguments if explicitly specified or else "()"
+ if (!rt && (md->isFunction() || md->isPrototype() || md->isSignal() || md->isSlot()))
+ {
+ if (argsStr.isNull())
+ ol.writeString("()");
+ else
+ ol.docify(argsStr);
+ }
- // generate the page reference (for LaTeX)
- if (cName.length()>0 || aName.length()>0)
+ // generate the page reference (for LaTeX)
+ if (cName.length()>0 || aName.length()>0)
+ {
+ if (
+ (cd && !cd->isReference() && cd->isVisible()) ||
+ (fd && !fd->isReference()) ||
+ (nd /* TODO: && !nd->isReference() */)
+ )
{
- if (
- (cd && !cd->isReference() && cd->isVisible()) ||
- (fd && !fd->isReference()) ||
- (nd /* TODO: && !nd->isReference() */)
- )
- {
- ol.writePageRef(cName,aName);
- }
+ ol.writePageRef(cName,aName);
}
- return;
}
- // else if (!nameStr.isNull() && (d=defineDict[nameStr]))
- // // check if nameStr is perhaps a define
- // {
- // if (d->hasDocumentation() && d->fileDef)
- // {
- // ol.writeObjectLink(0,d->fileDef->getOutputFileBase(),d->anchor,
- // linkText.stripWhiteSpace());
- // if (!explicitLink) ol.docify(argsStr);
- // }
- // }
- if (scopeOffset==0)
- scopeOffset=-1;
- else if ((scopeOffset=scopeContext.findRev("::",scopeOffset-1))==-1)
- scopeOffset=0;
- } while (scopeOffset>=0);
-
+ return;
+ }
+
// nothing found
if (rt)
ol.docify(rt);
@@ -2150,9 +2422,9 @@ void generateRef(OutputList &ol,const char *clName,
void generateLink(OutputList &ol,const char *clName,
const char *lr,bool inSeeBlock,const char *lt)
{
- QString linkRef=lr;
+ QCString linkRef=lr;
//PageInfo *pi=0;
- //printf("generateLink(%s,%s)\n",lr,lt);
+ //printf("generateLink(%s,%s,%s) inSeeBlock=%d\n",clName,lr,lt,inSeeBlock);
//FileInfo *fi=0;
FileDef *fd;
bool ambig;
@@ -2172,7 +2444,7 @@ void generateLink(OutputList &ol,const char *clName,
void generateFileRef(OutputList &ol,const char *name,const char *text)
{
- QString linkText = text ? text : name;
+ QCString linkText = text ? text : name;
//FileInfo *fi;
FileDef *fd;
bool ambig;
@@ -2186,14 +2458,14 @@ void generateFileRef(OutputList &ol,const char *name,const char *text)
//----------------------------------------------------------------------
-QString substituteClassNames(const QString &s)
+QCString substituteClassNames(const QCString &s)
{
int i=0,l,p;
- QString result;
+ QCString result;
QRegExp r("[a-z_A-Z][a-z_A-Z0-9]*");
while ((p=r.match(s,i,&l))!=-1)
{
- QString *subst;
+ QCString *subst;
if (p>i) result+=s.mid(i,p-i);
if ((subst=substituteDict[s.mid(p,l)]))
{
@@ -2211,14 +2483,14 @@ QString substituteClassNames(const QString &s)
//----------------------------------------------------------------------
-QString convertSlashes(const QString &s,bool dots)
+QCString convertSlashes(const QCString &s,bool dots)
{
- QString result;
+ QCString result;
int i,l=s.length();
for (i=0;i<l;i++)
if (s.at(i)!='/' && (!dots || s.at(i)!='.'))
{
- if (caseSensitiveNames)
+ if (Config::caseSensitiveNames)
{
result+=s[i];
}
@@ -2235,10 +2507,10 @@ QString convertSlashes(const QString &s,bool dots)
//----------------------------------------------------------------------
// substitute all occurences of `src' in `s' by `dst'
-QString substitute(const char *s,const char *src,const char *dst)
+QCString substitute(const char *s,const char *src,const char *dst)
{
- QString input=s;
- QString output;
+ QCString input=s;
+ QCString output;
int i=0,p;
while ((p=input.find(src,i))!=-1)
{
@@ -2255,8 +2527,8 @@ QString substitute(const char *s,const char *src,const char *dst)
FileDef *findFileDef(const FileNameDict *fnDict,const char *n,bool &ambig)
{
ambig=FALSE;
- QString name=n;
- QString path;
+ QCString name=n;
+ QCString path;
if (name.isNull()) return 0;
int slashPos=QMAX(name.findRev('/'),name.findRev('\\'));
if (slashPos!=-1)
@@ -2298,8 +2570,8 @@ FileDef *findFileDef(const FileNameDict *fnDict,const char *n,bool &ambig)
void showFileDefMatches(const FileNameDict *fnDict,const char *n)
{
- QString name=n;
- QString path;
+ QCString name=n;
+ QCString path;
int slashPos=QMAX(name.findRev('/'),name.findRev('\\'));
if (slashPos!=-1)
{
@@ -2323,10 +2595,10 @@ void showFileDefMatches(const FileNameDict *fnDict,const char *n)
//----------------------------------------------------------------------
-void setFileNameForSections(QList<QString> *anchorList,const char *fileName)
+void setFileNameForSections(QList<QCString> *anchorList,const char *fileName)
{
if (!anchorList) return;
- QString *s=anchorList->first();
+ QCString *s=anchorList->first();
while (s)
{
SectionInfo *si;
diff --git a/src/util.h b/src/util.h
index a6481cc..515a816 100644
--- a/src/util.h
+++ b/src/util.h
@@ -41,46 +41,47 @@ extern void writeMemberDocs(OutputList &ol,
MemberList *ml,const char *scopeName,MemberDef::MemberType m);
extern void setAnchors(char id,MemberList *ml);
//extern int countMemberDocs(MemberList *ml,MemberDef::MemberType m);
-extern QString fileToString(const char *name);
-extern QString dateToString(bool);
+extern QCString fileToString(const char *name);
+extern QCString dateToString(bool);
//extern OutputList linkifyText(const char *clName,const char *name,
// const char *text);
-extern bool getDefs(const QString &memberName,const QString &className,
+extern bool getDefs(const QCString &scopeName,const QCString &memberName,
const char *, MemberDef *&md, ClassDef *&cd,FileDef *&fd,
NamespaceDef *&nd);
extern void generateRef(OutputList &ol,const char *,
const char *,bool inSeeBlock,const char * =0);
extern void generateLink(OutputList &ol,const char *,
const char *,bool inSeeBlock,const char *);
-extern void generateClassRef(OutputList &ol,const char *clName,
- const char *linkTxt=0);
+//extern void generateClassRef(OutputList &ol,const char *clName,
+// const char *linkTxt=0);
extern void generateFileRef(OutputList &ol,const char *,
const char *linkTxt=0);
extern bool matchArguments(ArgumentList *,ArgumentList *,
const char *cl=0,const char *ns=0);
extern void mergeArguments(ArgumentList *,ArgumentList *);
-extern QString substituteClassNames(const QString &s);
-extern QString convertSlashes(const QString &s,bool dots=FALSE);
-extern QString substitute(const char *s,const char *src,const char *dst);
-extern QString resolveDefines(const char *n);
+extern QCString substituteClassNames(const QCString &s);
+extern QCString convertSlashes(const QCString &s,bool dots=FALSE);
+extern QCString substitute(const char *s,const char *src,const char *dst);
+extern QCString resolveDefines(const char *n);
extern ClassDef *getClass(const char *key);
//extern int strcscmp(const char *s1,const char *s2);
extern FileDef *findFileDef(const FileNameDict *fnDict,const char *n,
bool &ambig);
extern void showFileDefMatches(const FileNameDict *fnDict,const char *n);
extern int guessSection(const char *name);
-//extern QString nameToFile(const char *name);
+//extern QCString nameToFile(const char *name);
extern bool isId(char c);
-extern QString removeRedundantWhiteSpace(const QString &s);
+extern QCString removeRedundantWhiteSpace(const QCString &s);
extern void startTitle(OutputList &ol);
extern void endTitle(OutputList &ol,const char *name);
void startFile(OutputList &ol,const char *name,
const char *title,bool external=FALSE);
void endFile(OutputList &ol,bool external=FALSE);
void writeQuickLinks(OutputList &ol,bool compact,bool external=FALSE);
-QString argListToString(ArgumentList *al);
-QString generateMarker(int id);
+QCString argListToString(ArgumentList *al);
+QCString generateMarker(int id);
void writeExample(OutputList &ol,ExampleList *el);
-void setFileNameForSections(QList<QString> *anchorList,const char *fileName);
+void setFileNameForSections(QList<QCString> *anchorList,const char *fileName);
+QCString stripAnnonymousScope(const QCString &s);
#endif