00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef VCSN_TOOLS_CONTAINER_OPS_HH
00018 # define VCSN_TOOLS_CONTAINER_OPS_HH
00019
00020 # include <algorithm>
00021
00022 # include <vaucanson/design_pattern/predecls.hh>
00023
00033 namespace vcsn
00034 {
00035
00036 template<typename S, typename T>
00037 struct op_begin_traits
00038 {
00039 typedef typename T::iterator ret_t;
00040 typedef typename T::const_iterator const_ret_t;
00041 };
00042
00043 template<typename S, typename T>
00044 struct op_rbegin_traits
00045 {
00046 typedef typename T::reverse_iterator ret_t;
00047 typedef typename T::const_reverse_iterator const_ret_t;
00048 };
00049
00050 template<typename S, typename T>
00051 typename T::iterator op_begin (const Structure<S>& s,
00052 T& v);
00053
00054 template<typename S, typename T>
00055 typename T::iterator op_end (const Structure<S>& s,
00056 T& v);
00057
00058 template<typename S, typename T>
00059 typename T::const_iterator op_begin_const (const Structure<S>& s,
00060 const T& v);
00061
00062 template<typename S, typename T>
00063 typename T::const_iterator op_end_const (const Structure<S>& s,
00064 const T& v);
00065
00066 template<typename S, typename T>
00067 typename T::reverse_iterator op_rbegin (const Structure<S>& s,
00068 T& v);
00069
00070 template<typename S, typename T>
00071 typename T::reverse_iterator op_rend (const Structure<S>& s,
00072 T& v);
00073
00074 template<typename S, typename T>
00075 typename T::const_reverse_iterator op_rbegin_const (const Structure<S>& s,
00076 const T& v);
00077
00078 template<typename S, typename T>
00079 typename T::const_reverse_iterator op_rend_const (const Structure<S>& s,
00080 const T& v);
00081
00082 template<typename S, typename T>
00083 bool op_empty (const Structure<S>& s,
00084 const T& v);
00085
00086 template<typename S, typename T>
00087 size_t op_size (const Structure<S>& s,
00088 const T& v);
00089
00090 template<typename S, typename T>
00091 size_t op_max_size (const Structure<S>& s,
00092 const T& v);
00093
00094 template<typename S, typename T, typename U>
00095 bool op_contains_e (const Structure<S>& s, const T& v,
00096 const U& c);
00097
00098 template<typename S, typename T, typename U>
00099 void op_insert (const Structure<S>& s, T& v,
00100 const U& c);
00101
00102 template<typename S, typename T>
00103 bool op_is_finite (const Structure<S>& s,
00104 const T& a);
00105
00106 }
00107
00108
00109 # if !defined VCSN_USE_INTERFACE_ONLY || defined VCSN_USE_LIB
00110 # include <vaucanson/misc/container_ops.hxx>
00111 # endif // VCSN_USE_INTERFACE_ONLY
00112
00113
00114 #endif // ! VCSN_TOOLS_CONTAINER_OPS_HH