Home / Open source / Terimber 2.0
byte_source Class Referencebase that does all the work except getting bytes from stream
More...
#include <storexml.h>
List of all members.
|
Public Member Functions |
| byte_source (mem_pool_t &small_pool, mem_pool_t &big_pool, size_t xml_size, const char *url, bool subset) |
| constructor
|
virtual | ~byte_source () |
| destructor
|
xml_forceinline ub1_t | pick () |
| picks byte
|
xml_forceinline ub1_t | pop () |
| pops byte operator++(int)
|
xml_forceinline ub1_t | pip () |
| pips byte operator++()
|
xml_forceinline void | skip_white_space (bool mustPresent=false, const char *message=0) |
| skips junk chars defined by is_white_space() function if not then throw exception with specified message
|
void | throw_exception (const char *msg_text) |
| throws exception adding line and char postion information
|
void | skip_string (const char *x, const char *message) |
| skips string if not, then throws exception with specified message
|
void | skip_sign (ub1_t symbol, bool skip_before, bool skip_after, const char *message) |
| skips one byte if not, then throws exception with specified message
|
ub1_t | skip_quote (ub1_t symbol=0) |
| skips quote symbol it can be single quote or double quote if input parameter = 0 then function detects the type of quote and returns the detected quote symbol if input parameter = quote symbol function skip the specified quote symbol in case of problems function throws exception
|
size_t | current_pos () const |
| returns current char position
|
void | push (const ub1_t *x, size_t len) |
| inserts into head of sequence
|
void | push (ub1_t x) |
| pushes byte back to buffer head
|
size_t | pull (ub1_t *x, size_t len) |
| pulls block of bytes from stream
|
encodingSchema | get_encoding () const |
| returns detected encoding schema
|
void | set_encoding (encodingSchema schema) |
| sets encoding
|
const char * | get_location () const |
| gets stream location
|
size_t | get_standalone () const |
| gets standalone flag
|
bool | get_subset () const |
| gets subset flag
|
size_t | get_version () const |
| gets version
|
size_t | get_xml_size () const |
| xml size
|
Protected Member Functions |
virtual bool | data_request (ub1_t *buf, size_t &len)=0 |
| pure virtual function getting bytes from stream
|
encodingSchema | parseXMLDecl () |
| parses xml declaration [23] XMLDecl ::= '<?xml' VersionInfo EncodingDecl? SDDecl? S? '?>'
|
encodingSchema | parseTextDecl () |
| parses text declaration [77] TextDecl ::= '<?xml' VersionInfo? EncodingDecl S? '?>'
|
size_t | get_buffer_pos () const |
| gets buffer position
|
void | reset_buffer () |
| resets internal buffer
|
Protected Attributes |
byte_allocator * | _depot_allocator |
| depot allocator
|
byte_allocator * | _convert_allocator |
| conversion allocator
|
byte_allocator * | _store_allocator |
| temporary store allocator
|
byte_allocator * | _list_allocator |
| store buffers allocator
|
mem_pool_t & | _small_pool |
| small memory pool
|
mem_pool_t & | _big_pool |
| big memory pool
|
const size_t | _xml_size |
| xml size
|
string_t | _url |
| the location of xml stream
|
Private Member Functions |
bool | convert_chars (size_t count) |
| converts count bytes from stream to internal buffer
|
bool | taste_buffer () |
| checks the encoding
|
bool | auto_convert () |
| does auto conversion
|
ub1_t | go_shopping () |
| gets bytes from stream
|
bool | parseXMLDeclInfo () |
| parses xml declaration info
|
void | parseVersion () |
| parses version
|
encodingSchema | parseEncoding () |
| parses encoding
|
size_t | parseStandalone () |
| parses standalone info
|
encodingSchema | checkEncodingSchema (const char *schema) |
| validates the specified schema
|
void | scanQuotedValue (ub1_t *value, size_t len, bool(*fn)(ub1_t), const char *message) |
| scans the quoted value to make sure it is valid
|
Private Attributes |
bool | _subset |
| subset flag
|
ub1_t * | _buffer |
| current buffer
|
ub1_t * | _convert_buffer |
| convert buffer
|
size_t | _buffer_pos |
| current buffer position
|
ub1_t | _symbol |
| current symbol
|
store_list_t | _active_store |
| store buffers in use
|
store_list_t | _used_store |
| store buffers for reusing
|
size_t | _line_counter |
| line number
|
size_t | _char_counter |
| char position (for multibyte chars)
|
size_t | _pos_counter |
| byte position
|
encodingSchema | _encodingSchema |
| encoding schema
|
size_t | _version |
| version
|
size_t | _standalone |
| standalone flag
|
bool | _end |
| end of stream flag
|
Detailed Description
base that does all the work except getting bytes from stream
Definition at line 45 of file storexml.h.
Constructor & Destructor Documentation
byte_source::byte_source |
( |
mem_pool_t & |
small_pool, |
|
|
mem_pool_t & |
big_pool, |
|
|
size_t |
xml_size, |
|
|
const char * |
url, |
|
|
bool |
subset | |
|
) |
| | |
constructor
- Parameters:
-
small_pool |
small memory pool |
big_pool |
big memory pool |
xml_size |
xml size - just a tip |
url |
optional location |
subset |
subset flag |
Definition at line 46 of file storexml.cpp.
References _big_pool, _buffer, _convert_allocator, _convert_buffer, _depot_allocator, _list_allocator, _small_pool, _store_allocator, _xml_size, byte_allocator::allocate(), pool< C >::loan_object(), and os_def_size.
byte_source::~byte_source |
( |
|
) |
[virtual] |
Member Function Documentation
xml_forceinline ub1_t byte_source::pick |
( |
|
) |
|
picks byte
Definition at line 67 of file storexml.hpp.
References _buffer_pos, _symbol, _xml_size, and go_shopping().
Referenced by parseTextDecl(), parseXMLDecl(), byte_manager::pick(), pip(), scanQuotedValue(), skip_quote(), skip_string(), and skip_white_space().
xml_forceinline ub1_t byte_source::pop |
( |
|
) |
|
pops byte operator++(int)
Definition at line 75 of file storexml.hpp.
References _buffer, _buffer_pos, _char_counter, _line_counter, _pos_counter, _symbol, _xml_size, ch_cr, ch_lf, and go_shopping().
Referenced by parseTextDecl(), parseXMLDecl(), pip(), byte_manager::pop(), scanQuotedValue(), skip_quote(), skip_string(), and skip_white_space().
xml_forceinline ub1_t byte_source::pip |
( |
|
) |
|
xml_forceinline void byte_source::skip_white_space |
( |
bool |
mustPresent = false , |
|
|
const char * |
message = 0 | |
|
) |
| | |
void byte_source::throw_exception |
( |
const char * |
msg_text |
) |
|
throws exception adding line and char postion information
- Parameters:
-
Definition at line 116 of file storexml.cpp.
References _char_counter, _line_counter, exception::_throw(), base_string< T >::append(), str_template::strlen(), and str_template::strprint().
Referenced by convert_chars(), parseEncoding(), byte_manager::parseName(), parseStandalone(), parseTextDecl(), parseVersion(), parseXMLDecl(), parseXMLDeclInfo(), push(), scanQuotedValue(), skip_quote(), skip_sign(), skip_string(), skip_white_space(), taste_buffer(), and byte_manager::throw_exception().
void byte_source::skip_string |
( |
const char * |
x, |
|
|
const char * |
message | |
|
) |
| | |
void byte_source::skip_sign |
( |
ub1_t |
symbol, |
|
|
bool |
skip_before, |
|
|
bool |
skip_after, |
|
|
const char * |
message | |
|
) |
| | |
ub1_t byte_source::skip_quote |
( |
ub1_t |
symbol = 0 |
) |
|
xml_forceinline size_t byte_source::current_pos |
( |
|
) |
const [inline] |
void byte_source::push |
( |
const ub1_t * |
x, |
|
|
size_t |
len | |
|
) |
| | |
inserts into head of sequence
- Parameters:
-
x |
buffer |
len |
buffer length |
Definition at line 134 of file storexml.cpp.
References _active_store, _buffer, _buffer_pos, _list_allocator, _pos_counter, _store_allocator, _symbol, _used_store, _xml_size, byte_allocator::allocate(), base_list< T >::empty(), base_list< T >::front(), _list< T, A >::pop_front(), _list< T, A >::push_front(), and throw_exception().
Referenced by push(), and byte_manager::push().
xml_forceinline void byte_source::push |
( |
ub1_t |
x |
) |
[inline] |
pushes byte back to buffer head
- Parameters:
-
Definition at line 136 of file storexml.hpp.
References push().
size_t byte_source::pull |
( |
ub1_t * |
x, |
|
|
size_t |
len | |
|
) |
| | |
const char * byte_source::get_location |
( |
|
) |
const [inline] |
virtual bool byte_source::data_request |
( |
ub1_t * |
buf, |
|
|
size_t & |
len | |
|
) |
| | [protected, pure virtual] |
parses xml declaration [23] XMLDecl ::= '<?xml' VersionInfo EncodingDecl? SDDecl? S? '?>'
Definition at line 841 of file storexml.cpp.
References _encodingSchema, _standalone, _version, AUTO, ch_close_angle, ch_e, ch_question, ch_s, ch_v, parseEncoding(), parseStandalone(), parseVersion(), pick(), pop(), skip_white_space(), and throw_exception().
Referenced by parseXMLDeclInfo().
parses text declaration [77] TextDecl ::= '<?xml' VersionInfo? EncodingDecl S? '?>'
Definition at line 891 of file storexml.cpp.
References _encodingSchema, _version, ch_close_angle, ch_e, ch_question, ch_v, parseEncoding(), parseVersion(), pick(), pop(), skip_white_space(), and throw_exception().
Referenced by parseXMLDeclInfo().
bool byte_source::convert_chars |
( |
size_t |
count |
) |
[private] |
converts count bytes from stream to internal buffer
Definition at line 532 of file storexml.cpp.
References _buffer, _buffer_pos, _convert_buffer, _encodingSchema, _symbol, _xml_size, base_string< T >::append(), data_request(), fixedN_to_utf8(), isoN_to_utf8(), throw_exception(), UCS_4B, UCS_4BS, UCS_4L, UCS_4LS, US_ASCII, utf8_to_utf8(), UTF_16B, UTF_16L, UTF_8, UTF_ISO88591, WINDOWS_1251, and windowsN_to_utf8().
Referenced by auto_convert(), parseXMLDeclInfo(), and taste_buffer().
bool byte_source::taste_buffer |
( |
|
) |
[private] |
checks the encoding
Definition at line 251 of file storexml.cpp.
References _buffer, _buffer_pos, _convert_buffer, _encodingSchema, _symbol, convert_chars(), data_request(), fixedN_to_utf8(), parseXMLDeclInfo(), throw_exception(), UCS4BBOM, UCS4BPre, UCS4LBOM, UCS4LPre, UCS_4B, UCS_4L, UTF16BBOM, UTF16BPre, UTF16LBOM, UTF16LPre, utf8_to_utf8(), UTF8BOM, UTF8Pre, UTF_16B, UTF_16L, and UTF_8.
Referenced by go_shopping().
bool byte_source::auto_convert |
( |
|
) |
[private] |
ub1_t byte_source::go_shopping |
( |
|
) |
[private] |
gets bytes from stream
Definition at line 202 of file storexml.cpp.
References _active_store, _buffer, _buffer_pos, _encodingSchema, _end, _list_allocator, _symbol, _used_store, _xml_size, AUTO, auto_convert(), base_list< T >::empty(), base_list< T >::front(), _list< T, A >::pop_front(), _list< T, A >::push_front(), and taste_buffer().
Referenced by pick(), pop(), and pull().
bool byte_source::parseXMLDeclInfo |
( |
|
) |
[private] |
parses xml declaration info
Definition at line 468 of file storexml.cpp.
References _big_pool, _buffer, _buffer_pos, _encodingSchema, _small_pool, _standalone, _subset, _version, _xml_size, AUTO, auto_convert(), ch_close_angle, ch_question, convert_chars(), get_encoding(), get_standalone(), get_version(), parseTextDecl(), parseXMLDecl(), set_encoding(), throw_exception(), UCS_4, UCS_4B, UCS_4BS, UCS_4L, UCS_4LS, UTF_16, UTF_16B, UTF_16L, and UTF_8.
Referenced by taste_buffer().
void byte_source::parseVersion |
( |
|
) |
[private] |
parses version
Definition at line 782 of file storexml.cpp.
References _convert_buffer, _version, ch_equal, is_versionnum_char(), os_minus_one, scanQuotedValue(), skip_sign(), skip_string(), str_version, str_template::strnocasecmp(), throw_exception(), and xml_decl_max_len.
Referenced by parseTextDecl(), and parseXMLDecl().
parses encoding
Definition at line 800 of file storexml.cpp.
References _convert_buffer, ch_equal, checkEncodingSchema(), is_encname_char(), is_letter(), scanQuotedValue(), skip_sign(), skip_string(), str_encoding, throw_exception(), and xml_decl_max_len.
Referenced by parseTextDecl(), and parseXMLDecl().
size_t byte_source::parseStandalone |
( |
|
) |
[private] |
parses standalone info
Definition at line 820 of file storexml.cpp.
References _convert_buffer, ch_equal, os_minus_one, scanQuotedValue(), skip_sign(), skip_string(), str_no, str_standalone, str_yes, str_template::strcmp(), throw_exception(), and xml_decl_max_len.
Referenced by parseXMLDecl().
encodingSchema byte_source::checkEncodingSchema |
( |
const char * |
schema |
) |
[private] |
validates the specified schema
- Parameters:
-
Definition at line 949 of file storexml.cpp.
References AUTO, os_minus_one, str_template::strnocasecmp(), UCS_4, UCS_4B, UCS_4L, US_ASCII, UTF_16, UTF_16B, UTF_16L, UTF_8, UTF_ISO88591, and WINDOWS_1251.
Referenced by parseEncoding().
void byte_source::scanQuotedValue |
( |
ub1_t * |
value, |
|
|
size_t |
len, |
|
|
bool(*)(ub1_t) |
fn, |
|
|
const char * |
message | |
|
) |
| | [private] |
BEGIN_TERIMBER_NAMESPACE size_t byte_source::get_standalone |
( |
|
) |
const [inline] |
bool byte_source::get_subset |
( |
|
) |
const [inline] |
size_t byte_source::get_version |
( |
|
) |
const [inline] |
size_t byte_source::get_xml_size |
( |
|
) |
const [inline] |
size_t byte_source::get_buffer_pos |
( |
|
) |
const [inline, protected] |
void byte_source::reset_buffer |
( |
|
) |
[protected] |
resets internal buffer
Definition at line 97 of file storexml.cpp.
References _active_store, _buffer_pos, _char_counter, _encodingSchema, _end, _line_counter, _list_allocator, _pos_counter, _standalone, _store_allocator, _symbol, _used_store, _version, _xml_size, AUTO, base_list< T >::clear(), os_minus_one, and byte_allocator::reset().
Member Data Documentation
xml size
Definition at line 223 of file storexml.h.
Referenced by auto_convert(), byte_source(), convert_chars(), get_xml_size(), go_shopping(), parseXMLDeclInfo(), pick(), pop(), pull(), push(), reset_buffer(), and ~byte_source().
The documentation for this class was generated from the following files:
|
|