00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 #ifndef VCSN_ALGEBRA_IMPLEMENTATION_FREE_MONOID_STR_WORDS_HH
00018 # define VCSN_ALGEBRA_IMPLEMENTATION_FREE_MONOID_STR_WORDS_HH
00019 
00020 # include <string>
00021 # include <vaucanson/algebra/implementation/free_monoid/words.hh>
00022 # include <vaucanson/algebra/implementation/alphabets/alphabet_set.hh>
00023 
00024 namespace vcsn {
00025 
00026   namespace algebra {
00027 
00028     
00029 
00030 
00031 
00032     template <typename A>
00033     void
00034     op_in_mul(const algebra::FreeMonoid<A>& s,
00035               std::basic_string<typename A::letter_t>& dst,
00036               const std::basic_string<typename A::letter_t>& src);
00037 
00038     template<typename A>
00039     std::basic_string<typename A::letter_t>
00040     op_mul(const algebra::FreeMonoid<A>& s,
00041            const std::basic_string<typename A::letter_t>& a,
00042            const std::basic_string<typename A::letter_t>& b);
00043 
00044     template<typename A>
00045     const std::basic_string<typename A::letter_t>&
00046     identity_value(SELECTOR(algebra::FreeMonoid<A>),
00047                    SELECTOR(std::basic_string<typename A::letter_t>));
00048 
00049     
00050     template<typename A>
00051     std::basic_string<typename A::letter_t>
00052     op_convert(SELECTOR(algebra::FreeMonoid<A>),
00053                SELECTOR(std::basic_string<typename A::letter_t>),
00054                const typename A::letter_t& c);
00055 
00056     
00057     template<typename A>
00058     std::basic_string<typename A::letter_t>
00059     op_convert(SELECTOR(algebra::FreeMonoid<A>),
00060                SELECTOR(std::basic_string<typename A::letter_t>),
00061                const std::string& c);
00062 
00063     
00064     template<typename A>
00065     std::basic_string<typename A::letter_t>
00066     op_convert(SELECTOR(algebra::FreeMonoid<A>),
00067                SELECTOR(std::basic_string<typename A::letter_t>),
00068                const char* c);
00069   } 
00070 
00071 } 
00072 
00073 
00074 # if !defined VCSN_USE_INTERFACE_ONLY || defined VCSN_USE_LIB
00075 #  include <vaucanson/algebra/implementation/free_monoid/str_words.hxx>
00076 # endif // VCSN_USE_INTERFACE_ONLY
00077 
00078 
00079 #endif // ! VCSN_ALGEBRA_IMPLEMENTATION_FREE_MONOID_STR_WORDS_HH