12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- // Copyright (c) 2001-2011 Hartmut Kaiser
- //
- // Distributed under 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)
- #if !defined(BOOST_SPIRIT_KARMA_BOOL_UTILS_SEP_28_2009_0644PM)
- #define BOOST_SPIRIT_KARMA_BOOL_UTILS_SEP_28_2009_0644PM
- #if defined(_MSC_VER)
- #pragma once
- #endif
- #include <boost/spirit/home/support/char_class.hpp>
- #include <boost/spirit/home/support/unused.hpp>
- #include <boost/spirit/home/karma/detail/generate_to.hpp>
- #include <boost/spirit/home/karma/detail/string_generate.hpp>
- #include <boost/spirit/home/karma/numeric/detail/numeric_utils.hpp>
- #include <boost/detail/workaround.hpp>
- namespace boost { namespace spirit { namespace karma
- {
- ///////////////////////////////////////////////////////////////////////////
- //
- // The bool_inserter template takes care of the boolean to string
- // conversion. The Policies template parameter is used to allow
- // customization of the formatting process
- //
- ///////////////////////////////////////////////////////////////////////////
- template <typename T>
- struct bool_policies;
- template <typename T
- , typename Policies = bool_policies<T>
- , typename CharEncoding = unused_type
- , typename Tag = unused_type>
- struct bool_inserter
- {
- template <typename OutputIterator, typename U>
- static bool
- call (OutputIterator& sink, U b, Policies const& p = Policies())
- {
- #if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1600))
- (void)p; // suppresses warning: C4100: 'p' : unreferenced formal parameter
- #endif
- return p.template call<bool_inserter>(sink, T(b), p);
- }
- ///////////////////////////////////////////////////////////////////////
- // This is the workhorse behind the real generator
- ///////////////////////////////////////////////////////////////////////
- template <typename OutputIterator, typename U>
- static bool
- call_n (OutputIterator& sink, U b, Policies const& p)
- {
- #if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1600))
- (void)p; // suppresses warning: C4100: 'p' : unreferenced formal parameter
- #endif
- if (b)
- return p.template generate_true<CharEncoding, Tag>(sink, b);
- return p.template generate_false<CharEncoding, Tag>(sink, b);
- }
- };
- }}}
- #endif
|