container_ops.hh

Go to the documentation of this file.
00001 // container_ops.hh: this file is part of the Vaucanson project.
00002 //
00003 // Vaucanson, a generic library for finite state machines.
00004 //
00005 // Copyright (C) 2001, 2002, 2003, 2004, 2006 The Vaucanson Group.
00006 //
00007 // This program is free software; you can redistribute it and/or
00008 // modify it under the terms of the GNU General Public License
00009 // as published by the Free Software Foundation; either version 2
00010 // of the License, or (at your option) any later version.
00011 //
00012 // The complete GNU General Public Licence Notice can be found as the
00013 // `COPYING' file in the root directory.
00014 //
00015 // The Vaucanson Group consists of people listed in the `AUTHORS' file.
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 } // vcsn
00107 
00108 
00109 # ifndef VCSN_USE_INTERFACE_ONLY
00110 #  include <vaucanson/misc/container_ops.hxx>
00111 # endif // VCSN_USE_INTERFACE_ONLY
00112 
00113 
00114 #endif // ! VCSN_TOOLS_CONTAINER_OPS_HH

Generated on Sat Jul 29 17:12:58 2006 for Vaucanson by  doxygen 1.4.6