annotate DEPENDENCIES/generic/include/boost/spirit/home/x3/numeric/bool.hpp @ 118:770eb830ec19 emscripten

Typo fix
author Chris Cannam
date Wed, 18 May 2016 16:14:08 +0100
parents f46d142149f5
children
rev   line source
Chris@102 1 /*=============================================================================
Chris@102 2 Copyright (c) 2009 Hartmut Kaiser
Chris@102 3 Copyright (c) 2014 Joel de Guzman
Chris@102 4
Chris@102 5 Distributed under the Boost Software License, Version 1.0. (See accompanying
Chris@102 6 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
Chris@102 7 ==============================================================================*/
Chris@102 8 #if !defined(SPIRIT_X3_BOOL_SEP_29_2009_0709AM)
Chris@102 9 #define SPIRIT_X3_BOOL_SEP_29_2009_0709AM
Chris@102 10
Chris@102 11 #include <boost/spirit/home/x3/core/parser.hpp>
Chris@102 12 #include <boost/spirit/home/x3/core/skip_over.hpp>
Chris@102 13 #include <boost/spirit/home/x3/numeric/bool_policies.hpp>
Chris@102 14
Chris@102 15 namespace boost { namespace spirit { namespace x3
Chris@102 16 {
Chris@102 17 template <typename T, typename BoolPolicies = bool_policies<T>>
Chris@102 18 struct bool_parser : parser<bool_parser<T, BoolPolicies>>
Chris@102 19 {
Chris@102 20 typedef T attribute_type;
Chris@102 21 static bool const has_attribute = true;
Chris@102 22
Chris@102 23 bool_parser()
Chris@102 24 : policies() {}
Chris@102 25
Chris@102 26 bool_parser(BoolPolicies const& policies)
Chris@102 27 : policies(policies) {}
Chris@102 28
Chris@102 29 template <typename Iterator, typename Context>
Chris@102 30 bool parse(Iterator& first, Iterator const& last
Chris@102 31 , Context& context, unused_type, T& attr) const
Chris@102 32 {
Chris@102 33 x3::skip_over(first, last, context);
Chris@102 34 return policies.parse_true(first, last, attr)
Chris@102 35 || policies.parse_false(first, last, attr);
Chris@102 36 }
Chris@102 37
Chris@102 38 template <typename Iterator, typename Context, typename Attribute>
Chris@102 39 bool parse(Iterator& first, Iterator const& last
Chris@102 40 , Context& context, unused_type, Attribute& attr_param) const
Chris@102 41 {
Chris@102 42 // this case is called when Attribute is not T
Chris@102 43 T attr_;
Chris@102 44 if (parse(first, last, context, unused, attr_))
Chris@102 45 {
Chris@102 46 traits::move_to(attr_, attr_param);
Chris@102 47 return true;
Chris@102 48 }
Chris@102 49 return false;
Chris@102 50 }
Chris@102 51
Chris@102 52 BoolPolicies policies;
Chris@102 53 };
Chris@102 54
Chris@102 55 template <typename T, typename BoolPolicies = bool_policies<T>>
Chris@102 56 struct literal_bool_parser : parser<bool_parser<T, BoolPolicies>>
Chris@102 57 {
Chris@102 58 typedef T attribute_type;
Chris@102 59 static bool const has_attribute = true;
Chris@102 60
Chris@102 61 template <typename Value>
Chris@102 62 literal_bool_parser(Value const& n)
Chris@102 63 : policies(), n_(n) {}
Chris@102 64
Chris@102 65 template <typename Value>
Chris@102 66 literal_bool_parser(Value const& n, BoolPolicies const& policies)
Chris@102 67 : policies(policies), n_(n) {}
Chris@102 68
Chris@102 69 template <typename Iterator, typename Context>
Chris@102 70 bool parse(Iterator& first, Iterator const& last
Chris@102 71 , Context& context, unused_type, T& attr) const
Chris@102 72 {
Chris@102 73 x3::skip_over(first, last, context);
Chris@102 74 return (n_ && policies.parse_true(first, last, attr))
Chris@102 75 || (!n_ && policies.parse_false(first, last, attr));
Chris@102 76 }
Chris@102 77
Chris@102 78 template <typename Iterator, typename Context, typename Attribute>
Chris@102 79 bool parse(Iterator& first, Iterator const& last
Chris@102 80 , Context& context, unused_type, Attribute& attr_param) const
Chris@102 81 {
Chris@102 82 // this case is called when Attribute is not T
Chris@102 83 T attr_;
Chris@102 84 if (parse(first, last, context, unused, attr_))
Chris@102 85 {
Chris@102 86 traits::move_to(attr_, attr_param);
Chris@102 87 return true;
Chris@102 88 }
Chris@102 89 return false;
Chris@102 90 }
Chris@102 91
Chris@102 92 BoolPolicies policies;
Chris@102 93 T n_;
Chris@102 94 };
Chris@102 95
Chris@102 96 typedef bool_parser<bool> bool_type;
Chris@102 97 bool_type const bool_ = {};
Chris@102 98
Chris@102 99 typedef literal_bool_parser<bool> true_type;
Chris@102 100 true_type const true_ = { true };
Chris@102 101
Chris@102 102 typedef literal_bool_parser<bool> false_type;
Chris@102 103 false_type const false_ = { false };
Chris@102 104 }}}
Chris@102 105
Chris@102 106 #endif