00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef VCSN_TOOLS_CONTAINER_OPS_HXX
00018 # define VCSN_TOOLS_CONTAINER_OPS_HXX
00019
00020 # include <algorithm>
00021
00022 # include <vaucanson/misc/container_ops.hh>
00023 # include <vaucanson/design_pattern/predecls.hh>
00024
00025 namespace vcsn
00026 {
00027
00028 template<typename S, typename T>
00029 typename T::iterator op_begin (const Structure<S>&,
00030 T& v)
00031 {
00032 return v.begin ();
00033 }
00034
00035 template<typename S, typename T>
00036 typename T::iterator op_end (const Structure<S>&,
00037 T& v)
00038 {
00039 return v.end ();
00040 }
00041
00042 template<typename S, typename T>
00043 typename T::const_iterator op_begin_const (const Structure<S>&,
00044 const T& v)
00045 {
00046 return v.begin ();
00047 }
00048
00049 template<typename S, typename T>
00050 typename T::const_iterator op_end_const (const Structure<S>&,
00051 const T& v)
00052 {
00053 return v.end ();
00054 }
00055
00056 template<typename S, typename T>
00057 typename T::reverse_iterator op_rbegin (const Structure<S>&,
00058 T& v)
00059 {
00060 return v.rbegin ();
00061 }
00062
00063 template<typename S, typename T>
00064 typename T::reverse_iterator op_rend (const Structure<S>&,
00065 T& v)
00066 {
00067 return v.rend ();
00068 }
00069
00070 template<typename S, typename T>
00071 typename T::const_reverse_iterator op_rbegin_const (const Structure<S>&,
00072 const T& v)
00073 {
00074 return v.rbegin ();
00075 }
00076
00077 template<typename S, typename T>
00078 typename T::const_reverse_iterator op_rend_const (const Structure<S>&,
00079 const T& v)
00080 {
00081 return v.rend ();
00082 }
00083
00084 template<typename S, typename T>
00085 bool op_empty (const Structure<S>&,
00086 const T& v)
00087 {
00088 return v.empty ();
00089 }
00090
00091 template<typename S, typename T>
00092 size_t op_size (const Structure<S>&,
00093 const T& v)
00094 {
00095 return v.size ();
00096 }
00097
00098 template<typename S, typename T>
00099 size_t op_max_size (const Structure<S>&,
00100 const T& v)
00101 {
00102 return v.max_size ();
00103 }
00104
00105 template<typename S, typename T, typename U>
00106 bool op_contains_e (const Structure<S>&, const T& v,
00107 const U& c)
00108 {
00109 return std::find (v.begin (), v.end (), c) != v.end ();
00110 }
00111
00112 template<typename S, typename T, typename U>
00113 void op_insert (const Structure<S>&, T& v,
00114 const U& c)
00115 {
00116 v.insert (c);
00117 }
00118
00119 template<typename S, typename T>
00120 bool op_is_finite (const Structure<S>&,
00121 const T&)
00122 {
00123 return false;
00124 }
00125
00126 }
00127
00128
00129 #endif // ! VCSN_TOOLS_CONTAINER_OPS_HXX