inlib
1.2.0
|
Public Member Functions | |
virtual bool | write (uchar a_x) |
virtual bool | write (char a_x) |
virtual bool | write (uint16 a_x) |
virtual bool | write (int16 a_x) |
virtual bool | write (uint32 a_x) |
virtual bool | write (int32 a_x) |
virtual bool | write (uint64 a_x) |
virtual bool | write (int64 a_x) |
virtual bool | write (float a_x) |
virtual bool | write (double a_x) |
virtual bool | write (bool a_v) |
virtual bool | write_cstr (const char *a_cstr) |
virtual bool | write_vec (uint32 a_n, const uchar *a_x) |
virtual bool | write_vec (uint32 a_n, const char *a_x) |
virtual bool | write_vec (uint32 a_n, const uint16 *a_x) |
virtual bool | write_vec (uint32 a_n, const int16 *a_x) |
virtual bool | write_vec (uint32 a_n, const uint32 *a_x) |
virtual bool | write_vec (uint32 a_n, const int32 *a_x) |
virtual bool | write_vec (uint32 a_n, const uint64 *a_x) |
virtual bool | write_vec (uint32 a_n, const int64 *a_x) |
virtual bool | write_vec (uint32 a_n, const float *a_x) |
virtual bool | write_vec (uint32 a_n, const double *a_x) |
virtual bool | write_vec (uint32 a_n, const bool *a_x) |
virtual bool | write_vec (const std::vector< std::string > &a_v) |
virtual bool | write_std_vec_vec (const std_vec_vec_uint_t &a_vv) |
virtual bool | write_std_vec_vec (const std_vec_vec_float_t &a_vv) |
virtual bool | write_std_vec_vec (const std_vec_vec_string_t &a_vv) |
virtual const char * | buf () const |
virtual uint32 | length () const |
xwbuf (std::ostream &a_out, uint32 a_size=1014) | |
virtual | ~xwbuf () |
bool | write_verbatim (const char *a_cstr) |
void | reset_pos () |
Protected Member Functions | |
xwbuf (const xwbuf &a_from) | |
xwbuf & | operator= (const xwbuf &) |
bool | _write_cstr (const char *a_cstr) |
bool | _write_xml_cstr (const char *a_cstr) |
template<class ta_type > | |
bool | _write (ta_type a_v, const char *a_format) |
template<class ta_type > | |
bool | _write_array (uint32 a_n, const ta_type *a_a) |
template<class T > | |
bool | _write_std_vec_vec (const std::vector< std::vector< T > > &a_vv) |
bool | expand (uint32 a_new_size) |
Static Protected Member Functions | |
static int | MAX_SPRINTF_SIZE () |
static const std::string & | write_format (uchar) |
static const std::string & | write_format (char) |
static const std::string & | write_format (uint16) |
static const std::string & | write_format (int16) |
static const std::string & | write_format (uint32) |
static const std::string & | write_format (int32) |
static const std::string & | write_format (uint64) |
static const std::string & | write_format (int64) |
static const std::string & | write_format (float) |
static const std::string & | write_format (double) |
Protected Attributes | |
std::ostream & | m_out |
uint32 | m_size |
char * | m_buffer |
char * | m_max |
char * | m_pos |
inlib::io::xwbuf::xwbuf | ( | std::ostream & | a_out, |
uint32 | a_size = 1014 |
||
) | [inline] |
virtual inlib::io::xwbuf::~xwbuf | ( | ) | [inline, virtual] |
inlib::io::xwbuf::xwbuf | ( | const xwbuf & | a_from | ) | [inline, protected] |
bool inlib::io::xwbuf::_write | ( | ta_type | a_v, |
const char * | a_format | ||
) | [inline, protected] |
Definition at line 299 of file xwbuf.
{ if((m_pos+MAX_SPRINTF_SIZE())>m_max) { if(!expand(inlib::mx<uint32>(2*m_size,m_size+MAX_SPRINTF_SIZE()))) return false; } if(!m_buffer) return false; #ifdef WIN32 int sz = _snprintf(m_pos,MAX_SPRINTF_SIZE(),a_format,a_v); #else int sz = ::snprintf(m_pos,MAX_SPRINTF_SIZE(),a_format,a_v); #endif if(sz>(MAX_SPRINTF_SIZE()-1)) return false; m_pos += sz; return true; }
bool inlib::io::xwbuf::_write_array | ( | uint32 | a_n, |
const ta_type * | a_a | ||
) | [inline, protected] |
Definition at line 316 of file xwbuf.
{ if(!_write_cstr("<array>")) return false; for(uint32 i=0;i<a_n;i++) { if(i) {if(!_write_cstr(" ")) return false;} if(!_write<ta_type>(a_a[i],write_format(a_a[i]).c_str())) return false; } if(!_write_cstr("</array>")) return false; return true; }
bool inlib::io::xwbuf::_write_cstr | ( | const char * | a_cstr | ) | [inline, protected] |
bool inlib::io::xwbuf::_write_std_vec_vec | ( | const std::vector< std::vector< T > > & | a_vv | ) | [inline, protected] |
Definition at line 329 of file xwbuf.
{ // <num> <num> <num>\n<num> <num> <num>\n...\n<num> <num> if(!_write_cstr("<array>")) return false; typedef typename std::vector<T> vec_t; typedef typename std::vector<vec_t>::const_iterator cit_t; for(cit_t it=a_vv.begin();it!=a_vv.end();++it) { if(it!=a_vv.begin()) {if(!_write_cstr("\\n")) return false;} typedef typename std::vector<T>::const_iterator cit2_t; for(cit2_t it2=(*it).begin();it2!=(*it).end();++it2) { if(it2!=(*it).begin()) {if(!_write_cstr(" ")) return false;} if(!_write<T>(*it2,write_format(*it2).c_str())) return false; } } if(!_write_cstr("</array>")) return false; return true; }
bool inlib::io::xwbuf::_write_xml_cstr | ( | const char * | a_cstr | ) | [inline, protected] |
Definition at line 247 of file xwbuf.
{ size_t sz = ::strlen(a_cstr); if((m_pos+sz)>m_max) if(!expand(inlib::mx<uint32>(2*m_size,m_size+sz))) return false; if(!m_buffer) return false; char* pos = (char*)a_cstr; while(true){ char c = *pos;pos++; if(c=='\0') { break; } else if(c=='<') { *m_pos = '&';m_pos++; *m_pos = 'l';m_pos++; *m_pos = 't';m_pos++; *m_pos = ';';m_pos++; } else if(c=='>') { *m_pos = '&';m_pos++; *m_pos = 'g';m_pos++; *m_pos = 't';m_pos++; *m_pos = ';';m_pos++; } else if(c=='&') { *m_pos = '&';m_pos++; *m_pos = 'a';m_pos++; *m_pos = 'm';m_pos++; *m_pos = 'p';m_pos++; *m_pos = ';';m_pos++; } else if(c=='"') { *m_pos = '&';m_pos++; *m_pos = 'q';m_pos++; *m_pos = 'u';m_pos++; *m_pos = 'o';m_pos++; *m_pos = 't';m_pos++; *m_pos = ';';m_pos++; } else if(c=='\'') { *m_pos = '&';m_pos++; *m_pos = 'a';m_pos++; *m_pos = 'p';m_pos++; *m_pos = 'o';m_pos++; *m_pos = 's';m_pos++; *m_pos = ';';m_pos++; } else { *m_pos = c;m_pos++; } } return true; }
virtual const char* inlib::io::xwbuf::buf | ( | ) | const [inline, virtual] |
bool inlib::io::xwbuf::expand | ( | uint32 | a_new_size | ) | [inline, protected] |
Definition at line 393 of file xwbuf.
{ unsigned long len = m_pos-m_buffer; if(!realloc<char>(m_buffer,a_new_size,m_size)) { m_out << "inlib::io::xwbuf::expand :" << " can't realloc " << a_new_size << " bytes." << std::endl; m_size = 0; m_max = 0; m_pos = 0; return false; } m_size = a_new_size; m_max = m_buffer + m_size; m_pos = m_buffer + len; return true; }
virtual uint32 inlib::io::xwbuf::length | ( | ) | const [inline, virtual] |
static int inlib::io::xwbuf::MAX_SPRINTF_SIZE | ( | ) | [inline, static, protected] |
void inlib::io::xwbuf::reset_pos | ( | ) | [inline] |
virtual bool inlib::io::xwbuf::write | ( | uchar | a_x | ) | [inline, virtual] |
Implements inlib::io::iwbuf.
Definition at line 32 of file xwbuf.
{ if(!_write_cstr("<uchar v=\"")) return false; if(!_write<uchar>(a_x,write_format(a_x).c_str())) return false; if(!_write_cstr("\"/>")) return false; return true; }
virtual bool inlib::io::xwbuf::write | ( | char | a_x | ) | [inline, virtual] |
Implements inlib::io::iwbuf.
Definition at line 38 of file xwbuf.
{ if(!_write_cstr("<char v=\"")) return false; if(!_write<char>(a_x,write_format(a_x).c_str())) return false; if(!_write_cstr("\"/>")) return false; return true; }
virtual bool inlib::io::xwbuf::write | ( | uint16 | a_x | ) | [inline, virtual] |
Implements inlib::io::iwbuf.
Definition at line 44 of file xwbuf.
{ if(!_write_cstr("<uint16 v=\"")) return false; if(!_write<uint16>(a_x,write_format(a_x).c_str())) return false; if(!_write_cstr("\"/>")) return false; return true; }
virtual bool inlib::io::xwbuf::write | ( | int16 | a_x | ) | [inline, virtual] |
Implements inlib::io::iwbuf.
Definition at line 50 of file xwbuf.
{ if(!_write_cstr("<int16 v=\"")) return false; if(!_write<int16>(a_x,write_format(a_x).c_str())) return false; if(!_write_cstr("\"/>")) return false; return true; }
virtual bool inlib::io::xwbuf::write | ( | uint32 | a_x | ) | [inline, virtual] |
Implements inlib::io::iwbuf.
Definition at line 56 of file xwbuf.
{ if(!_write_cstr("<uint32 v=\"")) return false; if(!_write<uint32>(a_x,write_format(a_x).c_str())) return false; if(!_write_cstr("\"/>")) return false; return true; }
virtual bool inlib::io::xwbuf::write | ( | int32 | a_x | ) | [inline, virtual] |
Implements inlib::io::iwbuf.
Definition at line 62 of file xwbuf.
{ if(!_write_cstr("<int32 v=\"")) return false; if(!_write<int32>(a_x,write_format(a_x).c_str())) return false; if(!_write_cstr("\"/>")) return false; return true; }
virtual bool inlib::io::xwbuf::write | ( | uint64 | a_x | ) | [inline, virtual] |
Implements inlib::io::iwbuf.
Definition at line 68 of file xwbuf.
{ if(!_write_cstr("<uint64 v=\"")) return false; if(!_write<uint64>(a_x,write_format(a_x).c_str())) return false; if(!_write_cstr("\"/>")) return false; return true; }
virtual bool inlib::io::xwbuf::write | ( | int64 | a_x | ) | [inline, virtual] |
Implements inlib::io::iwbuf.
Definition at line 74 of file xwbuf.
{ if(!_write_cstr("<int64 v=\"")) return false; if(!_write<int64>(a_x,write_format(a_x).c_str())) return false; if(!_write_cstr("\"/>")) return false; return true; }
virtual bool inlib::io::xwbuf::write | ( | float | a_x | ) | [inline, virtual] |
Implements inlib::io::iwbuf.
Definition at line 80 of file xwbuf.
{ if(!_write_cstr("<float v=\"")) return false; if(!_write<float>(a_x,write_format(a_x).c_str())) return false; if(!_write_cstr("\"/>")) return false; return true; }
virtual bool inlib::io::xwbuf::write | ( | double | a_x | ) | [inline, virtual] |
Implements inlib::io::iwbuf.
Definition at line 86 of file xwbuf.
{ if(!_write_cstr("<double v=\"")) return false; if(!_write<double>(a_x,write_format(a_x).c_str())) return false; if(!_write_cstr("\"/>")) return false; return true; }
virtual bool inlib::io::xwbuf::write | ( | bool | a_v | ) | [inline, virtual] |
Implements inlib::io::iwbuf.
Definition at line 93 of file xwbuf.
{ if(!_write_cstr("<bool v=\"")) return false; if((m_pos+MAX_SPRINTF_SIZE())>m_max) { if(!expand(inlib::mx<uint32>(2*m_size,m_size+MAX_SPRINTF_SIZE()))) return false; } if(!m_buffer) return false; //NOTE : the below writes an ending null char. #ifdef WIN32 int sz = _snprintf(m_pos,MAX_SPRINTF_SIZE(),"%u",a_v?1:0); #else int sz = ::snprintf(m_pos,MAX_SPRINTF_SIZE(),"%u",a_v?1:0); #endif if(sz>(MAX_SPRINTF_SIZE()-1)) return false; m_pos += sz; if(!_write_cstr("\"/>")) return false; return true; }
virtual bool inlib::io::xwbuf::write_cstr | ( | const char * | a_cstr | ) | [inline, virtual] |
Implements inlib::io::iwbuf.
Definition at line 112 of file xwbuf.
{ if(!_write_cstr("<string v=\"")) return false; if(!_write_xml_cstr(a_cstr)) return false; if(!_write_cstr("\"/>")) return false; return true; }
static const std::string& inlib::io::xwbuf::write_format | ( | uchar | ) | [inline, static, protected] |
static const std::string& inlib::io::xwbuf::write_format | ( | char | ) | [inline, static, protected] |
static const std::string& inlib::io::xwbuf::write_format | ( | uint16 | ) | [inline, static, protected] |
static const std::string& inlib::io::xwbuf::write_format | ( | int16 | ) | [inline, static, protected] |
static const std::string& inlib::io::xwbuf::write_format | ( | uint32 | ) | [inline, static, protected] |
static const std::string& inlib::io::xwbuf::write_format | ( | int32 | ) | [inline, static, protected] |
static const std::string& inlib::io::xwbuf::write_format | ( | uint64 | ) | [inline, static, protected] |
Definition at line 376 of file xwbuf.
{ static const std::string s_v(uint64_format()); return s_v; }
static const std::string& inlib::io::xwbuf::write_format | ( | int64 | ) | [inline, static, protected] |
Definition at line 380 of file xwbuf.
{ static const std::string s_v(int64_format()); return s_v; }
static const std::string& inlib::io::xwbuf::write_format | ( | float | ) | [inline, static, protected] |
static const std::string& inlib::io::xwbuf::write_format | ( | double | ) | [inline, static, protected] |
virtual bool inlib::io::xwbuf::write_std_vec_vec | ( | const std_vec_vec_uint_t & | a_vv | ) | [inline, virtual] |
Implements inlib::io::iwbuf.
Definition at line 165 of file xwbuf.
{
return _write_std_vec_vec<unsigned int>(a_vv);
}
virtual bool inlib::io::xwbuf::write_std_vec_vec | ( | const std_vec_vec_float_t & | a_vv | ) | [inline, virtual] |
Implements inlib::io::iwbuf.
Definition at line 168 of file xwbuf.
{
return _write_std_vec_vec<float>(a_vv);
}
virtual bool inlib::io::xwbuf::write_std_vec_vec | ( | const std_vec_vec_string_t & | a_vv | ) | [inline, virtual] |
Implements inlib::io::iwbuf.
Definition at line 171 of file xwbuf.
{ if(!_write_cstr("<array>")) return false; typedef std::vector<std::string> vec_t; std::vector<vec_t>::const_iterator it; for(it=a_vv.begin();it!=a_vv.end();++it) { if(it!=a_vv.begin()) {if(!_write_cstr("\\t")) return false;} std::vector<std::string>::const_iterator it2; for(it2=(*it).begin();it2!=(*it).end();++it2) { if(it2!=(*it).begin()) {if(!_write_cstr("\\n")) return false;} if(!_write_xml_cstr((*it2).c_str())) return false; } } if(!_write_cstr("</array>")) return false; return true; }
Implements inlib::io::iwbuf.
Definition at line 119 of file xwbuf.
{
return _write_array<uchar>(a_n,a_x);
}
virtual bool inlib::io::xwbuf::write_vec | ( | uint32 | a_n, |
const char * | a_x | ||
) | [inline, virtual] |
Implements inlib::io::iwbuf.
Definition at line 122 of file xwbuf.
{
return _write_array<char>(a_n,a_x);
}
Implements inlib::io::iwbuf.
Definition at line 125 of file xwbuf.
{
return _write_array<uint16>(a_n,a_x);
}
Implements inlib::io::iwbuf.
Definition at line 128 of file xwbuf.
{
return _write_array<int16>(a_n,a_x);
}
Implements inlib::io::iwbuf.
Definition at line 131 of file xwbuf.
{
return _write_array<uint32>(a_n,a_x);
}
Implements inlib::io::iwbuf.
Definition at line 134 of file xwbuf.
{
return _write_array<int32>(a_n,a_x);
}
Implements inlib::io::iwbuf.
Definition at line 137 of file xwbuf.
{
return _write_array<uint64>(a_n,a_x);
}
Implements inlib::io::iwbuf.
Definition at line 140 of file xwbuf.
{
return _write_array<int64>(a_n,a_x);
}
virtual bool inlib::io::xwbuf::write_vec | ( | uint32 | a_n, |
const float * | a_x | ||
) | [inline, virtual] |
Implements inlib::io::iwbuf.
Definition at line 143 of file xwbuf.
{
return _write_array<float>(a_n,a_x);
}
virtual bool inlib::io::xwbuf::write_vec | ( | uint32 | a_n, |
const double * | a_x | ||
) | [inline, virtual] |
Implements inlib::io::iwbuf.
Definition at line 146 of file xwbuf.
{
return _write_array<double>(a_n,a_x);
}
virtual bool inlib::io::xwbuf::write_vec | ( | uint32 | a_n, |
const bool * | a_x | ||
) | [inline, virtual] |
Implements inlib::io::iwbuf.
Definition at line 149 of file xwbuf.
{
return _write_array<bool>(a_n,a_x);
}
virtual bool inlib::io::xwbuf::write_vec | ( | const std::vector< std::string > & | a_v | ) | [inline, virtual] |
Implements inlib::io::iwbuf.
Definition at line 153 of file xwbuf.
{ // <string>\n<string>\n<string> if(!_write_cstr("<array>")) return false; std::vector<std::string>::const_iterator it; for(it=a_v.begin();it!=a_v.end();++it) { if(it!=a_v.begin()) {if(!_write_cstr("\\n")) return false;} if(!_write_xml_cstr((*it).c_str())) return false; } if(!_write_cstr("</array>")) return false; return true; }
bool inlib::io::xwbuf::write_verbatim | ( | const char * | a_cstr | ) | [inline] |
Definition at line 227 of file xwbuf.
{ if(!_write_cstr(a_cstr)) return false; return true; }
char* inlib::io::xwbuf::m_buffer [protected] |
char* inlib::io::xwbuf::m_max [protected] |
std::ostream& inlib::io::xwbuf::m_out [protected] |
char* inlib::io::xwbuf::m_pos [protected] |
uint32 inlib::io::xwbuf::m_size [protected] |