summaryrefslogtreecommitdiff
path: root/libstdc++-v3/docs/doxygen
diff options
context:
space:
mode:
authorpme <pme@138bc75d-0d04-0410-961f-82ee72b054a4>2001-09-27 22:44:24 +0000
committerpme <pme@138bc75d-0d04-0410-961f-82ee72b054a4>2001-09-27 22:44:24 +0000
commit78ee80ac8cd369c4772387a374b5f3ce7302c9a5 (patch)
treee42147f52307202bd4e083e2d18993fa06379a89 /libstdc++-v3/docs/doxygen
parentf544797c672041b9b982a3dcf897b53d1aee995c (diff)
downloadgcc-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.324
-rw-r--r--libstdc++-v3/docs/doxygen/mainpage.doxy93
-rw-r--r--libstdc++-v3/docs/doxygen/run_doxygen56
-rw-r--r--libstdc++-v3/docs/doxygen/stdheader.cc146
-rw-r--r--libstdc++-v3/docs/doxygen/user.cfg.in9
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
+ &quot;extended C&quot; 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