mainpage.html: Add in corrected links.

2008-02-11  Benjamin Kosnik  <bkoz@redhat.com>

	* doc/doxygen/mainpage.html: Add in corrected links.
	* README: Edit, move most into...
	* doc/xml/manual/appendix_contributing.xml (Directory Layout): ...here.
	(Documentation Style): Revise.
	* doc/xml/spine.xml: Edit file names.
	* doc/Makefile.am: Edit xml_sources.
	* doc/Makefile.in: Regenerate.

From-SVN: r132249
This commit is contained in:
Benjamin Kosnik 2008-02-12 02:10:57 +00:00 committed by Benjamin Kosnik
parent 42d572f5a3
commit c9024a78a9
7 changed files with 1901 additions and 1682 deletions

View File

@ -1,3 +1,13 @@
2008-02-11 Benjamin Kosnik <bkoz@redhat.com>
* doc/doxygen/mainpage.html: Add in corrected links.
* README: Edit, move most into...
* doc/xml/manual/appendix_contributing.xml (Directory Layout): ...here.
(Documentation Style): Revise.
* doc/xml/spine.xml: Edit file names.
* doc/Makefile.am: Edit xml_sources.
* doc/Makefile.in: Regenerate.
2008-02-11 Paolo Carlini <pcarlini@suse.de>
* configure: Regenerate with documented autoconf and automake

View File

@ -1,96 +1,6 @@
file: libstdc++-v3/README
New users may wish to point their web browsers to the file
documentation.html in the 'docs/html' subdirectory. It contains brief
index.html in the 'doc/html' subdirectory. It contains brief
building instructions and notes on how to configure the library in
interesting ways.
Instructions for configuring and building appear in
docs/html/install.html.
This directory contains the files needed to create an ISO Standard C++
Library.
It has subdirectories:
docs
Files in HTML and text format that document usage, quirks of the
implementation, and contributor checklists.
include
All header files for the C++ library are within this directory,
modulo specific runtime-related files that are in the libsupc++
directory.
include/std
Files meant to be found by #include <name> directives in
standard-conforming user programs.
include/c
Headers intended to directly include standard C headers.
[NB: this can be enabled via --enable-cheaders=c]
include/c_std
Headers intended to include standard C headers, and put select
names into the std:: namespace.
[NB: this is the default, and is the same as --enable-cheaders=c_std]
include/bits
Files included by standard headers and by other files in
the bits directory.
include/backward
Headers provided for backward compatibility, such as <iostream.h>.
They are not used in this library.
include/ext
Headers that define extensions to the standard library. No
standard header refers to any of them.
scripts
Scripts that are used during the configure, build, make, or test
process.
src
Files that are used in constructing the library, but are not
installed.
testsuites/[backward, demangle, ext, performance, thread, 17_* to 27_*]
Test programs are here, and may be used to begin to exercise the
library. Support for "make check" and "make check-install" is
complete, and runs through all the subdirectories here when this
command is issued from the build directory. Please note that
"make check" requires DejaGNU 1.4 or later to be installed. Please
note that "make check-script" calls the script mkcheck, which
requires bash, and which may need the paths to bash adjusted to
work properly, as /bin/bash is assumed.
Other subdirectories contain variant versions of certain files
that are meant to be copied or linked by the configure script.
Currently these are:
config/abi
config/cpu
config/io
config/locale
config/os
In addition, two subdirectories are convenience libraries:
libmath
Support routines needed for C++ math. Only needed if the
underlying "C" implementation is non-existent, in particular
required or optimal long double, long long, and C99 functionality.
libsupc++
Contains the runtime library for C++, including exception
handling and memory allocation and deallocation, RTTI, terminate
handlers, etc.
Note that glibc also has a bits/ subdirectory. We will either
need to be careful not to collide with names in its bits/
directory; or rename bits to (e.g.) cppbits/.
In files throughout the system, lines marked with an "XXX" indicate
a bug or incompletely-implemented feature. Lines marked "XXX MT"
indicate a place that may require attention for multi-thread safety.

