diff options
author | pme <pme@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-09-27 22:44:24 +0000 |
---|---|---|
committer | pme <pme@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-09-27 22:44:24 +0000 |
commit | 78ee80ac8cd369c4772387a374b5f3ce7302c9a5 (patch) | |
tree | e42147f52307202bd4e083e2d18993fa06379a89 /libstdc++-v3/docs/doxygen | |
parent | f544797c672041b9b982a3dcf897b53d1aee995c (diff) | |
download | gcc-78ee80ac8cd369c4772387a374b5f3ce7302c9a5.tar.gz |
2001-09-27 Phil Edwards <pme@gcc.gnu.org>
* include/std/*: Add Doxygen hooks.
* docs/doxygen/Intro.3: New file, general intro to the man pages.
* docs/doxygen/mainpage.doxy: Formatting tweaks. List our own links
rather than using a generated index.
* docs/doxygen/user.cfg.in: Disable the index, enable man pages.
* docs/doxygen/run_doxygen: Massage the generated man pages, using...
* docs/doxygen/stdheader.cc: ...this new file.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@45850 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3/docs/doxygen')
-rw-r--r-- | libstdc++-v3/docs/doxygen/Intro.3 | 24 | ||||
-rw-r--r-- | libstdc++-v3/docs/doxygen/mainpage.doxy | 93 | ||||
-rw-r--r-- | libstdc++-v3/docs/doxygen/run_doxygen | 56 | ||||
-rw-r--r-- | libstdc++-v3/docs/doxygen/stdheader.cc | 146 | ||||
-rw-r--r-- | libstdc++-v3/docs/doxygen/user.cfg.in | 9 |
5 files changed, 274 insertions, 54 deletions
diff --git a/libstdc++-v3/docs/doxygen/Intro.3 b/libstdc++-v3/docs/doxygen/Intro.3 new file mode 100644 index 00000000000..5df718b118b --- /dev/null +++ b/libstdc++-v3/docs/doxygen/Intro.3 @@ -0,0 +1,24 @@ +.\" This man page is released under the FDL as part of libstdc++-v3. +.TH Intro 3 "27 September 2001" "GNU libstdc++-v3" "Standard C++ Library" +.SH NAME +Intro \- Introduction to the GNU libstdc++-v3 man pages +.SH DESCRIPTION + +This should mention the man pages generated for modules. + +.SH FILES + +Lots. Wish I knew enough *roff syntax to list them nicely. + +.SH CONFORMING TO +Almost conforming to +.BI "International Standard ISO/IEC 14882:1998(E), " "Programming Languages --- C++" +(aka the C++ standard), in addition to corrections proposed by the Library +Working Group, +.SM JTC1/SC22/WG21. +.SH SEE ALSO +.UR +http://gcc.gnu.org/libstdc++/ +.UE +for the Frequently Asked Questions, online documentation, and more. + diff --git a/libstdc++-v3/docs/doxygen/mainpage.doxy b/libstdc++-v3/docs/doxygen/mainpage.doxy index a05692b8f78..f1fa54d1037 100644 --- a/libstdc++-v3/docs/doxygen/mainpage.doxy +++ b/libstdc++-v3/docs/doxygen/mainpage.doxy @@ -1,62 +1,75 @@ /*! \mainpage -<h2> documentation overview </h2> +<h2> Documentation Overview </h2> -<p> -There are two types of documentation for libstdc++-v3. One is the distribution documentation, which can be read -<a href="http://gcc.gnu.org/onlinedocs/libstdc++/documentation.html">here</a>. +<p>There are two types of documentation for libstdc++-v3. One is the + distribution documentation, which can be read online at + <a href="http://gcc.gnu.org/onlinedocs/libstdc++/documentation.html">http://gcc.gnu.org/onlinedocs/libstdc++/documentation.html</a> + or offline from docs/html/documentation.html in the library source + directory. </p> -<p> -The other is the source documentation, of which this is the first page. +<p>The other type is the source documentation, of which this is the first page. + Here are quick links to the pages which we seem to use the most; a full + index is at the bottom: + <!-- Keep this in sync with below. --> + <ul> + <li><a href="annotated.html">Compound List</a> + <li><a href="classes.html">Alphabetical List</a> + <li><a href="files.html">File List</a> + <!-- Will be useful, but not yet. <li><a href="modules.html">Modules</a> --> + </ul> </p> -<h2> generating this file </h2> -<p> -This page is automatically generated. The Makefile rule <tt>make -doxygen</tt> in the libstdc++-v3 build directory generates these pages -using a tool called, appropriately enough, doxygen. To learn more -about doxygen, take a look at <a href="http://www.doxygen.org"> the -doxygen webpage </a>. +<h2> Generating this file </h2> +<p>This page is automatically generated. The Makefile rule <code> make + doxygen </code> in the libstdc++-v3 build directory generates these pages + using a tool called, appropriately enough, Doxygen. To learn more about + Doxygen, take a look at <a href="http://www.doxygen.org">the Doxygen + webpage</a>. </p> -<p> -The libstdc++-v3 configuration files needed to generate doxygen output -are located: -<p> <tt> docs/doxygen/user.cfg.in</tt> </p> -<p> <tt> docs/doxygen/maint.cfg.in</tt> </p> +<p>The libstdc++-v3 configuration files needed to generate doxygen output + are located: + <ul><li><code>docs/doxygen/user.cfg.in</code> + <li><code>docs/doxygen/maint.cfg.in</code> + </ul> </p> <h2> libstdc++-v3 doxygen style guide </h2> -<p> -In general, libstdc++-v3 files should be formatted according to the -GNU C++ Coding Standard rules found in the file <a +<p>In general, libstdc++-v3 files should be formatted according to the + GNU C++ Coding Standard rules found in the file <a href="http://gcc.gnu.org/onlinedocs/libstdc++/17_intro/C++STYLE">C++STYLE</a>. -Before any doxygen-specific formatting tweaks are made, please try to -make sure that the initial formatting is sound. + Before any doxygen-specific formatting tweaks are made, please try to + make sure that the initial formatting is sound. </p> -<p> -The formatting guidelines for using libstdc++-v3 with doxygen are -still incomplete. There seems to be a marginal preference for the use -of Java-Doc style formatting, with the idea that the single-line style -(triple-slash) is the least intrusive mechanism for getting -libstdc++-v3 documented and cross-referenced while at the same time -minimizing disruption to the current formatting. +<p>The formatting guidelines for using libstdc++-v3 with doxygen are still + incomplete. There seems to be a marginal preference for the use of + Java-Doc style formatting, with the idea that the single-line style + (triple-slash) is the least intrusive mechanism for getting libstdc++-v3 + documented and cross-referenced while at the same time minimizing + disruption to the current formatting. Full documentation of functions + (parameter types, return values, etc) will require the slash-splat-splat + "extended C" commenting style. </p> -<p> -For the time being, please see <tt>include/bits/char_traits.h</tt> -which is the test bed for a finished doxygen style guide. +<h2> Full page index </h2> +<p>Here are entry points to all the pages generated by Doxygen: + <ul> + <li><a href="index.html">Main Page</a> + <li><a href="modules.html">Modules</a> + <li><a href="namespaces.html">Namespace List</a> + <li><a href="hierarchy.html">Class Hierarchy</a> + <li><a href="classes.html">Alphabetical List</a> + <li><a href="annotated.html">Compound List</a> + <li><a href="files.html">File List</a> + <li><a href="namespacemembers.html">Namespace Members</a> + <li><a href="functions.html">Compound Members</a> + <li><a href="globals.html">File Members</a> + </ul> </p> */ - - - - - - - diff --git a/libstdc++-v3/docs/doxygen/run_doxygen b/libstdc++-v3/docs/doxygen/run_doxygen index 6bd83f024b3..d515dfde99a 100644 --- a/libstdc++-v3/docs/doxygen/run_doxygen +++ b/libstdc++-v3/docs/doxygen/run_doxygen @@ -1,6 +1,6 @@ #!/bin/sh -# Runs doxygen. Possibly will massage the output files. +# Runs doxygen and massages the output files. # # Synopsis: run_doxygen --mode=[user|maint] v3srcdir v3builddir # @@ -69,14 +69,6 @@ parse_options() { mode=$arg ;; --mode | --help | -h) print_usage ;; - --version | -v) - # Aw, that's so cuuuute... don't ask, I needed it. - blank= - Id=is - echo You expect this dinky script to track a version? Okay, here - echo it $Id: run_doxygen,v 1.6 2001/07/11 19:35:47 pme Exp $blank - exit 0 - ;; *) # this turned out to be a mess, maybe change to --srcdir=, etc if test $srcdir = unset; then @@ -129,12 +121,56 @@ chmod u+w $outdir echo :: Finished, exit code was $? ) -# mess with output files here? +# Mess with the man pages. We don't need documentation of the internal +# headers, since the man pages for those contain nothing useful anyhow. The +# man pages for doxygen modules need to be renamed (or deleted). And the +# generated #include lines need to be changed from the internal names to the +# standard ones (e.g., "#include <stl_tempbuf.h>" -> "#include <memory>"). +# +# File names with embedded spaces (EVIL!) need to be....? renamed or removed? +cd $outdir/man/man3 && { +echo :: Fixing up the man pages... + +# requires GNU tools +find . -name "* *" -print0 | xargs -0 rm +rm *.h.3 + +# can leave SGIextensions.3 alone, it's an okay name +mv s20_3_1_base.3 Intro_functors.3 +mv s20_3_2_arithmetic.3 Arithmetic_functors.3 +mv s20_3_3_comparisons.3 Comparison_functors.3 +mv s20_3_4_logical.3 Logical_functors.3 +mv s20_3_5_negators.3 Negation_functors.3 +mv s20_3_6_binder.3 Binder_functors.3 +mv s20_3_7_adaptors.3 Func_ptr_functors.3 +mv s20_3_8_memadaptors.3 Member_ptr_functors.3 + +# Standardize the displayed header names. If anyone who knows perl cares +# enough to rewrite all this, feel free. This only gets run once a century, +# and I'm off getting coffee then anyhow, so I didn't care enough to make +# this super-fast. +g++ ${srcdir}/docs/doxygen/stdheader.cc -o ./stdheader +problematic=`egrep -l '#include <.*_.*>' [a-z]*.3` +for f in $problematic; do + # this is also slow, but safe and easy to debug + oldh=`sed -n '/#include </s/.*<\(.*\)>.*/\1/p' $f` + newh=`echo $oldh | ./stdheader` + sed "s=${oldh}=${newh}=" $f > TEMP + mv TEMP $f +done +rm stdheader + +cp ${srcdir}/docs/doxygen/Intro.3 . +} + +# all done echo :: echo :: Doxygen output begins with echo :: ${outdir}/html_${mode}/index.html echo :: +echo :: Man pages in ${outdir}/man +echo :: exit 0 diff --git a/libstdc++-v3/docs/doxygen/stdheader.cc b/libstdc++-v3/docs/doxygen/stdheader.cc new file mode 100644 index 00000000000..d705d0169c8 --- /dev/null +++ b/libstdc++-v3/docs/doxygen/stdheader.cc @@ -0,0 +1,146 @@ +// This is a slow larval-stage kludge to help massage the generated man +// pages. It's used like this: +const char* const usage = +"\nTakes on stdin, whitespace-separated words of the form\n" +"\n" +" [bits/]stl_foo.h\n" +" [bits/]std_foo.h\n" +"\n" +"and writes on stdout the nearest matching standard header name.\n" +"\n" +"Takes no command-line arguments.\n" +"\n"; + +#include <string> +#include <map> +#include <iostream> + +typedef std::map<std::string, std::string> Map; + +Map headers; + +void init_map() +{ + // Enter the glamourous world of data entry!! Maintain these! + headers["algo.h"] = "algorithm"; + headers["algobase.h"] = "algorithm"; + headers["algorithm.h"] = "algorithm"; + headers["alloc.h"] = "memory"; + headers["basic_ios.h"] = "ios"; + headers["basic_ios.tcc"] = "ios"; + headers["basic_string.h"] = "string"; + headers["basic_string.tcc"] = "string"; + headers["bitset.h"] = "bitset"; + headers["bvector.h"] = "vector"; + //headers["char_traits.h"] uhhhhhh + headers["complex.h"] = "complex"; + //headers["construct.h"] stl_construct.h entirely internal + headers["deque.h"] = "deque"; + headers["fstream.h"] = "fstream"; + headers["fstream.tcc"] = "fstream"; + headers["function.h"] = "functional"; + headers["functional.h"] = "functional"; + headers["heap.h"] = "algorithm"; + headers["iomanip.h"] = "iomanip"; + headers["ios.h"] = "ios"; + headers["iosfwd.h"] = "iosfwd"; + headers["iostream.h"] = "iostream"; + headers["istream.h"] = "istream"; + headers["istream.tcc"] = "istream"; + headers["iterator.h"] = "iterator"; + headers["iterator_base_funcs.h"] = "iterator"; + headers["iterator_base_types.h"] = "iterator"; + headers["limits.h"] = "limits"; + headers["list.h"] = "list"; + headers["locale.h"] = "locale"; + headers["locale_facets.h"] = "locale"; + headers["locale_facets.tcc"] = "locale"; + headers["map.h"] = "map"; + headers["memory.h"] = "memory"; + headers["multimap.h"] = "map"; + headers["multiset.h"] = "set"; + headers["numeric.h"] = "numeric"; + headers["ostream.h"] = "ostream"; + headers["ostream.tcc"] = "ostream"; + headers["pair.h"] = "utility"; + //headers["pthread_alloc.h"] who knows + headers["queue.h"] = "queue"; + headers["raw_storage_iter.h"] = "memory"; + headers["relops.h"] = "utility"; + headers["set.h"] = "set"; + headers["sstream.h"] = "sstream"; + headers["sstream.tcc"] = "sstream"; + headers["stack.h"] = "stack"; + headers["stdexcept.h"] = "stdexcept"; + headers["streambuf.h"] = "streambuf"; + headers["streambuf.tcc"] = "streambuf"; + headers["string.h"] = "string"; + headers["tempbuf.h"] = "memory"; + //headers["threads.h"] who knows + headers["tree.h"] = "backward/tree.h"; + headers["uninitialized.h"] = "memory"; + headers["utility.h"] = "utility"; + headers["valarray.h"] = "valarray"; + headers["valarray_array.h"] = "valarray"; + headers["valarray_array.tcc"] = "valarray"; + headers["valarray_meta.h"] = "valarray"; + headers["vector.h"] = "vector"; + + // C wrappers -- probably was an easier way to do these, but oh well + headers["cassert.h"] = "cassert"; + headers["cctype.h"] = "cctype"; + headers["cerrno.h"] = "cerrno"; + headers["cfloat.h"] = "cfloat"; + headers["climits.h"] = "climits"; + headers["clocale.h"] = "clocale"; + headers["cmath.h"] = "cmath"; + headers["csetjmp.h"] = "csetjmp"; + headers["csignal.h"] = "csignal"; + headers["cstdarg.h"] = "cstdarg"; + headers["cstddef.h"] = "cstddef"; + headers["cstdio.h"] = "cstdio"; + headers["cstdlib.h"] = "cstdlib"; + headers["cstring.h"] = "cstring"; + headers["ctime.h"] = "ctime"; + headers["cwchar.h"] = "cwchar"; + headers["cwctype.h"] = "cwctype"; +} + + +void do_word (std::string const& longheader) +{ + std::string::size_type start = 0; + + if (longheader.substr(start,5) == "bits/") start += 5; + if ((longheader.substr(start,4) == "stl_") || + (longheader.substr(start,4) == "std_")) + { + start += 4; + } + + // come on, gdb, find `p' already... + const char* p = longheader.substr(start).c_str(); + Map::iterator word = headers.find(p); + if (word != headers.end()) + std::cout << word->second << '\n'; + else std::cout << "MAYBE_AN_ERROR_MESSAGE_HERE\n"; +} + + +int main (int argc, char**) +{ + if (argc > 1) + { + std::cerr << usage; + exit(0); + } + + init_map(); + + std::string w; + while (std::cin >> w) + do_word (w); +} + +// vim:ts=4:et: + diff --git a/libstdc++-v3/docs/doxygen/user.cfg.in b/libstdc++-v3/docs/doxygen/user.cfg.in index 97c0ca4fcc0..a78cd5c32f1 100644 --- a/libstdc++-v3/docs/doxygen/user.cfg.in +++ b/libstdc++-v3/docs/doxygen/user.cfg.in @@ -344,13 +344,14 @@ RECURSIVE = YES # subdirectory from a directory tree whose root is specified with the INPUT tag. EXCLUDE = include/c \ - include/c_shadow + include/c_shadow \ + docs/doxygen/stdheader.cc # If the value of the INPUT tag contains directories, you can use the # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude # certain files from those directories. -EXCLUDE_PATTERNS = +EXCLUDE_PATTERNS = CVS # The EXAMPLE_PATH tag can be used to specify one or more files or # directories that contain example code fragments that are included (see @@ -477,7 +478,7 @@ TOC_EXPAND = NO # top of each HTML page. The value NO (the default) enables the index and # the value YES disables it. -DISABLE_INDEX = NO +DISABLE_INDEX = YES # This tag can be used to set the number of enum values (range [1..20]) # that doxygen will group on one line in the generated HTML documentation. @@ -601,7 +602,7 @@ RTF_STYLESHEET_FILE = # If the GENERATE_MAN tag is set to YES (the default) Doxygen will # generate man pages -GENERATE_MAN = NO +GENERATE_MAN = YES # The MAN_OUTPUT tag is used to specify where the man pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be |