Commit bd2726e0 by Phil Edwards

Intro.3: Update with new (proper) names.

2003-02-25  Phil Edwards  <pme@gcc.gnu.org>

	* docs/doxygen/Intro.3:  Update with new (proper) names.
	* docs/doxygen/TODO:  Update.
	* docs/doxygen/run_doxygen:  More comments, fix up man pages.
	Fake entries for standard typedefs.
	* docs/doxygen/user.cfg.in:  Turn INLINE_INHERITED_MEMB back on.
	* docs/html/documentation.html:  Top-level man page is now called
	C++Intro.
	* include/std/std_limits.h:  Doxygenate.

From-SVN: r63433
parent fc943f55
2003-02-25 Phil Edwards <pme@gcc.gnu.org>
* docs/doxygen/Intro.3: Update with new (proper) names.
* docs/doxygen/TODO: Update.
* docs/doxygen/run_doxygen: More comments, fix up man pages.
Fake entries for standard typedefs.
* docs/doxygen/user.cfg.in: Turn INLINE_INHERITED_MEMB back on.
* docs/html/documentation.html: Top-level man page is now called
C++Intro.
* include/std/std_limits.h: Doxygenate.
2003-02-25 Scott Snyder <snyder@fnal.gov> 2003-02-25 Scott Snyder <snyder@fnal.gov>
PR libstdc++/9811 PR libstdc++/9811
......
.\" t .\" t
.\" This man page is released under the FDL as part of libstdc++-v3. .\" This man page is released under the FDL as part of libstdc++-v3.
.TH Intro 3 "27 March 2002" "GNU libstdc++-v3" "Standard C++ Library" .TH C++Intro 3 "25 Febuary 2003" "GNU libstdc++-v3" "Standard C++ Library"
.SH NAME .SH NAME
Intro \- Introduction to the GNU libstdc++-v3 man pages C++Intro \- Introduction to the GNU libstdc++-v3 man pages
.SH DESCRIPTION .SH DESCRIPTION
This man page serves as a brief introduction to the GNU implementation of This man page serves as a brief introduction to the GNU implementation of
the Standard C++ Library. For a better introduction and more complete the Standard C++ Library. For a better introduction and more complete
...@@ -12,10 +12,10 @@ homepage listed at the end. ...@@ -12,10 +12,10 @@ homepage listed at the end.
.P .P
All standard library entities are declared within All standard library entities are declared within
.I namespace std .I namespace std
and have manual entries beginning with "std_". For example, to see and have manual entries beginning with "std::". For example, to see
documentation of the template class documentation of the template class
.I std::vector .I std::vector
one would use "man std_vector". Some entities do not have a separate man one would use "man std::vector". Some entities do not have a separate man
page; for those see the main listing in "man Namespace_Std". page; for those see the main listing in "man Namespace_Std".
.P .P
All the man pages are automatically generated by Doxygen. For more All the man pages are automatically generated by Doxygen. For more
...@@ -37,7 +37,7 @@ Binder_functors Functors which "remember" an argument. ...@@ -37,7 +37,7 @@ Binder_functors Functors which "remember" an argument.
Comparison_functors Functors wrapping built-in comparisons. Comparison_functors Functors wrapping built-in comparisons.
Containers An introduction to container classes. Containers An introduction to container classes.
Func_ptr_functors Functors for use with pointers to functions. Func_ptr_functors Functors for use with pointers to functions.
Intro This page. C++Intro This page.
Intro_functors An introduction to function objects, or functors. Intro_functors An introduction to function objects, or functors.
Iterator_types Programatically distinguishing iterators/pointers. Iterator_types Programatically distinguishing iterators/pointers.
Logical_functors Functors wrapping the Boolean operations. Logical_functors Functors wrapping the Boolean operations.
...@@ -112,10 +112,9 @@ need to know about it, but it can be useful. See FAQ 2.5. ...@@ -112,10 +112,9 @@ need to know about it, but it can be useful. See FAQ 2.5.
.TP .TP
.I libstdc++.so[.N] .I libstdc++.so[.N]
The library implementation in shared object form. This will be used in The library implementation in shared object form. This will be used in
preference to the static archive form by default. Currently N will either preference to the static archive form by default. N will be a number equal
start with 3 or with 4, but your system vendor may change the name as they to or greater than 3. If N is in the 2.x series, then you are looking at
see fit. If N is in the 2.x series, then you are looking at the old the old libstdc++-v2 library, which we do not maintain.
libstdc++-v2 library, which we do not maintain.
.TP .TP
.I libstdc++.la .I libstdc++.la
.TP .TP
......
...@@ -19,11 +19,12 @@ entity to the generated TODO page. ...@@ -19,11 +19,12 @@ entity to the generated TODO page.
----------------------------------------------------------- -----------------------------------------------------------
c17 FINISHED (Nothing in Clause 17 "exists" in terms of code.) c17 FINISHED (Nothing in Clause 17 "exists" in terms of code.)
c18 <limits>, Note A c18 FINISHED, Note A
c19 Note A c19 Note A
c20 Note A c20 Note A
c21 Untouched, Note B c21 Untouched (top-level class note for basic_string done),
c22 Untouched Note B
c22 Untouched; see docs/html/22_locale/*
c23 See doxygroups.cc and Note B. Notes on what invalidates c23 See doxygroups.cc and Note B. Notes on what invalidates
iterators need to be added. std::list-specific memfns need iterators need to be added. std::list-specific memfns need
to be filled out. to be filled out.
......
#!/bin/sh #!/bin/sh
# Runs doxygen and massages the output files. # Runs doxygen and massages the output files.
# Copyright (C) 2001, 2002 Free Software Foundation, Inc. # Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
# #
# Synopsis: run_doxygen --mode=[user|maint|man] v3srcdir v3builddir # Synopsis: run_doxygen --mode=[user|maint|man] v3srcdir v3builddir
# #
...@@ -154,6 +154,11 @@ test $do_html = yes && { ...@@ -154,6 +154,11 @@ test $do_html = yes && {
-e "s=@DATE@=${DATEtext}=" \ -e "s=@DATE@=${DATEtext}=" \
${srcdir}/docs/doxygen/mainpage.html > ${outdir}/html_${mode}/index.html ${srcdir}/docs/doxygen/mainpage.html > ${outdir}/html_${mode}/index.html
cd ${outdir}/html_${mode} cd ${outdir}/html_${mode}
# The following bit of line noise changes annoying
# std::foo < typename _Ugly1, typename _Ugly2, .... _DefaultUgly17 >
# to user-friendly
# std::foo
# in the major "Compound List" page.
sed -e 's=\(::[[:alnum:]_]*\)&lt; .* &gt;=\1=' annotated.html > annstrip.html sed -e 's=\(::[[:alnum:]_]*\)&lt; .* &gt;=\1=' annotated.html > annstrip.html
mv annstrip.html annotated.html mv annstrip.html annotated.html
cp ${srcdir}/docs/doxygen/tables.html tables.html cp ${srcdir}/docs/doxygen/tables.html tables.html
...@@ -231,7 +236,40 @@ a\ ...@@ -231,7 +236,40 @@ a\
mv TEMP $f mv TEMP $f
done done
cp ${srcdir}/docs/doxygen/Intro.3 . # Also, break this (generated) line up. It's ugly as sin.
problematic=`grep -l '[^^]Definition at line' *.3`
for f in $problematic; do
sed 's/Definition at line/\
.PP\
&/' $f > TEMP
mv TEMP $f
done
cp ${srcdir}/docs/doxygen/Intro.3 C++Intro.3
# Why didn't I do this at the start? Were rabid weasels eating my brain?
# Who the fsck would "man std_vector" when the class isn't named that?
for f in std_*; do
newname=`echo $f | sed 's/^std_/std::/'`
mv $f $newname
done
for f in __gnu_cxx_*; do
newname=`echo $f | sed 's/^__gnu_cxx_/__gnu_cxx::/'`
mv $f $newname
done
for f in *__policy_*; do
newname=`echo $f | sed 's/__policy_/__policy::/'`
mv $f $newname
done
# Also, for some reason, typedefs don't get their own man pages. Sigh.
for f in ios streambuf istream ostream iostream stringbuf \
istringstream ostringstream stringstream filebuf ifstream \
ofstream fstream string;
do
echo ".so man3/std::basic_${f}.3" > std::${f}.3
echo ".so man3/std::basic_${f}.3" > std::w${f}.3
done
echo :: echo ::
echo :: Man pages in ${outdir}/man echo :: Man pages in ${outdir}/man
...@@ -243,4 +281,3 @@ echo :: ...@@ -243,4 +281,3 @@ echo ::
exit 0 exit 0
# vim:ts=4:et: # vim:ts=4:et:
...@@ -127,7 +127,7 @@ ALWAYS_DETAILED_SEC = YES ...@@ -127,7 +127,7 @@ ALWAYS_DETAILED_SEC = YES
# ordinary class members. Constructors, destructors and assignment operators of # ordinary class members. Constructors, destructors and assignment operators of
# the base classes will not be shown. # the base classes will not be shown.
INLINE_INHERITED_MEMB = NO INLINE_INHERITED_MEMB = YES
# pedwards -- this is useful, but ch27 gets huge # pedwards -- this is useful, but ch27 gets huge
# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full # If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
......
...@@ -84,9 +84,8 @@ ...@@ -84,9 +84,8 @@
libstdc++-html-*/index.html into a browser. Feedback (and libstdc++-html-*/index.html into a browser. Feedback (and
additional documentation!) is welcome. additional documentation!) is welcome.
</p> </p>
<p> <p>In addition, an initial set of man pages are also available in the
In addition, an initial set of man pages are also available in the same place as the HTML collections. Start with C++Intro(3).
same place as the HTML collections. Start with Intro(3).
</p> </p>
......
...@@ -149,66 +149,162 @@ ...@@ -149,66 +149,162 @@
namespace std namespace std
{ {
/**
* @brief Describes the rounding style for floating-point types.
*
* This is used in the std::numeric_limits class.
*/
enum float_round_style enum float_round_style
{ {
round_indeterminate = -1, round_indeterminate = -1, ///< Self-explanatory.
round_toward_zero = 0, round_toward_zero = 0, ///< Self-explanatory.
round_to_nearest = 1, round_to_nearest = 1, ///< To the nearest representable value.
round_toward_infinity = 2, round_toward_infinity = 2, ///< Self-explanatory.
round_toward_neg_infinity = 3 round_toward_neg_infinity = 3 ///< Self-explanatory.
}; };
/**
* @brief Describes the denormalization for floating-point types.
*
* These values represent the presence or absence of a variable number
* of exponent bits. This type is used in the std::numeric_limits class.
*/
enum float_denorm_style enum float_denorm_style
{ {
/// Indeterminate at compile time whether denormalized values are allowed.
denorm_indeterminate = -1, denorm_indeterminate = -1,
/// The type does not allow denormalized values.
denorm_absent = 0, denorm_absent = 0,
/// The type allows denormalized values.
denorm_present = 1 denorm_present = 1
}; };
// /**
// The primary class traits * @brief Part of std::numeric_limits.
// *
* The @c static @c const members are usable as integral constant
* expressions.
*
* @note This is a seperate class for purposes of efficiency; you
* should only access these members as part of an instantiation
* of the std::numeric_limits class.
*/
struct __numeric_limits_base struct __numeric_limits_base
{ {
/** This will be true for all fundamental types (which have
specializations), and false for everything else. */
static const bool is_specialized = false; static const bool is_specialized = false;
/** The number of @c radix digits that be represented without change: for
integer types, the number of non-sign bits in the mantissa; for
floating types, the number of @c radix digits in the mantissa. */
static const int digits = 0; static const int digits = 0;
/** The number of base 10 digits that can be represented without change. */
static const int digits10 = 0; static const int digits10 = 0;
/** True if the type is signed. */
static const bool is_signed = false; static const bool is_signed = false;
/** True if the type is integer.
* @if maint
* Is this supposed to be "if the type is integral"?
* @endif
*/
static const bool is_integer = false; static const bool is_integer = false;
/** True if the type uses an exact representation. "All integer types are
exact, but not all exact types are integer. For example, rational and
fixed-exponent representations are exact but not integer."
[18.2.1.2]/15 */
static const bool is_exact = false; static const bool is_exact = false;
/** For integer types, specifies the base of the representation. For
floating types, specifies the base of the exponent representation. */
static const int radix = 0; static const int radix = 0;
/** The minimum negative integer such that @c radix raised to the power of
(one less than that integer) is a normalized floating point number. */
static const int min_exponent = 0; static const int min_exponent = 0;
/** The minimum negative integer such that 10 raised to that power is in
the range of normalized floating point numbers. */
static const int min_exponent10 = 0; static const int min_exponent10 = 0;
/** The maximum positive integer such that @c radix raised to the power of
(one less than that integer) is a representable finite floating point
number. */
static const int max_exponent = 0; static const int max_exponent = 0;
/** The maximum positive integer such that 10 raised to that power is in
the range of representable finite floating point numbers. */
static const int max_exponent10 = 0; static const int max_exponent10 = 0;
/** True if the type has a representation for positive infinity. */
static const bool has_infinity = false; static const bool has_infinity = false;
/** True if the type has a representation for a quiet (non-signaling)
"Not a Number." */
static const bool has_quiet_NaN = false; static const bool has_quiet_NaN = false;
/** True if the type has a representation for a signaling
"Not a Number." */
static const bool has_signaling_NaN = false; static const bool has_signaling_NaN = false;
/** See std::float_denorm_style for more information. */
static const float_denorm_style has_denorm = denorm_absent; static const float_denorm_style has_denorm = denorm_absent;
/** "True if loss of accuracy is detected as a denormalization loss,
rather than as an inexact result." [18.2.1.2]/42 */
static const bool has_denorm_loss = false; static const bool has_denorm_loss = false;
/** True if-and-only-if the type adheres to the IEC 559 standard, also
known as IEEE 754. (Only makes sense for floating point types.) */
static const bool is_iec559 = false; static const bool is_iec559 = false;
/** "True if the set of values representable by the type is finite. All
built-in types are bounded, this member would be false for arbitrary
precision types." [18.2.1.2]/54 */
static const bool is_bounded = false; static const bool is_bounded = false;
/** True if the type is @e modulo, that is, if it is possible to add two
positive numbers and have a result that wraps around to a third number
that is less. Typically false for floating types, true for unsigned
integers, and true for signed integers. */
static const bool is_modulo = false; static const bool is_modulo = false;
/** True if trapping is implemented for this type. */
static const bool traps = false; static const bool traps = false;
/** True if tinyness is detected before rounding. (see IEC 559) */
static const bool tinyness_before = false; static const bool tinyness_before = false;
/** See std::float_round_style for more information. This is only
meaningful for floating types; integer types will all be
round_toward_zero. */
static const float_round_style round_style = round_toward_zero; static const float_round_style round_style = round_toward_zero;
}; };
/**
* @brief Properties of fundamental types.
*
* This class allows a program to obtain information about the
* representation of a fundamental type on a given platform. For
* non-fundamental types, the functions will return 0 and the data
* members will all be @c false.
*
* @if maint
* _GLIBCPP_RESOLVE_LIB_DEFECTS: DRs 201 and 184 (hi Gaby!) are
* noted, but not incorporated in this documented (yet).
* @endif
*/
template<typename _Tp> template<typename _Tp>
struct numeric_limits : public __numeric_limits_base struct numeric_limits : public __numeric_limits_base
{ {
/** The minimum finite value, or for floating types with
denormalization, the minimum positive normalized value. */
static _Tp min() throw() { return static_cast<_Tp>(0); } static _Tp min() throw() { return static_cast<_Tp>(0); }
/** The maximum finite value. */
static _Tp max() throw() { return static_cast<_Tp>(0); } static _Tp max() throw() { return static_cast<_Tp>(0); }
/** The @e machine @e epsilon: the difference between 1 and the least
value greater than 1 that is representable. */
static _Tp epsilon() throw() { return static_cast<_Tp>(0); } static _Tp epsilon() throw() { return static_cast<_Tp>(0); }
/** The maximum rounding error measurement (see LIA-1). */
static _Tp round_error() throw() { return static_cast<_Tp>(0); } static _Tp round_error() throw() { return static_cast<_Tp>(0); }
/** The representation of positive infinity, if @c has_infinity. */
static _Tp infinity() throw() { return static_cast<_Tp>(0); } static _Tp infinity() throw() { return static_cast<_Tp>(0); }
/** The representation of a quiet "Not a Number," if @c has_quiet_NaN. */
static _Tp quiet_NaN() throw() { return static_cast<_Tp>(0); } static _Tp quiet_NaN() throw() { return static_cast<_Tp>(0); }
/** The representation of a signaling "Not a Number," if
@c has_signaling_NaN. */
static _Tp signaling_NaN() throw() { return static_cast<_Tp>(0); } static _Tp signaling_NaN() throw() { return static_cast<_Tp>(0); }
/** The minimum positive denormalized value. For types where
@c has_denorm is false, this is the minimum positive normalized
value. */
static _Tp denorm_min() throw() { return static_cast<_Tp>(0); } static _Tp denorm_min() throw() { return static_cast<_Tp>(0); }
}; };
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment