aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libstdc++-v3/ChangeLog7
-rw-r--r--libstdc++-v3/doc/doxygen/doxygroups.cc8
-rw-r--r--libstdc++-v3/include/tr2/bool_set22
-rw-r--r--libstdc++-v3/include/tr2/dynamic_bitset22
-rw-r--r--libstdc++-v3/include/tr2/type_traits20
5 files changed, 54 insertions, 25 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index cba43eb..c282177 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,5 +1,12 @@
2011-11-03 Benjamin Kosnik <bkoz@redhat.com>
+ * 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 <bkoz@redhat.com>
+
* doc/html/*: Regenerate.
2011-11-02 Richard B. Kreckel <kreckel@ginac.de>
diff --git a/libstdc++-v3/doc/doxygen/doxygroups.cc b/libstdc++-v3/doc/doxygen/doxygroups.cc
index 0017538..1212b6f 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 fe32267..f577ed0 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 5a4b794..b5c3bf3 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<block_type, allocator_type>& __b)
+ _M_assign(const __dynamic_bitset_base& __b)
{ this->_M_w = __b._M_w; }
void
- _M_swap(__dynamic_bitset_base<block_type, allocator_type>& __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<block_type, allocator_type>& __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<block_type, allocator_type>& __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<block_type, allocator_type>& __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<block_type, allocator_type>& __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<block_type, allocator_type>& __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<block_type, allocator_type>& __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<block_type, allocator_type>& __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<block_type, allocator_type>& __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 73edf11..4ec4118 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<typename... _Elements>
struct typelist;
+ /// Specialization for an empty typelist.
template<>
struct typelist<>
{
typedef std::true_type empty;
};
+ /// Partial specialization.
template<typename _First, typename... _Rest>
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<typename _Tp>
struct first : public _Tp::first { };
+ /// Return the typelist minus the first type.
template<typename _Tp>
struct rest : public _Tp::rest { };
+ /// Query to see if a typelist is empty.
template<typename _Tp>
struct empty : public _Tp::empty { };
+ /// Enumerate all the base classes of a class. Form of a typelist.
template<typename _Tp>
struct bases
{
typedef typelist<__bases(_Tp)...> type;
};
+ /// Enumerate all the direct base classes of a class. Form of a typelist.
template<typename _Tp>
struct direct_bases
{