couple_letter.hh

00001 // couple_letter.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, 2005, 2006, 2008 The Vaucanson
00006 // Group.
00007 //
00008 // This program is free software; you can redistribute it and/or
00009 // modify it under the terms of the GNU General Public License
00010 // as published by the Free Software Foundation; either version 2
00011 // of the License, or (at your option) any later version.
00012 //
00013 // The complete GNU General Public Licence Notice can be found as the
00014 // `COPYING' file in the root directory.
00015 //
00016 // The Vaucanson Group consists of people listed in the `AUTHORS' file.
00017 //
00018 #ifndef VCSN_ALGEBRA_IMPLEMENTATION_LETTER_COUPLE_LETTER_HH
00019 # define VCSN_ALGEBRA_IMPLEMENTATION_LETTER_COUPLE_LETTER_HH
00020 
00021 # include <climits>
00022 # include <string>
00023 # include <iostream>
00024 
00025 # include <vaucanson/algebra/concept/letter.hh>
00026 # include <vaucanson/algebra/concept/freemonoid_base.hh>
00027 
00028 // Needed to get defaults for projections.
00029 # include <vaucanson/algebra/implementation/letter/char_letter.hh>
00030 # include <vaucanson/algebra/implementation/letter/int_letter.hh>
00031 
00032 // Here are functions to manipulate pairs.
00033 
00034 namespace vcsn
00035 {
00036 
00037   namespace algebra
00038   {
00039 
00040     // Specialization for pairs.
00041     template <typename U, typename V>
00042     struct letter_traits<std::pair<U, V> >;
00043 
00044     // Specialization for pairs.
00045     template <typename S, typename U, typename V, typename CharContainer>
00046     bool op_parse(const algebra::FreeMonoidBase<S>& set,
00047                   std::basic_string<std::pair<U, V> >& v,
00048                   const std::string& s,
00049                   typename std::string::const_iterator& i,
00050                   const CharContainer& escaped);
00051   } // ! algebra
00052 
00053 } // ! vcsn
00054 
00055 namespace std {
00056 
00061   template <typename U, typename V>
00062   std::ostream& operator<< (std::ostream& o, std::pair<U, V> p);
00063 
00065   template <typename U, typename V, class Traits, class Allocator>
00066   std::ostream&
00067   operator<< (std::ostream& o,
00068               std::basic_string<std::pair<U, V>, Traits, Allocator> s);
00069 
00071   template <typename U, typename V>
00072   std::istream& operator>> (std::istream& i, std::pair<U, V>& p);
00073 
00074 } // ! std
00075 
00076 # if !defined VCSN_USE_INTERFACE_ONLY || defined VCSN_USE_LIB
00077 #  include <vaucanson/algebra/implementation/letter/couple_letter.hxx>
00078 # endif // ! VCSN_USE_INTERFACE_ONLY
00079 
00080 #endif // ! VCSN_ALGEBRA_IMPLEMENTATION_LETTER_COUPLE_LETTER_HH

Generated on Thu Oct 9 20:22:34 2008 for Vaucanson by  doxygen 1.5.1