diff options
Diffstat (limited to 'libstdc++-v3/doc/doxygen/doxygroups.cc')
-rw-r--r-- | libstdc++-v3/doc/doxygen/doxygroups.cc | 152 |
1 files changed, 152 insertions, 0 deletions
diff --git a/libstdc++-v3/doc/doxygen/doxygroups.cc b/libstdc++-v3/doc/doxygen/doxygroups.cc new file mode 100644 index 000000000..001753883 --- /dev/null +++ b/libstdc++-v3/doc/doxygen/doxygroups.cc @@ -0,0 +1,152 @@ +/* + Copyright (C) 2001, 2002, 2005, 2008, 2009, 2010 + 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 + typing comments. However, it is mentioned nowhere except the *cfg.in files. + + Some actual code (declarations) is exposed here, but no compiler ever + sees it. The decls must be visible to doxygen, and sometimes their real + declarations are not visible, or not visible in a way we want. + + Pieces separated by '// //' lines will usually not be presented to the + user on the same page. +*/ + +// // // // // // // // // // // // // // // // // // // // // // // // +/** @namespace std + * @brief ISO C++ entities toplevel namespace is std. +*/ +/** @namespace std::__detail + * @brief Implementation details not part of the namespace std interface. +*/ +/** @namespace std::tr1 + * @brief ISO C++ TR1 entities toplevel namespace is std::tr1. +*/ +/** @namespace std::tr1::__detail + * @brief Implementation details not part of the namespace std::tr1 interface. +*/ +/** @namespace __gnu_cxx + * @brief GNU extensions for public use. +*/ +/** @namespace __gnu_cxx::__detail + * @brief Implementation details not part of the namespace __gnu_cxx + * interface. +*/ +/** @namespace __gnu_internal + * @brief GNU implemenation details, not for public use or + * export. Used only when anonymous namespaces cannot be substituted. +*/ +// // // // // // // // // // // // // // // // // // // // // // // // + +/** + * @defgroup extensions Extensions + * + * Components generally useful that are not part of any standard. + */ + +/** @defgroup SGIextensions SGI + * @ingroup extensions +Because libstdc++ based its implementation of the STL subsections of +the library on the SGI 3.3 implementation, we inherited their extensions +as well. + +They are additionally documented in the +<a href="http://gcc.gnu.org/onlinedocs/libstdc++/documentation.html"> +online documentation</a>, a copy of which is also shipped with the +library source code (in .../docs/html/documentation.html). You can also +read the documentation <a href="http://www.sgi.com/tech/stl/">on SGI's +site</a>, which is still running even though the code is not maintained. + +<strong>NB</strong> that the following notes are pulled from various +comments all over the place, so they may seem stilted. +<hr> +*/ + +/** @defgroup containers Containers +Containers are collections of objects. + +A container may hold any type which meets certain requirements, but the type +of contained object is chosen at compile time, and all objects in a given +container must be of the same type. (Polymorphism is possible by declaring a +container of pointers to a base class and then populating it with pointers to +instances of derived classes. Variant value types such as the @c any class +from <a href="http://www.boost.org/">Boost</a> can also be used. + +All contained types must be @c Assignable and @c CopyConstructible. +Specific containers may place additional requirements on the types of +their contained objects. + +Containers manage memory allocation and deallocation themselves when +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, summarized in +<a href="tables.html">tables</a>. + +The standard containers are further refined into +@link sequences Sequences@endlink and +@link associative_containers Associative Containers@endlink. +@link unordered_associative_containers Unordered Associative Containers@endlink. +*/ + +/** @defgroup sequences Sequences + * @ingroup containers +Sequences arrange a collection of objects into a strictly linear order. + +The differences between sequences are usually due to one or both of the +following: + - memory management + - algorithmic complexity + +As an example of the first case, @c vector is required to use a contiguous +memory layout, while other sequences such as @c deque are not. + +The prime reason for choosing one sequence over another should be based on +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>. +*/ + +/** @defgroup associative_containers Associative + * @ingroup containers +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. + +All associative containers must meet certain requirements, summarized in +<a href="tables.html">tables</a>. +*/ + +/** @defgroup unordered_associative_containers Unordered Associative + * @ingroup containers +Unordered associative containers allow fast retrieval of data based on keys. + +Each container type is parameterized on a @c Key type, a @c Hash type +providing a hashing functor, and an ordering relation used to sort the +elements of the container. + +All unordered associative containers must meet certain requirements, +summarized in <a href="tables.html">tables</a>. */ + +/** + * @defgroup diagnostics Diagnostics + * + * Components for error handling, reporting, and diagnostic operations. + */ + +/** + * @defgroup concurrency Concurrency + * + * Components for concurrent operations, including threads, mutexes, + * and condition variables. + */ |