Commit 04b7c941 by Phil Edwards

Intro.3: Date tweak.

2002-03-27  Phil Edwards  <pme@gcc.gnu.org>

	* docs/doxygen/Intro.3:  Date tweak.
	* docs/doxygen/TODO:  Update.
	* docs/doxygen/doxygroups.cc:  Point to tables.html.
	* docs/doxygen/mainpage.html:  Date tweak.
	* docs/doxygen/run_doxygen:  Version tweak.  Copy tables.html over.
	* docs/doxygen/tables.html:  Fill in the blanks.

	* docs/doxygen/user.cfg.in (ALIASES):  Remove maint and endmaint.
	* include/bits/stl_algo.h:  Likewise; use expanded form.
	* include/bits/stl_alloc.h:  Likewise.
	* include/bits/stl_construct.h:  Likewise.
	* include/bits/stl_deque.h:  Likewise.
	* include/bits/stl_iterator_base_types.h:  Likewise.
	* include/bits/stl_list.h:  Likewise.
	* include/bits/stl_relops.h:  Likewise.
	* include/bits/stl_tempbuf.h:  Likewise.
	* include/bits/stl_vector.h:  Likewise.
	* include/std/std_memory.h:  Likewise.

	* include/bits/stl_deque.h:  Point into tables.html and add @ingroup.
	* include/bits/stl_list.h:  Likewise.
	* include/bits/stl_vector.h:  Likewise.

