24 #ifndef __ALIGNSTREAM_H__ 25 #define __ALIGNSTREAM_H__ 29 #include <type_traits> 60 template <
typename T >
65 static_assert( std::is_same< std::pair<std::string,std::string >, T>::value ||
66 std::is_base_of< Sequence::Seq, T>::value ,
67 "T must be std::pair<std::string,std::string> or derived from Sequence::Seq");
73 std::vector < T >data;
81 typedef typename std::vector<T>::size_type size_type;
82 typedef typename std::vector<T>::reference reference;
83 typedef typename std::vector<T>::const_reference const_reference;
120 typedef typename std::vector<T>::iterator
iterator;
127 const_iterator begin()
const;
128 const_iterator end()
const;
129 bool IsAlignment (
void);
131 unsigned UnGappedLength (
void);
132 void RemoveGaps (
void);
133 void RemoveTerminalGaps (
void);
134 std::vector < T >Trim ( std::vector < int >sites);
135 std::vector < T >TrimComplement ( std::vector < int >sites);
136 const std::vector< T > Data(
void);
140 virtual std::istream &
read (std::istream & s) = 0;
144 virtual std::ostream &
print (std::ostream & s)
const = 0;
155 void assign(const_iterator beg,const_iterator end);
162 void assign( std::vector<T> && _data);
166 template <
typename T >
178 template <
typename T >
179 std::ostream & operator<< (std::ostream & s,const AlignStream < T > &c)
191 #include <Sequence/bits/AlignStream.tcc> class Sequence::Seq, an abstract base class for Sequences
std::vector< T >::const_iterator const_iterator
virtual std::istream & read(std::istream &s)=0
Virtual interface to alignment streams.
The namespace in which this library resides.
Declaration of namespace Sequence::Alignment.
virtual std::ostream & print(std::ostream &s) const =0
size_type size(void) const
std::istream & operator>>(std::istream &s, AlignStream< T > &c)
const_reference operator[](const size_type &i) const
reference operator[](const size_type &i)
void assign(const_iterator beg, const_iterator end)
std::vector< T >::iterator iterator