diff options
| author | Kevin Smith <git@kismith.co.uk> | 2013-01-04 19:42:37 (GMT) | 
|---|---|---|
| committer | Kevin Smith <git@kismith.co.uk> | 2013-04-06 13:36:54 (GMT) | 
| commit | 3333ab69d62d1be7ae7dd7a4e56cc4bb608d3add (patch) | |
| tree | 5ee630b666ae21dd4c4202703c158383de1faf91 /3rdParty/Boost/src/boost/archive/iterators/xml_escape.hpp | |
| parent | b9ef4566d31219d66a615b1eae042a01828c8b7d (diff) | |
| download | swift-contrib-3333ab69d62d1be7ae7dd7a4e56cc4bb608d3add.zip swift-contrib-3333ab69d62d1be7ae7dd7a4e56cc4bb608d3add.tar.bz2 | |
Add boost serialization library
We'll need it before too long
Change-Id: Ia34c7f26e1aedbc13a2fc10c980994cbcb7cb348
Diffstat (limited to '3rdParty/Boost/src/boost/archive/iterators/xml_escape.hpp')
| -rw-r--r-- | 3rdParty/Boost/src/boost/archive/iterators/xml_escape.hpp | 125 | 
1 files changed, 125 insertions, 0 deletions
| diff --git a/3rdParty/Boost/src/boost/archive/iterators/xml_escape.hpp b/3rdParty/Boost/src/boost/archive/iterators/xml_escape.hpp new file mode 100644 index 0000000..eadb96e --- /dev/null +++ b/3rdParty/Boost/src/boost/archive/iterators/xml_escape.hpp @@ -0,0 +1,125 @@ +#ifndef BOOST_ARCHIVE_ITERATORS_XML_ESCAPE_HPP +#define BOOST_ARCHIVE_ITERATORS_XML_ESCAPE_HPP + +// MS compatible compilers support #pragma once +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +# pragma once +#endif + +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// xml_escape.hpp + +// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com .  +// Use, modification and distribution is subject to the Boost Software +// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +//  See http://www.boost.org for updates, documentation, and revision history. + +#include <boost/assert.hpp> + +#include <boost/config.hpp> // for BOOST_DEDUCED_TYPENAME +#include <boost/serialization/pfto.hpp> + +#include <boost/archive/iterators/escape.hpp> + +namespace boost {  +namespace archive { +namespace iterators { + +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// insert escapes into xml text + +template<class Base> +class xml_escape  +    : public escape<xml_escape<Base>, Base> +{ +    friend class boost::iterator_core_access; + +    typedef escape<xml_escape<Base>, Base> super_t; + +public: +    char fill(const char * & bstart, const char * & bend); +    wchar_t fill(const wchar_t * & bstart, const wchar_t * & bend); + +    template<class T> +    xml_escape(BOOST_PFTO_WRAPPER(T) start) : +        super_t(Base(BOOST_MAKE_PFTO_WRAPPER(static_cast< T >(start)))) +    {} +    // intel 7.1 doesn't like default copy constructor +    xml_escape(const xml_escape & rhs) :  +        super_t(rhs.base_reference()) +    {} +}; + +template<class Base> +char xml_escape<Base>::fill( +    const char * & bstart,  +    const char * & bend +){ +    char current_value = * this->base_reference(); +    switch(current_value){ +    case '<': +        bstart = "<"; +        bend = bstart + 4; +        break; +    case '>': +        bstart = ">"; +        bend = bstart + 4; +        break; +    case '&': +        bstart = "&"; +        bend = bstart + 5; +        break; +    case '"': +        bstart = """; +        bend = bstart + 6; +        break; +    case '\'': +        bstart = "'"; +        bend = bstart + 6; +        break; +    default: +        return current_value; +    } +    return *bstart; +} + +template<class Base> +wchar_t xml_escape<Base>::fill( +    const wchar_t * & bstart,  +    const wchar_t * & bend +){ +    wchar_t current_value = * this->base_reference(); +    switch(current_value){ +    case '<': +        bstart = L"<"; +        bend = bstart + 4; +        break; +    case '>': +        bstart = L">"; +        bend = bstart + 4; +        break; +    case '&': +        bstart = L"&"; +        bend = bstart + 5; +        break; +    case '"': +        bstart = L"""; +        bend = bstart + 6; +        break; +    case '\'': +        bstart = L"'"; +        bend = bstart + 6; +        break; +    default: +        return current_value; +    } +    return *bstart; +} + +} // namespace iterators +} // namespace archive +} // namespace boost + +#endif // BOOST_ARCHIVE_ITERATORS_XML_ESCAPE_HPP | 
 Swift
 Swift