View File

@ -73,7 +73,6 @@ xml_srcdir = ${glibcxx_srcdir}/doc/xml
xml_sources = \
${xml_srcdir}/spine.xml \
${xml_srcdir}/authors.xml \
${xml_srcdir}/manual/spine.xml \
${xml_srcdir}/manual/abi.xml \
${xml_srcdir}/manual/algorithms.xml \
${xml_srcdir}/manual/allocator.xml \
@ -186,7 +185,7 @@ doc-fo: $(xml_sources) ${glibcxx_builddir}/doc/fo
# PDF
# Points to current best xml to PDF generation process.
doc-pdf: doc-pdf-xmlto
doc-pdf: doc-pdf-prince
# PDF 1
# fop

View File

@ -294,7 +294,6 @@ xml_srcdir = ${glibcxx_srcdir}/doc/xml
xml_sources = \
${xml_srcdir}/spine.xml \
${xml_srcdir}/authors.xml \
${xml_srcdir}/manual/spine.xml \
${xml_srcdir}/manual/abi.xml \
${xml_srcdir}/manual/algorithms.xml \
${xml_srcdir}/manual/allocator.xml \
@ -617,7 +616,7 @@ doc-fo: $(xml_sources) ${glibcxx_builddir}/doc/fo
# PDF
# Points to current best xml to PDF generation process.
doc-pdf: doc-pdf-xmlto
doc-pdf: doc-pdf-prince
doc-pdf-fop-xml: $(xml_sources) ${glibcxx_builddir}/doc/pdf
@echo "Generating pdf fop files from xml..."
$(FOP) $(FOP_FLAGS) -xml ${top_srcdir}/doc/xml/spine.xml \

View File

@ -28,9 +28,9 @@
<p class="smallertext">Generated on @DATE@.</p>
<p>There are two types of documentation for libstdc++. 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 doc/html/documentation.html in the library source
distribution documentation, which can be read online
<a href="http://gcc.gnu.org/onlinedocs/libstdc++/index.html">here</a>
or offline from the file doc/html/index.html in the library source
directory.
</p>
@ -64,13 +64,15 @@
</p>
<h2>Generating the documentation</h2>
<p>These HTML pages are automatically generated, along with the man pages.
See <code>doc/doxygen/guide.html</code> in the source tree for how to
create (and write) the pages.
<p>These HTML pages are automatically generated, along with the man
pages. See the section "Documentation Style"
in <code>doc/xml/manual/appendix_contributing.xml</code> in the
source tree for how to create (and write) the doxygen markup.
This style guide can also be viewed on the <a href="manual/bk01apas03.html">web</a>.
<h2>License, Copyright, and Other Lawyerly Verbosity</h2>
<p>The libstdc++ documentation is released under
<a href="http://gcc.gnu.org/onlinedocs/libstdc++/17_intro/license.html">
<a href="manual/bk01pt01ch01s02.html">
these terms</a>.
</p>
<p>Part of the generated documentation involved comments and notes from

View File

