summaryrefslogtreecommitdiffstats
path: root/libstdc++-v3/include/tr1/tuple
diff options
context:
space:
mode:
authorbkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4>2006-10-16 19:08:22 +0000
committerbkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4>2006-10-16 19:08:22 +0000
commitc1183cd5f56d1cc5a9841d9d87cc0a2c56e03386 (patch)
tree97aa987e97c9fa8875bbd7caafc23bdc6db11927 /libstdc++-v3/include/tr1/tuple
parent7fc8c87785ce0816ebd8740ce275d1384dbe2a5a (diff)
downloadppe42-gcc-c1183cd5f56d1cc5a9841d9d87cc0a2c56e03386.tar.gz
ppe42-gcc-c1183cd5f56d1cc5a9841d9d87cc0a2c56e03386.zip
2006-10-16 Douglas Gregor <doug.gregor@gmail.com>
* include/Makefile.am (tr1_headers): Add new tuple_defs.h. * include/Makefile.in (tr1_headers): Regenerate. * include/tr1/tuple (tuple): Move declaration to tuple_defs.h. (get): Ditto. (operator==): Ditto. (operator<): Ditto. (operator!=): Ditto. (operator>): Ditto. (operator<=): Ditto. (operator>=): Ditto. (__stripped_tuple_type): Ditto. Include tuple.defs.h * include/tr1/tuple_iterate.h (tuple): Use _GLIBCXX_TUPLE_ALL_TEMPLATE_PARAMS_UNNAMED macro instead of 10 "typename"s. (tuple_element): Use _GLIBCXX_TUPLE_ALL_TEMPLATE_PARAMS and _GLIBCXX_TYPLE_ALL_TEMPLATE_ARGS instead of 10 parameters/arguments. * include/tr1/tuple_defs.h: New header, contains declarations and definitions for the tuple template with all arguments. * include/tr1/repeat.h (_GLIBCXX_TUPLE_ALL_TEMPLATE_PARAMS): New. (_GLIBCXX_TUPLE_ALL_TEMPLATE_PARAMS_UNNAMED): New. (_GLIBCXX_TUPLE_ALL_TEMPLATE_ARGS): New. (_GLIBCXX_TEMPLATE_PARAMS_NULL_CLASS): New. (_GLIBCXX_TEMPLATE_ARGS_STRIPPED): New. * scripts/gen_includers.pl: Update. * scripts/gen_includers2.pl: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@117790 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3/include/tr1/tuple')
-rw-r--r--libstdc++-v3/include/tr1/tuple157
1 files changed, 21 insertions, 136 deletions
diff --git a/libstdc++-v3/include/tr1/tuple b/libstdc++-v3/include/tr1/tuple
index bd1a81fad1f..4ec88bd9214 100644
--- a/libstdc++-v3/include/tr1/tuple
+++ b/libstdc++-v3/include/tr1/tuple
@@ -47,13 +47,6 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
// when the tuple is not maximum possible size.
struct _NullClass { };
- template<typename _Tp0 = _NullClass, typename _Tp1 = _NullClass,
- typename _Tp2 = _NullClass, typename _Tp3 = _NullClass,
- typename _Tp4 = _NullClass, typename _Tp5 = _NullClass,
- typename _Tp6 = _NullClass, typename _Tp7 = _NullClass,
- typename _Tp8 = _NullClass, typename _Tp9 = _NullClass>
- class tuple;
-
/// Gives the type of the ith element of a given tuple type.
template<int __i, typename _Tp>
struct tuple_element;
@@ -86,38 +79,32 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
// Returns a const reference to the ith element of a tuple.
// Any const or non-const ref elements are returned with their original type.
- template<int __i, typename _Tp0, typename _Tp1, typename _Tp2, typename _Tp3,
- typename _Tp4, typename _Tp5, typename _Tp6, typename _Tp7,
- typename _Tp8, typename _Tp9>
- typename __add_ref<typename tuple_element<__i, tuple<_Tp0, _Tp1, _Tp2,
- _Tp3, _Tp4, _Tp5,
- _Tp6, _Tp7, _Tp8,
- _Tp9> >::type>::type
- get(tuple<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4, _Tp5, _Tp6, _Tp7, _Tp8,
- _Tp9>& __t)
- {
- return __get_helper<__i, tuple<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4, _Tp5, _Tp6,
- _Tp7, _Tp8, _Tp9> >::get_value(__t);
- }
-
- template<int __i, typename _Tp0, typename _Tp1, typename _Tp2, typename _Tp3,
- typename _Tp4, typename _Tp5, typename _Tp6, typename _Tp7,
- typename _Tp8, typename _Tp9>
- typename __add_c_ref<typename tuple_element<__i, tuple<_Tp0, _Tp1, _Tp2,
- _Tp3, _Tp4, _Tp5,
- _Tp6, _Tp7, _Tp8,
- _Tp9> >::type>::type
- get(const tuple<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4, _Tp5, _Tp6, _Tp7, _Tp8,
- _Tp9>& __t)
- {
- return __get_helper<__i, tuple<_Tp0, _Tp1, _Tp2, _Tp3, _Tp4, _Tp5, _Tp6,
- _Tp7, _Tp8, _Tp9> >::get_value(__t);
- }
// This class helps construct the various comparison operations on tuples
template<int __check_equal_size, int __i, int __j, typename _Tp, typename _Up>
struct __tuple_compare;
+ // Helper which adds a reference to a type when given a reference_wrapper
+ template<typename _Tp>
+ struct __strip_reference_wrapper
+ {
+ typedef _Tp __type;
+ };
+
+ template<typename _Tp>
+ struct __strip_reference_wrapper<reference_wrapper<_Tp> >
+ {
+ typedef _Tp& __type;
+ };
+
+ template<typename _Tp>
+ struct __strip_reference_wrapper<const reference_wrapper<_Tp> >
+ {
+ typedef _Tp& __type;
+ };
+
+ #include "tuple_defs.h"
+
template<int __i, int __j, typename _Tp, typename _Up>
struct __tuple_compare<0, __i, __j, _Tp, _Up>
{
@@ -142,108 +129,6 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
{ return false; }
};
- template<typename _T1, typename _T2, typename _T3, typename _T4, typename _T5,
- typename _T6, typename _T7, typename _T8, typename _T9, typename _T10,
- typename _U1, typename _U2, typename _U3, typename _U4, typename _U5,
- typename _U6, typename _U7, typename _U8, typename _U9, typename _U10>
- bool
- operator==(const tuple<_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10>& __t,
- const tuple<_U1, _U2, _U3, _U4, _U5, _U6, _U7, _U8, _U9, _U10>& __u)
- {
- typedef tuple<_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10> _Tp;
- typedef tuple<_U1, _U2, _U3, _U4, _U5, _U6, _U7, _U8,_U9, _U10> _Up;
- return __tuple_compare<tuple_size<_Tp>::value - tuple_size<_Tp>::value, 0,
- tuple_size<_Tp>::value, _Tp, _Up>::__eq(__t, __u);
- }
-
- template<typename _T1, typename _T2, typename _T3, typename _T4, typename _T5,
- typename _T6, typename _T7, typename _T8, typename _T9, typename _T10,
- typename _U1, typename _U2, typename _U3, typename _U4, typename _U5,
- typename _U6, typename _U7, typename _U8, typename _U9, typename _U10>
- bool
- operator<(const tuple<_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10>& __t,
- const tuple<_U1, _U2, _U3, _U4, _U5, _U6, _U7, _U8, _U9, _U10>& __u)
- {
- typedef tuple<_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10> _Tp;
- typedef tuple<_U1, _U2, _U3, _U4, _U5, _U6, _U7, _U8,_U9, _U10> _Up;
- return __tuple_compare<tuple_size<_Tp>::value - tuple_size<_Tp>::value, 0,
- tuple_size<_Tp>::value, _Tp, _Up>::__less(__t, __u);
- }
-
- template<typename _T1, typename _T2, typename _T3, typename _T4, typename _T5,
- typename _T6, typename _T7, typename _T8, typename _T9, typename _T10,
- typename _U1, typename _U2, typename _U3, typename _U4, typename _U5,
- typename _U6, typename _U7, typename _U8, typename _U9, typename _U10>
- bool
- operator!=(const tuple<_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10>& __t,
- const tuple<_U1, _U2, _U3, _U4, _U5, _U6, _U7, _U8, _U9, _U10>& __u)
- { return !(__t == __u); }
-
- template<typename _T1, typename _T2, typename _T3, typename _T4, typename _T5,
- typename _T6, typename _T7, typename _T8, typename _T9, typename _T10,
- typename _U1, typename _U2, typename _U3, typename _U4, typename _U5,
- typename _U6, typename _U7, typename _U8, typename _U9, typename _U10>
- bool
- operator>(const tuple<_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10>& __t,
- const tuple<_U1, _U2, _U3, _U4, _U5, _U6, _U7, _U8, _U9, _U10>& __u)
- { return __u < __t; }
-
- template<typename _T1, typename _T2, typename _T3, typename _T4, typename _T5,
- typename _T6, typename _T7, typename _T8, typename _T9, typename _T10,
- typename _U1, typename _U2, typename _U3, typename _U4, typename _U5,
- typename _U6, typename _U7, typename _U8, typename _U9, typename _U10>
- bool
- operator<=(const tuple<_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10>& __t,
- const tuple<_U1, _U2, _U3, _U4, _U5, _U6, _U7, _U8, _U9, _U10>& __u)
- { return !(__u < __t); }
-
- template<typename _T1, typename _T2, typename _T3, typename _T4, typename _T5,
- typename _T6, typename _T7, typename _T8, typename _T9, typename _T10,
- typename _U1, typename _U2, typename _U3, typename _U4, typename _U5,
- typename _U6, typename _U7, typename _U8, typename _U9, typename _U10>
- bool
- operator>=(const tuple<_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10>& __t,
- const tuple<_U1, _U2, _U3, _U4, _U5, _U6, _U7, _U8, _U9, _U10>& __u)
- { return !(__t < __u); }
-
- // Helper which adds a reference to a type when given a reference_wrapper
- template<typename _Tp>
- struct __strip_reference_wrapper
- {
- typedef _Tp __type;
- };
-
- template<typename _Tp>
- struct __strip_reference_wrapper<reference_wrapper<_Tp> >
- {
- typedef _Tp& __type;
- };
-
- template<typename _Tp>
- struct __strip_reference_wrapper<const reference_wrapper<_Tp> >
- {
- typedef _Tp& __type;
- };
-
- template<typename _Tp0 = _NullClass, typename _Tp1 = _NullClass,
- typename _Tp2 = _NullClass, typename _Tp3 = _NullClass,
- typename _Tp4 = _NullClass, typename _Tp5 = _NullClass,
- typename _Tp6 = _NullClass, typename _Tp7 = _NullClass,
- typename _Tp8 = _NullClass, typename _Tp9 = _NullClass>
- struct __stripped_tuple_type
- {
- typedef tuple<typename __strip_reference_wrapper<_Tp0>::__type,
- typename __strip_reference_wrapper<_Tp1>::__type,
- typename __strip_reference_wrapper<_Tp2>::__type,
- typename __strip_reference_wrapper<_Tp3>::__type,
- typename __strip_reference_wrapper<_Tp4>::__type,
- typename __strip_reference_wrapper<_Tp5>::__type,
- typename __strip_reference_wrapper<_Tp6>::__type,
- typename __strip_reference_wrapper<_Tp7>::__type,
- typename __strip_reference_wrapper<_Tp8>::__type,
- typename __strip_reference_wrapper<_Tp9>::__type> __type;
- };
-
// A class (and instance) which can be used in 'tie' when an element
// of a tuple is not required
struct swallow_assign
OpenPOWER on IntegriCloud