10 #ifndef BOOST_PROPERTY_TREE_RAPIDXML_HPP_INCLUDED
11 #define BOOST_PROPERTY_TREE_RAPIDXML_HPP_INCLUDED
23 #pragma warning(disable:4127) // Conditional expression is constant
31 #define BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR(what, where) throw parse_error(what, where)
33 namespace boost {
namespace property_tree {
namespace detail {
namespace rapidxml
61 virtual const char *
what()
const throw()
86 #ifndef BOOST_PROPERTY_TREE_RAPIDXML_STATIC_POOL_SIZE
90 #define BOOST_PROPERTY_TREE_RAPIDXML_STATIC_POOL_SIZE (64 * 1024)
93 #ifndef BOOST_PROPERTY_TREE_RAPIDXML_DYNAMIC_POOL_SIZE
97 #define BOOST_PROPERTY_TREE_RAPIDXML_DYNAMIC_POOL_SIZE (64 * 1024)
100 #ifndef BOOST_PROPERTY_TREE_RAPIDXML_ALIGNMENT
105 #define BOOST_PROPERTY_TREE_RAPIDXML_ALIGNMENT sizeof(void *)
108 namespace boost {
namespace property_tree {
namespace detail {
namespace rapidxml
268 static const unsigned char lookup_whitespace[256];
269 static const unsigned char lookup_node_name[256];
270 static const unsigned char lookup_text[256];
271 static const unsigned char lookup_text_pure_no_ws[256];
272 static const unsigned char lookup_text_pure_with_ws[256];
273 static const unsigned char lookup_attribute_name[256];
274 static const unsigned char lookup_attribute_data_1[256];
275 static const unsigned char lookup_attribute_data_1_pure[256];
276 static const unsigned char lookup_attribute_data_2[256];
277 static const unsigned char lookup_attribute_data_2_pure[256];
278 static const unsigned char lookup_digits[256];
279 static const unsigned char lookup_upcase[256];
284 inline std::size_t measure(
const Ch *p)
294 inline bool compare(
const Ch *p1, std::size_t size1,
const Ch *p2, std::size_t size2,
bool case_sensitive)
300 for (
const Ch *
end = p1 + size1; p1 <
end; ++p1, ++p2)
306 for (
const Ch *
end = p1 + size1; p1 <
end; ++p1, ++p2)
307 if (lookup_tables<0>::lookup_upcase[
static_cast<unsigned char>(*p1)] != lookup_tables<0>::lookup_upcase[
static_cast<unsigned char>(*p2)])
314 inline size_t get_index(
const Ch c)
365 template<
class Ch =
char>
373 typedef void *(boost_ptree_raw_alloc_func)(std::size_t);
374 typedef void (boost_ptree_raw_free_func)(
void *);
404 const Ch *name = 0,
const Ch *value = 0,
405 std::size_t name_size = 0, std::size_t value_size = 0)
412 node->name(name, name_size);
419 node->value(value, value_size);
436 std::size_t name_size = 0, std::size_t value_size = 0)
443 attribute->name(name, name_size);
445 attribute->name(name);
450 attribute->value(value, value_size);
452 attribute->value(value);
468 size = internal::measure(source) + 1;
471 for (std::size_t
i = 0;
i < size; ++
i)
472 result[
i] = source[
i];
490 result->remove_all_attributes();
491 result->remove_all_nodes();
492 result->type(source->
type());
498 result->name(source->name(), source->name_size());
499 result->value(source->value(), source->value_size());
505 result->append_attribute(
allocate_attribute(attr->name(), attr->value(), attr->name_size(), attr->value_size()));
540 void set_allocator(boost_ptree_raw_alloc_func *af, boost_ptree_raw_free_func *ff)
564 return ptr + alignment;
578 memory =
new char[size];
580 return static_cast<char *
>(memory);
589 if (result + size >
m_end)
593 if (pool_size < size)
601 char *pool =
align(raw_memory);
606 m_end = raw_memory + alloc_size;
613 m_ptr = result + size;
631 template<
class Ch =
char>
716 name(n, internal::measure(n));
746 this->
value(val, internal::measure(val));
764 static Ch zero =
Ch(
'\0');
781 template<
class Ch =
char>
807 while (node->parent())
808 node = node->parent();
825 nsize = internal::measure(n);
827 if (
internal::compare(attribute->name(), attribute->name_size(), n, nsize, case_sensitive))
845 nsize = internal::measure(n);
847 if (
internal::compare(attribute->name(), attribute->name_size(), n, nsize, case_sensitive))
873 template<
class Ch =
char>
910 while (node->parent())
911 node = node->parent();
925 nsize = internal::measure(n);
927 if (
internal::compare(child->name(), child->name_size(), n, nsize, case_sensitive))
948 nsize = internal::measure(n);
950 if (
internal::compare(child->name(), child->name_size(), n, nsize, case_sensitive))
971 nsize = internal::measure(n);
973 if (
internal::compare(sibling->name(), sibling->name_size(), n, nsize, case_sensitive))
994 nsize = internal::measure(n);
996 if (
internal::compare(sibling->name(), sibling->name_size(), n, nsize, case_sensitive))
1014 nsize = internal::measure(n);
1016 if (
internal::compare(attribute->name(), attribute->name_size(), n, nsize, case_sensitive))
1034 nsize = internal::measure(n);
1036 if (
internal::compare(attribute->name(), attribute->name_size(), n, nsize, case_sensitive))
1074 child->m_parent =
this;
1095 child->m_parent =
this;
1109 else if (where == 0)
1117 child->m_parent =
this;
1133 child->m_parent = 0;
1150 child->m_parent = 0;
1167 where->m_parent = 0;
1195 attribute->m_parent =
this;
1215 attribute->m_parent =
this;
1229 else if (where == 0)
1237 attribute->m_parent =
this;
1254 attribute->m_parent = 0;
1272 attribute->m_parent = 0;
1288 where->m_parent = 0;
1296 attribute->m_parent = 0;
1341 template<
class Ch =
char>
1370 this->remove_all_nodes();
1371 this->remove_all_attributes();
1374 parse_bom<Flags>(text);
1380 skip<whitespace_pred, Flags>(text);
1385 if (*text ==
Ch(
'<'))
1389 this->append_node(node);
1401 this->remove_all_nodes();
1402 this->remove_all_attributes();
1416 return internal::lookup_tables<0>::lookup_whitespace[internal::get_index(ch)];
1425 return internal::lookup_tables<0>::lookup_node_name[internal::get_index(ch)];
1434 return internal::lookup_tables<0>::lookup_attribute_name[internal::get_index(ch)];
1443 return internal::lookup_tables<0>::lookup_text[internal::get_index(ch)];
1452 return internal::lookup_tables<0>::lookup_text_pure_no_ws[internal::get_index(ch)];
1461 return internal::lookup_tables<0>::lookup_text_pure_with_ws[internal::get_index(ch)];
1471 if (Quote ==
Ch(
'\''))
1472 return internal::lookup_tables<0>::lookup_attribute_data_1[internal::get_index(ch)];
1473 if (Quote ==
Ch(
'\"'))
1474 return internal::lookup_tables<0>::lookup_attribute_data_2[internal::get_index(ch)];
1485 if (Quote ==
Ch(
'\''))
1486 return internal::lookup_tables<0>::lookup_attribute_data_1_pure[internal::get_index(ch)];
1487 if (Quote ==
Ch(
'\"'))
1488 return internal::lookup_tables<0>::lookup_attribute_data_2_pure[internal::get_index(ch)];
1501 text[0] =
static_cast<unsigned char>(code);
1509 text[0] =
static_cast<unsigned char>(code);
1512 else if (code < 0x800)
1514 text[1] =
static_cast<unsigned char>((code | 0x80) & 0xBF); code >>= 6;
1515 text[0] =
static_cast<unsigned char>(code | 0xC0);
1518 else if (code < 0x10000)
1520 text[2] =
static_cast<unsigned char>((code | 0x80) & 0xBF); code >>= 6;
1521 text[1] =
static_cast<unsigned char>((code | 0x80) & 0xBF); code >>= 6;
1522 text[0] =
static_cast<unsigned char>(code | 0xE0);
1525 else if (code < 0x110000)
1527 text[3] =
static_cast<unsigned char>((code | 0x80) & 0xBF); code >>= 6;
1528 text[2] =
static_cast<unsigned char>((code | 0x80) & 0xBF); code >>= 6;
1529 text[1] =
static_cast<unsigned char>((code | 0x80) & 0xBF); code >>= 6;
1530 text[0] =
static_cast<unsigned char>(code | 0xF0);
1541 template<
class StopPred,
int Flags>
1545 while (StopPred::test(*tmp))
1553 template<
class StopPred,
class StopPredPure,
int Flags>
1561 skip<StopPred, Flags>(text);
1566 skip<StopPredPure, Flags>(text);
1571 while (StopPred::test(*src))
1577 if (src[0] ==
Ch(
'&'))
1584 if (src[2] ==
Ch(
'm') && src[3] ==
Ch(
'p') && src[4] ==
Ch(
';'))
1591 if (src[2] ==
Ch(
'p') && src[3] ==
Ch(
'o') && src[4] ==
Ch(
's') && src[5] ==
Ch(
';'))
1602 if (src[2] ==
Ch(
'u') && src[3] ==
Ch(
'o') && src[4] ==
Ch(
't') && src[5] ==
Ch(
';'))
1613 if (src[2] ==
Ch(
't') && src[3] ==
Ch(
';'))
1624 if (src[2] ==
Ch(
't') && src[3] ==
Ch(
';'))
1635 if (src[2] ==
Ch(
'x'))
1637 unsigned long code = 0;
1641 unsigned char digit = internal::lookup_tables<0>::lookup_digits[
static_cast<unsigned char>(*src)];
1644 code = code * 16 + digit;
1647 insert_coded_character<Flags>(dest, code);
1651 unsigned long code = 0;
1655 unsigned char digit = internal::lookup_tables<0>::lookup_digits[
static_cast<unsigned char>(*src)];
1658 code = code * 10 + digit;
1661 insert_coded_character<Flags>(dest, code);
1663 if (*src ==
Ch(
';'))
1684 *dest =
Ch(
' '); ++dest;
1711 if (
static_cast<unsigned char>(text[0]) == 0xEF &&
1712 static_cast<unsigned char>(text[1]) == 0xBB &&
1713 static_cast<unsigned char>(text[2]) == 0xBF)
1723 const wchar_t bom = 0xFEFF;
1738 while (text[0] !=
Ch(
'?') || text[1] !=
Ch(
'>'))
1752 skip<whitespace_pred, Flags>(text);
1755 parse_node_attributes<Flags>(text, declaration);
1758 if (text[0] !=
Ch(
'?') || text[1] !=
Ch(
'>'))
1773 while (text[0] !=
Ch(
'-') || text[1] !=
Ch(
'-') || text[2] !=
Ch(
'>'))
1787 while (text[0] !=
Ch(
'-') || text[1] !=
Ch(
'-') || text[2] !=
Ch(
'>'))
1796 comment->value(val, text - val);
1814 while (*text !=
Ch(
'>'))
1830 case Ch(
'['): ++depth;
break;
1831 case Ch(
']'): --depth;
break;
1856 doctype->value(val, text - val);
1885 skip<node_name_pred, Flags>(text);
1888 pi->name(n, text - n);
1891 skip<whitespace_pred, Flags>(text);
1897 while (text[0] !=
Ch(
'?') || text[1] !=
Ch(
'>'))
1899 if (*text ==
Ch(
'\0'))
1905 pi->value(val, text - val);
1910 pi->name()[pi->name_size()] =
Ch(
'\0');
1911 pi->value()[pi->value_size()] =
Ch(
'\0');
1920 while (text[0] !=
Ch(
'?') || text[1] !=
Ch(
'>'))
1922 if (*text ==
Ch(
'\0'))
1939 text = contents_start;
1942 Ch *val = text, *
end;
1944 end = skip_and_expand_character_refs<text_pred, text_pure_with_ws_pred, Flags>(text);
1946 end = skip_and_expand_character_refs<text_pred, text_pure_no_ws_pred, Flags>(text);
1954 if (*(
end - 1) ==
Ch(
' '))
1976 if (*node->value() ==
Ch(
'\0'))
1977 node->value(val,
end - val);
1999 while (text[0] !=
Ch(
']') || text[1] !=
Ch(
']') || text[2] !=
Ch(
'>'))
2011 while (text[0] !=
Ch(
']') || text[1] !=
Ch(
']') || text[2] !=
Ch(
'>'))
2020 cdata->value(val, text - val);
2039 skip<node_name_pred, Flags>(text);
2042 element->name(n, text - n);
2045 skip<whitespace_pred, Flags>(text);
2048 parse_node_attributes<Flags>(text, element);
2051 if (*text ==
Ch(
'>'))
2054 parse_node_contents<Flags>(text, element);
2056 else if (*text ==
Ch(
'/'))
2059 if (*text !=
Ch(
'>'))
2068 element->name()[element->name_size()] =
Ch(
'\0');
2085 return parse_element<Flags>(text);
2090 if ((text[0] ==
Ch(
'x') || text[0] ==
Ch(
'X')) &&
2091 (text[1] ==
Ch(
'm') || text[1] ==
Ch(
'M')) &&
2092 (text[2] ==
Ch(
'l') || text[2] ==
Ch(
'L')) &&
2097 return parse_xml_declaration<Flags>(text);
2102 return parse_pi<Flags>(text);
2114 if (text[2] ==
Ch(
'-'))
2118 return parse_comment<Flags>(text);
2124 if (text[2] ==
Ch(
'C') && text[3] ==
Ch(
'D') && text[4] ==
Ch(
'A') &&
2125 text[5] ==
Ch(
'T') && text[6] ==
Ch(
'A') && text[7] ==
Ch(
'['))
2129 return parse_cdata<Flags>(text);
2135 if (text[2] ==
Ch(
'O') && text[3] ==
Ch(
'C') && text[4] ==
Ch(
'T') &&
2136 text[5] ==
Ch(
'Y') && text[6] ==
Ch(
'P') && text[7] ==
Ch(
'E') &&
2141 return parse_doctype<Flags>(text);
2151 while (*text !=
Ch(
'>'))
2171 Ch *contents_start = text;
2173 skip<whitespace_pred, Flags>(text);
2174 Ch next_char = *text;
2188 if (text[1] ==
Ch(
'/'))
2195 Ch *closing_name = text;
2196 skip<node_name_pred, Flags>(text);
2197 if (!
internal::compare(node->name(), node->name_size(), closing_name, text - closing_name,
true))
2203 skip<node_name_pred, Flags>(text);
2206 skip<whitespace_pred, Flags>(text);
2207 if (*text !=
Ch(
'>'))
2227 next_char = parse_and_append_data<Flags>(node, text, contents_start);
2228 goto after_data_node;
2244 skip<attribute_name_pred, Flags>(text);
2250 attribute->name(n, text - n);
2254 skip<whitespace_pred, Flags>(text);
2257 if (*text !=
Ch(
'='))
2263 attribute->name()[attribute->name_size()] = 0;
2266 skip<whitespace_pred, Flags>(text);
2270 if (quote !=
Ch(
'\'') && quote !=
Ch(
'"'))
2275 Ch *val = text, *
end;
2277 if (quote ==
Ch(
'\''))
2283 attribute->value(val,
end - val);
2292 attribute->value()[attribute->value_size()] = 0;
2295 skip<whitespace_pred, Flags>(text);
2307 const unsigned char lookup_tables<Dummy>::lookup_whitespace[256] =
2310 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0,
2311 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2312 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2313 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2314 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2315 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2316 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2317 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2318 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2319 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2320 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2321 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2322 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2323 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2324 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2325 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
2330 const unsigned char lookup_tables<Dummy>::lookup_node_name[256] =
2333 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1,
2334 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2335 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
2336 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
2337 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2338 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2339 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2340 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2341 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2342 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2343 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2344 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2345 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2346 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2347 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2348 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
2353 const unsigned char lookup_tables<Dummy>::lookup_text[256] =
2356 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2357 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2358 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2359 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1,
2360 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2361 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2362 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2363 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2364 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
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
2377 const unsigned char lookup_tables<Dummy>::lookup_text_pure_no_ws[256] =
2380 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2381 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2382 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2383 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1,
2384 1, 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, 1, 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
2401 const unsigned char lookup_tables<Dummy>::lookup_text_pure_with_ws[256] =
2404 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1,
2405 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2406 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2407 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1,
2408 1, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2411 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 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
2424 const unsigned char lookup_tables<Dummy>::lookup_attribute_name[256] =
2427 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1,
2428 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2429 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
2430 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0,
2431 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2432 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2433 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2434 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2435 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 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
2447 const unsigned char lookup_tables<Dummy>::lookup_attribute_data_1[256] =
2450 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2451 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2452 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1,
2453 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2454 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2455 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2456 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2457 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2458 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
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
2470 const unsigned char lookup_tables<Dummy>::lookup_attribute_data_1_pure[256] =
2473 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2474 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2475 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1,
2476 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2477 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2478 1, 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, 1, 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
2493 const unsigned char lookup_tables<Dummy>::lookup_attribute_data_2[256] =
2496 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2497 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2498 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2499 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2500 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2501 1, 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, 1, 1, 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
2516 const unsigned char lookup_tables<Dummy>::lookup_attribute_data_2_pure[256] =
2519 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2520 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2521 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2522 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2523 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2524 1, 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, 1, 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
2539 const unsigned char lookup_tables<Dummy>::lookup_digits[256] =
2542 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
2543 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
2544 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
2545 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,255,255,255,255,255,255,
2546 255, 10, 11, 12, 13, 14, 15,255,255,255,255,255,255,255,255,255,
2547 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
2548 255, 10, 11, 12, 13, 14, 15,255,255,255,255,255,255,255,255,255,
2549 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
2550 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
2551 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
2552 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
2553 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
2554 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
2555 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
2556 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
2557 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
2562 const unsigned char lookup_tables<Dummy>::lookup_upcase[256] =
2565 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
2566 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
2567 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
2568 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
2569 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
2570 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
2571 96, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
2572 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 123,124,125,126,127,
2573 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
2574 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
2575 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,
2576 176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,
2577 192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
2578 208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
2579 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
2580 240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
2588 #undef BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR
2592 #pragma warning(pop)