00001 #ifndef _NA_TRAITS_H 00002 #define _NA_TRAITS_H 00003 00004 #include "bit_char_traits.h" 00015 namespace bioinfo 00016 { 00017 00030 template<size_t NB> 00031 class na_min_traits : public std::char_traits<std::bitset<NB> > { 00032 public: 00033 typedef typename std::char_traits<std::bitset<NB> >::char_type char_type; 00034 typedef typename std::char_traits<char>::char_type basic_char_type; 00035 static std::size_t 00036 bit_size() { 00037 return 2; 00038 } 00039 inline static basic_char_type char_code(char_type); 00040 inline static std::size_t bit_code(basic_char_type); 00041 inline static bool valid_code(basic_char_type); 00042 }; 00043 00044 00055 template<size_t NB> 00056 class na_nmer_overlap : public na_min_traits<NB> { 00057 }; 00058 } 00059 00063 namespace std 00064 { 00066 template <class _CharT, class _Traits, typename _NaTraits, size_t _Nb> 00067 basic_ostream<_CharT, _Traits>& 00068 operator<<(basic_ostream<_CharT, _Traits>&, const basic_string<bitset<_Nb>, _NaTraits>&); 00069 00070 template<class _CharT, class _Traits, class _NaTraits, size_t _Nb> 00071 basic_istream<_CharT, _Traits>& 00072 operator>>(basic_istream<_CharT, _Traits>&, basic_string<bitset<_Nb>, _NaTraits>&); 00073 00075 template<class _CharT, class _Traits, size_t __Nb> 00076 basic_istream<_CharT, _Traits>& 00077 operator>>(basic_istream<_CharT, _Traits>&, basic_string<bitset<__Nb>, bioinfo::na_nmer_overlap<__Nb> >&); 00078 00079 template <class _CharT, class _Traits, size_t _Nb> 00080 basic_ostream<_CharT, _Traits>& 00081 operator<<(basic_ostream<_CharT, _Traits>&, const basic_string<bitset<_Nb>, bioinfo::na_nmer_overlap<_Nb> >&); 00082 00083 template<size_t __Nb> 00084 bool 00085 operator==(const basic_string<bitset<__Nb>, bioinfo::na_nmer_overlap<__Nb> >&, const string&); 00086 } 00087 00088 00089 #include "impl/na_traits.hpp" 00090 #include "impl/na_nmer_overlap_stream.hpp" 00091 00092 #endif // _NA_TRAITS_H