Brian Silverman | 8867871 | 2018-08-04 23:56:48 -0700 | [diff] [blame^] | 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 | |
| 21 | using 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> |
| 28 | namespace 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 | |
| 43 | namespace boost { |
| 44 | namespace archive { |
| 45 | |
| 46 | typedef basic_xml_grammar<char> xml_grammar; |
| 47 | |
| 48 | /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 |
| 49 | // specific definitions for char based XML |
| 50 | |
| 51 | template<> |
| 52 | void 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("._:-") | Extender ; |
| 59 | } |
| 60 | |
| 61 | } // namespace archive |
| 62 | } // namespace boost |
| 63 | |
| 64 | #include "basic_xml_grammar.ipp" |
| 65 | |
| 66 | namespace boost { |
| 67 | namespace archive { |
| 68 | |
| 69 | // explicit instantiation of xml for 8 bit characters |
| 70 | template class basic_xml_grammar<char>; |
| 71 | |
| 72 | } // namespace archive |
| 73 | } // namespace boost |
| 74 | |