annotate DEPENDENCIES/generic/include/boost/spirit/home/x3/string/tst.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) 2001-2014 Joel de Guzman
Chris@102 3
Chris@102 4 Distributed under the Boost Software License, Version 1.0. (See accompanying
Chris@102 5 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
Chris@102 6 ==============================================================================*/
Chris@102 7 #if !defined(BOOST_SPIRIT_X3_TST_JUNE_03_2007_1031AM)
Chris@102 8 #define BOOST_SPIRIT_X3_TST_JUNE_03_2007_1031AM
Chris@102 9
Chris@102 10 #if defined(_MSC_VER)
Chris@102 11 #pragma once
Chris@102 12 #endif
Chris@102 13
Chris@102 14 #include <boost/spirit/home/x3/string/detail/tst.hpp>
Chris@102 15
Chris@102 16 namespace boost { namespace spirit { namespace x3
Chris@102 17 {
Chris@102 18 struct tst_pass_through
Chris@102 19 {
Chris@102 20 template <typename Char>
Chris@102 21 Char operator()(Char ch) const
Chris@102 22 {
Chris@102 23 return ch;
Chris@102 24 }
Chris@102 25 };
Chris@102 26
Chris@102 27 template <typename Char, typename T>
Chris@102 28 struct tst
Chris@102 29 {
Chris@102 30 typedef Char char_type; // the character type
Chris@102 31 typedef T value_type; // the value associated with each entry
Chris@102 32 typedef detail::tst_node<Char, T> node;
Chris@102 33
Chris@102 34 tst()
Chris@102 35 : root(0)
Chris@102 36 {
Chris@102 37 }
Chris@102 38
Chris@102 39 ~tst()
Chris@102 40 {
Chris@102 41 clear();
Chris@102 42 }
Chris@102 43
Chris@102 44 tst(tst const& rhs)
Chris@102 45 : root(0)
Chris@102 46 {
Chris@102 47 copy(rhs);
Chris@102 48 }
Chris@102 49
Chris@102 50 tst& operator=(tst const& rhs)
Chris@102 51 {
Chris@102 52 return assign(rhs);
Chris@102 53 }
Chris@102 54
Chris@102 55 template <typename Iterator, typename Filter>
Chris@102 56 T* find(Iterator& first, Iterator last, Filter filter) const
Chris@102 57 {
Chris@102 58 return node::find(root, first, last, filter);
Chris@102 59 }
Chris@102 60
Chris@102 61 template <typename Iterator>
Chris@102 62 T* find(Iterator& first, Iterator last) const
Chris@102 63 {
Chris@102 64 return find(first, last, tst_pass_through());
Chris@102 65 }
Chris@102 66
Chris@102 67 template <typename Iterator>
Chris@102 68 T* add(
Chris@102 69 Iterator first
Chris@102 70 , Iterator last
Chris@102 71 , typename boost::call_traits<T>::param_type val)
Chris@102 72 {
Chris@102 73 return node::add(root, first, last, val, this);
Chris@102 74 }
Chris@102 75
Chris@102 76 template <typename Iterator>
Chris@102 77 void remove(Iterator first, Iterator last)
Chris@102 78 {
Chris@102 79 node::remove(root, first, last, this);
Chris@102 80 }
Chris@102 81
Chris@102 82 void clear()
Chris@102 83 {
Chris@102 84 node::destruct_node(root, this);
Chris@102 85 root = 0;
Chris@102 86 }
Chris@102 87
Chris@102 88 template <typename F>
Chris@102 89 void for_each(F f) const
Chris@102 90 {
Chris@102 91 node::for_each(root, std::basic_string<Char>(), f);
Chris@102 92 }
Chris@102 93
Chris@102 94 private:
Chris@102 95
Chris@102 96 friend struct detail::tst_node<Char, T>;
Chris@102 97
Chris@102 98 void copy(tst const& rhs)
Chris@102 99 {
Chris@102 100 root = node::clone_node(rhs.root, this);
Chris@102 101 }
Chris@102 102
Chris@102 103 tst& assign(tst const& rhs)
Chris@102 104 {
Chris@102 105 if (this != &rhs)
Chris@102 106 {
Chris@102 107 clear();
Chris@102 108 copy(rhs);
Chris@102 109 }
Chris@102 110 return *this;
Chris@102 111 }
Chris@102 112
Chris@102 113 node* root;
Chris@102 114
Chris@102 115 node* new_node(Char id)
Chris@102 116 {
Chris@102 117 return new node(id);
Chris@102 118 }
Chris@102 119
Chris@102 120 T* new_data(typename boost::call_traits<T>::param_type val)
Chris@102 121 {
Chris@102 122 return new T(val);
Chris@102 123 }
Chris@102 124
Chris@102 125 void delete_node(node* p)
Chris@102 126 {
Chris@102 127 delete p;
Chris@102 128 }
Chris@102 129
Chris@102 130 void delete_data(T* p)
Chris@102 131 {
Chris@102 132 delete p;
Chris@102 133 }
Chris@102 134 };
Chris@102 135 }}}
Chris@102 136
Chris@102 137 #endif