00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 #ifndef VCSN_MISC_SPECIAL_CHAR_TRAITS_HH
00018 # define VCSN_MISC_SPECIAL_CHAR_TRAITS_HH
00019 
00037 # include <vaucanson/misc/char_traits.hh>
00038 
00039 # define VCSN_USE_GENERIC_CHAR_TRAITS_FOR(Type)                         \
00040   template <>                                                           \
00041   struct char_traits<Type> : public ::vcsn::misc::char_traits<Type> { }
00042 
00043 namespace std
00044 {
00045   
00046   VCSN_USE_GENERIC_CHAR_TRAITS_FOR (int);
00047   VCSN_USE_GENERIC_CHAR_TRAITS_FOR (long int);
00048   VCSN_USE_GENERIC_CHAR_TRAITS_FOR (unsigned int);
00049   VCSN_USE_GENERIC_CHAR_TRAITS_FOR (unsigned long int);
00050   VCSN_USE_GENERIC_CHAR_TRAITS_FOR (float);
00051   VCSN_USE_GENERIC_CHAR_TRAITS_FOR (double);
00052   VCSN_USE_GENERIC_CHAR_TRAITS_FOR (long double);
00053 
00054   
00055   template <class T>
00056   struct char_traits<T*> : public ::vcsn::misc::char_traits<T*> { };
00057 
00058   
00059   template <class U, class V>
00060   struct char_traits< pair<U, V> > :
00061       public ::vcsn::misc::char_traits< pair<U, V> >
00062   {
00063   };
00064 } 
00065 
00066 #endif // ! VCSN_MISC_SPECIAL_CHAR_TRAITS_HH