@ -33,36 +33,65 @@
<title>Reading</title>
<itemizedlist>
<listitem><para> Get and read the relevant sections of the C++ language
specification. Copies of the full ISO 14882 standard are available on
line via the ISO mirror site for committee members. Non-members, or
those who have not paid for the privilege of sitting on the committee
and sustained their two meeting commitment for voting rights, may get
a copy of the standard from their respective national standards
organization. In the USA, this national standards organization is ANSI
and their web-site is right
<listitem>
<para>
Get and read the relevant sections of the C++ language
specification. Copies of the full ISO 14882 standard are
available on line via the ISO mirror site for committee
members. Non-members, or those who have not paid for the
privilege of sitting on the committee and sustained their
two meeting commitment for voting rights, may get a copy of
the standard from their respective national standards
organization. In the USA, this national standards
organization is ANSI and their web-site is right
<ulink url="http://www.ansi.org">here.</ulink>
(And if you've already registered with them, clicking this link will take you to directly to the place where you can
<ulink url="http://webstore.ansi.org/ansidocstore/product.asp?sku=ISO%2FIEC+14882%3A2003">buy the standard on-line.)</ulink>
</para></listitem>
</para>
</listitem>
<listitem><para> The library working group bugs, and known defects, can be obtained here:
<listitem>
<para>
The library working group bugs, and known defects, can
be obtained here:
<ulink url="http://www.open-std.org/jtc1/sc22/wg21/">http://www.open-std.org/jtc1/sc22/wg21 </ulink>
</para></listitem>
</para>
</listitem>
<listitem><para> The newsgroup dedicated to standardization issues is comp.std.c++: this FAQ for this group is quite useful and can be found <ulink url="http://www.jamesd.demon.co.uk/csc/faq.html"> here </ulink>.
</para></listitem>
<listitem>
<para>
The newsgroup dedicated to standardization issues is
comp.std.c++: this FAQ for this group is quite useful and
can be
found <ulink url="http://www.jamesd.demon.co.uk/csc/faq.html">
here </ulink>.
</para>
</listitem>
<listitem><para> Peruse the <ulink url="http://www.gnu.org/prep/standards_toc.html">GNU Coding Standards</ulink>, and chuckle when you hit the part about "Using Languages Other Than C."
</para></listitem>
<listitem>
<para>
Peruse
the <ulink url="http://www.gnu.org/prep/standards_toc.html">GNU
Coding Standards</ulink>, and chuckle when you hit the part
about <quote>Using Languages Other Than C</quote>.
</para>
</listitem>
<listitem><para> Be familiar with the extensions that preceded these general GNU rules. These style issues for libstdc++ can be found in the file C++STYLE, located in the root level of the distribution, or <ulink url="C++STYLE"> here. </ulink>
</para></listitem>
<listitem><para> And last but certainly not least, read the library-specific information found <ulink url="../documentation.html"> here.</ulink>
</para></listitem>
<listitem>
<para>
Be familiar with the extensions that preceded these
general GNU rules. These style issues for libstdc++ can be
found <link linkend="contrib.coding_style">here</link>.
</para>
</listitem>
<listitem>
<para>
And last but certainly not least, read the
library-specific information
found <link linkend="appendix.porting"> here</link>.
</para>
</listitem>
</itemizedlist>
</sect2>
@ -119,7 +148,6 @@ maintainer above so that progress can be monitored.
<sect2 id="list.patches" xreflabel="list.patches">
<title>Submitting Patches</title>
<para>
Every patch must have several pieces of information before it can be
properly evaluated. Ideally (and to ensure the fastest possible
@ -127,35 +155,162 @@ response from the maintainers) it would have all of these pieces:
</para>
<itemizedlist>
<listitem>
<para>
A description of the bug and how your patch fixes this
bug. For new features a description of the feature and your
implementation.
</para>
</listitem>
<listitem><para> A description of the bug and how your patch fixes this bug. For
new features a description of the feature and your implementation. </para></listitem>
<listitem>
<para>
A ChangeLog entry as plain text; see the various
ChangeLog files for format and content. If using you are
using emacs as your editor, simply position the insertion
point at the beginning of your change and hit CX-4a to bring
up the appropriate ChangeLog entry. See--magic! Similar
functionality also exists for vi.
</para>
</listitem>
<listitem><para> A ChangeLog entry as plain text; see the various ChangeLog files
for format and content. If using you are using emacs as your editor,
simply position the insertion point at the beginning of your change
and hit CX-4a to bring up the appropriate ChangeLog
entry. See--magic! Similar functionality also exists for vi. </para></listitem>
<listitem>
<para>
A testsuite submission or sample program that will
easily and simply show the existing error or test new
functionality.
</para>
</listitem>
<listitem><para> A testsuite submission or sample program that will easily and
simply show the existing error or test new functionality. </para></listitem>
<listitem><para> The patch itself. If you are accessing the SVN repository
use "svn update; svn diff NEW"; else, use "diff -cp OLD NEW"
... If your version of diff does not support these options, then
get the latest version of GNU diff. The <ulink url="http://gcc.gnu.org/wiki/SvnTricks">SVN Tricks</ulink> wiki page
has information on customising the output of <code>svn diff</code>.</para></listitem>
<listitem><para> When you have all these pieces, bundle them up in a mail message
and send it to libstdc++@gcc.gnu.org. All patches and related
discussion should be sent to the libstdc++ mailing list. </para></listitem>
<listitem>
<para>
The patch itself. If you are accessing the SVN
repository use <command>svn update; svn diff NEW</command>;
else, use <command>diff -cp OLD NEW</command> ... If your
version of diff does not support these options, then get the
latest version of GNU
diff. The <ulink url="http://gcc.gnu.org/wiki/SvnTricks">SVN
Tricks</ulink> wiki page has information on customising the
output of <code>svn diff</code>.
</para>
</listitem>
<listitem>
<para>
When you have all these pieces, bundle them up in a
mail message and send it to libstdc++@gcc.gnu.org. All
patches and related discussion should be sent to the
libstdc++ mailing list.
</para>
</listitem>
</itemizedlist>
</sect2>
</sect1>
<sect1 id="contrib.organization" xreflabel="Source Organization">
<title>Directory Layout and Source Conventions</title>
<para>
The unpacked source directory of libstdc++ contains the files
needed to create the GNU C++ Library.
</para>
<literallayout>
It has subdirectories:
doc
Files in HTML and text format that document usage, quirks of the
implementation, and contributor checklists.
include
All header files for the C++ library are within this directory,
modulo specific runtime-related files that are in the libsupc++
directory.
include/std
Files meant to be found by #include &lt;name&gt; directives in
standard-conforming user programs.
include/c
Headers intended to directly include standard C headers.
[NB: this can be enabled via --enable-cheaders=c]
include/c_global
Headers intended to include standard C headers in
the global namespace, and put select names into the std::
namespace. [NB: this is the default, and is the same as
--enable-cheaders=c_global]
include/c_std
Headers intended to include standard C headers
already in namespace std, and put select names into the std::
namespace. [NB: this is the same as --enable-cheaders=c_std]
include/bits
Files included by standard headers and by other files in
the bits directory.
include/backward
Headers provided for backward compatibility, such as &lt;iostream.h&gt;.
They are not used in this library.
include/ext
Headers that define extensions to the standard library. No
standard header refers to any of them.
scripts
Scripts that are used during the configure, build, make, or test
process.
src
Files that are used in constructing the library, but are not
installed.
testsuites/[backward, demangle, ext, performance, thread, 17_* to 27_*]
Test programs are here, and may be used to begin to exercise the
library. Support for "make check" and "make check-install" is
complete, and runs through all the subdirectories here when this
command is issued from the build directory. Please note that
"make check" requires DejaGNU 1.4 or later to be installed. Please
note that "make check-script" calls the script mkcheck, which
requires bash, and which may need the paths to bash adjusted to
work properly, as /bin/bash is assumed.
Other subdirectories contain variant versions of certain files
that are meant to be copied or linked by the configure script.
Currently these are:
config/abi
config/cpu
config/io
config/locale
config/os
In addition, two subdirectories are convenience libraries:
libmath
Support routines needed for C++ math. Only needed if the
underlying "C" implementation is non-existent, in particular
required or optimal long double, long long, and C99 functionality.
libsupc++
Contains the runtime library for C++, including exception
handling and memory allocation and deallocation, RTTI, terminate
handlers, etc.
Note that glibc also has a bits/ subdirectory. We will either
need to be careful not to collide with names in its bits/
directory; or rename bits to (e.g.) cppbits/.
In files throughout the system, lines marked with an "XXX" indicate
a bug or incompletely-implemented feature. Lines marked "XXX MT"
indicate a place that may require attention for multi-thread safety.
</literallayout>
</sect1>
<sect1 id="contrib.coding_style" xreflabel="Coding Style">
<title>Coding Style</title>
<para>
@ -167,14 +322,14 @@ Identifiers that conflict and should be avoided.
</para>
<literallayout>
This is the list of names <quote>reserved to the
implementation</quote> that have been claimed by certain
compilers and system headers of interest, and should not be used
in the library. It will grow, of course. We generally are
interested in names that are not all-caps, except for those like
"_T"
This is the list of names "reserved to the implementation" that
have been claimed by certain compilers and system headers of interest,
and should not be used in the library. It will grow, of course.
We generally are interested in names that are not all-caps, except
for those like "_T"
For Solarix:
For Solaris:
_B
_C
_L
@ -355,7 +510,6 @@ _opr
<sect2 id="coding_style.example" xreflabel="coding_style.example">
<title>By Example</title>
<literallayout>
This library is written to appropriate C++ coding standards. As such,
it is intended to precede the recommendations of the GNU Coding
Standard, which can be referenced in full here:
@ -748,47 +902,65 @@ namespace std
// doesn't fit in one line.
}
} // namespace std
</literallayout>
</sect2>
</sect1>
<sect1 id="contrib.doc_style" xreflabel="Documentation Style">
<title>Documentation Style</title>
<para>
</para>
<sect2 id="doc_style.doxygen" xreflabel="doc_style.doxygen">
<title>Doxygen</title>
<sect3 id="doxygen.generating" xreflabel="doxygen.generating">
<title>Generating the Doxygen Files</title>
<sect3 id="doxygen.prereq" xreflabel="doxygen.prereq">
<title>Prerequisites</title>
<para>
Prerequisite tools are Bash 2.x,
<ulink url="http://www.doxygen.org/">Doxygen</ulink>, and
the <ulink url="http://www.gnu.org/software/coreutils/">GNU
coreutils</ulink>. (GNU versions of find, xargs, and possibly
sed and grep are used, just because the GNU versions make
things very easy.)
</para>
<para>The Makefile rules <code>'make doc-doxygen-html'</code>,
and <code>'make doc-doxygen-man'</code> in the libstdc++ build
directory generate the HTML docs, the and the man pages,
respectively. Prerequisite tools are Bash 2.x,
<ulink url="http://www.doxygen.org/">Doxygen</ulink>, a working version of <code>g++</code> somewhere in the PATH, and
the <ulink url="http://www.gnu.org/software/coreutils/">GNU coreutils</ulink>.
In addition, to generate the pretty pictures and hierarchy graphs, the
<ulink url=
"http://www.research.att.com/sw/tools/graphviz/download.html">Graphviz</ulink>
<para>
To generate the pretty pictures and hierarchy
graphs, the
<ulink url="http://www.research.att.com/sw/tools/graphviz/download.html">Graphviz</ulink>
package will need to be installed.
(g++ is used to build a program which manipulates man pages. GNU versions
of find, xargs, and possibly sed and grep are used, just because the GNU
versions make things very easy.)
</para>
</sect3>
<sect3 id="doxygen.rules" xreflabel="doxygen.rules">
<title>Generating the Doxygen Files</title>
<para>
The Makefile rules
</para>
<screen><userinput>make doc-html-doxygen</userinput></screen>
<para>
and
</para>
<screen><userinput>make doc-xml-doxygen</userinput></screen>
<para>
and
</para>
<screen><userinput>make doc-man-doxygen</userinput></screen>
<para>
in the libstdc++ build directory generate the HTML docs, the
XML docs, and the man pages.
</para>
<para>Careful observers will see that the Makefile rules simply call a script
from the source tree, <code>run_doxygen</code>, which does the actual work
of running Doxygen and then (most importantly) massaging the output files.
If for some reason you prefer to not go through the Makefile, you can call
this script directly. (Start by passing <code>'--help'</code>.)
<para>
Careful observers will see that the Makefile rules simply call
a script from the source tree, <filename>run_doxygen</filename>, which
does the actual work of running Doxygen and then (most
importantly) massaging the output files. If for some reason
you prefer to not go through the Makefile, you can call this
script directly. (Start by passing <literal>--help</literal>.)
</para>
<para>If you wish to tweak the Doxygen settings, do so by editing
<code>docs/doxygen/user.cfg.in</code>. Notes to v3-hackers are written in
triple-# comments.
<para>
If you wish to tweak the Doxygen settings, do so by editing
<filename>doc/doxygen/user.cfg.in</filename>. Notes to fellow
library hackers are written in triple-# comments.
</para>
</sect3>
@ -796,52 +968,80 @@ namespace std
<sect3 id="doxygen.markup" xreflabel="doxygen.markup">
<title>Markup</title>
<para>In general, libstdc++ files should be formatted according to the GNU
C++ Coding Standard rules found in the file
<ulink url="http://gcc.gnu.org/onlinedocs/libstdc++/17_intro/C++STYLE">C++STYLE</ulink>.
Before any doxygen-specific formatting tweaks are made, please try to make
sure that the initial formatting is sound.
<para>
In general, libstdc++ files should be formatted according to
the rules found in the
<link linkend="contrib.coding_style">Coding Standard</link>. Before
any doxygen-specific formatting tweaks are made, please try to
make sure that the initial formatting is sound.
</para>
<para>Adding Doxygen markup to a file (informally called "doxygenating") is very
simple. The Doxygen manual can be found
<para>
Adding Doxygen markup to a file (informally called
<quote>doxygenating</quote>) is very simple. The Doxygen manual can be
found
<ulink url="http://www.stack.nl/~dimitri/doxygen/download.html#latestman">here</ulink>.
We try to use a very-recent version of Doxygen.
</para>
<para>For classes, use deque/vector/list and std::pair as examples. For
functions, see their member functions, and the free functions in
<code>stl_algobase.h</code>. Member functions of other container-like
types should read similarly to these member functions.
<para>
For classes, use
<classname>deque</classname>/<classname>vector</classname>/<classname>list</classname>
and <classname>std::pair</classname> as examples. For
functions, see their member functions, and the free functions
in <filename>stl_algobase.h</filename>. Member functions of
other container-like types should read similarly to these
member functions.
</para>
<para>These points accompany the first list in section 3.1 of the Doxygen manual:
<para>
These points accompany the first list in section 3.1 of the
Doxygen manual:
</para>
<orderedlist>
<listitem><para>Use the Javadoc style...</para></listitem>
<listitem><para>...not the Qt style. The intermediate *'s are preferred.</para></listitem>
<listitem><para>Use the triple-slash style only for one-line comments (the "brief" mode).
Very recent versions of Doxygen permit full-mode comments in triple-slash
blocks, but the formatting still comes out wonky.</para></listitem>
<listitem><para>This is disgusting. Don't do this.</para></listitem>
<listitem>
<para>
...not the Qt style. The intermediate *'s are preferred.
</para>
</listitem>
<listitem>
<para>
Use the triple-slash style only for one-line comments (the
<quote>brief</quote> mode). Very recent versions of Doxygen permit
full-mode comments in triple-slash blocks, but the
formatting still comes out wonky.
</para>
</listitem>
<listitem>
<para>
This is disgusting. Don't do this.
</para>
</listitem>
</orderedlist>
<para>Use the @-style of commands, not the !-style. Please be careful about
whitespace in your markup comments. Most of the time it doesn't matter;
doxygen absorbs most whitespace, and both HTML and *roff are agnostic about
whitespace. However, in &lt;pre&gt; blocks and @code/@endcode sections,
spacing can have "interesting" effects.
<para>
Use the @-style of commands, not the !-style. Please be
careful about whitespace in your markup comments. Most of the
time it doesn't matter; doxygen absorbs most whitespace, and
both HTML and *roff are agnostic about whitespace. However,
in &lt;pre&gt; blocks and @code/@endcode sections, spacing can
have <quote>interesting</quote> effects.
</para>
<para>Use either kind of grouping, as appropriate. <code>doxygroups.cc</code>
exists for this purpose. See <code>stl_iterator.h</code> for a good
example of the "other" kind of grouping.
<para>
Use either kind of grouping, as
appropriate. <filename>doxygroups.cc</filename> exists for this
purpose. See <filename>stl_iterator.h</filename> for a good example
of the <quote>other</quote> kind of grouping.
</para>
<para>Please use markup tags like @p and @a when referring to things such as the
names of function parameters. Use @e for emphasis when necessary. Use @c
to refer to other standard names. (Examples of all these abound in the
present code.)
<para>
Please use markup tags like @p and @a when referring to things
such as the names of function parameters. Use @e for emphasis
when necessary. Use @c to refer to other standard names.
(Examples of all these abound in the present code.)
</para>
</sect3>
@ -851,24 +1051,122 @@ namespace std
<sect2 id="doc_style.docbook" xreflabel="doc_style.docbook">
<title>Docbook</title>
<sect3 id="docbook.prereq" xreflabel="docbook.prereq">
<title>Prerequisites</title>
<para>
Editing the DocBook sources requires an XML editor. Many
exist: some noteable options
include <command>emacs</command>, <application>Kate</application>,
or <application>Conglomerate</application>.
</para>
<para>
Some editors support special <quote>XML Validation</quote>
modes that can validate the file as it is
produced. Recommended is the <command>nXML Mode</command>
for <command>emacs</command>.
</para>
<para>
Besides an editor, additional DocBook files and XML tools are
also required.
</para>
<para>
Access to the DocBook stylesheets and DTD is required. The
stylesheets are usually packaged by vendor, in something
like <filename>docbook-style-xsl</filename>. The installation
directory for this package corresponds to
the <literal>XSL_STYLE_DIR</literal>
in <filename>doc/Makefile.am</filename> and defaults
to <filename class="directory">/usr/share/sgml/docbook/xsl-stylesheets</filename>.
</para>
<para>
For procesessing XML, an XML processor and some style
sheets are necessary. Defaults are <command>xsltproc</command>
provided by <filename>libxslt</filename>.
</para>
<para>
For validating the XML document, you'll need
something like <command>xmllint</command> and access to the
DocBook DTD. These are provided
by a vendor package like <filename>lixml2</filename>.
</para>
<para>
For PDF output, something that transforms valid XML to PDF is
required. Possible solutions include <command>xmlto</command>,
<ulink url="http://xmlgraphics.apache.org/fop/">Apache
FOP</ulink>, or <command>prince</command>. Other options are
listed on the DocBook web <ulink
url="http://wiki.docbook.org/topic/DocBookPublishingTools">pages</ulink>. Please
consult the <email>libstdc++@gcc.gnu.org</email> list when
preparing printed manuals for current best practice and suggestions.
</para>
<para>
Make sure that the XML documentation and markup is valid for
any change. This can be done easily, with the validation rules
in the <filename>Makefile</filename>, which is equivalent to doing:
</para>
<screen>
<userinput>
xmllint --noout --valid <filename>xml/index.xml</filename>
</userinput>
</screen>
</sect3>
<sect3 id="docbook.rules" xreflabel="docbook.rules">
<title>Generating the DocBook Files</title>
<para>
The Makefile rules
</para>
<screen><userinput>make doc-html</userinput></screen>
<para>
and
</para>
<screen><userinput>make doc-pdf</userinput></screen>
<para>
and
</para>
<screen><userinput>make doc-xml-single</userinput></screen>
<para>
and
</para>
<screen><userinput>make doc-xml-validate</userinput></screen>
<para>
in the libstdc++ build directory result respectively in the
following: the generation of an HTML version of all the
documentation, a PDF version of the same, a single XML
document, and the results of validating the XML document.
</para>
</sect3>
<sect3 id="docbook.examples" xreflabel="docbook.examples">
<title>File Organization and Basics</title>
<literallayout>
<emphasis>Which files are important</emphasis>
Which files are important:
All Docbook files are in the directory
libstdc++-v3/doc/xml
Main page
Inside this directory, the files of importance:
spine.xml - index to documentation set
manual/spine.xml - index to manual
manual/*.xml - chapters and sections of the manual
manual/*.xml - individual chapters and sections of the manual
faq.xml - index to FAQ
api.xml - index to source level / API
All *.txml files are template xml files, ie otherwise empty files with
the correct structure, suitable for filling in.
the correct structure, suitable for filling in with new information.
Cannonical Writing Style
<emphasis>Cannonical Writing Style</emphasis>
class template
function template
@ -880,8 +1178,45 @@ class in namespace std: allocator, not std::allocator
header file: iostream, not &lt;iostream&gt;
Translation
<emphasis>General structure</emphasis>
&lt;set&gt;
&lt;book&gt;
&lt;/book&gt;
&lt;book&gt;
&lt;chapter&gt;
&lt;/chapter&gt;
&lt;/book&gt;
&lt;book&gt;
&lt;part&gt;
&lt;chapter&gt;
&lt;section&gt;
&lt;/section&gt;
&lt;sect1&gt;
&lt;/sect1&gt;
&lt;sect1&gt;
&lt;sect2&gt;
&lt;/sect2&gt;
&lt;/sect1&gt;
&lt;/chapter&gt;
&lt;chapter&gt;
&lt;/chapter&gt;
&lt;/part&gt;
&lt;/book&gt;
&lt;/set&gt;
</literallayout>
</sect3>
<sect3 id="docbook.markup" xreflabel="docbook.markup">
<title>Markup By Example</title>
<literallayout>
HTML to XML rough equivalents
&lt;p&gt; &lt;para&gt;
@ -941,44 +1276,8 @@ Finer gradations of &lt;code&gt;
&lt;command&gt; &lt;command&gt;g++&lt;/command&gt;
&lt;errortext&gt; &lt;errortext&gt;foo Concept &lt;/errortext&gt;
General structure
&lt;set&gt;
&lt;book&gt;
&lt;/book&gt;
&lt;book&gt;
&lt;chapter&gt;
&lt;/chapter&gt;
&lt;/book&gt;
&lt;book&gt;
&lt;part&gt;
&lt;chapter&gt;
&lt;section&gt;
&lt;/section&gt;
&lt;sect1&gt;
&lt;/sect1&gt;
&lt;sect1&gt;
&lt;sect2&gt;
&lt;/sect2&gt;
&lt;/sect1&gt;
&lt;/chapter&gt;
&lt;chapter&gt;
&lt;/chapter&gt;
&lt;/part&gt;
&lt;/book&gt;
&lt;/set&gt;
</literallayout>
</sect3>
</sect2>
</sect1>
@ -1074,7 +1373,7 @@ header files to be parsed along with every compilation unit.
Until "export" is implemented we can put some of the lengthy template
definitions in #if guards or alternative headers so that users can skip
over the the full definitions when they need only the ready-instantiated
over the full definitions when they need only the ready-instantiated
specializations.
To be precise, this means that certain headers which define

View File

@ -6,8 +6,8 @@
<!ENTITY license SYSTEM "license.xml">
]>
<set id="set-index" xreflabel="set-index">
<?dbhtml filename="set-index.html"?>
<set id="set-index" xreflabel="The GNU C++ Library Documentation">
<?dbhtml filename="spine.html"?>
<title>The GNU C++ Library Documentation</title>
<setinfo>