|
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] |
1.7.5.1