diff options
Diffstat (limited to 'libstdc++-v3/doc/html/ext/sgiexts.html')
-rw-r--r-- | libstdc++-v3/doc/html/ext/sgiexts.html | 253 |
1 files changed, 0 insertions, 253 deletions
diff --git a/libstdc++-v3/doc/html/ext/sgiexts.html b/libstdc++-v3/doc/html/ext/sgiexts.html deleted file mode 100644 index 64b8e3138c1..00000000000 --- a/libstdc++-v3/doc/html/ext/sgiexts.html +++ /dev/null @@ -1,253 +0,0 @@ -<?xml version="1.0" encoding="ISO-8859-1"?> -<!DOCTYPE html - PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> - <meta name="AUTHOR" content="pme@gcc.gnu.org (Phil Edwards)" /> - <meta name="KEYWORDS" content="libstdc++, libstdc++, GCC, g++, STL, SGI" /> - <meta name="DESCRIPTION" content="SGI extensions preserved in libstdc++." /> - <meta name="GENERATOR" content="vi and eight fingers" /> - <title>HP/SGI STL extensions</title> -<link rel="StyleSheet" href="../lib3styles.css" type="text/css" /> -<link rel="Start" href="../documentation.html" type="text/html" - title="GNU C++ Standard Library" /> -<link rel="Subsection" href="sgiexts.html" type="text/html" title="Extensions" /> -<link rel="Bookmark" href="howto.html" type="text/html" title="Extensions" /> -<link rel="Copyright" href="../17_intro/license.html" type="text/html" /> -</head> -<body> - -<h1 class="centered"><a name="top">HP/SGI STL extensions</a></h1> - -<p>This page describes the extensions that SGI made to the STL subset - of the Standard C++ Library, which also includes work from the - originating HP codebase. This work is the basis for much of - libstdc++, and where possible these extensions have been - preserved. -</p> - -<p>What follows is a listing of these extensions, according to the - chapters of the library that they extend - (see <a href="../documentation.html#3">the chapter-specific - notes</a> for a description). Not every chapter has extensions, - and existing extensions may be removed (or moved) as their - functionality is standardized. -</p> - -<p>Descriptions range from the scanty to the verbose. Also check - the <a href="../documentation.html#4">generated documentation</a> - for notes and comments, especially for entries marked with '*'. - For more complete doumentation, see the SGI website. - For <em>really</em> complete documentation, consider perusing a - copy of Matt Austern's book "Generic Programming and the STL." -</p> - -<p>Back to the <a href="howto.html">libstdc++ extensions</a>. -</p> - - -<!-- ####################################################### --> -<hr /> -<h3><a name="ch20">Chapter 20</a></h3> -<p>The <functional> header contains many additional functors and - helper functions, extending section 20.3. They are implemented in the - file stl_function.h: -</p> -<ul> - <li><code>identity_element</code> for addition and multiplication. * </li> - <li>The functor <code>identity</code>, whose <code>operator()</code> - returns the argument unchanged. * </li> - <li>Composition functors <code>unary_function</code> and - <code>binary_function</code>, and their helpers <code>compose1</code> - and <code>compose2</code>. * </li> - <li><code>select1st</code> and <code>select2nd</code>, to strip pairs. * </li> - <li><code>project1st</code> and <code>project2nd</code>. * </li> - <li>A set of functors/functions which always return the same result. They - are <code>constant_void_fun</code>, <code>constant_binary_fun</code>, - <code>constant_unary_fun</code>, <code>constant0</code>, - <code>constant1</code>, and <code>constant2</code>. * </li> - <li>The class <code>subtractive_rng</code>. * </li> - <li>mem_fun adaptor helpers <code>mem_fun1</code> and - <code>mem_fun1_ref</code> are provided for backwards compatibility. </li> -</ul> -<p>20.4.1 can use several different allocators; they are described on the - main extensions page. -</p> -<p>20.4.3 is extended with a special version of - <code>get_temporary_buffer</code> taking a second argument. The argument - is a pointer, which is ignored, but can be used to specify the template - type (instead of using explicit function template arguments like the - standard version does). That is, in addition to -</p> - <pre> - get_temporary_buffer<int>(5);</pre> - you can also use - <pre> - get_temporary_buffer(5, (int*)0);</pre> -<p>A class <code>temporary_buffer</code> is given in stl_tempbuf.h. * -</p> -<p>The specialized algorithms of section 20.4.4 are extended with - <code>uninitialized_copy_n</code>. * -</p> -<p>Return <a href="howto.html">to the main extensions page</a> or - <a href="http://gcc.gnu.org/libstdc++/">to the homepage</a>. -</p> - - -<hr /> -<h3><a name="ch23">Chapter 23</a></h3> -<p>A few extensions and nods to backwards-compatibility have been made with - containers. Those dealing with older SGI-style allocators are dealt with - elsewhere. The remaining ones all deal with bits: -</p> -<p>The old pre-standard <code>bit_vector</code> class is present for - backwards compatibility. It is simply a typedef for the - <code>vector<bool></code> specialization. -</p> -<p>The <code>bitset</code> class has a number of extensions, described in the - rest of this item. First, we'll mention that this implementation of - <code>bitset<N></code> is specialized for cases where N number of - bits will fit into a single word of storage. If your choice of N is - within that range (<=32 on i686-pc-linux-gnu, for example), then all - of the operations will be faster. -</p> -<p>There are - versions of single-bit test, set, reset, and flip member functions which - do no range-checking. If we call them member functions of an instantiation - of "bitset<N>," then their names and signatures are: -</p> - <pre> - bitset<N>& _Unchecked_set (size_t pos); - bitset<N>& _Unchecked_set (size_t pos, int val); - bitset<N>& _Unchecked_reset (size_t pos); - bitset<N>& _Unchecked_flip (size_t pos); - bool _Unchecked_test (size_t pos);</pre> -<p>Note that these may in fact be removed in the future, although we have - no present plans to do so (and there doesn't seem to be any immediate - reason to). -</p> -<p>The semantics of member function <code>operator[]</code> are not specified - in the C++ standard. A long-standing defect report calls for sensible - obvious semantics, which are already implemented here: <code>op[]</code> - on a const bitset returns a bool, and for a non-const bitset returns a - <code>reference</code> (a nested type). However, this implementation does - no range-checking on the index argument, which is in keeping with other - containers' <code>op[]</code> requirements. The defect report's proposed - resolution calls for range-checking to be done. We'll just wait and see... -</p> -<p>Finally, two additional searching functions have been added. They return - the index of the first "on" bit, and the index of the first - "on" bit that is after <code>prev</code>, respectively: -</p> - <pre> - size_t _Find_first() const; - size_t _Find_next (size_t prev) const;</pre> -<p>The same caveat given for the _Unchecked_* functions applies here also. -</p> -<p>Return <a href="howto.html">to the main extensions page</a> or - <a href="http://gcc.gnu.org/libstdc++/">to the homepage</a>. -</p> - - -<hr /> -<h3><a name="ch24">Chapter 24</a></h3> -<p>24.3.2 describes <code>struct iterator</code>, which didn't exist in the - original HP STL implementation (the language wasn't rich enough at the - time). For backwards compatibility, base classes are provided which - declare the same nested typedefs: -</p> - <ul> - <li>input_iterator</li> - <li>output_iterator</li> - <li>forward_iterator</li> - <li>bidirectional_iterator</li> - <li>random_access_iterator</li> - </ul> -<p>24.3.4 describes iterator operation <code>distance</code>, which takes - two iterators and returns a result. It is extended by another signature - which takes two iterators and a reference to a result. The result is - modified, and the function returns nothing. -</p> -<p>Return <a href="howto.html">to the main extensions page</a> or - <a href="http://gcc.gnu.org/libstdc++/">to the homepage</a>. -</p> - - -<hr /> -<h3><a name="ch25">Chapter 25</a></h3> -<p>25.1.6 (count, count_if) is extended with two more versions of count - and count_if. The standard versions return their results. The - additional signatures return void, but take a final parameter by - reference to which they assign their results, e.g., -</p> - <pre> - void count (first, last, value, n);</pre> -<p>25.2 (mutating algorithms) is extended with two families of signatures, - random_sample and random_sample_n. -</p> -<p>25.2.1 (copy) is extended with -</p> - <pre> - copy_n (_InputIter first, _Size count, _OutputIter result);</pre> -<p>which copies the first 'count' elements at 'first' into 'result'. -</p> -<p>25.3 (sorting 'n' heaps 'n' stuff) is extended with some helper - predicates. Look in the doxygen-generated pages for notes on these. -</p> - <ul> - <li><code>is_heap</code> tests whether or not a range is a heap.</li> - <li><code>is_sorted</code> tests whether or not a range is sorted in - nondescending order.</li> - </ul> -<p>25.3.8 (lexigraphical_compare) is extended with -</p> - <pre> - lexicographical_compare_3way(_InputIter1 first1, _InputIter1 last1, - _InputIter2 first2, _InputIter2 last2)</pre> -<p>which does... what? -</p> -<p>Return <a href="howto.html">to the main extensions page</a> or - <a href="http://gcc.gnu.org/libstdc++/">to the homepage</a>. -</p> - - -<hr /> -<h3><a name="ch26">Chapter 26</a></h3> -<p>26.4, the generalized numeric operations such as accumulate, are extended - with the following functions: -</p> - <pre> - power (x, n); - power (x, n, moniod_operation);</pre> -<p>Returns, in FORTRAN syntax, "x ** n" where n>=0. In the - case of n == 0, returns the <a href="#ch20">identity element</a> for the - monoid operation. The two-argument signature uses multiplication (for - a true "power" implementation), but addition is supported as well. - The operation functor must be associative. -</p> -<p>The <code>iota</code> function wins the award for Extension With the - Coolest Name. It "assigns sequentially increasing values to a range. - That is, it assigns value to *first, value + 1 to *(first + 1) and so - on." Quoted from SGI documentation. -</p> - <pre> - void iota(_ForwardIter first, _ForwardIter last, _Tp value);</pre> -<p>Return <a href="howto.html">to the main extensions page</a> or - <a href="http://gcc.gnu.org/libstdc++/">to the homepage</a>. -</p> - - -<!-- ####################################################### --> - -<hr /> -<p class="fineprint"><em> -See <a href="../17_intro/license.html">license.html</a> for copying conditions. -Comments and suggestions are welcome, and may be sent to -<a href="mailto:libstdc++@gcc.gnu.org">the libstdc++ mailing list</a>. -</em></p> - - -</body> -</html> |