MCPcopy Create free account
hub / github.com/JayXon/Leanify / GetStr

Method GetStr

lib/tinyxml2/tinyxml2.cpp:187–282  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

185
186
187const char* StrPair::GetStr()
188{
189 TIXMLASSERT( _start );
190 TIXMLASSERT( _end );
191 if ( _flags & NEEDS_FLUSH ) {
192 *_end = 0;
193 _flags ^= NEEDS_FLUSH;
194
195 if ( _flags ) {
196 char* p = _start; // the read pointer
197 char* q = _start; // the write pointer
198
199 while( p < _end ) {
200 if ( (_flags & NEEDS_NEWLINE_NORMALIZATION) && *p == CR ) {
201 // CR-LF pair becomes LF
202 // CR alone becomes LF
203 // LF-CR becomes LF
204 if ( *(p+1) == LF ) {
205 p += 2;
206 }
207 else {
208 ++p;
209 }
210 *q++ = LF;
211 }
212 else if ( (_flags & NEEDS_NEWLINE_NORMALIZATION) && *p == LF ) {
213 if ( *(p+1) == CR ) {
214 p += 2;
215 }
216 else {
217 ++p;
218 }
219 *q++ = LF;
220 }
221 else if ( (_flags & NEEDS_ENTITY_PROCESSING) && *p == '&' ) {
222 // Entities handled by tinyXML2:
223 // - special entities in the entity table [in/out]
224 // - numeric character reference [in]
225 // &#20013; or &#x4e2d;
226
227 if ( *(p+1) == '#' ) {
228 const int buflen = 10;
229 char buf[buflen] = { 0 };
230 int len = 0;
231 char* adjusted = const_cast<char*>( XMLUtil::GetCharacterRef( p, buf, &len ) );
232 if ( adjusted == 0 ) {
233 *q = *p;
234 ++p;
235 ++q;
236 }
237 else {
238 TIXMLASSERT( 0 <= len && len <= buflen );
239 TIXMLASSERT( q + len <= adjusted );
240 p = adjusted;
241 memcpy( q, buf, len );
242 q += len;
243 }
244 }

Callers 3

ValueMethod · 0.80
ParseDeepMethod · 0.80
NameMethod · 0.80

Calls

no outgoing calls

Tested by

no test coverage detected