MCPcopy Create free account
hub / github.com/cjcliffe/CubicSDR / decodeXMLText

Method decodeXMLText

src/util/DataTree.cpp:375–515  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

373}
374
375void DataTree::decodeXMLText(DataNode *elem, const char *src_text, DT_FloatingPointPolicy fpp) {
376
377 int tmp_char;
378 int tmp_int;
379 long tmp_long;
380 long long tmp_llong;
381 double tmp_double;
382 float tmp_float;
383 string tmp_str;
384 string tmp_str2;
385 std::stringstream tmp_stream;
386 std::stringstream tmp_stream2;
387
388 vector<char> tmp_charvect;
389 vector<int> tmp_intvect;
390 vector<long> tmp_longvect;
391 vector<long> tmp_llongvect;
392
393 vector<double> tmp_doublevect;
394
395 vector<float> tmp_floatvect;
396
397 bool vChars = false;
398 bool vInts = false;
399 bool vLongs = false;
400
401 string in_text = src_text;
402
403 trim(in_text);
404 trim(in_text, "\r\n");
405 tmp_stream.str("");
406 tmp_stream2.str("");
407
408 if (in_text.find_first_not_of("0123456789-") == string::npos) {
409 tmp_stream << in_text;
410 tmp_stream >> tmp_llong;
411
412 tmp_int = (int)tmp_llong;
413 tmp_long = (long)tmp_llong;
414
415 if (tmp_int == tmp_llong) {
416 elem->element()->set(tmp_int);
417 } else if (tmp_long == tmp_llong) {
418 elem->element()->set(tmp_long);
419 } else {
420 elem->element()->set(tmp_llong);
421 }
422 } else if (in_text.find_first_not_of("0123456789.e+-") == string::npos) {
423 tmp_stream << in_text;
424
425 if (fpp == USE_FLOAT) {
426 tmp_stream >> tmp_float;
427
428 elem->element()->set(tmp_float);
429 } else {
430 tmp_stream >> tmp_double;
431
432 elem->element()->set(tmp_double);

Callers

nothing calls this directly

Calls 4

elementMethod · 0.80
trimFunction · 0.70
setMethod · 0.45
clearMethod · 0.45

Tested by

no test coverage detected