00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 #ifndef _GLIBCXX_REPEAT_HEADER
00036 # define _GLIBCXX_REPEAT_HEADER "tuple_defs.h"
00037 # include "repeat.h"
00038 # undef _GLIBCXX_REPEAT_HEADER
00039 #endif
00040
00041 #ifdef _GLIBCXX_LAST_INCLUDE
00042
00043 template<_GLIBCXX_TEMPLATE_PARAMS_NULL_CLASS> class tuple;
00044
00045
00046
00047 template<int __i, _GLIBCXX_TEMPLATE_PARAMS>
00048 typename __add_ref<typename tuple_element<__i, tuple<_GLIBCXX_TEMPLATE_ARGS> >::type>::type
00049 get(tuple<_GLIBCXX_TEMPLATE_ARGS>& __t)
00050 {
00051 return __get_helper<__i, tuple<_GLIBCXX_TEMPLATE_ARGS> >::get_value(__t);
00052 }
00053
00054 template<int __i, _GLIBCXX_TEMPLATE_PARAMS>
00055 typename __add_c_ref<typename tuple_element<__i, tuple<_GLIBCXX_TEMPLATE_ARGS> >::type>::type
00056 get(const tuple<_GLIBCXX_TEMPLATE_ARGS>& __t)
00057 {
00058 return __get_helper<__i, tuple<_GLIBCXX_TEMPLATE_ARGS> >::get_value(__t);
00059 }
00060
00061 template<_GLIBCXX_TEMPLATE_PARAMS, _GLIBCXX_TEMPLATE_PARAMS_U>
00062 bool
00063 operator==(const tuple<_GLIBCXX_TEMPLATE_ARGS>& __t,
00064 const tuple<_GLIBCXX_TEMPLATE_ARGS_U>& __u)
00065 {
00066 typedef tuple<_GLIBCXX_TEMPLATE_ARGS> _Tp;
00067 typedef tuple<_GLIBCXX_TEMPLATE_ARGS_U> _Up;
00068 return __tuple_compare<tuple_size<_Tp>::value - tuple_size<_Tp>::value, 0,
00069 tuple_size<_Tp>::value, _Tp, _Up>::__eq(__t, __u);
00070 }
00071
00072 template<_GLIBCXX_TEMPLATE_PARAMS, _GLIBCXX_TEMPLATE_PARAMS_U>
00073 bool
00074 operator<(const tuple<_GLIBCXX_TEMPLATE_ARGS>& __t,
00075 const tuple<_GLIBCXX_TEMPLATE_ARGS_U>& __u)
00076 {
00077 typedef tuple<_GLIBCXX_TEMPLATE_ARGS> _Tp;
00078 typedef tuple<_GLIBCXX_TEMPLATE_ARGS_U> _Up;
00079 return __tuple_compare<tuple_size<_Tp>::value - tuple_size<_Tp>::value, 0,
00080 tuple_size<_Tp>::value, _Tp, _Up>::__less(__t, __u);
00081 }
00082
00083 template<_GLIBCXX_TEMPLATE_PARAMS, _GLIBCXX_TEMPLATE_PARAMS_U>
00084 bool
00085 operator!=(const tuple<_GLIBCXX_TEMPLATE_ARGS>& __t,
00086 const tuple<_GLIBCXX_TEMPLATE_ARGS_U>& __u)
00087 { return !(__t == __u); }
00088
00089 template<_GLIBCXX_TEMPLATE_PARAMS, _GLIBCXX_TEMPLATE_PARAMS_U>
00090 bool
00091 operator>(const tuple<_GLIBCXX_TEMPLATE_ARGS>& __t,
00092 const tuple<_GLIBCXX_TEMPLATE_ARGS_U>& __u)
00093 { return __u < __t; }
00094
00095 template<_GLIBCXX_TEMPLATE_PARAMS, _GLIBCXX_TEMPLATE_PARAMS_U>
00096 bool
00097 operator<=(const tuple<_GLIBCXX_TEMPLATE_ARGS>& __t,
00098 const tuple<_GLIBCXX_TEMPLATE_ARGS_U>& __u)
00099 { return !(__u < __t); }
00100
00101 template<_GLIBCXX_TEMPLATE_PARAMS, _GLIBCXX_TEMPLATE_PARAMS_U>
00102 bool
00103 operator>=(const tuple<_GLIBCXX_TEMPLATE_ARGS>& __t,
00104 const tuple<_GLIBCXX_TEMPLATE_ARGS_U>& __u)
00105 { return !(__t < __u); }
00106
00107 template<_GLIBCXX_TEMPLATE_PARAMS_NULL_CLASS>
00108 struct __stripped_tuple_type
00109 {
00110 typedef tuple<_GLIBCXX_TEMPLATE_ARGS_STRIPPED> __type;
00111 };
00112
00113 #endif
00114