From c3b0bfe175273179cf5dc786c571ea88867898b7 Mon Sep 17 00:00:00 2001 From: Benjamin Kosnik Date: Thu, 3 Nov 2011 22:23:35 +0000 Subject: [PATCH] doxygroups.cc: Add markup for namespace tr2. 2011-11-03 Benjamin Kosnik * doc/doxygen/doxygroups.cc: Add markup for namespace tr2. * include/tr2/bool_set: Adjust doxygen markup. * include/tr2/dynamic_bitset: Same. * include/tr2/type_traits: Same. From-SVN: r180874 --- libstdc++-v3/ChangeLog | 7 +++++++ libstdc++-v3/doc/doxygen/doxygroups.cc | 8 +++++++- libstdc++-v3/include/tr2/bool_set | 22 +++++++++++----------- libstdc++-v3/include/tr2/dynamic_bitset | 22 +++++++++++----------- libstdc++-v3/include/tr2/type_traits | 20 ++++++++++++++++++-- 5 files changed, 54 insertions(+), 25 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index cba43eb7570a..c282177c76b1 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,10 @@ +2011-11-03 Benjamin Kosnik + + * doc/doxygen/doxygroups.cc: Add markup for namespace tr2. + * include/tr2/bool_set: Adjust doxygen markup. + * include/tr2/dynamic_bitset: Same. + * include/tr2/type_traits: Same. + 2011-11-03 Benjamin Kosnik * doc/html/*: Regenerate. diff --git a/libstdc++-v3/doc/doxygen/doxygroups.cc b/libstdc++-v3/doc/doxygen/doxygroups.cc index 001753883015..1212b6ff5f06 100644 --- a/libstdc++-v3/doc/doxygen/doxygroups.cc +++ b/libstdc++-v3/doc/doxygen/doxygroups.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2001, 2002, 2005, 2008, 2009, 2010 + Copyright (C) 2001, 2002, 2005, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. See license.html for license. @@ -29,6 +29,12 @@ /** @namespace std::tr1::__detail * @brief Implementation details not part of the namespace std::tr1 interface. */ +/** @namespace std::tr2 + * @brief ISO C++ TR2 entities toplevel namespace is std::tr2. +*/ +/** @namespace std::tr2::__detail + * @brief Implementation details not part of the namespace std::tr2 interface. +*/ /** @namespace __gnu_cxx * @brief GNU extensions for public use. */ diff --git a/libstdc++-v3/include/tr2/bool_set b/libstdc++-v3/include/tr2/bool_set index fe322675991e..f577ed0c76c6 100644 --- a/libstdc++-v3/include/tr2/bool_set +++ b/libstdc++-v3/include/tr2/bool_set @@ -26,16 +26,6 @@ * This is a TR2 C++ Library header. */ -// -// Sort of an implementation of bool_set in n2136 Hervé Brönnimann, -// Guillaume Melquiond, Sylvain Pion. -// -// The implicit conversion to bool is slippery! I may use the new -// explicit conversion. This has been specialized in the language so -// that in contexts requiring a bool the conversion happens -// implicitly. Thus most objections should be eliminated. -// - #ifndef _GLIBCXX_TR2_BOOL_SET #define _GLIBCXX_TR2_BOOL_SET 1 @@ -50,6 +40,17 @@ namespace tr2 { _GLIBCXX_BEGIN_NAMESPACE_VERSION + /** + * bool_set + * + * See N2136, Bool_set: multi-valued logic + * by Hervé Brönnimann, Guillaume Melquiond, Sylvain Pion. + * + * The implicit conversion to bool is slippery! I may use the new + * explicit conversion. This has been specialized in the language + * so that in contexts requiring a bool the conversion happens + * implicitly. Thus most objections should be eliminated. + */ class bool_set { public: @@ -60,7 +61,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION /// Constructor from bool. bool_set(bool __t) : _M_b(_Bool_set_val(__t)) { } - /// // I'm not sure about this. bool contains(bool_set __b) const { return this->is_singleton() && this->equals(__b); } diff --git a/libstdc++-v3/include/tr2/dynamic_bitset b/libstdc++-v3/include/tr2/dynamic_bitset index 5a4b7943bbef..b5c3bf3fcc8b 100644 --- a/libstdc++-v3/include/tr2/dynamic_bitset +++ b/libstdc++-v3/include/tr2/dynamic_bitset @@ -120,11 +120,11 @@ public: } void - _M_assign(const __dynamic_bitset_base& __b) + _M_assign(const __dynamic_bitset_base& __b) { this->_M_w = __b._M_w; } void - _M_swap(__dynamic_bitset_base& __b) + _M_swap(__dynamic_bitset_base& __b) { this->_M_w.swap(__b._M_w); } void @@ -178,7 +178,7 @@ public: { return this->_M_w[_M_w.size() - 1]; } void - _M_do_and(const __dynamic_bitset_base& __x) + _M_do_and(const __dynamic_bitset_base& __x) { if (__x._M_w.size() == this->_M_w.size()) for (size_t __i = 0; __i < this->_M_w.size(); ++__i) @@ -188,7 +188,7 @@ public: } void - _M_do_or(const __dynamic_bitset_base& __x) + _M_do_or(const __dynamic_bitset_base& __x) { if (__x._M_w.size() == this->_M_w.size()) for (size_t __i = 0; __i < this->_M_w.size(); ++__i) @@ -198,7 +198,7 @@ public: } void - _M_do_xor(const __dynamic_bitset_base& __x) + _M_do_xor(const __dynamic_bitset_base& __x) { if (__x._M_w.size() == this->_M_w.size()) for (size_t __i = 0; __i < this->_M_w.size(); ++__i) @@ -208,7 +208,7 @@ public: } void - _M_do_dif(const __dynamic_bitset_base& __x) + _M_do_dif(const __dynamic_bitset_base& __x) { if (__x._M_w.size() == this->_M_w.size()) for (size_t __i = 0; __i < this->_M_w.size(); ++__i) @@ -245,7 +245,7 @@ public: } bool - _M_is_equal(const __dynamic_bitset_base& __x) const + _M_is_equal(const __dynamic_bitset_base& __x) const { if (__x.size() == this->size()) { @@ -259,7 +259,7 @@ public: } bool - _M_is_less(const __dynamic_bitset_base& __x) const + _M_is_less(const __dynamic_bitset_base& __x) const { if (__x.size() == this->size()) { @@ -296,7 +296,7 @@ public: } bool - _M_is_subset_of(const __dynamic_bitset_base& __b) + _M_is_subset_of(const __dynamic_bitset_base& __b) { if (__b.size() == this->size()) { @@ -310,7 +310,7 @@ public: } bool - _M_is_proper_subset_of(const __dynamic_bitset_base& __b) const + _M_is_proper_subset_of(const __dynamic_bitset_base& __b) const { if (this->is_subset_of(__b)) { @@ -387,7 +387,7 @@ public: this->_M_w[__wshift] = this->_M_w[0] << __offset; } - ////std::fill(this->_M_w.begin(), this->_M_w.begin() + __wshift, + //// std::fill(this->_M_w.begin(), this->_M_w.begin() + __wshift, //// static_cast<_WordT>(0)); } } diff --git a/libstdc++-v3/include/tr2/type_traits b/libstdc++-v3/include/tr2/type_traits index 73edf1137e41..4ec411810473 100644 --- a/libstdc++-v3/include/tr2/type_traits +++ b/libstdc++-v3/include/tr2/type_traits @@ -43,19 +43,28 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION * @defgroup metaprogramming Type Traits * @ingroup utilities * - * Compile time type transformation and information. * @{ */ + /** + * See N2965: Type traits and base classes + * by Michael Spertus + */ + + /** + * Simple typelist. Compile-time list of types. + */ template struct typelist; + /// Specialization for an empty typelist. template<> struct typelist<> { typedef std::true_type empty; }; + /// Partial specialization. template struct typelist<_First, _Rest...> { @@ -72,23 +81,30 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION }; }; - // Sequence abstraction metafunctions default to looking in the type + /// Sequence abstraction metafunctions for manipulating a typelist. + + + /// Return the first type in a typelist. template struct first : public _Tp::first { }; + /// Return the typelist minus the first type. template struct rest : public _Tp::rest { }; + /// Query to see if a typelist is empty. template struct empty : public _Tp::empty { }; + /// Enumerate all the base classes of a class. Form of a typelist. template struct bases { typedef typelist<__bases(_Tp)...> type; }; + /// Enumerate all the direct base classes of a class. Form of a typelist. template struct direct_bases { -- 2.39.2