nds2-client - ClientDeveloper  0.16.8
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members
nds_impl::common::SpanReader Class Reference

#include <span_reader.hh>

Collaboration diagram for nds_impl::common::SpanReader:
Collaboration graph
[legend]

Public Types

typedef nds_impl::common::Span
< char > 
span_type
 

Public Member Functions

 SpanReader (span_type &s)
 
char * write_all (const char *begin, const char *end)
 
char * read_available (char *start, char *end)
 
char * read_exactly (char *start, const char *end)
 
char * peek (char *start, const char *end)
 
template<typename It >
std::vector< char > read_until (It begin_set, It end_set)
 
template<typename It , typename OutIt >
OutIt read_until (It begin_set, It end_set, OutIt dest_start, OutIt dest_end)
 

Private Member Functions

void consume (span_type::size_type count)
 
span_type::size_type remaining ()
 
char * cur_data ()
 

Private Attributes

span_type s_
 
span_type::size_type cur_ = 0
 

Member Typedef Documentation

Constructor & Destructor Documentation

nds_impl::common::SpanReader::SpanReader ( span_type s)
inline

Member Function Documentation

void nds_impl::common::SpanReader::consume ( span_type::size_type  count)
inlineprivate
char* nds_impl::common::SpanReader::cur_data ( )
inlineprivate
char* nds_impl::common::SpanReader::peek ( char *  start,
const char *  end 
)
inline

Return the next data (enough to fill [start, end)). No data will be removed from the internal buffer. The data will still be avaialble in the buffered reader for retreival.

Parameters
startStart of the destination
endByte just past the end of the destination
Returns
end
char* nds_impl::common::SpanReader::read_available ( char *  start,
char *  end 
)
inline

A read the data that is currently available.

Parameters
startStart address of the destination
endAddress of the byte past the last in the destination
Returns
A pointer in [start, end] that is the next location
Note
raises an exception if there is no more data
char* nds_impl::common::SpanReader::read_exactly ( char *  start,
const char *  end 
)
inline

Read exactly enough data to fill the range [start,end)

Parameters
startStart of the destination
endByte just past the end of the destination
Returns
end
template<typename It >
std::vector< char > nds_impl::common::SpanReader::read_until ( It  begin_set,
It  end_set 
)
inline

Read until a value in [begin_set,end_set) is found in the input stream.

Template Parameters
ItAn iterator that dereferences chars
Parameters
begin_setStart of the list of terminators
end_setEnd of the list of terminators
Returns
A std::vector<char> of the data that was read in, including the terminator that was found.

This will retrieve data from the underlying reader as needed

template<typename It , typename OutIt >
OutIt nds_impl::common::SpanReader::read_until ( It  begin_set,
It  end_set,
OutIt  dest_start,
OutIt  dest_end 
)
inline

Read until a value in [begin_set,end_set) is found in the input stream. This will write a bounded amount of data up to [dest_start, dest_end)

Template Parameters
ItAn iterator that dereferences chars
Parameters
begin_setStart of the list of terminators
end_setEnd of the list of terminators
dest_startStart of the destination
dest_endone past the last destination point

This will retrieve data from the underlying reader as needed

span_type::size_type nds_impl::common::SpanReader::remaining ( )
inlineprivate
char* nds_impl::common::SpanReader::write_all ( const char *  begin,
const char *  end 
)
inline

Member Data Documentation

span_type::size_type nds_impl::common::SpanReader::cur_ = 0
private
span_type nds_impl::common::SpanReader::s_
private

The documentation for this class was generated from the following file: