ProteoWizard
Public Member Functions | Private Member Functions | Private Attributes | List of all members
pwiz::minimxml::SAXParser::saxstring Class Reference

#include <SAXParser.hpp>

Public Member Functions

 saxstring (size_t size=0)
 
 saxstring (const SAXParser::saxstring &rhs)
 
 saxstring (const std::string &rhs)
 
void unescapeXML ()
 
 ~saxstring ()
 
saxstringoperator= (const SAXParser::saxstring &rhs)
 
saxstringoperator= (const char *rhs)
 
saxstringoperator+= (const SAXParser::saxstring &rhs)
 
saxstringoperator+= (const char *rhs)
 
bool operator== (const char *c) const
 
bool operator== (const std::string &s) const
 
bool operator== (const saxstring &s) const
 
char * resize (size_t size)
 
void clear ()
 
const char * c_str () const
 
char & operator[] (size_t n)
 
size_t length () const
 
size_t capacity () const
 
void trim_trail_ws ()
 
int trim_lead_ws ()
 
bool starts_with (const char *txt) const
 
bool ends_with (const char *txt) const
 
char * data ()
 

Private Member Functions

void init (size_t size)
 

Private Attributes

char * _data
 
size_t _used
 
size_t _lead
 
size_t _capacity
 

Detailed Description

Definition at line 60 of file SAXParser.hpp.

Constructor & Destructor Documentation

§ saxstring() [1/3]

pwiz::minimxml::SAXParser::saxstring::saxstring ( size_t  size = 0)
inline

Definition at line 72 of file SAXParser.hpp.

References init().

72  {
73  init(size);
74  }

§ saxstring() [2/3]

pwiz::minimxml::SAXParser::saxstring::saxstring ( const SAXParser::saxstring rhs)
inline

Definition at line 76 of file SAXParser.hpp.

76  {
77  *this = rhs;
78  }

§ saxstring() [3/3]

pwiz::minimxml::SAXParser::saxstring::saxstring ( const std::string &  rhs)
inline

Definition at line 80 of file SAXParser.hpp.

References data(), and init().

80  {
81  init(rhs.length());
82  memcpy(data(),rhs.c_str(),rhs.length());
83  (*this)[rhs.length()] = 0; // nullterm
84  }

§ ~saxstring()

pwiz::minimxml::SAXParser::saxstring::~saxstring ( )
inline

Definition at line 93 of file SAXParser.hpp.

References _data.

93  {
94  free(_data);
95  }

Member Function Documentation

§ unescapeXML()

void pwiz::minimxml::SAXParser::saxstring::unescapeXML ( )
inline

Definition at line 86 of file SAXParser.hpp.

References c_str(), data(), resize(), and pwiz::minimxml::SAXParser::unescapeXML().

Referenced by pwiz::minimxml::SAXParser::Handler::Attributes::attribute::getValuePtr().

86  {
87  if (strchr(c_str(),'&')) {
89  resize(strlen(c_str()));
90  }
91  }
PWIZ_API_DECL void unescapeXML(char *str)

§ operator=() [1/2]

saxstring& pwiz::minimxml::SAXParser::saxstring::operator= ( const SAXParser::saxstring rhs)
inline

Definition at line 97 of file SAXParser.hpp.

References c_str(), data(), init(), and length().

97  {
98  init(rhs.length());
99  if (length()) {
100  memcpy(data(),rhs.c_str(),length()+1);
101  }
102  return *this;
103  }

§ operator=() [2/2]

saxstring& pwiz::minimxml::SAXParser::saxstring::operator= ( const char *  rhs)
inline

Definition at line 105 of file SAXParser.hpp.

References data(), init(), and length().

105  {
106  init(rhs ? strlen(rhs) : 0);
107  if (length()) {
108  memcpy(data(),rhs,length()+1);
109  }
110  return *this;
111  }

§ operator+=() [1/2]

saxstring& pwiz::minimxml::SAXParser::saxstring::operator+= ( const SAXParser::saxstring rhs)
inline

Definition at line 113 of file SAXParser.hpp.

References c_str(), data(), length(), and resize().

113  {
114  if (rhs.length()) {
115  size_t oldsize = length();
116  resize(rhs.length()+oldsize);
117  memcpy(data()+oldsize,rhs.c_str(),rhs.length()+1);
118  }
119  return *this;
120  }

§ operator+=() [2/2]

saxstring& pwiz::minimxml::SAXParser::saxstring::operator+= ( const char *  rhs)
inline

Definition at line 122 of file SAXParser.hpp.

References data(), length(), and resize().

122  {
123  size_t rhslen = rhs?strlen(rhs):0;
124  if (rhslen) {
125  size_t oldsize = length();
126  resize(rhslen+oldsize);
127  strcpy(data()+oldsize,rhs);
128  }
129  return *this;
130  }

§ operator==() [1/3]

bool pwiz::minimxml::SAXParser::saxstring::operator== ( const char *  c) const
inline

Definition at line 132 of file SAXParser.hpp.

References c_str().

132  {
133  return c && !strcmp(c,c_str());
134  }

§ operator==() [2/3]

bool pwiz::minimxml::SAXParser::saxstring::operator== ( const std::string &  s) const
inline

Definition at line 136 of file SAXParser.hpp.

References c_str().

136  {
137  return !strcmp(c_str(),s.c_str());
138  }

§ operator==() [3/3]

bool pwiz::minimxml::SAXParser::saxstring::operator== ( const saxstring s) const
inline

Definition at line 140 of file SAXParser.hpp.

References c_str().

140  {
141  return !strcmp(c_str(),s.c_str());
142  }

§ resize()

char* pwiz::minimxml::SAXParser::saxstring::resize ( size_t  size)
inline

Definition at line 144 of file SAXParser.hpp.

References _capacity, _data, _lead, and _used.

Referenced by clear(), data(), init(), operator+=(), trim_trail_ws(), and unescapeXML().

144  {
145  if (!size) {
146  _lead = 0; // empty, reclaim the start of buffer
147  }
148  size_t new_used = size + _lead; // translate to "used" space
149  if (new_used >= _capacity) {
150  _data = (char *)realloc(_data, (_used = new_used)+1);
151  if (_used && !_data) {
152  throw std::runtime_error("SAXParser: cannot allocate memory");
153  }
154  _capacity = _used;
155  } else {
156  _used = new_used;
157  }
158  _data[_used] = 0;
159  return _data;
160  }

§ clear()

void pwiz::minimxml::SAXParser::saxstring::clear ( )
inline

Definition at line 161 of file SAXParser.hpp.

References resize().

161  {
162  resize(0);
163  }

§ c_str()

const char* pwiz::minimxml::SAXParser::saxstring::c_str ( ) const
inline

§ operator[]()

char& pwiz::minimxml::SAXParser::saxstring::operator[] ( size_t  n)
inline

Definition at line 167 of file SAXParser.hpp.

References data().

167  {
168  return *(data()+n);
169  }

§ length()

size_t pwiz::minimxml::SAXParser::saxstring::length ( ) const
inline

§ capacity()

size_t pwiz::minimxml::SAXParser::saxstring::capacity ( ) const
inline

Definition at line 173 of file SAXParser.hpp.

References _capacity.

173  {
174  return _capacity;
175  }

§ trim_trail_ws()

void pwiz::minimxml::SAXParser::saxstring::trim_trail_ws ( )
inline

Definition at line 176 of file SAXParser.hpp.

References c_str(), pwiz::minimxml::SAXParser::count_trail_ws(), length(), and resize().

Referenced by testSaxParserString().

176  { // remove trailing whitespace if any
177  size_t n = count_trail_ws(c_str(),length());
178  resize(length()-n);
179  }
PWIZ_API_DECL size_t count_trail_ws(const char *data, size_t len)

§ trim_lead_ws()

int pwiz::minimxml::SAXParser::saxstring::trim_lead_ws ( )
inline

Definition at line 181 of file SAXParser.hpp.

References _lead, and c_str().

Referenced by testSaxParserString().

181  {
182  size_t n=0;
183  for (const char *c=c_str(); *c && strchr(" \n\r\t",*c); c++) {
184  n++;
185  }
186  _lead += n;
187  return n;
188  }

§ starts_with()

bool pwiz::minimxml::SAXParser::saxstring::starts_with ( const char *  txt) const
inline

Definition at line 189 of file SAXParser.hpp.

References c_str().

189  {
190  return !strncmp(c_str(),txt,strlen(txt));
191  }

§ ends_with()

bool pwiz::minimxml::SAXParser::saxstring::ends_with ( const char *  txt) const
inline

Definition at line 192 of file SAXParser.hpp.

References c_str(), and length().

192  {
193  size_t len = strlen(txt);
194  return (len <= length()) ? (!strcmp(c_str()+length()-len,txt)) : false;
195  }

§ data()

char* pwiz::minimxml::SAXParser::saxstring::data ( )
inline

Definition at line 196 of file SAXParser.hpp.

References _data, _lead, and resize().

Referenced by pwiz::minimxml::SAXParser::Handler::Attributes::Attributes(), operator+=(), operator=(), operator[](), saxstring(), testSaxParserString(), and unescapeXML().

196  { // direct access to data buffer
197  if (!_data) {
198  resize(0);
199  }
200  return _data+_lead;
201  }

§ init()

void pwiz::minimxml::SAXParser::saxstring::init ( size_t  size)
inlineprivate

Definition at line 203 of file SAXParser.hpp.

References _capacity, _data, _lead, _used, and resize().

Referenced by operator=(), and saxstring().

203  {
204  _used = 0;
205  _lead = 0;
206  _capacity = 0;
207  _data = NULL;
208  if (size) {
209  resize(size);
210  }
211  }

Member Data Documentation

§ _data

char* pwiz::minimxml::SAXParser::saxstring::_data
private

Definition at line 212 of file SAXParser.hpp.

Referenced by c_str(), data(), init(), resize(), and ~saxstring().

§ _used

size_t pwiz::minimxml::SAXParser::saxstring::_used
private

Definition at line 213 of file SAXParser.hpp.

Referenced by init(), length(), and resize().

§ _lead

size_t pwiz::minimxml::SAXParser::saxstring::_lead
private

Definition at line 214 of file SAXParser.hpp.

Referenced by c_str(), data(), init(), length(), resize(), and trim_lead_ws().

§ _capacity

size_t pwiz::minimxml::SAXParser::saxstring::_capacity
private

Definition at line 215 of file SAXParser.hpp.

Referenced by capacity(), init(), and resize().


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