From-SVN: r51471
parent 8a12f34c
.\" t
.\" 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"
.TH Intro 3 "27 March 2002" "GNU libstdc++-v3" "Standard C++ Library"
.SH NAME
Intro \- Introduction to the GNU libstdc++-v3 man pages
.SH DESCRIPTION
......@@ -48,7 +48,7 @@ SGIextensions A list of the extensions from the SGI STL subset.
Sequences Linear containers.
.TE
.P
The HTML documentation goes into more depth.
The HTML documentation typically goes into much more depth.
.SH FILES
Lots!
.SS Standard Headers
......
......@@ -48,10 +48,10 @@ do not have the C code (to which the doxygen comments would be attached),
this would need to be done in entirely separate files, a la doxygroups.cc.
B) Huge chunks of containers and strings are described in common "Tables"
in the standard. These are being pseudo-duplicated in tables.html. We can
in the standard. These are pseudo-duplicated in tables.html. We can
use doxygen hooks like @pre and @see to reference the tables. Then the
individual classes would do like the standard does, and only document
members for which additional info is available.
individual classes do like the standard does, and only document members for
which additional info is available.
STYLE:
......
/*
Copyright (C) 2001, 2002 Free Software Foundation, Inc.
See license.html for license.
This just provides documentation for stuff that doesn't need to be in the
source headers themselves. It is a ".cc" file for the sole cheesy reason
that it triggers many different text editors into doing Nice Things when
......@@ -67,9 +70,8 @@ storing your objects. The objects are destroyed when the container is
itself destroyed. Note that if you are storing pointers in a container,
@c delete is @e not automatically called on the pointers before destroying them.
All containers must meet certain requirements. They would be listed here
except I'm not certain how much of 14882 can be reproduced without a
copyright violation. Reproducing Tables 65 through 69 is a lot of typing...
All containers must meet certain requirements, summarized in
<a href="tables.html">tables</a>.
The standard containers are further refined into
@link Sequences Sequences@endlink and
......@@ -92,6 +94,9 @@ the second category of differences, algorithmic complexity. For example, if
you need to perform many inserts and removals from the middle of a sequence,
@c list would be ideal. But if you need to perform constant-time access to
random elements of the sequence, then @c list should not be used.
All sequences must meet certain requirements, summarized in
<a href="tables.html">tables</a>.
*/
/** @addtogroup Assoc_containers Associative Containers
......@@ -99,6 +104,11 @@ Associative containers allow fast retrieval of data based on keys.
Each container type is parameterized on a @c Key type, and an ordering
relation used to sort the elements of the container.
There should be more text here.
All associative containers must meet certain requirements, summarized in
<a href="tables.html">tables</a>.
*/
// // // // // // // // // // // // // // // // // // // // // // // //
......
......@@ -16,16 +16,16 @@
directly; it all gets run through Doxygen and re-output.) So lots of
tags were all being mangled.
Funk 'dat. Now we let Doxygen do whateer it feels like doing for the
Funk 'dat. Now we let Doxygen do whatever it feels like doing for the
index page, and then we just flat copy this over top of it. Voila!
Tags actually work like they're supposed to.
Tags actually work like they're supposed to in HTML.
-->
<h1>libstdc++-v3 Source Documentation</h1>
<h2> Documentation Overview </h2>
<p class="smallertext">Generated 2002-02-08.</p>
<p class="smallertext">Generated 2002-03-27.</p>
<p>There are two types of documentation for libstdc++-v3. One is the
distribution documentation, which can be read online at
......@@ -122,8 +122,8 @@ href="http://gcc.gnu.org/onlinedocs/libstdc++/17_intro/C++STYLE">C++STYLE</a>.
Hewlett-Packard Company
</blockquote>
</p>
<p>Part of the generated documentation is quoted from the C++ standard, which
is copyright 1998 by Information Technology Industry Council.
<p>Part of the generated documentation is quoted from the ISO C++ Standard,
which is Copyright &copy; 1998 by Information Technology Industry Council.
</p>
</body>
......
#!/bin/sh
# Runs doxygen and massages the output files.
# Copyright (C) 2001, 2002 Free Software Foundation, Inc.
#
# Synopsis: run_doxygen --mode=[user|maint|man] v3srcdir v3builddir
#
......@@ -8,7 +9,7 @@
# We can check now that the version of doxygen is >= this variable.
DOXYVER=1.2.12
DOXYVER=1.2.14
doxygen=
find_doxygen() {
......@@ -147,6 +148,7 @@ set +e
test $do_html = yes && {
cp ${srcdir}/docs/doxygen/mainpage.html ${outdir}/html_${mode}/index.html
cp ${srcdir}/docs/doxygen/tables.html ${outdir}/html_${mode}/tables.html
echo ::
echo :: HTML pages begin with
echo :: ${outdir}/html_${mode}/index.html
......@@ -185,7 +187,8 @@ mv iterator_tags.3 Iterator_types.3
find . -name "[a-z]*" -a ! -name "std_*" -print | xargs rm
rm -f *.h.3 *config* *.cc.3 *.tcc.3
rm -f *_t.3 # workaround doxygen template parsing bug for now
#mkdir trash # this is used to examine what we would have deleted
# this is used to examine what we would have deleted, for debugging
#mkdir trash
#find . -name "[a-z]*" -a ! -name "std_*" -print | xargs -i mv {} trash
#mv *.h.3 *config* *.cc.3 *.tcc.3 *_t.3 trash
......
......@@ -222,9 +222,7 @@ GENERATE_BUGLIST = YES
# will result in a user defined paragraph with heading "Side Effects:".
# You can put \n's in the value part of an alias to insert newlines.
ALIASES = "maint=@if maint" \
"endmaint=@endif" \
"doctodo=@todo\nDoc me! See docs/doxygen/TODO and http://gcc.gnu.org/ml/libstdc++/2002-02/msg00003.html for more."
ALIASES = "doctodo=@todo\nDoc me! See docs/doxygen/TODO and http://gcc.gnu.org/ml/libstdc++/2002-02/msg00003.html for more."
# The ENABLED_SECTIONS tag can be used to enable conditional
# documentation sections, marked by \if sectionname ... \endif.
......
......@@ -159,9 +159,9 @@ namespace std
}
/**
* @maint
* @if maint
* This is an overload used by find() for the Input Iterator case.
* @endmaint
* @endif
*/
template<typename _InputIter, typename _Tp>
inline _InputIter
......@@ -175,9 +175,9 @@ namespace std
}
/**
* @maint
* @if maint
* This is an overload used by find_if() for the Input Iterator case.
* @endmaint
* @endif
*/
template<typename _InputIter, typename _Predicate>
inline _InputIter
......@@ -191,9 +191,9 @@ namespace std
}
/**
* @maint
* @if maint
* This is an overload used by find() for the RAI case.
* @endmaint
* @endif
*/
template<typename _RandomAccessIter, typename _Tp>
_RandomAccessIter
......@@ -235,9 +235,9 @@ namespace std
}
/**
* @maint
* @if maint
* This is an overload used by find_if() for the RAI case.
* @endmaint
* @endif
*/
template<typename _RandomAccessIter, typename _Predicate>
_RandomAccessIter
......@@ -1087,10 +1087,10 @@ namespace std
}
/**
* @maint
* @if maint
* This is an uglified unique_copy(_InputIter, _InputIter, _OutputIter)
* overloaded for output iterators.
* @endmaint
* @endif
*/
template<typename _InputIter, typename _OutputIter>
_OutputIter
......@@ -1110,10 +1110,10 @@ namespace std
}
/**
* @maint
* @if maint
* This is an uglified unique_copy(_InputIter, _InputIter, _OutputIter)
* overloaded for forward iterators.
* @endmaint
* @endif
*/
template<typename _InputIter, typename _ForwardIter>
_ForwardIter
......@@ -1159,11 +1159,11 @@ namespace std
}
/**
* @maint
* @if maint
* This is an uglified
* unique_copy(_InputIter, _InputIter, _OutputIter, _BinaryPredicate)
* overloaded for output iterators.
* @endmaint
* @endif
*/
template<typename _InputIter, typename _OutputIter, typename _BinaryPredicate>
_OutputIter
......@@ -1188,11 +1188,11 @@ namespace std
}
/**
* @maint
* @if maint
* This is an uglified
* unique_copy(_InputIter, _InputIter, _OutputIter, _BinaryPredicate)
* overloaded for forward iterators.
* @endmaint
* @endif
*/
template<typename _InputIter, typename _ForwardIter, typename _BinaryPredicate>
_ForwardIter
......@@ -1301,10 +1301,10 @@ __result, __binary_pred, _IterType());
}
/**
* @maint
* @if maint
* This is an uglified reverse(_BidirectionalIter, _BidirectionalIter)
* overloaded for bidirectional iterators.
* @endmaint
* @endif
*/
template<typename _BidirectionalIter>
void
......@@ -1319,10 +1319,10 @@ __result, __binary_pred, _IterType());
}
/**
* @maint
* @if maint
* This is an uglified reverse(_BidirectionalIter, _BidirectionalIter)
* overloaded for bidirectional iterators.
* @endmaint
* @endif
*/
template<typename _RandomAccessIter>
void
......@@ -1389,9 +1389,9 @@ __result, __binary_pred, _IterType());
/**
* @maint
* @if maint
* This is a helper function for the rotate algorithm specialized on RAIs.
* @endmaint
* @endif
*/
template<typename _EuclideanRingElement>
_EuclideanRingElement
......@@ -1406,9 +1406,9 @@ __result, __binary_pred, _IterType());
}
/**
* @maint
* @if maint
* This is a helper function for the rotate algorithm.
* @endmaint
* @endif
*/
template<typename _ForwardIter>
void
......@@ -1439,9 +1439,9 @@ __result, __binary_pred, _IterType());
}
/**
* @maint
* @if maint
* This is a helper function for the rotate algorithm.
* @endmaint
* @endif
*/
template<typename _BidirectionalIter>
void
......@@ -1472,9 +1472,9 @@ __result, __binary_pred, _IterType());
}
/**
* @maint
* @if maint
* This is a helper function for the rotate algorithm.
* @endmaint
* @endif
*/
template<typename _RandomAccessIter>
void
......@@ -1582,13 +1582,13 @@ __result, __binary_pred, _IterType());
/**
* @maint
* @if maint
* Return a random number in the range [0, __n). This function encapsulates
* whether we're using rand (part of the standard C library) or lrand48
* (not standard, but a much better choice whenever it's available).
*
* XXX There is no corresponding encapsulation fn to seed the generator.
* @endmaint
* @endif
*/
template<typename _Distance>
inline _Distance
......@@ -1648,9 +1648,9 @@ __result, __binary_pred, _IterType());
/**
* @maint
* @if maint
* This is a helper function...
* @endmaint
* @endif
*/
template<typename _ForwardIter, typename _Predicate>
_ForwardIter
......@@ -1675,9 +1675,9 @@ __result, __binary_pred, _IterType());
}
/**
* @maint
* @if maint
* This is a helper function...
* @endmaint
* @endif
*/
template<typename _BidirectionalIter, typename _Predicate>
_BidirectionalIter
......@@ -1730,9 +1730,9 @@ __result, __binary_pred, _IterType());
/**
* @maint
* @if maint
* This is a helper function...
* @endmaint
* @endif
*/
template<typename _ForwardIter, typename _Predicate, typename _Distance>
_ForwardIter
......@@ -1755,9 +1755,9 @@ __result, __binary_pred, _IterType());
}
/**
* @maint
* @if maint
* This is a helper function...
* @endmaint
* @endif
*/
template<typename _ForwardIter, typename _Pointer, typename _Predicate,
typename _Distance>
......@@ -1837,9 +1837,9 @@ __result, __binary_pred, _IterType());
}
/**
* @maint
* @if maint
* This is a helper function...
* @endmaint
* @endif
*/
template<typename _RandomAccessIter, typename _Tp>
_RandomAccessIter
......@@ -1860,9 +1860,9 @@ __result, __binary_pred, _IterType());
}
/**
* @maint
* @if maint
* This is a helper function...
* @endmaint
* @endif
*/
template<typename _RandomAccessIter, typename _Tp, typename _Compare>
_RandomAccessIter
......@@ -1884,17 +1884,17 @@ __result, __binary_pred, _IterType());
/**
* @maint
* @if maint
* @doctodo
* This controls some aspect of the sort routines.
* @endmaint
* @endif
*/
enum { _M_threshold = 16 };
/**
* @maint
* @if maint
* This is a helper function for the sort routine.
* @endmaint
* @endif
*/
template<typename _RandomAccessIter, typename _Tp>
void
......@@ -1911,9 +1911,9 @@ __result, __binary_pred, _IterType());
}
/**
* @maint
* @if maint
* This is a helper function for the sort routine.
* @endmaint
* @endif
*/
template<typename _RandomAccessIter, typename _Tp, typename _Compare>
void
......@@ -1930,9 +1930,9 @@ __result, __binary_pred, _IterType());
}
/**
* @maint
* @if maint
* This is a helper function for the sort routine.
* @endmaint
* @endif
*/
template<typename _RandomAccessIter>
void
......@@ -1953,9 +1953,9 @@ __result, __binary_pred, _IterType());
}
/**
* @maint
* @if maint
* This is a helper function for the sort routine.
* @endmaint
* @endif
*/
template<typename _RandomAccessIter, typename _Compare>
void
......@@ -1977,9 +1977,9 @@ __result, __binary_pred, _IterType());
}
/**
* @maint
* @if maint
* This is a helper function for the sort routine.
* @endmaint
* @endif
*/
template<typename _RandomAccessIter>
inline void
......@@ -1992,9 +1992,9 @@ __result, __binary_pred, _IterType());
}
/**
* @maint
* @if maint
* This is a helper function for the sort routine.
* @endmaint
* @endif
*/
template<typename _RandomAccessIter, typename _Compare>
inline void
......@@ -2008,9 +2008,9 @@ __result, __binary_pred, _IterType());
}
/**
* @maint
* @if maint
* This is a helper function for the sort routine.
* @endmaint
* @endif
*/
template<typename _RandomAccessIter>
void
......@@ -2025,9 +2025,9 @@ __result, __binary_pred, _IterType());
}
/**
* @maint
* @if maint
* This is a helper function for the sort routine.
* @endmaint
* @endif
*/
template<typename _RandomAccessIter, typename _Compare>
void
......@@ -2043,9 +2043,9 @@ __result, __binary_pred, _IterType());
}
/**
* @maint
* @if maint
* This is a helper function for the sort routine.
* @endmaint
* @endif
*/
template<typename _Size>
inline _Size
......@@ -2057,9 +2057,9 @@ __result, __binary_pred, _IterType());
}
/**
* @maint
* @if maint
* This is a helper function for the sort routine.
* @endmaint
* @endif
*/
template<typename _RandomAccessIter, typename _Size>
void
......@@ -2085,9 +2085,9 @@ __result, __binary_pred, _IterType());
}
/**
* @maint
* @if maint
* This is a helper function for the sort routine.
* @endmaint
* @endif
*/
template<typename _RandomAccessIter, typename _Size, typename _Compare>
void
......@@ -2166,9 +2166,9 @@ __result, __binary_pred, _IterType());
/**
* @maint
* @if maint
* This is a helper function for the stable sorting routines.
* @endmaint
* @endif
*/
template<typename _RandomAccessIter>
void
......@@ -2187,9 +2187,9 @@ __result, __binary_pred, _IterType());
}
/**
* @maint
* @if maint
* This is a helper function for the stable sorting routines.
* @endmaint
* @endif
*/
template<typename _RandomAccessIter, typename _Compare>
void
......
......@@ -50,7 +50,7 @@
/**
* @defgroup Allocators Memory Allocators
* @maint
* @if maint
* stl_alloc.h implements some node allocators. These are NOT the same as
* allocators in the C++ standard, nor in the original H-P STL. They do not
* encapsulate different pointer types; we assume that there is only one
......@@ -72,7 +72,7 @@
*
* "SGI" allocators may be wrapped in __allocator to convert the interface
* into a "standard" one.
* @endmaint
* @endif
*
* The canonical description of these classes is in docs/html/ext/howto.html
* or online at http://gcc.gnu.org/onlinedocs/libstdc++/ext/howto.html#3
......@@ -88,11 +88,11 @@
namespace std
{
/**
* @maint
* @if maint
* A new-based allocator, as required by the standard. Allocation and
* deallocation forward to global new and delete. "SGI" style, minus
* reallocate().
* @endmaint
* @endif
* (See @link Allocators allocators info @endlink for more.)
*/
class __new_alloc
......@@ -109,13 +109,13 @@ namespace std
/**
* @maint
* @if maint
* A malloc-based allocator. Typically slower than the
* __default_alloc_template (below). Typically thread-safe and more
* storage efficient. The template argument is unused and is only present
* to permit multiple instantiations (but see __default_alloc_template
* for caveats). "SGI" style, plus __set_malloc_handler for OOM conditions.
* @endmaint
* @endif
* (See @link Allocators allocators info @endlink for more.)
*/
template <int __inst>
......@@ -207,13 +207,13 @@ namespace std
/**
* @maint
* @if maint
* This is used primarily (only?) in _Alloc_traits and other places to
* help provide the _Alloc_type typedef.
*
* This is neither "standard"-conforming nor "SGI". The _Alloc parameter
* must be "SGI" style.
* @endmaint
* @endif
* (See @link Allocators allocators info @endlink for more.)
*/
template<class _Tp, class _Alloc>
......@@ -235,7 +235,7 @@ namespace std
/**
* @maint
* @if maint
* An adaptor for an underlying allocator (_Alloc) to check the size
* arguments for debugging. Errors are reported using assert; these
* checks can be disabled via NDEBUG, but the space penalty is still
......@@ -245,7 +245,7 @@ namespace std
* "There is some evidence that this can confuse Purify." - SGI comment
*
* This adaptor is "SGI" style. The _Alloc parameter must also be "SGI".
* @endmaint
* @endif
* (See @link Allocators allocators info @endlink for more.)
*/
template <class _Alloc>
......@@ -293,7 +293,7 @@ typedef __mem_interface __single_client_alloc;
/**
* @maint
* @if maint
* Default node allocator. "SGI" style. Uses __mem_interface for its
* underlying requests (and makes as few requests as possible).
* **** Currently __mem_interface is always __new_alloc, never __malloc*.
......@@ -318,7 +318,7 @@ typedef __mem_interface __single_client_alloc;
* approach. If you do not wish to share the free lists with the main
* default_alloc instance, instantiate this with a non-zero __inst.
*
* @endmaint
* @endif
* (See @link Allocators allocators info @endlink for more.)
*/
template<bool __threads, int __inst>
......@@ -682,14 +682,14 @@ inline bool operator!=(const allocator<_T1>&, const allocator<_T2>&)
/**
* @maint
* @if maint
* Allocator adaptor to turn an "SGI" style allocator (e.g., __alloc,
* __malloc_alloc_template) into a "standard" conforming allocator. Note
* that this adaptor does *not* assume that all objects of the underlying
* alloc class are identical, nor does it assume that all of the underlying
* alloc's member functions are static member functions. Note, also, that
* __allocator<_Tp, __alloc> is essentially the same thing as allocator<_Tp>.
* @endmaint
* @endif
* (See @link Allocators allocators info @endlink for more.)
*/
template <class _Tp, class _Alloc>
......@@ -800,7 +800,7 @@ inline bool operator!=(const __debug_alloc<_Alloc>&,
/**
* @maint
* @if maint
* Another allocator adaptor: _Alloc_traits. This serves two purposes.
* First, make it possible to write containers that can use either "SGI"
* style allocators or "standard" allocators. Second, provide a mechanism
......@@ -832,7 +832,7 @@ inline bool operator!=(const __debug_alloc<_Alloc>&,
* The size_t parameters are "standard" style (see top of stl_alloc.h) in
* that they take counts, not sizes.
*
* @endmaint
* @endif
* (See @link Allocators allocators info @endlink for more.)
*/
//@{
......
// nonstandard construct and destroy functions -*- C++ -*-
// Copyright (C) 2001 Free Software Foundation, Inc.
// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
......@@ -67,10 +67,10 @@
namespace std
{
/**
* @maint
* @if maint
* Constructs an object in existing memory by invoking an allocated
* object's constructor with an initializer.
* @endmaint
* @endif
*/
template <class _T1, class _T2>
inline void
......@@ -78,10 +78,10 @@ namespace std
{ new (static_cast<void*>(__p)) _T1(__value); }
/**
* @maint
* @if maint
* Constructs an object in existing memory by invoking an allocated
* object's default constructor (no initializers).
* @endmaint
* @endif
*/
template <class _T1>
inline void
......@@ -89,11 +89,11 @@ namespace std
{ new (static_cast<void*>(__p)) _T1(); }
/**
* @maint
* @if maint
* Destroy a range of objects with nontrivial destructors.
*
* This is a helper function used only by _Destroy().
* @endmaint
* @endif
*/
template <class _ForwardIterator>
inline void
......@@ -101,13 +101,13 @@ namespace std
{ for ( ; __first != __last; ++__first) _Destroy(&*__first); }
/**
* @maint
* @if maint
* Destroy a range of objects with trivial destructors. Since the destructors
* are trivial, there's nothing to do and hopefully this function will be
* entirely optimized away.
*
* This is a helper function used only by _Destroy().
* @endmaint
* @endif
*/
template <class _ForwardIterator>
inline void
......@@ -115,9 +115,9 @@ namespace std
{ }
/**
* @maint
* @if maint
* Destroy the object pointed to by a pointer type.
* @endmaint
* @endif
*/
template <class _Tp>
inline void
......@@ -125,11 +125,11 @@ namespace std
{ __pointer->~_Tp(); }
/**
* @maint
* @if maint
* Destroy a range of objects. If the value_type of the object has
* a trivial destructor, the compiler should optimize all of this
* away, otherwise the objects' destructors must be invoked.
* @endmaint
* @endif
*/
template <class _ForwardIterator>
inline void
......@@ -146,6 +146,3 @@ namespace std
#endif /* _CPP_BITS_STL_CONSTRUCT_H */
// Local Variables:
// mode:C++
// End:
// deque implementation -*- C++ -*-
// Copyright (C) 2001 Free Software Foundation, Inc.
// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
......@@ -73,14 +73,14 @@ namespace std
{
/**
* @maint
* @if maint
* @brief This function controls the size of memory nodes.
* @param size The size of an element.
* @return The number (not bytesize) of elements per node.
*
* This function started off as a compiler kludge from SGI, but seems to
* be a useful wrapper around a repeated constant expression.
* @endmaint
* @endif
*/
inline size_t
__deque_buf_size(size_t __size)
......@@ -94,9 +94,9 @@ __deque_buf_size(size_t __size)
* marking its valid range. Access to elements is done as offsets of either
* of those two, relying on operator overloading in this class.
*
* @maint
* @if maint
* All the functions are op overloads except for _M_set_node.
* @endmaint
* @endif
*/
template <class _Tp, class _Ref, class _Ptr>
struct _Deque_iterator
......@@ -204,11 +204,11 @@ struct _Deque_iterator
bool operator<=(const _Self& __x) const { return !(__x < *this); }
bool operator>=(const _Self& __x) const { return !(*this < __x); }
/** @maint
/** @if maint
* Prepares to traverse new_node. Sets everything except _M_cur, which
* should therefore be set by the caller immediately afterwards, based on
* _M_first and _M_last.
* @endmaint
* @endif
*/
void _M_set_node(_Map_pointer __new_node) {
_M_node = __new_node;
......@@ -225,16 +225,16 @@ operator+(ptrdiff_t __n, const _Deque_iterator<_Tp, _Ref, _Ptr>& __x)
}
/// @maint Primary default version. @endmaint
/// @if maint Primary default version. @endif
/**
* @maint
* @if maint
* Deque base class. It has two purposes. First, its constructor
* and destructor allocate (but don't initialize) storage. This makes
* exception safety easier. Second, the base class encapsulates all of
* the differences between SGI-style allocators and standard-conforming
* allocators. There are two versions: this ordinary one, and the
* space-saving specialization for instanceless allocators.
* @endmaint
* @endif
*/
template <class _Tp, class _Alloc, bool __is_static>
class _Deque_alloc_base
......@@ -270,7 +270,7 @@ protected:
size_t _M_map_size;
};
/// Specialization for instanceless allocators.
/// @if maint Specialization for instanceless allocators. @endif
template <class _Tp, class _Alloc>
class _Deque_alloc_base<_Tp, _Alloc, true>
{
......@@ -301,14 +301,14 @@ protected:
/**
* @maint
* @if maint
* Deque base class. Using _Alloc_traits in the instantiation of the parent
* class provides the compile-time dispatching mentioned in the parent's docs.
* This class provides the unified face for deque's allocation.
*
* Nothing in this class ever constructs or destroys an actual Tp element.
* (Deque handles that itself.) Only/All memory management is performed here.
* @endmaint
* @endif
*/
template <class _Tp, class _Alloc>
class _Deque_base
......@@ -352,13 +352,13 @@ _Deque_base<_Tp,_Alloc>::~_Deque_base()
}
/**
* @maint
* @if maint
* @brief Layout storage.
* @param num_elements The count of T's for which to allocate space at first.
* @return Nothing.
*
* The initial underlying memory layout is a bit complicated...
* @endmaint
* @endif
*/
template <class _Tp, class _Alloc>
void
......@@ -415,6 +415,14 @@ _Deque_base<_Tp,_Alloc>::_M_destroy_nodes(_Tp** __nstart, _Tp** __nfinish)
/**
* @ingroup Containers
* @ingroup Sequences
*
* Meets the requirements of a <a href="tables.html#65">container</a>, a
* <a href="tables.html#66">reversible container</a>, and a
* <a href="tables.html#67">sequence</a>, including the
* <a href="tables.html#68">optional sequence requirements</a>.
*
* Placeholder: see http://www.sgi.com/tech/stl/Deque.html for now.
*
* In previous HP/SGI versions of deque, there was an extra template parameter
......@@ -422,7 +430,7 @@ _Deque_base<_Tp,_Alloc>::_M_destroy_nodes(_Tp** __nstart, _Tp** __nfinish)
* the C++ standard (it can be detected using template template parameters),
* and it was removed.
*
* @maint
* @if maint
* Here's how a deque<Tp> manages memory. Each deque has 4 members:
*
* - Tp** _M_map
......@@ -483,8 +491,7 @@ _Deque_base<_Tp,_Alloc>::_M_destroy_nodes(_Tp** __nstart, _Tp** __nfinish)
* the implementation routines for deque itself work only through the start
* and finish iterators. This keeps the routines simple and sane, and we can
* use other standard algorithms as well.
*
* @endmaint
* @endif
*/
template <class _Tp, class _Alloc = allocator<_Tp> >
class deque : protected _Deque_base<_Tp, _Alloc>
......@@ -524,11 +531,11 @@ protected:
using _Base::_M_allocate_map;
using _Base::_M_deallocate_map;
/** @maint
/** @if maint
* A total of four data members accumulated down the heirarchy. If the
* _Alloc type requires separate instances, then two of them will also be
* included in each deque.
* @endmaint
* @endif
*/
using _Base::_M_map;
using _Base::_M_map_size;
......@@ -1035,7 +1042,7 @@ void deque<_Tp,_Alloc>::clear()
}
/**
* @maint
* @if maint
* @brief Fills the deque with copies of value.
* @param value Initial value.
* @return Nothing.
......@@ -1044,7 +1051,7 @@ void deque<_Tp,_Alloc>::clear()
*
* This function is called only when the user provides an explicit size (with
* or without an explicit exemplar value).
* @endmaint
* @endif
*/
template <class _Tp, class _Alloc>
void deque<_Tp,_Alloc>::_M_fill_initialize(const value_type& __value)
......@@ -1063,7 +1070,7 @@ void deque<_Tp,_Alloc>::_M_fill_initialize(const value_type& __value)
}
/** @{
* @maint
* @if maint
* @brief Fills the deque with whatever is in [first,last).
* @param first An input iterator.
* @param last An input iterator.
......@@ -1072,7 +1079,7 @@ void deque<_Tp,_Alloc>::_M_fill_initialize(const value_type& __value)
* If the iterators are actually forward iterators (or better), then the
* memory layout can be done all at once. Else we move forward using
* push_back on each value from the iterator.
* @endmaint
* @endif
*/
template <class _Tp, class _Alloc> template <class _InputIterator>
void deque<_Tp,_Alloc>::_M_range_initialize(_InputIterator __first,
......@@ -1570,6 +1577,3 @@ inline void swap(deque<_Tp,_Alloc>& __x, deque<_Tp,_Alloc>& __y) {
#endif /* __GLIBCPP_INTERNAL_DEQUE_H */
// Local Variables:
// mode:C++
// End:
......@@ -146,10 +146,10 @@ namespace std
};
/**
* @maint
* @if maint
* This function is not a part of the C++ standard but is syntactic
* sugar for internal library use only.
* @endmaint
* @endif
*/
template<typename _Iter>
inline typename iterator_traits<_Iter>::iterator_category
......@@ -160,7 +160,3 @@ namespace std
#endif /* __GLIBCPP_INTERNAL_ITERATOR_BASE_TYPES_H */
// Local Variables:
// mode:C++
// End:
// List implementation -*- C++ -*-
// Copyright (C) 2001 Free Software Foundation, Inc.
// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
......@@ -273,7 +273,19 @@ namespace std
void clear();
};
/**
* @ingroup Containers
* @ingroup Sequences
*
* Meets the requirements of a <a href="tables.html#65">container</a>, a
* <a href="tables.html#66">reversible container</a>, and a
* <a href="tables.html#67">sequence</a>, including the
* <a href="tables.html#68">optional sequence requirements</a> with the
* %exception of @c at and @c operator[].
*
* @doctodo
*
*/
template<typename _Tp, typename _Alloc = allocator<_Tp> >
class list : protected _List_base<_Tp, _Alloc>
{
......
......@@ -57,7 +57,7 @@
* This is an internal header file, included by other library headers.
* You should not attempt to use it directly.
*
* @maint
* @if maint
* Inclusion of this file has been removed from
* all of the other STL headers for safety reasons, except std_utility.h.
* For more information, see the thread of about twenty messages starting
......@@ -65,7 +65,7 @@
* FAQ at http://gcc.gnu.org/onlinedocs/libstdc++/faq/index.html#4_4 .
*
* Short summary: the rel_ops operators should be avoided for the present.
* @endmaint
* @endif
*/
#ifndef _CPP_BITS_STL_RELOPS_H
......
......@@ -65,11 +65,11 @@ namespace std
{
/**
* @maint
* @if maint
* This class is used in two places: stl_algo.h and ext/memory, where it
* is wrapped as the temporary_buffer class. See temporary_buffer docs for
* more notes.
* @endmaint
* @endif
*/
template <class _ForwardIterator, class _Tp>
class _Temporary_buffer
......
// Vector implementation -*- C++ -*-
// Copyright (C) 2001 Free Software Foundation, Inc.
// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
......@@ -148,6 +148,15 @@ struct _Vector_base
* @brief A standard container which offers fixed time access to individual
* elements in any order.
*
* @ingroup Containers
* @ingroup Sequences
*
* Meets the requirements of a <a href="tables.html#65">container</a>, a
* <a href="tables.html#66">reversible container</a>, and a
* <a href="tables.html#67">sequence</a>, including the
* <a href="tables.html#68">optional sequence requirements</a> with the
* %exception of @c push_front and @c pop_front.
*
* In some terminology a vector can be described as a dynamic C-style array,
* it offers fast and efficient access to individual elements in any order
* and saves the user from worrying about memory and size allocation.
......
......@@ -62,10 +62,10 @@ namespace std
{
/**
* @maint
* @if maint
* This is a helper function. The unused second parameter exists to
* permit the real get_temporary_buffer to use template parameter deduction.
* @endmaint
* @endif
*/
template <class _Tp>
pair<_Tp*, ptrdiff_t>
......@@ -202,7 +202,3 @@ public:
#endif /* _CPP_MEMORY */
// Local Variables:
// mode:C++
// End:
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