<
classTSeq,
classTOut =
int>
101 template<
classTSeq,
classTVal =
int>
131 bool AtEnd()
const;
161 template<
classTIterator>
168 template<
classTIterator,
classTOut>
170 size_t& bit_offset,
size_tbit_count)
174 constTOut kMask = (1 << bit_count) - 1;
175 static constTOut kMask2 = (1 << kBitsPerElement) - 1;
180}
else if(bit_offset + bit_count <= kBitsPerElement) {
182bit_offset += bit_count;
183 value= (*start >> (kBitsPerElement - bit_offset)) & kMask;
184 if(bit_offset == kBitsPerElement) {
190 value= *start & ((1 << (kBitsPerElement - bit_offset)) - 1);
192 for(bit_offset += bit_count - kBitsPerElement;
193bit_offset >= kBitsPerElement;
194bit_offset -= kBitsPerElement) {
195 value<<= kBitsPerElement;
197 value|= *start & kMask2;
202 value<<= bit_offset;
204 value|= ((*start >> (kBitsPerElement - bit_offset))
205& ((1 << bit_offset) - 1));
213 template<
classTIterator,
classTVal,
classTElement>
215 size_t& bit_offset,
size_tbit_count,
216TElement partial, TVal
data)
218 static const size_tkBitsPerElement =
CHAR_BIT*
sizeof(TElement);
221partial = (TElement)(partial &
222(~(TElement)0) << (kBitsPerElement - bit_offset));
227 if(bit_offset + bit_count <= kBitsPerElement) {
229bit_offset += bit_count;
230partial = (TElement)(partial |
231(
data<< (kBitsPerElement - bit_offset)));
232 if(bit_count == kBitsPerElement) {
233*(start++) = partial;
239*(start++) = (TElement)(partial |
240((
data>> (bit_count + bit_offset - kBitsPerElement))
241& ((1 << (kBitsPerElement - bit_offset)) - 1)) );
242 for(bit_offset += bit_count - kBitsPerElement;
243bit_offset >= kBitsPerElement;
244bit_offset -= kBitsPerElement) {
246*(start++) = (TElement)(
data>> (bit_offset - kBitsPerElement));
250partial = (TElement)(
data<< (kBitsPerElement - bit_offset));
262 template<
classTSeq,
classTOut>
271 for(m_BitOffset += m_NewSize;
272m_BitOffset >= kBitsPerElement && m_RawIterator != m_End;
273m_BitOffset -= kBitsPerElement) {
277m_ValueKnown =
false;
282 template<
classTSeq,
classTOut>
292 template<
classTSeq,
classTOut>
298m_ValueKnown =
true;
299 returnm_Value = ExtractBits<TRawIterator, TOut>
300(m_RawIterator, m_End, m_BitOffset, m_NewSize);
305 template<
classTSeq,
classTOut>
308 size_tavail = 0, goal = m_BitOffset + m_NewSize;
309 for(
TRawIteratorit2 = m_RawIterator; it2 != m_End && avail < goal;
320 template<
classTSeq,
classTVal>
326 for(m_BitOffset += m_NewSize;
327m_BitOffset >= kBitsPerElement && m_RawIterator != m_End;
328m_BitOffset -= kBitsPerElement) {
335 template<
classTSeq,
classTVal>
345 template<
classTSeq,
classTVal>
350 size_t offset= m_BitOffset;
353 tmp= StoreBits<TRawIterator, TVal, TRawValue>
355 if(
offset> 0 && it != m_End) {
361 template<
classTSeq,
classTVal>
366 size_t offset= m_BitOffset;
368 returnExtractBits<TRawIterator, TVal>(it, m_End,
offset, m_NewSize);
372 template<
classTSeq,
classTVal>
375 size_tavail = 0, goal = m_BitOffset + m_NewSize;
376 for(
TRawIteratorit2 = m_RawIterator; it2 != m_End && avail < goal;
Include a standard set of the NCBI C++ Toolkit most basic headers.
CResizingIterator(TSeq &s, size_t new_size)
TElement StoreBits(TIterator &start, const TIterator &end, size_t &bit_offset, size_t bit_count, TElement partial, TVal data)
size_t xx_BitsPerElement(const T *)
TSeq::const_iterator TRawIterator
size_t x_BitsPerElement(const TIterator &)
TOut ExtractBits(TIterator &start, const TIterator &end, size_t &bit_offset, size_t bit_count)
forward_iterator_tag iterator_category
TRawIterator m_RawIterator
TSeq::value_type TRawValue
void operator=(TVal value)
CConstResizingIterator(const TSeq &s, size_t new_size)
CConstResizingIterator(const TRawIterator &it, const TRawIterator &end, size_t new_size)
TRawIterator m_RawIterator
TSeq::value_type TRawValue
CResizingIterator< TSeq, TVal > & operator++()
CResizingIterator(const TRawIterator &start, const TRawIterator &end, size_t new_size)
CConstResizingIterator< TSeq, TOut > & operator++()
input_iterator_tag iterator_category
TSeq::iterator TRawIterator
CResizingIterator< TSeq, TVal > operator*()
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
vector< CSeq_align const * >::const_iterator TIterator
double value_type
The numeric datatype used by the parser.
const GenericPointer< typename T::ValueType > T2 value
void copy(Njn::Matrix< S > *matrix_, const Njn::Matrix< T > &matrix0_)
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4