1 #ifndef CEREAL_RAPIDXML_HPP_INCLUDED
2 #define CEREAL_RAPIDXML_HPP_INCLUDED
9 #if !defined(CEREAL_RAPIDXML_NO_STDLIB)
19 #pragma warning(disable:4127)
20 #pragma warning(disable:4100)
26 #if defined(CEREAL_RAPIDXML_NO_EXCEPTIONS)
28 #define CEREAL_RAPIDXML_PARSE_ERROR(what, where) { parse_error_handler(what, where); assert(0); }
49 void parse_error_handler(
const char *what,
void *where);
57 #define CEREAL_RAPIDXML_PARSE_ERROR(what, where) throw parse_error(what, where)
99 return reinterpret_cast<Ch *
>(
m_where);
116 #ifndef CEREAL_RAPIDXML_STATIC_POOL_SIZE
120 #define CEREAL_RAPIDXML_STATIC_POOL_SIZE (64 * 1024)
123 #ifndef CEREAL_RAPIDXML_DYNAMIC_POOL_SIZE
127 #define CEREAL_RAPIDXML_DYNAMIC_POOL_SIZE (64 * 1024)
130 #ifndef CEREAL_RAPIDXML_ALIGNMENT
135 #define CEREAL_RAPIDXML_ALIGNMENT sizeof(void *)
142 template<
class Ch>
class xml_node;
143 template<
class Ch>
class xml_attribute;
144 template<
class Ch>
class xml_document;
299 static const unsigned char lookup_whitespace[256];
300 static const unsigned char lookup_node_name[256];
301 static const unsigned char lookup_text[256];
302 static const unsigned char lookup_text_pure_no_ws[256];
303 static const unsigned char lookup_text_pure_with_ws[256];
304 static const unsigned char lookup_attribute_name[256];
305 static const unsigned char lookup_attribute_data_1[256];
306 static const unsigned char lookup_attribute_data_1_pure[256];
307 static const unsigned char lookup_attribute_data_2[256];
308 static const unsigned char lookup_attribute_data_2_pure[256];
309 static const unsigned char lookup_digits[256];
310 static const unsigned char lookup_upcase[256];
315 inline std::size_t measure(
const Ch *p)
320 return static_cast<std::size_t
>(tmp - p);
325 inline bool compare(
const Ch *p1, std::size_t size1,
const Ch *p2, std::size_t size2,
bool case_sensitive)
331 for (
const Ch *end = p1 + size1; p1 < end; ++p1, ++p2)
337 for (
const Ch *end = p1 + size1; p1 < end; ++p1, ++p2)
338 if (lookup_tables<0>::lookup_upcase[
static_cast<unsigned char>(*p1)] != lookup_tables<0>::lookup_upcase[
static_cast<unsigned char>(*p2)])
347 const Ch preserve_value[] = { Ch(
'p'), Ch(
'r'), Ch(
'e'), Ch(
's'), Ch(
'e'), Ch(
'r'), Ch(
'v'), Ch(
'e') };
349 return space && internal::compare(space->
value(), space->
value_size(), preserve_value,
sizeof(preserve_value) /
sizeof(Ch),
true);
391 template<
class Ch =
char>
398 typedef void *(alloc_func)(std::size_t);
399 typedef void (free_func)(
void *);
429 const Ch *name = 0,
const Ch *value = 0,
430 std::size_t name_size = 0, std::size_t value_size = 0)
437 node->
name(name, name_size);
461 std::size_t name_size = 0, std::size_t value_size = 0)
468 attribute->
name(name, name_size);
470 attribute->
name(name);
493 size = internal::measure(
source) + 1;
496 for (std::size_t i = 0; i < size; ++i)
516 result->remove_all_nodes();
517 result->type(
source->type());
527 for (
xml_node<Ch> *child =
source->first_node(); child; child = child->next_sibling())
530 result->append_attribute(
allocate_attribute(attr->name(), attr->value(), attr->name_size(), attr->value_size()));
589 return ptr + alignment;
603 memory =
new char[size];
604 #ifdef CEREAL_RAPIDXML_NO_EXCEPTIONS
609 return static_cast<char *
>(memory);
618 if (result + size >
m_end)
622 if (pool_size < size)
630 char *pool =
align(raw_memory);
635 m_end = raw_memory + alloc_size;
642 m_ptr = result + size;
660 template<
class Ch =
char>
734 void name(
const Ch *name_, std::size_t size)
736 m_name =
const_cast<Ch *
>(name_);
745 this->
name(name_, internal::measure(name_));
764 void value(
const Ch *value_, std::size_t size)
766 m_value =
const_cast<Ch *
>(value_);
775 this->
value(value_, internal::measure(value_));
793 static Ch zero = Ch(
'\0');
810 template<
class Ch =
char>
836 while (node->parent())
837 node = node->parent();
856 if (internal::compare(attribute->name(), attribute->name_size(),
name,
name_size, case_sensitive))
874 name_size_ = internal::measure(name_);
876 if (internal::compare(attribute->name(), attribute->name_size(), name_, name_size_, case_sensitive))
902 template<
class Ch =
char>
954 name_size_ = internal::measure(name_);
956 if (internal::compare(child->name(), child->name_size(), name_, name_size_, case_sensitive))
979 if (internal::compare(child->name(), child->name_size(),
name,
name_size, case_sensitive))
1002 if (internal::compare(sibling->name(), sibling->name_size(),
name,
name_size, case_sensitive))
1022 if (name_size_ == 0)
1023 name_size_ = internal::measure(name_);
1025 if (internal::compare(sibling->name(), sibling->name_size(), name_, name_size_, case_sensitive))
1042 if (name_size_ == 0)
1043 name_size_ = internal::measure(name_);
1045 if (internal::compare(attribute->name(), attribute->name_size(), name_, name_size_, case_sensitive))
1065 if (internal::compare(attribute->name(), attribute->name_size(),
name,
name_size, case_sensitive))
1134 assert(!where || where->
parent() ==
this);
1138 else if (where == 0)
1186 assert(where && where->
parent() ==
this);
1212 assert(attribute && !attribute->
parent());
1232 assert(attribute && !attribute->
parent());
1254 assert(!where || where->
parent() ==
this);
1255 assert(attribute && !attribute->
parent());
1258 else if (where == 0)
1325 attribute->m_parent = 0;
1370 template<
class Ch =
char>
1403 parse_bom<Flags>(text);
1409 skip<whitespace_pred, Flags>(text);
1414 if (*text == Ch(
'<'))
1445 return internal::lookup_tables<0>::lookup_whitespace[
static_cast<unsigned char>(ch)];
1454 return internal::lookup_tables<0>::lookup_node_name[
static_cast<unsigned char>(ch)];
1463 return internal::lookup_tables<0>::lookup_attribute_name[
static_cast<unsigned char>(ch)];
1472 return internal::lookup_tables<0>::lookup_text[
static_cast<unsigned char>(ch)];
1481 return internal::lookup_tables<0>::lookup_text_pure_no_ws[
static_cast<unsigned char>(ch)];
1490 return internal::lookup_tables<0>::lookup_text_pure_with_ws[
static_cast<unsigned char>(ch)];
1500 if (Quote == Ch(
'\''))
1501 return internal::lookup_tables<0>::lookup_attribute_data_1[
static_cast<unsigned char>(ch)];
1502 if (Quote == Ch(
'\"'))
1503 return internal::lookup_tables<0>::lookup_attribute_data_2[
static_cast<unsigned char>(ch)];
1514 if (Quote == Ch(
'\''))
1515 return internal::lookup_tables<0>::lookup_attribute_data_1_pure[
static_cast<unsigned char>(ch)];
1516 if (Quote == Ch(
'\"'))
1517 return internal::lookup_tables<0>::lookup_attribute_data_2_pure[
static_cast<unsigned char>(ch)];
1530 text[0] =
static_cast<Ch
>(code);
1538 text[0] =
static_cast<Ch
>(code);
1541 else if (code < 0x800)
1543 text[1] =
static_cast<Ch
>((code | 0x80) & 0xBF); code >>= 6;
1544 text[0] =
static_cast<Ch
>(code | 0xC0);
1547 else if (code < 0x10000)
1549 text[2] =
static_cast<Ch
>((code | 0x80) & 0xBF); code >>= 6;
1550 text[1] =
static_cast<Ch
>((code | 0x80) & 0xBF); code >>= 6;
1551 text[0] =
static_cast<Ch
>(code | 0xE0);
1554 else if (code < 0x110000)
1556 text[3] =
static_cast<Ch
>((code | 0x80) & 0xBF); code >>= 6;
1557 text[2] =
static_cast<Ch
>((code | 0x80) & 0xBF); code >>= 6;
1558 text[1] =
static_cast<Ch
>((code | 0x80) & 0xBF); code >>= 6;
1559 text[0] =
static_cast<Ch
>(code | 0xF0);
1570 template<
class StopPred,
int Flags>
1574 while (StopPred::test(*tmp))
1582 template<
class StopPred,
class StopPredPure,
int Flags>
1590 skip<StopPred, Flags>(text);
1595 skip<StopPredPure, Flags>(text);
1600 while (StopPred::test(*src))
1606 if (src[0] == Ch(
'&'))
1613 if (src[2] == Ch(
'm') && src[3] == Ch(
'p') && src[4] == Ch(
';'))
1620 if (src[2] == Ch(
'p') && src[3] == Ch(
'o') && src[4] == Ch(
's') && src[5] == Ch(
';'))
1631 if (src[2] == Ch(
'u') && src[3] == Ch(
'o') && src[4] == Ch(
't') && src[5] == Ch(
';'))
1642 if (src[2] == Ch(
't') && src[3] == Ch(
';'))
1653 if (src[2] == Ch(
't') && src[3] == Ch(
';'))
1664 if (src[2] == Ch(
'x'))
1666 unsigned long code = 0;
1670 unsigned char digit = internal::lookup_tables<0>::lookup_digits[
static_cast<unsigned char>(*src)];
1673 code = code * 16 + digit;
1676 insert_coded_character<Flags>(dest, code);
1680 unsigned long code = 0;
1684 unsigned char digit = internal::lookup_tables<0>::lookup_digits[
static_cast<unsigned char>(*src)];
1687 code = code * 10 + digit;
1690 insert_coded_character<Flags>(dest, code);
1692 if (*src == Ch(
';'))
1713 *dest = Ch(
' '); ++dest;
1741 if (
static_cast<unsigned char>(text[0]) == 0xEF &&
1742 static_cast<unsigned char>(text[1]) == 0xBB &&
1743 static_cast<unsigned char>(text[2]) == 0xBF)
1757 while (text[0] != Ch(
'?') || text[1] != Ch(
'>'))
1771 skip<whitespace_pred, Flags>(text);
1774 parse_node_attributes<Flags>(text, declaration);
1777 if (text[0] != Ch(
'?') || text[1] != Ch(
'>'))
1792 while (text[0] != Ch(
'-') || text[1] != Ch(
'-') || text[2] != Ch(
'>'))
1806 while (text[0] != Ch(
'-') || text[1] != Ch(
'-') || text[2] != Ch(
'>'))
1815 comment->
value(value_,
static_cast<std::size_t
>(text - value_));
1833 while (*text != Ch(
'>'))
1849 case Ch(
'['): ++depth;
break;
1850 case Ch(
']'): --depth;
break;
1874 doctype->
value(value_,
static_cast<std::size_t
>(text - value_));
1903 skip<node_name_pred, Flags>(text);
1906 pi->
name(name_,
static_cast<std::size_t
>(text - name_));
1909 skip<whitespace_pred, Flags>(text);
1915 while (text[0] != Ch(
'?') || text[1] != Ch(
'>'))
1917 if (*text == Ch(
'\0'))
1923 pi->
value(value_,
static_cast<std::size_t
>(text - value_));
1938 while (text[0] != Ch(
'?') || text[1] != Ch(
'>'))
1940 if (*text == Ch(
'\0'))
1957 text = contents_start;
1959 const bool preserve_space = internal::preserve_space(node);
1962 Ch *value_ = text, *end;
1964 end = skip_and_expand_character_refs<text_pred, text_pure_with_ws_pred, Flags>(text,
false);
1966 end = skip_and_expand_character_refs<text_pred, text_pure_no_ws_pred, Flags>(text, preserve_space);
1974 if (*(end - 1) == Ch(
' '))
1990 data->
value(value_,
static_cast<std::size_t
>(end - value_));
1996 if (*node->
value() == Ch(
'\0'))
1997 node->
value(value_,
static_cast<std::size_t
>(end - value_));
2019 while (text[0] != Ch(
']') || text[1] != Ch(
']') || text[2] != Ch(
'>'))
2031 while (text[0] != Ch(
']') || text[1] != Ch(
']') || text[2] != Ch(
'>'))
2040 cdata->
value(value_,
static_cast<std::size_t
>(text - value_));
2059 skip<node_name_pred, Flags>(text);
2062 element->
name(name_,
static_cast<std::size_t
>(text - name_));
2065 skip<whitespace_pred, Flags>(text);
2068 parse_node_attributes<Flags>(text, element);
2071 if (*text == Ch(
'>'))
2074 parse_node_contents<Flags>(text, element);
2076 else if (*text == Ch(
'/'))
2079 if (*text != Ch(
'>'))
2105 return parse_element<Flags>(text);
2110 if ((text[0] == Ch(
'x') || text[0] == Ch(
'X')) &&
2111 (text[1] == Ch(
'm') || text[1] == Ch(
'M')) &&
2112 (text[2] == Ch(
'l') || text[2] == Ch(
'L')) &&
2117 return parse_xml_declaration<Flags>(text);
2122 return parse_pi<Flags>(text);
2134 if (text[2] == Ch(
'-'))
2138 return parse_comment<Flags>(text);
2144 if (text[2] == Ch(
'C') && text[3] == Ch(
'D') && text[4] == Ch(
'A') &&
2145 text[5] == Ch(
'T') && text[6] == Ch(
'A') && text[7] == Ch(
'['))
2149 return parse_cdata<Flags>(text);
2155 if (text[2] == Ch(
'O') && text[3] == Ch(
'C') && text[4] == Ch(
'T') &&
2156 text[5] == Ch(
'Y') && text[6] == Ch(
'P') && text[7] == Ch(
'E') &&
2161 return parse_doctype<Flags>(text);
2168 while (*text != Ch(
'>'))
2188 Ch *contents_start = text;
2189 skip<whitespace_pred, Flags>(text);
2190 Ch next_char = *text;
2204 if (text[1] == Ch(
'/'))
2206 Ch *contents_end = 0;
2207 if (internal::preserve_space(node))
2209 contents_end = text;
2217 Ch *closing_name = text;
2218 skip<node_name_pred, Flags>(text);
2219 if (!internal::compare(node->
name(), node->
name_size(), closing_name,
static_cast<std::size_t
>(text - closing_name),
true))
2225 skip<node_name_pred, Flags>(text);
2228 skip<whitespace_pred, Flags>(text);
2229 if (*text != Ch(
'>'))
2233 if (contents_end && contents_end != contents_start)
2235 node->
value(contents_start,
static_cast<std::size_t
>(contents_end - contents_start));
2255 next_char = parse_and_append_data<Flags>(node, text, contents_start);
2256 goto after_data_node;
2272 skip<attribute_name_pred, Flags>(text);
2278 attribute->
name(name_,
static_cast<std::size_t
>(text - name_));
2282 skip<whitespace_pred, Flags>(text);
2285 if (*text != Ch(
'='))
2294 skip<whitespace_pred, Flags>(text);
2298 if (quote != Ch(
'\'') && quote != Ch(
'"'))
2303 Ch *value_ = text, *end;
2305 if (quote == Ch(
'\''))
2311 attribute->
value(value_,
static_cast<std::size_t
>(end - value_));
2323 skip<whitespace_pred, Flags>(text);
2335 const unsigned char lookup_tables<Dummy>::lookup_whitespace[256] =
2338 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0,
2339 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2340 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2341 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2342 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2343 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2344 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2345 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2346 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2347 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2348 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2349 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2350 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2351 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2352 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2353 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
2358 const unsigned char lookup_tables<Dummy>::lookup_node_name[256] =
2361 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1,
2362 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2363 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
2364 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
2365 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2366 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2367 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2368 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2369 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2370 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2371 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2372 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2373 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2374 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2375 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2376 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
2381 const unsigned char lookup_tables<Dummy>::lookup_text[256] =
2384 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2385 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2386 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2387 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1,
2388 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2389 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2390 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2391 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2392 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2393 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2394 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2395 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2396 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2397 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2398 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2399 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
2405 const unsigned char lookup_tables<Dummy>::lookup_text_pure_no_ws[256] =
2408 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2409 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2410 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2411 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1,
2412 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2413 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2414 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2415 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2416 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2417 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2418 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2419 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2420 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2421 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2422 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2423 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
2429 const unsigned char lookup_tables<Dummy>::lookup_text_pure_with_ws[256] =
2432 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1,
2433 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2434 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2435 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1,
2436 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2437 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2438 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2439 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2440 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2441 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2442 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2443 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2444 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2445 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2446 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2447 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
2452 const unsigned char lookup_tables<Dummy>::lookup_attribute_name[256] =
2455 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1,
2456 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2457 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
2458 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0,
2459 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2460 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2461 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2462 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2463 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2464 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2465 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2466 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2467 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2468 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2469 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2470 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
2475 const unsigned char lookup_tables<Dummy>::lookup_attribute_data_1[256] =
2478 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2479 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2480 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1,
2481 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2482 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2483 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2484 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2485 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2486 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2487 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2488 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2489 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2490 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2491 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2492 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2493 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
2498 const unsigned char lookup_tables<Dummy>::lookup_attribute_data_1_pure[256] =
2501 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2502 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2503 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1,
2504 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2505 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2506 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2507 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2508 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2509 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2510 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2511 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2512 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2513 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2514 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2515 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2516 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
2521 const unsigned char lookup_tables<Dummy>::lookup_attribute_data_2[256] =
2524 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2525 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2526 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2527 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2528 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2529 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2530 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2531 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2532 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2533 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2534 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2535 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2536 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2537 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2538 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2539 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
2544 const unsigned char lookup_tables<Dummy>::lookup_attribute_data_2_pure[256] =
2547 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2548 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2549 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2550 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2551 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2552 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2553 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2554 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2555 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2556 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2557 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2558 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2559 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2560 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2561 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2562 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
2567 const unsigned char lookup_tables<Dummy>::lookup_digits[256] =
2570 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
2571 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
2572 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
2573 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,255,255,255,255,255,255,
2574 255, 10, 11, 12, 13, 14, 15,255,255,255,255,255,255,255,255,255,
2575 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
2576 255, 10, 11, 12, 13, 14, 15,255,255,255,255,255,255,255,255,255,
2577 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
2578 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
2579 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
2580 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
2581 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
2582 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
2583 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
2584 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
2585 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
2590 const unsigned char lookup_tables<Dummy>::lookup_upcase[256] =
2593 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
2594 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
2595 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
2596 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
2597 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
2598 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
2599 96, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
2600 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 123,124,125,126,127,
2601 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
2602 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
2603 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,
2604 176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,
2605 192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
2606 208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
2607 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
2608 240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
2617 #undef CEREAL_RAPIDXML_PARSE_ERROR
2621 #pragma warning(pop)
Definition: rapidxml.hpp:393
char m_static_memory[CEREAL_RAPIDXML_STATIC_POOL_SIZE]
Definition: rapidxml.hpp:649
~memory_pool()
Definition: rapidxml.hpp:413
xml_node< Ch > * allocate_node(node_type type, const Ch *name=0, const Ch *value=0, std::size_t name_size=0, std::size_t value_size=0)
Definition: rapidxml.hpp:428
void init()
Definition: rapidxml.hpp:579
xml_node< Ch > * clone_node(const xml_node< Ch > *source, xml_node< Ch > *result=0)
Definition: rapidxml.hpp:510
free_func * m_free_func
Definition: rapidxml.hpp:651
alloc_func * m_alloc_func
Definition: rapidxml.hpp:650
char * allocate_raw(std::size_t size)
Definition: rapidxml.hpp:592
Ch * allocate_string(const Ch *source=0, std::size_t size=0)
Definition: rapidxml.hpp:489
char * align(char *ptr)
Definition: rapidxml.hpp:586
char * m_ptr
Definition: rapidxml.hpp:647
void clear()
Definition: rapidxml.hpp:538
char * m_begin
Definition: rapidxml.hpp:646
memory_pool()
Constructs empty pool with default allocator functions.
Definition: rapidxml.hpp:403
void * allocate_aligned(std::size_t size)
Definition: rapidxml.hpp:612
void set_allocator(alloc_func *af, free_func *ff)
Definition: rapidxml.hpp:565
xml_attribute< Ch > * allocate_attribute(const Ch *name=0, const Ch *value=0, std::size_t name_size=0, std::size_t value_size=0)
Definition: rapidxml.hpp:460
char * m_end
Definition: rapidxml.hpp:648
Definition: rapidxml.hpp:75
parse_error(const char *what_, void *where_)
Constructs parse error.
Definition: rapidxml.hpp:80
const char * m_what
Definition: rapidxml.hpp:104
Ch * where() const
Definition: rapidxml.hpp:97
virtual const char * what() const CEREAL_NOEXCEPT override
Definition: rapidxml.hpp:88
void * m_where
Definition: rapidxml.hpp:105
xml_attribute()
Definition: rapidxml.hpp:823
xml_attribute< Ch > * m_prev_attribute
Definition: rapidxml.hpp:886
xml_attribute< Ch > * m_next_attribute
Definition: rapidxml.hpp:887
xml_document< Ch > * document() const
Definition: rapidxml.hpp:832
xml_attribute< Ch > * previous_attribute(const Ch *name=0, std::size_t name_size=0, bool case_sensitive=true) const
Definition: rapidxml.hpp:849
xml_attribute< Ch > * next_attribute(const Ch *name_=0, std::size_t name_size_=0, bool case_sensitive=true) const
Definition: rapidxml.hpp:869
Definition: rapidxml.hpp:662
std::size_t name_size() const
Definition: rapidxml.hpp:694
std::size_t value_size() const
Definition: rapidxml.hpp:713
std::size_t m_value_size
Definition: rapidxml.hpp:800
Ch * m_value
Definition: rapidxml.hpp:798
static Ch * nullstr()
Definition: rapidxml.hpp:791
void value(const Ch *value_)
Definition: rapidxml.hpp:773
Ch * name() const
Definition: rapidxml.hpp:686
Ch * m_name
Definition: rapidxml.hpp:797
std::size_t m_name_size
Definition: rapidxml.hpp:799
void name(const Ch *name_, std::size_t size)
Definition: rapidxml.hpp:734
void value(const Ch *value_, std::size_t size)
Definition: rapidxml.hpp:764
xml_node< Ch > * m_parent
Definition: rapidxml.hpp:801
xml_base()
Definition: rapidxml.hpp:670
void name(const Ch *name_)
Definition: rapidxml.hpp:743
xml_node< Ch > * parent() const
Definition: rapidxml.hpp:783
Ch * value() const
Definition: rapidxml.hpp:705
Definition: rapidxml.hpp:1372
xml_node< Ch > * parse_element(Ch *&text)
Definition: rapidxml.hpp:2052
void clear()
Definition: rapidxml.hpp:1428
void parse_bom(Ch *&text)
Definition: rapidxml.hpp:1738
xml_node< Ch > * parse_xml_declaration(Ch *&text)
Definition: rapidxml.hpp:1751
static Ch * skip_and_expand_character_refs(Ch *&text, bool preserve_space)
Definition: rapidxml.hpp:1583
Ch parse_and_append_data(xml_node< Ch > *node, Ch *&text, Ch *contents_start)
Definition: rapidxml.hpp:1953
void parse_node_contents(Ch *&text, xml_node< Ch > *node)
Definition: rapidxml.hpp:2182
xml_node< Ch > * parse_doctype(Ch *&text)
Definition: rapidxml.hpp:1827
xml_node< Ch > * parse_cdata(Ch *&text)
Definition: rapidxml.hpp:2013
void parse_node_attributes(Ch *&text, xml_node< Ch > *node)
Definition: rapidxml.hpp:2264
static void skip(Ch *&text)
Definition: rapidxml.hpp:1571
xml_node< Ch > * parse_pi(Ch *&text)
Definition: rapidxml.hpp:1893
static void insert_coded_character(Ch *&text, unsigned long code)
Definition: rapidxml.hpp:1524
xml_node< Ch > * parse_comment(Ch *&text)
Definition: rapidxml.hpp:1786
xml_node< Ch > * parse_node(Ch *&text)
Definition: rapidxml.hpp:2096
xml_document()
Constructs empty XML document.
Definition: rapidxml.hpp:1377
void parse(Ch *text)
Definition: rapidxml.hpp:1394
void append_attribute(xml_attribute< Ch > *attribute)
Definition: rapidxml.hpp:1230
xml_attribute< Ch > * m_last_attribute
Definition: rapidxml.hpp:1354
void operator=(const xml_node &)
void insert_node(xml_node< Ch > *where, xml_node< Ch > *child)
Definition: rapidxml.hpp:1132
void insert_attribute(xml_attribute< Ch > *where, xml_attribute< Ch > *attribute)
Definition: rapidxml.hpp:1252
xml_node(node_type type_)
Definition: rapidxml.hpp:914
void remove_node(xml_node< Ch > *where)
Removes specified child from the node.
Definition: rapidxml.hpp:1184
xml_node< Ch > * previous_sibling(const Ch *name=0, std::size_t name_size=0, bool case_sensitive=true) const
Definition: rapidxml.hpp:994
xml_node< Ch > * next_sibling(const Ch *name_=0, std::size_t name_size_=0, bool case_sensitive=true) const
Definition: rapidxml.hpp:1017
void remove_all_nodes()
Removes all child nodes (but not attributes).
Definition: rapidxml.hpp:1201
void remove_first_node()
Definition: rapidxml.hpp:1153
void append_node(xml_node< Ch > *child)
Definition: rapidxml.hpp:1110
xml_document< Ch > * document() const
Definition: rapidxml.hpp:936
xml_node(const xml_node &)
node_type type() const
Definition: rapidxml.hpp:926
void remove_last_attribute()
Definition: rapidxml.hpp:1290
void type(node_type type_)
Definition: rapidxml.hpp:1078
void remove_all_attributes()
Removes all attributes of node.
Definition: rapidxml.hpp:1322
xml_node< Ch > * last_node(const Ch *name=0, std::size_t name_size=0, bool case_sensitive=true) const
Definition: rapidxml.hpp:971
void remove_first_attribute()
Definition: rapidxml.hpp:1273
xml_node< Ch > * m_first_node
Definition: rapidxml.hpp:1351
void remove_last_node()
Definition: rapidxml.hpp:1168
xml_node< Ch > * m_last_node
Definition: rapidxml.hpp:1352
xml_attribute< Ch > * last_attribute(const Ch *name=0, std::size_t name_size=0, bool case_sensitive=true) const
Definition: rapidxml.hpp:1058
xml_node< Ch > * m_next_sibling
Definition: rapidxml.hpp:1356
void prepend_attribute(xml_attribute< Ch > *attribute)
Definition: rapidxml.hpp:1210
node_type m_type
Definition: rapidxml.hpp:1350
xml_node< Ch > * first_node(const Ch *name_=0, std::size_t name_size_=0, bool case_sensitive=true) const
Definition: rapidxml.hpp:949
xml_attribute< Ch > * first_attribute(const Ch *name_=0, std::size_t name_size_=0, bool case_sensitive=true) const
Definition: rapidxml.hpp:1038
void prepend_node(xml_node< Ch > *child)
Definition: rapidxml.hpp:1089
void remove_attribute(xml_attribute< Ch > *where)
Definition: rapidxml.hpp:1306
xml_attribute< Ch > * m_first_attribute
Definition: rapidxml.hpp:1353
xml_node< Ch > * m_prev_sibling
Definition: rapidxml.hpp:1355
#define CEREAL_NOEXCEPT
Defines the CEREAL_NOEXCEPT macro to use instead of noexcept.
Definition: macros.hpp:130
type
The type the bitset is encoded with.
Definition: bitset.hpp:44
const int parse_non_destructive
Definition: rapidxml.hpp:274
const int parse_no_string_terminators
Definition: rapidxml.hpp:184
const int parse_normalize_whitespace
Definition: rapidxml.hpp:252
const int parse_no_data_nodes
Definition: rapidxml.hpp:168
const int parse_no_element_values
Definition: rapidxml.hpp:177
const int parse_fastest
Definition: rapidxml.hpp:279
const int parse_comment_nodes
Definition: rapidxml.hpp:212
const int parse_pi_nodes
Definition: rapidxml.hpp:227
const int parse_validate_closing_tags
Definition: rapidxml.hpp:235
const int parse_default
Definition: rapidxml.hpp:264
const int parse_no_entity_translation
Definition: rapidxml.hpp:191
node_type
Definition: rapidxml.hpp:149
@ node_doctype
A DOCTYPE node. Name is empty. Value contains DOCTYPE text.
Definition: rapidxml.hpp:156
@ node_document
A document node. Name and value are empty.
Definition: rapidxml.hpp:150
@ node_comment
A comment node. Name is empty. Value contains comment text.
Definition: rapidxml.hpp:154
@ node_declaration
A declaration node. Name and value are empty. Declaration parameters (version, encoding and standalon...
Definition: rapidxml.hpp:155
@ node_data
A data node. Name is empty. Value contains data text.
Definition: rapidxml.hpp:152
@ node_cdata
A CDATA node. Name is empty. Value contains data text.
Definition: rapidxml.hpp:153
@ node_pi
A PI node. Name contains target. Value contains instructions.
Definition: rapidxml.hpp:157
@ node_element
An element node. Name contains element name. Value contains text of first data node.
Definition: rapidxml.hpp:151
const int parse_full
Definition: rapidxml.hpp:285
const int parse_doctype_node
Definition: rapidxml.hpp:220
const int parse_trim_whitespace
Definition: rapidxml.hpp:243
const int parse_no_utf8
Definition: rapidxml.hpp:198
const int parse_declaration_node
Definition: rapidxml.hpp:205
in certain simple scenarios. They should probably not be used if maximizing performance is the main o...
Definition: access.hpp:42
Flags
Special flags for archives.
Definition: cereal.hpp:185
Definition: document.h:416
const GenericPointer< typename T::ValueType > T2 value
Definition: pointer.h:1282
const CharType(& source)[N]
Definition: pointer.h:1204
#define CEREAL_RAPIDXML_ALIGNMENT
Definition: rapidxml.hpp:135
#define CEREAL_RAPIDXML_STATIC_POOL_SIZE
Definition: rapidxml.hpp:120
#define CEREAL_RAPIDXML_DYNAMIC_POOL_SIZE
Definition: rapidxml.hpp:127
#define CEREAL_RAPIDXML_PARSE_ERROR(what, where)
Definition: rapidxml.hpp:57
Definition: rapidxml.hpp:1460
static unsigned char test(Ch ch)
Definition: rapidxml.hpp:1461
Definition: rapidxml.hpp:1497
static unsigned char test(Ch ch)
Definition: rapidxml.hpp:1498
Definition: rapidxml.hpp:1511
static unsigned char test(Ch ch)
Definition: rapidxml.hpp:1512
Definition: rapidxml.hpp:1451
static unsigned char test(Ch ch)
Definition: rapidxml.hpp:1452
Definition: rapidxml.hpp:1469
static unsigned char test(Ch ch)
Definition: rapidxml.hpp:1470
Definition: rapidxml.hpp:1478
static unsigned char test(Ch ch)
Definition: rapidxml.hpp:1479
Definition: rapidxml.hpp:1487
static unsigned char test(Ch ch)
Definition: rapidxml.hpp:1488
Definition: rapidxml.hpp:1442
static unsigned char test(Ch ch)
Definition: rapidxml.hpp:1443
#define const
Definition: zconf.h:233