1/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
2// xml_grammar.cpp:
3
4// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com .
5// Use, modification and distribution is subject to the Boost Software
6// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
7// http://www.boost.org/LICENSE_1_0.txt)
8
9// See http://www.boost.org for updates, documentation, and revision history.
10
11#if (defined _MSC_VER) && (_MSC_VER == 1200)
12# pragma warning (disable : 4786) // too long name, harmless warning
13#endif
14
15#include <boost/config.hpp>
16
17#define BOOST_ARCHIVE_SOURCE
18#include <boost/serialization/config.hpp>
19#include <boost/archive/impl/basic_xml_grammar.hpp>
20
21using namespace boost::spirit::classic;
22
23// fixup for borland
24// The following code will be put into Boost.Config in a later revision
25#if ! defined(__SGI_STL_PORT) \
26&& defined(BOOST_RWSTD_VER) && BOOST_RWSTD_VER<=0x020101
27#include <string>
28namespace std {
29 template<>
30 inline string &
31 string::replace (
32 char * first1,
33 char * last1,
34 const char * first2,
35 const char * last2
36 ){
37 replace(first1-begin(),last1-first1,first2,last2-first2,0,last2-first2);
38 return *this;
39 }
40} // namespace std
41#endif
42
43namespace boost {
44namespace archive {
45
46typedef basic_xml_grammar<char> xml_grammar;
47
48/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
49// specific definitions for char based XML
50
51template<>
52void xml_grammar::init_chset(){
53 Char = chset_t("\x9\xA\xD\x20-\x7f\x80\x81-\xFF");
54 Letter = chset_t("\x41-\x5A\x61-\x7A\xC0-\xD6\xD8-\xF6\xF8-\xFF");
55 Digit = chset_t("0-9");
56 Extender = chset_t('\xB7');
57 Sch = chset_t("\x20\x9\xD\xA");
58 NameChar = Letter | Digit | chset_p(init: "._:-") | Extender ;
59}
60
61} // namespace archive
62} // namespace boost
63
64#include "basic_xml_grammar.ipp"
65
66namespace boost {
67namespace archive {
68
69// explicit instantiation of xml for 8 bit characters
70template class basic_xml_grammar<char>;
71
72} // namespace archive
73} // namespace boost
74
75

source code of boost/libs/serialization/src/xml_grammar.cpp