diff --git a/framework/contrib/boost/include/boost/spirit/home/classic.hpp b/framework/contrib/boost/include/boost/spirit/home/classic.hpp deleted file mode 100644 index 4d3da2a1fa1d..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic.hpp +++ /dev/null @@ -1,32 +0,0 @@ -/*============================================================================= - Copyright (c) 1998-2008 Joel de Guzman - Copyright (c) 2001-2008 Hartmut Kaiser - Copyright (c) 2001-2003 Daniel Nuffer - Copyright (c) 2002-2003 Martin Wille - Copyright (c) 2002 Juan Carlos Arevalo-Baeza - Copyright (c) 2002 Raghavendra Satish - Copyright (c) 2002 Jeff Westfahl - Copyright (c) 2001 Bruce Florman - Copyright (c) 2003 Giovanni Bajo - Copyright (c) 2003 Vaclav Vesely - Copyright (c) 2003 Jonathan de Halleux - http://spirit.sourceforge.net/ - http://www.boost.org/libs/spirit - - 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) - - See http://www.boost.org/libs/spirit for documentation -=============================================================================*/ -#if !defined(BOOST_SPIRIT_CLASSIC_APRIL_11_2008_0849AM) -#define BOOST_SPIRIT_CLASSIC_APRIL_11_2008_0849AM - -#include -#include -#include -#include -#include -#include -#include - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/actor.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/actor.hpp deleted file mode 100644 index b6edad46ba38..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/actor.hpp +++ /dev/null @@ -1,113 +0,0 @@ -/*============================================================================= - Copyright (c) 2003 Jonathan de Halleux (dehalleux@pelikhan.com) - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_ACTOR_HPP -#define BOOST_SPIRIT_ACTOR_HPP - -#include - -/////////////////////////////////////////////////////////////////////////////// -// -// Actors documentation and convention -// -// Actors -// -// Actors are predefined semantic action functors. They are used to do an -// action on the parse result if the parser has had a successful match. An -// example of actor is the append_actor described in the Spirit -// documentation. -// -// The action takes place through a call to the () operator: single argument -// () operator call for character parsers and two argument (first,last) call -// for phrase parsers. Actors should implement at least one of the two () -// operator. -// -// Actor instances are not created directly since they usually involve a -// number of template parameters. Instead generator functions ("helper -// functions") are provided to generate actors according to their arguments. -// All helper functions have the "_a" suffix. For example, append_actor is -// created using the append_a function. -// -// Policy holder actors and policy actions -// -// A lot of actors need to store reference to one or more objects. For -// example, actions on container need to store a reference to the container. -// Therefore, this kind of actor have been broken down into -// -// - a action policy that does the action (act method), -// - a policy holder actor that stores the references and feeds the act -// method. -// -// Policy holder actors -// -// Policy holder have the following naming convention: -// _ >> * >> !value >> actor -// where member are the policy stored member, they can be of type: -// -// - ref, a reference, -// - const_ref, a const reference, -// - value, by value, -// - empty, no stored members -// - !value states if the policy uses the parse result or not. -// -// The available policy holder are enumerated below: -// -// - empty_actor, nothing stored, feeds parse result -// - value_actor, 1 object stored by value, feeds value -// - ref_actor, 1 reference stored, feeds ref -// - ref_value_actor, 1 reference stored, feeds ref and parse result -// -// Doc. convention -// -// - ref is a reference to an object stored in a policy holder actor, -// - value_ref,value1_ref, value2_ref are a const reference stored in a -// policy holder actor, -// - value is the parse result in the single argument () operator, -// - first,last are the parse result in the two argument () operator -// -// Actors (generator functions) and quick description -// -// - assign_a(ref) assign parse result to ref -// - assign_a(ref, value_ref) assign value_ref to ref -// - increment_a(ref) increment ref -// - decrement_a(ref) decrement ref -// - push_back_a(ref) push back the parse result in ref -// - push_back_a(ref, value_ref) push back value_ref in ref -// - push_front_a(ref) push front the parse result in ref -// - push_front_a(ref, value_ref) push front value_ref in ref -// - insert_key_a(ref,value_ref) insert value_ref in ref using the -// parse result as key -// - insert_at_a(ref, key_ref) insert the parse result in ref at key_ref -// - insert_at_a(ref, key_ref insert value_ref in ref at key_ref -// , value_ref) -// - assign_key_a(ref, value_ref) assign value_ref in ref using the -// parse result as key -// - erase_a(ref, key) erase data at key from ref -// - clear_a(ref) clears ref -// - swap_a(aref, bref) swaps aref and bref -// -/////////////////////////////////////////////////////////////////////////////// - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/actor/assign_actor.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/actor/assign_actor.hpp deleted file mode 100644 index 975bf7de5fd9..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/actor/assign_actor.hpp +++ /dev/null @@ -1,100 +0,0 @@ -/*============================================================================= - Copyright (c) 2003 Jonathan de Halleux (dehalleux@pelikhan.com) - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_ACTOR_ASSIGN_ACTOR_HPP -#define BOOST_SPIRIT_ACTOR_ASSIGN_ACTOR_HPP - -#include -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // Summary: - // A semantic action policy that applies the assignment operator. - // (This doc uses convention available in actors.hpp) - // - // Actions (what it does): - // ref = value; - // ref = T(first,last); - // ref = value_ref; - // - // Policy name: - // assign_action - // - // Policy holder, corresponding helper method: - // ref_value_actor, assign_a( ref ); - // ref_const_ref_actor, assign_a( ref, value_ref ); - // - // () operators: both - // - // See also ref_value_actor and ref_const_ref_actor for more details. - /////////////////////////////////////////////////////////////////////////// - struct assign_action - { - template< - typename T, - typename ValueT - > - void act(T& ref_, ValueT const& value_) const - { - ref_ = value_; - } - template< - typename T, - typename IteratorT - > - void act( - T& ref_, - IteratorT const& first_, - IteratorT const& last_ - ) const - { - typedef T value_type; -#ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS - value_type value(first_,last_); -#else - value_type value; - std::copy(first_, last_, std::inserter(value, value.end())); -#endif - ref_ = value; - } - }; - - // Deprecated. Please use assign_a - template - inline ref_value_actor assign(T& ref_) - { - return ref_value_actor(ref_); - } - - template - inline ref_value_actor assign_a(T& ref_) - { - return ref_value_actor(ref_); - } - - template< - typename T, - typename ValueT - > - inline ref_const_ref_actor assign_a( - T& ref_, - ValueT const& value_ - ) - { - return ref_const_ref_actor(ref_,value_); - } - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/actor/assign_key_actor.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/actor/assign_key_actor.hpp deleted file mode 100644 index f6711d30fbc8..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/actor/assign_key_actor.hpp +++ /dev/null @@ -1,96 +0,0 @@ -/*============================================================================= - Copyright (c) 2003 Jonathan de Halleux (dehalleux@pelikhan.com) - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_ACTOR_ASSIGN_KEY_ACTOR_HPP -#define BOOST_SPIRIT_ACTOR_ASSIGN_KEY_ACTOR_HPP - -#include -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - struct assign_key_action - { - template< - typename T, - typename ValueT, - typename KeyT - > - void act(T& ref_, ValueT const& value_, KeyT const& key_) const - { - ref_[ key_ ] = value_; - } - - template< - typename T, - typename ValueT, - typename IteratorT - > - void act( - T& ref_, - ValueT const& value_, - IteratorT const& first_, - IteratorT const& last_ - ) const - { - typedef typename T::key_type key_type; - key_type key(first_,last_); - - ref_[key] = value_; - } - }; - - template< - typename T, - typename ValueT - > - inline ref_const_ref_value_actor - assign_key_a(T& ref_, ValueT const& value_) - { - return ref_const_ref_value_actor( - ref_, - value_ - ); - } - - template< - typename T, - typename ValueT, - typename KeyT - > - inline ref_const_ref_const_ref_actor< - T, - ValueT, - KeyT, - assign_key_action - > - assign_key_a( - T& ref_, - ValueT const& value_, - KeyT const& key_ - ) - { - return ref_const_ref_const_ref_actor< - T, - ValueT, - KeyT, - assign_key_action - >( - ref_, - value_, - key_ - ); - } - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/actor/clear_actor.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/actor/clear_actor.hpp deleted file mode 100644 index 9af670dcc632..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/actor/clear_actor.hpp +++ /dev/null @@ -1,61 +0,0 @@ -/*============================================================================= - Copyright (c) 2003 Jonathan de Halleux (dehalleux@pelikhan.com) - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_ACTOR_CLEAR_ACTOR_HPP -#define BOOST_SPIRIT_ACTOR_CLEAR_ACTOR_HPP - -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // Summary: - // A semantic action policy that calls clear method. - // (This doc uses convention available in actors.hpp) - // - // Actions (what it does): - // ref.clear(); - // - // Policy name: - // clear_action - // - // Policy holder, corresponding helper method: - // ref_actor, clear_a( ref ); - // - // () operators: both. - // - // See also ref_actor for more details. - /////////////////////////////////////////////////////////////////////////// - struct clear_action - { - template< - typename T - > - void act(T& ref_) const - { - ref_.clear(); - } - }; - - /////////////////////////////////////////////////////////////////////////// - // helper method that creates a and_assign_actor. - /////////////////////////////////////////////////////////////////////////// - template - inline ref_actor clear_a(T& ref_) - { - return ref_actor(ref_); - } - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/actor/decrement_actor.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/actor/decrement_actor.hpp deleted file mode 100644 index 99cdf35d7f75..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/actor/decrement_actor.hpp +++ /dev/null @@ -1,60 +0,0 @@ -/*============================================================================= - Copyright (c) 2003 Jonathan de Halleux (dehalleux@pelikhan.com) - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_ACTOR_DECREMENT_ACTOR_HPP -#define BOOST_SPIRIT_ACTOR_DECREMENT_ACTOR_HPP - -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // Summary: - // A semantic action policy that calls the -- operator on a reference. - // (This doc uses convention available in actors.hpp) - // - // Actions: - // --ref; - // - // Policy name: - // decrement_action - // - // Policy holder, corresponding helper method: - // ref_actor, decrement_a( ref ); - // - // () operators: both. - // - // See also ref_actor for more details. - /////////////////////////////////////////////////////////////////////////// - struct decrement_action - { - template< - typename T - > - void act(T& ref_) const - { - --ref_; - } - }; - - /////////////////////////////////////////////////////////////////////////// - // helper method that creates a and_assign_actor. - /////////////////////////////////////////////////////////////////////////// - template - inline ref_actor decrement_a(T& ref_) - { - return ref_actor(ref_); - } - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/actor/erase_actor.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/actor/erase_actor.hpp deleted file mode 100644 index dca1b4043598..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/actor/erase_actor.hpp +++ /dev/null @@ -1,89 +0,0 @@ -/*============================================================================= - Copyright (c) 2003 Jonathan de Halleux (dehalleux@pelikhan.com) - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_ACTOR_ERASE_ACTOR_HPP -#define BOOST_SPIRIT_ACTOR_ERASE_ACTOR_HPP - -#include -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // Summary: - // A semantic action policy that calss the erase method. - // (This doc uses convention available in actors.hpp) - // - // Actions (what it does): - // ref.erase( value ); - // ref.erase( T::key_type(first,last) ); - // ref.erase( key_ref ); - // - // Policy name: - // erase_action - // - // Policy holder, corresponding helper method: - // ref_value_actor, erase_a( ref ); - // ref_const_ref_actor, erase_a( ref, key_ref ); - // - // () operators: both - // - // See also ref_value_actor and ref_const_ref_actor for more details. - /////////////////////////////////////////////////////////////////////////// - struct erase_action - { - template< - typename T, - typename KeyT - > - void act(T& ref_, KeyT const& key_) const - { - ref_.erase(key_); - } - template< - typename T, - typename IteratorT - > - void act( - T& ref_, - IteratorT const& first_, - IteratorT const& last_ - ) const - { - typedef typename T::key_type key_type; - key_type key(first_,last_); - - ref_.erase(key); - } - }; - - template - inline ref_value_actor erase_a(T& ref_) - { - return ref_value_actor(ref_); - } - - template< - typename T, - typename KeyT - > - inline ref_const_ref_actor erase_a( - T& ref_, - KeyT const& key_ - ) - { - return ref_const_ref_actor(ref_,key_); - } - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/actor/increment_actor.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/actor/increment_actor.hpp deleted file mode 100644 index 776568887eac..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/actor/increment_actor.hpp +++ /dev/null @@ -1,60 +0,0 @@ -/*============================================================================= - Copyright (c) 2003 Jonathan de Halleux (dehalleux@pelikhan.com) - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_ACTOR_INCREMENT_ACTOR_HPP -#define BOOST_SPIRIT_ACTOR_INCREMENT_ACTOR_HPP - -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // Summary: - // A semantic action policy that calls the ++ operator on a reference. - // (This doc uses convention available in actors.hpp) - // - // Actions: - // ++ref; - // - // Policy name: - // increment_action - // - // Policy holder, corresponding helper method: - // ref_actor, increment_a( ref ); - // - // () operators: both. - // - // See also ref_actor for more details. - /////////////////////////////////////////////////////////////////////////// - struct increment_action - { - template< - typename T - > - void act(T& ref_) const - { - ++ref_; - } - }; - - /////////////////////////////////////////////////////////////////////////// - // helper method that creates a increment_actor. - /////////////////////////////////////////////////////////////////////////// - template - inline ref_actor increment_a(T& ref_) - { - return ref_actor(ref_); - } - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/actor/insert_at_actor.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/actor/insert_at_actor.hpp deleted file mode 100644 index 5dd7497232bd..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/actor/insert_at_actor.hpp +++ /dev/null @@ -1,121 +0,0 @@ -/*============================================================================= - Copyright (c) 2003 Jonathan de Halleux (dehalleux@pelikhan.com) - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_ACTOR_INSERT_AT_ACTOR_HPP -#define BOOST_SPIRIT_ACTOR_INSERT_AT_ACTOR_HPP - -#include -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // Summary: - // A semantic action policy that insert data into an associative - // container using a const reference to a key. - // (This doc uses convention available in actors.hpp) - // - // Actions (what it does): - // ref.insert( T::value_type(key_ref,value) ); - // ref.insert( T::value_type(key_ref, T::mapped_type(first,last)));; - // ref.insert( T::value_type(key_ref,value_ref) ); - // - // Policy name: - // insert_at_action - // - // Policy holder, corresponding helper method: - // ref_const_ref_value_actor, insert_at_a( ref, key_ref ); - // ref_const_ref_const_ref_actor, insert_a( ref, key_ref, value_ref ); - // - // () operators: both - // - // See also ref_const_ref_value_actor and ref_const_ref_const_ref_actor - // for more details. - /////////////////////////////////////////////////////////////////////////// - struct insert_at_action - { - template< - typename T, - typename ReferentT, - typename ValueT - > - void act( - T& ref_, - ReferentT const& key_, - ValueT const& value_ - ) const - { - typedef typename T::value_type value_type; - ref_.insert( value_type(key_, value_) ); - } - - template< - typename T, - typename ReferentT, - typename IteratorT - > - void act( - T& ref_, - ReferentT const& key_, - IteratorT const& first_, - IteratorT const& last_ - ) const - { - typedef typename T::mapped_type mapped_type; - typedef typename T::value_type value_type; - - mapped_type value(first_,last_); - value_type key_value(key_, value); - ref_.insert( key_value ); - } - }; - - template< - typename T, - typename ReferentT - > - inline ref_const_ref_value_actor - insert_at_a( - T& ref_, - ReferentT const& key_ - ) - { - return ref_const_ref_value_actor< - T, - ReferentT, - insert_at_action - >(ref_,key_); - } - - template< - typename T, - typename ReferentT, - typename ValueT - > - inline ref_const_ref_const_ref_actor - insert_at_a( - T& ref_, - ReferentT const& key_, - ValueT const& value_ - ) - { - return ref_const_ref_const_ref_actor< - T, - ReferentT, - ValueT, - insert_at_action - >(ref_,key_,value_); - } - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/actor/insert_key_actor.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/actor/insert_key_actor.hpp deleted file mode 100644 index 859a8d8363f2..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/actor/insert_key_actor.hpp +++ /dev/null @@ -1,97 +0,0 @@ -/*============================================================================= - Copyright (c) 2003 Jonathan de Halleux (dehalleux@pelikhan.com) - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_ACTOR_INSERT_KEY_ACTOR_HPP -#define BOOST_SPIRIT_ACTOR_INSERT_KEY_ACTOR_HPP - -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // Summary: - // A semantic action policy that insert data into an associative - // container using a const reference to data. - // (This doc uses convention available in actors.hpp) - // - // Actions (what it does): - // ref.insert( T::value_type(value,value_ref) ); - // ref.insert( T::value_type(T::key_type(first,last), value_ref));; - // - // Policy name: - // insert_key_action - // - // Policy holder, corresponding helper method: - // ref_const_ref_value_actor, insert_key_a( ref, value_ref ); - // - // () operators: both - // - // See also ref_const_ref_value_actor for more details. - /////////////////////////////////////////////////////////////////////////// - struct insert_key_action - { - template< - typename T, - typename ValueT, - typename ReferentT - > - void act( - T& ref_, - ValueT const& value_, - ReferentT const& key_ - ) const - { - typedef typename T::value_type value_type; - value_type key_value(key_, value_); - ref_.insert( key_value ); - } - - template< - typename T, - typename ValueT, - typename IteratorT - > - void act( - T& ref_, - ValueT const& value_, - IteratorT const& first_, - IteratorT const& last_ - ) const - { - typedef typename T::key_type key_type; - typedef typename T::value_type value_type; - - key_type key(first_,last_); - value_type key_value(key, value_); - ref_.insert( key_value ); - } - }; - - template< - typename T, - typename ValueT - > - inline ref_const_ref_value_actor insert_key_a( - T& ref_, - ValueT const& value_ - ) - { - return ref_const_ref_value_actor< - T, - ValueT, - insert_key_action - >(ref_,value_); - } - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/actor/push_back_actor.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/actor/push_back_actor.hpp deleted file mode 100644 index cbdd790709cb..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/actor/push_back_actor.hpp +++ /dev/null @@ -1,101 +0,0 @@ -/*============================================================================= - Copyright (c) 2003 Jonathan de Halleux (dehalleux@pelikhan.com) - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_ACTOR_PUSH_BACK_ACTOR_HPP -#define BOOST_SPIRIT_ACTOR_PUSH_BACK_ACTOR_HPP - -#include -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // Summary: - // - // A semantic action policy that appends a value to the back of a - // container. - // (This doc uses convention available in actors.hpp) - // - // Actions (what it does and what ref, value_ref must support): - // ref.push_back( value ); - // ref.push_back( T::value_type(first,last) ); - // ref.push_back( value_ref ); - // - // Policy name: - // push_back_action - // - // Policy holder, corresponding helper method: - // ref_value_actor, push_back_a( ref ); - // ref_const_ref_actor, push_back_a( ref, value_ref ); - // - // () operators: both - // - // See also ref_value_actor and ref_const_ref_actor for more details. - /////////////////////////////////////////////////////////////////////////// - struct push_back_action - { - template< - typename T, - typename ValueT - > - void act(T& ref_, ValueT const& value_) const - { - ref_.push_back( value_ ); - } - template< - typename T, - typename IteratorT - > - void act( - T& ref_, - IteratorT const& first_, - IteratorT const& last_ - ) const - { - typedef typename T::value_type value_type; - value_type value(first_,last_); - - ref_.push_back( value ); - } - }; - -// Deprecated interface. Use push_back_a - template - inline ref_value_actor - append(T& ref_) - { - return ref_value_actor(ref_); - } - - template - inline ref_value_actor - push_back_a(T& ref_) - { - return ref_value_actor(ref_); - } - - template< - typename T, - typename ValueT - > - inline ref_const_ref_actor - push_back_a( - T& ref_, - ValueT const& value_ - ) - { - return ref_const_ref_actor(ref_,value_); - } - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/actor/push_front_actor.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/actor/push_front_actor.hpp deleted file mode 100644 index 43cb1835133d..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/actor/push_front_actor.hpp +++ /dev/null @@ -1,91 +0,0 @@ -/*============================================================================= - Copyright (c) 2003 Jonathan de Halleux (dehalleux@pelikhan.com) - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_ACTOR_PUSH_FRONT_ACTOR_HPP -#define BOOST_SPIRIT_ACTOR_PUSH_FRONT_ACTOR_HPP - -#include -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // Summary: - // - // A semantic action policy that appends a value to the front of a - // container. - // (This doc uses convention available in actors.hpp) - // - // Actions (what it does and what ref, value_ref must support): - // ref.push_front( value ); - // ref.push_front( T::value_type(first,last) ); - // ref.push_front( value_ref ); - // - // Policy name: - // push_front_action - // - // Policy holder, corresponding helper method: - // ref_value_actor, push_front_a( ref ); - // ref_const_ref_actor, push_front_a( ref, value_ref ); - // - // () operators: both - // - // See also ref_value_actor and ref_const_ref_actor for more details. - /////////////////////////////////////////////////////////////////////////// - struct push_front_action - { - template< - typename T, - typename ValueT - > - void act(T& ref_, ValueT const& value_) const - { - ref_.push_front( value_ ); - } - template< - typename T, - typename IteratorT - > - void act( - T& ref_, - IteratorT const& first_, - IteratorT const& last_ - ) const - { - typedef typename T::value_type value_type; - value_type value(first_,last_); - - ref_.push_front( value ); - } - }; - - template - inline ref_value_actor push_front_a(T& ref_) - { - return ref_value_actor(ref_); - } - - template< - typename T, - typename ValueT - > - inline ref_const_ref_actor push_front_a( - T& ref_, - ValueT const& value_ - ) - { - return ref_const_ref_actor(ref_,value_); - } - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/actor/ref_actor.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/actor/ref_actor.hpp deleted file mode 100644 index 4cf7a47c0704..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/actor/ref_actor.hpp +++ /dev/null @@ -1,70 +0,0 @@ -/*============================================================================= - Copyright (c) 2003 Jonathan de Halleux (dehalleux@pelikhan.com) - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_ACTOR_REF_ACTOR_HPP -#define BOOST_SPIRIT_ACTOR_REF_ACTOR_HPP - -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // Summary: - // A semantic action policy holder. This holder stores a reference to ref, - // act methods are fead with this reference. The parse result is not used - // by this holder. - // - // (This doc uses convention available in actors.hpp) - // - // Constructor: - // ...(T& ref_); - // where ref_ is stored. - // - // Action calls: - // act(ref); - // - // () operators: both - // - /////////////////////////////////////////////////////////////////////////// - template< - typename T, - typename ActionT - > - class ref_actor : public ActionT - { - private: - T& ref; - public: - explicit - ref_actor(T& ref_) - : ref(ref_){} - - - template - void operator()(T2 const& /*val*/) const - { - this->act(ref); // defined in ActionT - } - - - template - void operator()( - IteratorT const& /*first*/, - IteratorT const& /*last*/ - ) const - { - this->act(ref); // defined in ActionT - } - }; - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/actor/ref_const_ref_actor.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/actor/ref_const_ref_actor.hpp deleted file mode 100644 index 80ee6eb3ada6..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/actor/ref_const_ref_actor.hpp +++ /dev/null @@ -1,78 +0,0 @@ -/*============================================================================= - Copyright (c) 2003 Jonathan de Halleux (dehalleux@pelikhan.com) - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_ACTOR_REF_CONST_REF_ACTOR_HPP -#define BOOST_SPIRIT_ACTOR_REF_CONST_REF_ACTOR_HPP - -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // Summary: - // A semantic action policy holder. This holder stores a reference to ref - // and a const reference to value_ref. - // act methods are feed with ref and value_ref. The parse result is - // not used by this holder. - // - // (This doc uses convention available in actors.hpp) - // - // Constructor: - // ...(T& ref_, ValueT const& value_ref_); - // where ref_ and value_ref_ are stored in the holder. - // - // Action calls: - // act(ref, value_ref); - // - // () operators: both - // - /////////////////////////////////////////////////////////////////////////// - template< - typename T, - typename ValueT, - typename ActionT - > - class ref_const_ref_actor : public ActionT - { - private: - T& ref; - ValueT const& value_ref; - public: - ref_const_ref_actor( - T& ref_, - ValueT const& value_ref_ - ) - : - ref(ref_), - value_ref(value_ref_) - {} - - - template - void operator()(T2 const& /*val*/) const - { - this->act(ref,value_ref); // defined in ActionT - } - - - template - void operator()( - IteratorT const& /*first*/, - IteratorT const& /*last*/ - ) const - { - this->act(ref,value_ref); // defined in ActionT - } - }; - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/actor/ref_const_ref_const_ref_a.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/actor/ref_const_ref_const_ref_a.hpp deleted file mode 100644 index 2072334d67db..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/actor/ref_const_ref_const_ref_a.hpp +++ /dev/null @@ -1,87 +0,0 @@ -/*============================================================================= - Copyright (c) 2003 Jonathan de Halleux (dehalleux@pelikhan.com) - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_ACTOR_REF_CONST_REF_CONST_REF_ACTOR_HPP -#define BOOST_SPIRIT_ACTOR_REF_CONST_REF_CONST_REF_ACTOR_HPP - -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // Summary: - // A semantic action policy holder. This holder stores a reference to ref - // , a const reference to value1_ref and a const reference to value2_ref. - // Typically, value1_ref is a key and value2_ref is value for associative - // container operations. - // act methods are feed with ref, value1_ref, value2_ref. The parse result - // is not used by this holder. - // - // (This doc uses convention available in actors.hpp) - // - // Constructor: - // ...( - // T& ref_, - // Value1T const& value1_ref_, - // Value2T const& value2_ref_ ); - // where ref_, value1_ref and value2_ref_ are stored in the holder. - // - // Action calls: - // act(ref, value1_ref, value2_ref); - // - // () operators: both - // - /////////////////////////////////////////////////////////////////////////// - template< - typename T, - typename Value1T, - typename Value2T, - typename ActionT - > - class ref_const_ref_const_ref_actor : public ActionT - { - private: - T& ref; - Value1T const& value1_ref; - Value2T const& value2_ref; - public: - ref_const_ref_const_ref_actor( - T& ref_, - Value1T const& value1_ref_, - Value2T const& value2_ref_ - ) - : - ref(ref_), - value1_ref(value1_ref_), - value2_ref(value2_ref_) - {} - - - template - void operator()(T2 const& /*val*/) const - { - this->act(ref,value1_ref,value2_ref); // defined in ActionT - } - - - template - void operator()( - IteratorT const& /*first*/, - IteratorT const& /*last*/ - ) const - { - this->act(ref,value1_ref,value2_ref); // defined in ActionT - } - }; - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/actor/ref_const_ref_value_actor.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/actor/ref_const_ref_value_actor.hpp deleted file mode 100644 index 56e5fc98e9be..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/actor/ref_const_ref_value_actor.hpp +++ /dev/null @@ -1,78 +0,0 @@ -/*============================================================================= - Copyright (c) 2003 Jonathan de Halleux (dehalleux@pelikhan.com) - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_ACTOR_REF_CONST_REF_VALUE_ACTOR_HPP -#define BOOST_SPIRIT_ACTOR_REF_CONST_REF_VALUE_ACTOR_HPP - -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // Summary: - // A semantic action policy holder. This holder stores a reference to ref - // and a const reference to value_ref. - // act methods are feed with ref, value_ref and the parse result. - // - // (This doc uses convention available in actors.hpp) - // - // Constructor: - // ...(T& ref_, ValueT const& value_ref_); - // where ref_ and value_ref_ are stored in the holder. - // - // Action calls: - // act(ref, value_ref, value); - // act(ref, value_ref, first, last); - // - // () operators: both - // - /////////////////////////////////////////////////////////////////////////// - template< - typename T, - typename ValueT, - typename ActionT - > - class ref_const_ref_value_actor : public ActionT - { - private: - T& ref; - ValueT const& value_ref; - public: - ref_const_ref_value_actor( - T& ref_, - ValueT const& value_ref_ - ) - : - ref(ref_), - value_ref(value_ref_) - {} - - - template - void operator()(T2 const& val_) const - { - this->act(ref,value_ref,val_); // defined in ActionT - } - - - template - void operator()( - IteratorT const& first_, - IteratorT const& last_ - ) const - { - this->act(ref,value_ref,first_,last_); // defined in ActionT - } - }; - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/actor/ref_value_actor.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/actor/ref_value_actor.hpp deleted file mode 100644 index 596e219b1eef..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/actor/ref_value_actor.hpp +++ /dev/null @@ -1,82 +0,0 @@ -/*============================================================================= - Copyright (c) 2003 Jonathan de Halleux (dehalleux@pelikhan.com) - Copyright (c) 2011 Bryce Lelbach - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_ACTOR_REF_VALUE_ACTOR_HPP -#define BOOST_SPIRIT_ACTOR_REF_VALUE_ACTOR_HPP - -#include - -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -#pragma warning(push) -#pragma warning(disable:4512) //assignment operator could not be generated -#endif - - /////////////////////////////////////////////////////////////////////////// - // Summary: - // A semantic action policy holder. This holder stores a reference to ref. - // act methods are feed with ref and the parse result. - // - // (This doc uses convention available in actors.hpp) - // - // Constructor: - // ...(T& ref_); - // where ref_ is stored. - // - // Action calls: - // act(ref, value); - // act(ref, first,last); - // - // () operators: both - // - /////////////////////////////////////////////////////////////////////////// - template< - typename T, - typename ActionT - > - class ref_value_actor : public ActionT - { - private: - T& ref; - public: - explicit - ref_value_actor(T& ref_) - : ref(ref_){} - - - template - void operator()(T2 const& val_) const - { - this->act(ref,val_); // defined in ActionT - } - - - template - void operator()( - IteratorT const& first_, - IteratorT const& last_ - ) const - { - this->act(ref,first_,last_); // defined in ActionT - } - }; - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -#pragma warning(pop) -#endif - -}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/actor/swap_actor.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/actor/swap_actor.hpp deleted file mode 100644 index f3fc5e4b1ff1..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/actor/swap_actor.hpp +++ /dev/null @@ -1,85 +0,0 @@ -/*============================================================================= - Copyright (c) 2003 Jonathan de Halleux (dehalleux@pelikhan.com) - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_ACTOR_SWAP_ACTOR_HPP -#define BOOST_SPIRIT_ACTOR_SWAP_ACTOR_HPP - -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // Summary: - // A semantic action policy that swaps values. - // (This doc uses convention available in actors.hpp) - // - // Actions (what it does): - // ref.swap( value_ref ); - // - // Policy name: - // swap_action - // - // Policy holder, corresponding helper method: - // ref_value_actor, swap_a( ref ); - // ref_const_ref_actor, swap_a( ref, value_ref ); - // - // () operators: both - // - // See also ref_value_actor and ref_const_ref_actor for more details. - /////////////////////////////////////////////////////////////////////////// - template< - typename T - > - class swap_actor - { - private: - T& ref; - T& swap_ref; - - public: - swap_actor( - T& ref_, - T& swap_ref_) - : ref(ref_), swap_ref(swap_ref_) - {}; - - template - void operator()(T2 const& /*val*/) const - { - ref.swap(swap_ref); - } - - - template - void operator()( - IteratorT const& /*first*/, - IteratorT const& /*last*/ - ) const - { - ref.swap(swap_ref); - } - }; - - template< - typename T - > - inline swap_actor swap_a( - T& ref_, - T& swap_ref_ - ) - { - return swap_actor(ref_,swap_ref_); - } - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/actor/typeof.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/actor/typeof.hpp deleted file mode 100644 index 9d4b91ce18ba..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/actor/typeof.hpp +++ /dev/null @@ -1,74 +0,0 @@ -/*============================================================================= - Copyright (c) 2006 Tobias Schwinger - http://spirit.sourceforge.net/ - - 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_ACTOR_TYPEOF_HPP) -#define BOOST_SPIRIT_ACTOR_TYPEOF_HPP - -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - template class ref_actor; - - template class ref_value_actor; - - template - - class ref_const_ref_actor; - template - - class ref_const_ref_value_actor; - template - - class ref_const_ref_const_ref_actor; - - struct assign_action; - struct clear_action; - struct increment_action; - struct decrement_action; - struct push_back_action; - struct push_front_action; - struct insert_key_action; - struct insert_at_action; - struct assign_key_action; - - template class swap_actor; - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - - -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::ref_actor,2) -#if !defined(BOOST_SPIRIT_CORE_TYPEOF_HPP) -// this part also lives in the core master header and is deprecated there... -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::ref_value_actor,2) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::ref_const_ref_actor,3) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::assign_action) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::push_back_action) -#endif -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::ref_const_ref_value_actor,3) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::ref_const_ref_const_ref_actor,4) - -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::clear_action) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::increment_action) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::decrement_action) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::push_front_action) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::insert_key_action) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::insert_at_action) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::assign_key_action) - -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::swap_actor,1) - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/attribute.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/attribute.hpp deleted file mode 100644 index 35b306b6a413..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/attribute.hpp +++ /dev/null @@ -1,37 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2003 Joel de Guzman - Copyright (c) 2002-2003 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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_ATTRIBUTE_MAIN_HPP) -#define BOOST_SPIRIT_ATTRIBUTE_MAIN_HPP - -#include - -/////////////////////////////////////////////////////////////////////////////// -// -// Master header for Spirit.Attributes -// -/////////////////////////////////////////////////////////////////////////////// - -/////////////////////////////////////////////////////////////////////////////// -// -// Phoenix predefined maximum limit. This limit defines the maximum -// number of elements a tuple can hold. This number defaults to 3. The -// actual maximum is rounded up in multiples of 3. Thus, if this value -// is 4, the actual limit is 6. The ultimate maximum limit in this -// implementation is 15. -// -/////////////////////////////////////////////////////////////////////////////// -#if !defined(PHOENIX_LIMIT) -#define PHOENIX_LIMIT 6 -#endif // !defined(PHOENIX_LIMIT) - -/////////////////////////////////////////////////////////////////////////////// -#include -#include - -#endif // !defined(BOOST_SPIRIT_ATTRIBUTE_MAIN_HPP) diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/attribute/closure.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/attribute/closure.hpp deleted file mode 100644 index 836958a392f8..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/attribute/closure.hpp +++ /dev/null @@ -1,1083 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2003 Joel de Guzman - Copyright (c) 2002-2003 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_CLOSURE_HPP -#define BOOST_SPIRIT_CLOSURE_HPP - -/////////////////////////////////////////////////////////////////////////////// -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -#include - -/////////////////////////////////////////////////////////////////////////////// -// -// Spirit predefined maximum closure limit. This limit defines the maximum -// number of elements a closure can hold. This number defaults to 3. The -// actual maximum is rounded up in multiples of 3. Thus, if this value -// is 4, the actual limit is 6. The ultimate maximum limit in this -// implementation is 15. -// -// It should NOT be greater than PHOENIX_LIMIT! -// -/////////////////////////////////////////////////////////////////////////////// - -#if !defined(BOOST_SPIRIT_CLOSURE_LIMIT) -#define BOOST_SPIRIT_CLOSURE_LIMIT PHOENIX_LIMIT -#endif - -/////////////////////////////////////////////////////////////////////////////// -// -// ensure BOOST_SPIRIT_CLOSURE_LIMIT <= PHOENIX_LIMIT and SPIRIT_CLOSURE_LIMIT <= 15 -// -/////////////////////////////////////////////////////////////////////////////// -BOOST_STATIC_ASSERT(BOOST_SPIRIT_CLOSURE_LIMIT <= PHOENIX_LIMIT); -BOOST_STATIC_ASSERT(BOOST_SPIRIT_CLOSURE_LIMIT <= 15); - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // - // closure_context class - // - /////////////////////////////////////////////////////////////////////////// - template - class closure_context : public parser_context_base - { - public: - - typedef typename ::phoenix::tuple_element<0, - typename ClosureT::tuple_t>::type attr_t; - typedef ClosureT base_t; - typedef closure_context_linker > - context_linker_t; - - closure_context(ClosureT const& clos) - : frame(clos) {} - - ~closure_context() {} - - template - void pre_parse(ParserT const&, ScannerT const&) {} - - template - ResultT& post_parse(ResultT& hit, ParserT const&, ScannerT const&) - { hit.value(frame[::phoenix::tuple_index_names::_1]); return hit; } - - private: - - ::phoenix::closure_frame frame; - }; - - /////////////////////////////////////////////////////////////////////////// - // - // init_closure_context class - // - // The init_closure_context class is a special parser context type - // which additionally initializes a closure contained in the derived - // parser with values from a given tuple. Please note, that this - // given tuple does not contain the required values directly, it - // contains phoenix::actor objects. These actors have to be - // dereferenced to gain the values to be used for initialization - // (this is done by the help of the phoenix::convert_actors<> - // template). - // - /////////////////////////////////////////////////////////////////////////// - - template - class init_closure_context : public parser_context_base - { - typedef typename ClosureT::tuple_t tuple_t; - typedef typename ClosureT::closure_t closure_t; - - public: - - init_closure_context(ClosureT const& clos) - : frame(clos.subject(), ::phoenix::convert_actors(clos.init)) {} - - ~init_closure_context() {} - - template - void pre_parse(ParserT const& /*p*/, ScannerT const&) {} - - template - ResultT& post_parse(ResultT& hit, ParserT const&, ScannerT const&) - { hit.value(frame[::phoenix::tuple_index_names::_1]); return hit; } - - private: - - ::phoenix::closure_frame frame; - }; - - /////////////////////////////////////////////////////////////////////////// - // - // init_closure_parser class - // - /////////////////////////////////////////////////////////////////////////// - template - struct init_closure_parser - : public unary > > - { - typedef init_closure_parser self_t; - typedef unary > base_t; - typedef typename ParserT::phoenix_closure_t closure_t; - typedef typename ParserT::tuple_t tuple_t; - typedef typename ::phoenix::tuple_element<0, tuple_t>::type attr_t; - - template - struct result - { - typedef typename match_result::type type; - }; - - init_closure_parser(ParserT const& p, ActorTupleT const& init_) - : base_t(p), init(init_) {} - - template - typename parser_result::type - parse_main(ScannerT const& scan) const - { - return this->subject().parse_main(scan); - } - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - typedef init_closure_context init_context_t; - typedef parser_scanner_linker scanner_t; - typedef closure_context_linker context_t; - typedef typename parser_result::type result_t; - BOOST_SPIRIT_CONTEXT_PARSE( - scan, *this, scanner_t, context_t, result_t); - } - - ActorTupleT init; - }; - - /////////////////////////////////////////////////////////////////////////// - // - // closure class - // - /////////////////////////////////////////////////////////////////////////// - template < - typename DerivedT - , typename T0 - , typename T1 - , typename T2 - - #if BOOST_SPIRIT_CLOSURE_LIMIT > 3 - , typename T3 - , typename T4 - , typename T5 - - #if BOOST_SPIRIT_CLOSURE_LIMIT > 6 - , typename T6 - , typename T7 - , typename T8 - - #if BOOST_SPIRIT_CLOSURE_LIMIT > 9 - , typename T9 - , typename T10 - , typename T11 - - #if BOOST_SPIRIT_CLOSURE_LIMIT > 12 - , typename T12 - , typename T13 - , typename T14 - #endif - #endif - #endif - #endif - > - struct closure : - public ::phoenix::closure< - T0, T1, T2 - #if BOOST_SPIRIT_CLOSURE_LIMIT > 3 - , T3, T4, T5 - #if BOOST_SPIRIT_CLOSURE_LIMIT > 6 - , T6, T7, T8 - #if BOOST_SPIRIT_CLOSURE_LIMIT > 9 - , T9, T10, T11 - #if BOOST_SPIRIT_CLOSURE_LIMIT > 12 - , T12, T13, T14 - #endif - #endif - #endif - #endif - > - { - typedef ::phoenix::closure< - T0, T1, T2 - #if BOOST_SPIRIT_CLOSURE_LIMIT > 3 - , T3, T4, T5 - #if BOOST_SPIRIT_CLOSURE_LIMIT > 6 - , T6, T7, T8 - #if BOOST_SPIRIT_CLOSURE_LIMIT > 9 - , T9, T10, T11 - #if BOOST_SPIRIT_CLOSURE_LIMIT > 12 - , T12, T13, T14 - #endif - #endif - #endif - #endif - > phoenix_closure_t; - - typedef closure_context context_t; - - template - struct aux - { - DerivedT2& aux_derived() - { return *static_cast(this); } - - DerivedT2 const& aux_derived() const - { return *static_cast(this); } - - // initialization functions - template - init_closure_parser< - DerivedT2, - ::phoenix::tuple< - typename ::phoenix::as_actor::type - > - > - operator()(A const &a) const - { - typedef typename ::phoenix::as_actor::type a_t; - typedef ::phoenix::tuple actor_tuple_t; - - return init_closure_parser( - aux_derived(), - actor_tuple_t( - ::phoenix::as_actor::convert(a) - ) - ); - } - - template - init_closure_parser< - DerivedT2, - ::phoenix::tuple< - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type - > - > - operator()(A const &a, B const &b) const - { - typedef typename ::phoenix::as_actor::type a_t; - typedef typename ::phoenix::as_actor::type b_t; - typedef ::phoenix::tuple actor_tuple_t; - - return init_closure_parser( - aux_derived(), - actor_tuple_t( - ::phoenix::as_actor::convert(a), - ::phoenix::as_actor::convert(b) - ) - ); - } - - template - init_closure_parser< - DerivedT2, - ::phoenix::tuple< - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type - > - > - operator()(A const &a, B const &b, C const &c) const - { - typedef typename ::phoenix::as_actor::type a_t; - typedef typename ::phoenix::as_actor::type b_t; - typedef typename ::phoenix::as_actor::type c_t; - typedef ::phoenix::tuple actor_tuple_t; - - return init_closure_parser( - aux_derived(), - actor_tuple_t( - ::phoenix::as_actor::convert(a), - ::phoenix::as_actor::convert(b), - ::phoenix::as_actor::convert(c) - ) - ); - } - - #if BOOST_SPIRIT_CLOSURE_LIMIT > 3 - - template < - typename A, typename B, typename C, typename D - > - init_closure_parser< - DerivedT2, - ::phoenix::tuple< - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type - > - > - operator()( - A const &a, B const &b, C const &c, D const &d - ) const - { - typedef typename ::phoenix::as_actor::type a_t; - typedef typename ::phoenix::as_actor::type b_t; - typedef typename ::phoenix::as_actor::type c_t; - typedef typename ::phoenix::as_actor::type d_t; - typedef ::phoenix::tuple< - a_t, b_t, c_t, d_t - > actor_tuple_t; - - return init_closure_parser( - aux_derived(), - actor_tuple_t( - ::phoenix::as_actor::convert(a), - ::phoenix::as_actor::convert(b), - ::phoenix::as_actor::convert(c), - ::phoenix::as_actor::convert(d) - ) - ); - } - - template < - typename A, typename B, typename C, typename D, typename E - > - init_closure_parser< - DerivedT2, - ::phoenix::tuple< - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type - > - > - operator()( - A const &a, B const &b, C const &c, D const &d, E const &e - ) const - { - typedef typename ::phoenix::as_actor::type a_t; - typedef typename ::phoenix::as_actor::type b_t; - typedef typename ::phoenix::as_actor::type c_t; - typedef typename ::phoenix::as_actor::type d_t; - typedef typename ::phoenix::as_actor::type e_t; - typedef ::phoenix::tuple< - a_t, b_t, c_t, d_t, e_t - > actor_tuple_t; - - return init_closure_parser( - aux_derived(), - actor_tuple_t( - ::phoenix::as_actor::convert(a), - ::phoenix::as_actor::convert(b), - ::phoenix::as_actor::convert(c), - ::phoenix::as_actor::convert(d), - ::phoenix::as_actor::convert(e) - ) - ); - } - - template < - typename A, typename B, typename C, typename D, typename E, - typename F - > - init_closure_parser< - DerivedT2, - ::phoenix::tuple< - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type - > - > - operator()( - A const &a, B const &b, C const &c, D const &d, E const &e, - F const &f - ) const - { - typedef typename ::phoenix::as_actor::type a_t; - typedef typename ::phoenix::as_actor::type b_t; - typedef typename ::phoenix::as_actor::type c_t; - typedef typename ::phoenix::as_actor::type d_t; - typedef typename ::phoenix::as_actor::type e_t; - typedef typename ::phoenix::as_actor::type f_t; - typedef ::phoenix::tuple< - a_t, b_t, c_t, d_t, e_t, f_t - > actor_tuple_t; - - return init_closure_parser( - aux_derived(), - actor_tuple_t( - ::phoenix::as_actor::convert(a), - ::phoenix::as_actor::convert(b), - ::phoenix::as_actor::convert(c), - ::phoenix::as_actor::convert(d), - ::phoenix::as_actor::convert(e), - ::phoenix::as_actor::convert(f) - ) - ); - } - - #if BOOST_SPIRIT_CLOSURE_LIMIT > 6 - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G - > - init_closure_parser< - DerivedT2, - ::phoenix::tuple< - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type - > - > - operator()( - A const &a, B const &b, C const &c, D const &d, E const &e, - F const &f, G const &g - ) const - { - typedef typename ::phoenix::as_actor::type a_t; - typedef typename ::phoenix::as_actor::type b_t; - typedef typename ::phoenix::as_actor::type c_t; - typedef typename ::phoenix::as_actor::type d_t; - typedef typename ::phoenix::as_actor::type e_t; - typedef typename ::phoenix::as_actor::type f_t; - typedef typename ::phoenix::as_actor::type g_t; - typedef ::phoenix::tuple< - a_t, b_t, c_t, d_t, e_t, f_t, g_t - > actor_tuple_t; - - return init_closure_parser( - aux_derived(), - actor_tuple_t( - ::phoenix::as_actor::convert(a), - ::phoenix::as_actor::convert(b), - ::phoenix::as_actor::convert(c), - ::phoenix::as_actor::convert(d), - ::phoenix::as_actor::convert(e), - ::phoenix::as_actor::convert(f), - ::phoenix::as_actor::convert(g) - ) - ); - } - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H - > - init_closure_parser< - DerivedT2, - ::phoenix::tuple< - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type - > - > - operator()( - A const &a, B const &b, C const &c, D const &d, E const &e, - F const &f, G const &g, H const &h - ) const - { - typedef typename ::phoenix::as_actor::type a_t; - typedef typename ::phoenix::as_actor::type b_t; - typedef typename ::phoenix::as_actor::type c_t; - typedef typename ::phoenix::as_actor::type d_t; - typedef typename ::phoenix::as_actor::type e_t; - typedef typename ::phoenix::as_actor::type f_t; - typedef typename ::phoenix::as_actor::type g_t; - typedef typename ::phoenix::as_actor::type h_t; - typedef ::phoenix::tuple< - a_t, b_t, c_t, d_t, e_t, f_t, g_t, h_t - > actor_tuple_t; - - return init_closure_parser( - aux_derived(), - actor_tuple_t( - ::phoenix::as_actor::convert(a), - ::phoenix::as_actor::convert(b), - ::phoenix::as_actor::convert(c), - ::phoenix::as_actor::convert(d), - ::phoenix::as_actor::convert(e), - ::phoenix::as_actor::convert(f), - ::phoenix::as_actor::convert(g), - ::phoenix::as_actor::convert(h) - ) - ); - } - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I - > - init_closure_parser< - DerivedT2, - ::phoenix::tuple< - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type - > - > - operator()( - A const &a, B const &b, C const &c, D const &d, E const &e, - F const &f, G const &g, H const &h, I const &i - ) const - { - typedef typename ::phoenix::as_actor::type a_t; - typedef typename ::phoenix::as_actor::type b_t; - typedef typename ::phoenix::as_actor::type c_t; - typedef typename ::phoenix::as_actor::type d_t; - typedef typename ::phoenix::as_actor::type e_t; - typedef typename ::phoenix::as_actor::type f_t; - typedef typename ::phoenix::as_actor::type g_t; - typedef typename ::phoenix::as_actor::type h_t; - typedef typename ::phoenix::as_actor::type i_t; - typedef ::phoenix::tuple< - a_t, b_t, c_t, d_t, e_t, f_t, g_t, h_t, i_t - > actor_tuple_t; - - return init_closure_parser( - aux_derived(), - actor_tuple_t( - ::phoenix::as_actor::convert(a), - ::phoenix::as_actor::convert(b), - ::phoenix::as_actor::convert(c), - ::phoenix::as_actor::convert(d), - ::phoenix::as_actor::convert(e), - ::phoenix::as_actor::convert(f), - ::phoenix::as_actor::convert(g), - ::phoenix::as_actor::convert(h), - ::phoenix::as_actor::convert(i) - ) - ); - } - - #if BOOST_SPIRIT_CLOSURE_LIMIT > 9 - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J - > - init_closure_parser< - DerivedT2, - ::phoenix::tuple< - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type - > - > - operator()( - A const &a, B const &b, C const &c, D const &d, E const &e, - F const &f, G const &g, H const &h, I const &i, J const &j - ) const - { - typedef typename ::phoenix::as_actor::type a_t; - typedef typename ::phoenix::as_actor::type b_t; - typedef typename ::phoenix::as_actor::type c_t; - typedef typename ::phoenix::as_actor::type d_t; - typedef typename ::phoenix::as_actor::type e_t; - typedef typename ::phoenix::as_actor::type f_t; - typedef typename ::phoenix::as_actor::type g_t; - typedef typename ::phoenix::as_actor::type h_t; - typedef typename ::phoenix::as_actor::type i_t; - typedef typename ::phoenix::as_actor::type j_t; - typedef ::phoenix::tuple< - a_t, b_t, c_t, d_t, e_t, f_t, g_t, h_t, i_t, j_t - > actor_tuple_t; - - return init_closure_parser( - aux_derived(), - actor_tuple_t( - ::phoenix::as_actor::convert(a), - ::phoenix::as_actor::convert(b), - ::phoenix::as_actor::convert(c), - ::phoenix::as_actor::convert(d), - ::phoenix::as_actor::convert(e), - ::phoenix::as_actor::convert(f), - ::phoenix::as_actor::convert(g), - ::phoenix::as_actor::convert(h), - ::phoenix::as_actor::convert(i), - ::phoenix::as_actor::convert(j) - ) - ); - } - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, - typename K - > - init_closure_parser< - DerivedT2, - ::phoenix::tuple< - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type - > - > - operator()( - A const &a, B const &b, C const &c, D const &d, E const &e, - F const &f, G const &g, H const &h, I const &i, J const &j, - K const &k - ) const - { - typedef typename ::phoenix::as_actor::type a_t; - typedef typename ::phoenix::as_actor::type b_t; - typedef typename ::phoenix::as_actor::type c_t; - typedef typename ::phoenix::as_actor::type d_t; - typedef typename ::phoenix::as_actor::type e_t; - typedef typename ::phoenix::as_actor::type f_t; - typedef typename ::phoenix::as_actor::type g_t; - typedef typename ::phoenix::as_actor::type h_t; - typedef typename ::phoenix::as_actor::type i_t; - typedef typename ::phoenix::as_actor::type j_t; - typedef typename ::phoenix::as_actor::type k_t; - typedef ::phoenix::tuple< - a_t, b_t, c_t, d_t, e_t, f_t, g_t, h_t, i_t, j_t, - k_t - > actor_tuple_t; - - return init_closure_parser( - aux_derived(), - actor_tuple_t( - ::phoenix::as_actor::convert(a), - ::phoenix::as_actor::convert(b), - ::phoenix::as_actor::convert(c), - ::phoenix::as_actor::convert(d), - ::phoenix::as_actor::convert(e), - ::phoenix::as_actor::convert(f), - ::phoenix::as_actor::convert(g), - ::phoenix::as_actor::convert(h), - ::phoenix::as_actor::convert(i), - ::phoenix::as_actor::convert(j), - ::phoenix::as_actor::convert(k) - ) - ); - } - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, - typename K, typename L - > - init_closure_parser< - DerivedT2, - ::phoenix::tuple< - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type - > - > - operator()( - A const &a, B const &b, C const &c, D const &d, E const &e, - F const &f, G const &g, H const &h, I const &i, J const &j, - K const &k, L const &l - ) const - { - typedef typename ::phoenix::as_actor::type a_t; - typedef typename ::phoenix::as_actor::type b_t; - typedef typename ::phoenix::as_actor::type c_t; - typedef typename ::phoenix::as_actor::type d_t; - typedef typename ::phoenix::as_actor::type e_t; - typedef typename ::phoenix::as_actor::type f_t; - typedef typename ::phoenix::as_actor::type g_t; - typedef typename ::phoenix::as_actor::type h_t; - typedef typename ::phoenix::as_actor::type i_t; - typedef typename ::phoenix::as_actor::type j_t; - typedef typename ::phoenix::as_actor::type k_t; - typedef typename ::phoenix::as_actor::type l_t; - typedef ::phoenix::tuple< - a_t, b_t, c_t, d_t, e_t, f_t, g_t, h_t, i_t, j_t, - k_t, l_t - > actor_tuple_t; - - return init_closure_parser( - aux_derived(), - actor_tuple_t( - ::phoenix::as_actor::convert(a), - ::phoenix::as_actor::convert(b), - ::phoenix::as_actor::convert(c), - ::phoenix::as_actor::convert(d), - ::phoenix::as_actor::convert(e), - ::phoenix::as_actor::convert(f), - ::phoenix::as_actor::convert(g), - ::phoenix::as_actor::convert(h), - ::phoenix::as_actor::convert(i), - ::phoenix::as_actor::convert(j), - ::phoenix::as_actor::convert(k), - ::phoenix::as_actor::convert(l) - ) - ); - } - - #if BOOST_SPIRIT_CLOSURE_LIMIT > 12 - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, - typename K, typename L, typename M - > - init_closure_parser< - DerivedT2, - ::phoenix::tuple< - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type - > - > - operator()( - A const &a, B const &b, C const &c, D const &d, E const &e, - F const &f, G const &g, H const &h, I const &i, J const &j, - K const &k, L const &l, M const &m - ) const - { - typedef typename ::phoenix::as_actor::type a_t; - typedef typename ::phoenix::as_actor::type b_t; - typedef typename ::phoenix::as_actor::type c_t; - typedef typename ::phoenix::as_actor::type d_t; - typedef typename ::phoenix::as_actor::type e_t; - typedef typename ::phoenix::as_actor::type f_t; - typedef typename ::phoenix::as_actor::type g_t; - typedef typename ::phoenix::as_actor::type h_t; - typedef typename ::phoenix::as_actor::type i_t; - typedef typename ::phoenix::as_actor::type j_t; - typedef typename ::phoenix::as_actor::type k_t; - typedef typename ::phoenix::as_actor::type l_t; - typedef typename ::phoenix::as_actor::type m_t; - typedef ::phoenix::tuple< - a_t, b_t, c_t, d_t, e_t, f_t, g_t, h_t, i_t, j_t, - k_t, l_t, m_t - > actor_tuple_t; - - return init_closure_parser( - aux_derived(), - actor_tuple_t( - ::phoenix::as_actor::convert(a), - ::phoenix::as_actor::convert(b), - ::phoenix::as_actor::convert(c), - ::phoenix::as_actor::convert(d), - ::phoenix::as_actor::convert(e), - ::phoenix::as_actor::convert(f), - ::phoenix::as_actor::convert(g), - ::phoenix::as_actor::convert(h), - ::phoenix::as_actor::convert(i), - ::phoenix::as_actor::convert(j), - ::phoenix::as_actor::convert(k), - ::phoenix::as_actor::convert(l), - ::phoenix::as_actor::convert(m) - ) - ); - } - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, - typename K, typename L, typename M, typename N - > - init_closure_parser< - DerivedT2, - ::phoenix::tuple< - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type - > - > - operator()( - A const &a, B const &b, C const &c, D const &d, E const &e, - F const &f, G const &g, H const &h, I const &i, J const &j, - K const &k, L const &l, M const &m, N const &n - ) const - { - typedef typename ::phoenix::as_actor::type a_t; - typedef typename ::phoenix::as_actor::type b_t; - typedef typename ::phoenix::as_actor::type c_t; - typedef typename ::phoenix::as_actor::type d_t; - typedef typename ::phoenix::as_actor::type e_t; - typedef typename ::phoenix::as_actor::type f_t; - typedef typename ::phoenix::as_actor::type g_t; - typedef typename ::phoenix::as_actor::type h_t; - typedef typename ::phoenix::as_actor::type i_t; - typedef typename ::phoenix::as_actor::type j_t; - typedef typename ::phoenix::as_actor::type k_t; - typedef typename ::phoenix::as_actor::type l_t; - typedef typename ::phoenix::as_actor::type m_t; - typedef typename ::phoenix::as_actor::type n_t; - typedef ::phoenix::tuple< - a_t, b_t, c_t, d_t, e_t, f_t, g_t, h_t, i_t, j_t, - k_t, l_t, m_t, n_t - > actor_tuple_t; - - return init_closure_parser( - aux_derived(), - actor_tuple_t( - ::phoenix::as_actor::convert(a), - ::phoenix::as_actor::convert(b), - ::phoenix::as_actor::convert(c), - ::phoenix::as_actor::convert(d), - ::phoenix::as_actor::convert(e), - ::phoenix::as_actor::convert(f), - ::phoenix::as_actor::convert(g), - ::phoenix::as_actor::convert(h), - ::phoenix::as_actor::convert(i), - ::phoenix::as_actor::convert(j), - ::phoenix::as_actor::convert(k), - ::phoenix::as_actor::convert(l), - ::phoenix::as_actor::convert(m), - ::phoenix::as_actor::convert(n) - ) - ); - } - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, - typename K, typename L, typename M, typename N, typename O - > - init_closure_parser< - DerivedT2, - ::phoenix::tuple< - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type, - typename ::phoenix::as_actor::type - > - > - operator()( - A const &a, B const &b, C const &c, D const &d, E const &e, - F const &f, G const &g, H const &h, I const &i, J const &j, - K const &k, L const &l, M const &m, N const &n, O const &o - ) const - { - typedef typename ::phoenix::as_actor::type a_t; - typedef typename ::phoenix::as_actor::type b_t; - typedef typename ::phoenix::as_actor::type c_t; - typedef typename ::phoenix::as_actor::type d_t; - typedef typename ::phoenix::as_actor::type e_t; - typedef typename ::phoenix::as_actor::type f_t; - typedef typename ::phoenix::as_actor::type g_t; - typedef typename ::phoenix::as_actor::type h_t; - typedef typename ::phoenix::as_actor::type i_t; - typedef typename ::phoenix::as_actor::type j_t; - typedef typename ::phoenix::as_actor::type k_t; - typedef typename ::phoenix::as_actor::type l_t; - typedef typename ::phoenix::as_actor::type m_t; - typedef typename ::phoenix::as_actor::type n_t; - typedef typename ::phoenix::as_actor::type o_t; - typedef ::phoenix::tuple< - a_t, b_t, c_t, d_t, e_t, f_t, g_t, h_t, i_t, j_t, - k_t, l_t, m_t, n_t, o_t - > actor_tuple_t; - - return init_closure_parser( - aux_derived(), - actor_tuple_t( - ::phoenix::as_actor::convert(a), - ::phoenix::as_actor::convert(b), - ::phoenix::as_actor::convert(c), - ::phoenix::as_actor::convert(d), - ::phoenix::as_actor::convert(e), - ::phoenix::as_actor::convert(f), - ::phoenix::as_actor::convert(g), - ::phoenix::as_actor::convert(h), - ::phoenix::as_actor::convert(i), - ::phoenix::as_actor::convert(j), - ::phoenix::as_actor::convert(k), - ::phoenix::as_actor::convert(l), - ::phoenix::as_actor::convert(m), - ::phoenix::as_actor::convert(n), - ::phoenix::as_actor::convert(o) - ) - ); - } - - #endif - #endif - #endif - #endif - }; - - ~closure() {} - }; - - /////////////////////////////////////////////////////////////////////////// - // - // overloads for chseq_p and str_p taking in phoenix actors - // - /////////////////////////////////////////////////////////////////////////// - template - struct container_begin - { - typedef container_begin self_t; - - template - struct result - { - typedef typename ::phoenix::actor_result - ::plain_type::iterator type; - }; - - container_begin(ActorT actor_) - : actor(actor_) {} - - template - typename ::phoenix::actor_result::type - eval(TupleT const& /*args*/) const - { return actor().begin(); } - - ActorT actor; - }; - - template - struct container_end - { - typedef container_begin self_t; - - template - struct result - { - typedef typename ::phoenix::actor_result - ::plain_type::iterator type; - }; - - container_end(ActorT actor_) - : actor(actor_) {} - - template - typename ::phoenix::actor_result::type - eval(TupleT const& /*args*/) const - { return actor().end(); } - - ActorT actor; - }; - - template - inline f_chseq< - ::phoenix::actor > >, - ::phoenix::actor > > - > - f_chseq_p(::phoenix::actor const& a) - { - typedef ::phoenix::actor > > - container_begin_t; - typedef ::phoenix::actor > > - container_end_t; - typedef f_chseq result_t; - - return result_t(container_begin_t(a), container_end_t(a)); - } - - template - inline f_strlit< - ::phoenix::actor > >, - ::phoenix::actor > > - > - f_str_p(::phoenix::actor const& a) - { - typedef ::phoenix::actor > > - container_begin_t; - typedef ::phoenix::actor > > - container_end_t; - typedef f_strlit result_t; - - return result_t(container_begin_t(a), container_end_t(a)); - } - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/attribute/closure_context.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/attribute/closure_context.hpp deleted file mode 100644 index e366854964b3..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/attribute/closure_context.hpp +++ /dev/null @@ -1,56 +0,0 @@ -/*============================================================================= - Copyright (c) 2002-2003 Joel de Guzman - Copyright (c) 2002-2003 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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_CLOSURE_CONTEXT_HPP) -#define BOOST_SPIRIT_CLOSURE_CONTEXT_HPP - -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -#if !defined(BOOST_SPIRIT_CLOSURE_CONTEXT_LINKER_DEFINED) -#define BOOST_SPIRIT_CLOSURE_CONTEXT_LINKER_DEFINED - -/////////////////////////////////////////////////////////////////////////////// -// -// closure_context_linker -// { helper template for the closure extendability } -// -// This classes can be 'overloaded' (defined elsewhere), to plug -// in additional functionality into the closure parsing process. -// -/////////////////////////////////////////////////////////////////////////////// - -template -struct closure_context_linker : public ContextT -{ - template - closure_context_linker(ParserT const& p) - : ContextT(p) {} - - template - void pre_parse(ParserT const& p, ScannerT const& scan) - { ContextT::pre_parse(p, scan); } - - template - ResultT& - post_parse(ResultT& hit, ParserT const& p, ScannerT const& scan) - { return ContextT::post_parse(hit, p, scan); } -}; - -#endif // !defined(BOOST_SPIRIT_CLOSURE_CONTEXT_LINKER_DEFINED) - -/////////////////////////////////////////////////////////////////////////////// -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif // BOOST_SPIRIT_CLOSURE_CONTEXT_HPP diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/attribute/closure_fwd.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/attribute/closure_fwd.hpp deleted file mode 100644 index 033d619c2fd0..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/attribute/closure_fwd.hpp +++ /dev/null @@ -1,69 +0,0 @@ -/*============================================================================= - Copyright (c) 2006 Tobias Schwinger - http://spirit.sourceforge.net/ - - 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_CLOSURE_FWD_HPP) -#define BOOST_SPIRIT_CLOSURE_FWD_HPP - -#include -#include - -#if !defined(BOOST_SPIRIT_CLOSURE_LIMIT) -# define BOOST_SPIRIT_CLOSURE_LIMIT PHOENIX_LIMIT -#endif - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - template - class closure_context; - - template - class init_closure_context; - - template - struct init_closure_parser; - - template < - typename DerivedT - , typename T0 = ::phoenix::nil_t - , typename T1 = ::phoenix::nil_t - , typename T2 = ::phoenix::nil_t - - #if BOOST_SPIRIT_CLOSURE_LIMIT > 3 - , typename T3 = ::phoenix::nil_t - , typename T4 = ::phoenix::nil_t - , typename T5 = ::phoenix::nil_t - - #if BOOST_SPIRIT_CLOSURE_LIMIT > 6 - , typename T6 = ::phoenix::nil_t - , typename T7 = ::phoenix::nil_t - , typename T8 = ::phoenix::nil_t - - #if BOOST_SPIRIT_CLOSURE_LIMIT > 9 - , typename T9 = ::phoenix::nil_t - , typename T10 = ::phoenix::nil_t - , typename T11 = ::phoenix::nil_t - - #if BOOST_SPIRIT_CLOSURE_LIMIT > 12 - , typename T12 = ::phoenix::nil_t - , typename T13 = ::phoenix::nil_t - , typename T14 = ::phoenix::nil_t - - #endif - #endif - #endif - #endif - > - struct closure; - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/attribute/parametric.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/attribute/parametric.hpp deleted file mode 100644 index 0c0b11ab09a8..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/attribute/parametric.hpp +++ /dev/null @@ -1,144 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2003 Joel de Guzman - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_PARAMETRIC_HPP -#define BOOST_SPIRIT_PARAMETRIC_HPP - -/////////////////////////////////////////////////////////////////////////////// -#include -#include -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // - // f_chlit class [ functional version of chlit ] - // - /////////////////////////////////////////////////////////////////////////// - template - struct f_chlit : public char_parser > - { - f_chlit(ChGenT chgen_) - : chgen(chgen_) {} - - template - bool test(T ch) const - { return ch == chgen(); } - - ChGenT chgen; - }; - - template - inline f_chlit - f_ch_p(ChGenT chgen) - { return f_chlit(chgen); } - - /////////////////////////////////////////////////////////////////////////// - // - // f_range class [ functional version of range ] - // - /////////////////////////////////////////////////////////////////////////// - template - struct f_range : public char_parser > - { - f_range(ChGenAT first_, ChGenBT last_) - : first(first_), last(last_) - {} - - template - bool test(T ch) const - { - BOOST_SPIRIT_ASSERT(first() <= last()); - return (ch >= first()) && (ch <= last()); - } - - ChGenAT first; - ChGenBT last; - }; - - template - inline f_range - f_range_p(ChGenAT first, ChGenBT last) - { return f_range(first, last); } - - /////////////////////////////////////////////////////////////////////////// - // - // f_chseq class [ functional version of chseq ] - // - /////////////////////////////////////////////////////////////////////////// - template - class f_chseq : public parser > - { - public: - - typedef f_chseq self_t; - - f_chseq(IterGenAT first_, IterGenBT last_) - : first(first_), last(last_) {} - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - typedef typename parser_result::type result_t; - return impl::string_parser_parse(first(), last(), scan); - } - - private: - - IterGenAT first; - IterGenBT last; - }; - - template - inline f_chseq - f_chseq_p(IterGenAT first, IterGenBT last) - { return f_chseq(first, last); } - - /////////////////////////////////////////////////////////////////////////// - // - // f_strlit class [ functional version of strlit ] - // - /////////////////////////////////////////////////////////////////////////// - template - class f_strlit : public parser > - { - public: - - typedef f_strlit self_t; - - f_strlit(IterGenAT first, IterGenBT last) - : seq(first, last) {} - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - typedef typename parser_result::type result_t; - return impl::contiguous_parser_parse - (seq, scan, scan); - } - - private: - - f_chseq seq; - }; - - template - inline f_strlit - f_str_p(IterGenAT first, IterGenBT last) - { return f_strlit(first, last); } - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/attribute/typeof.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/attribute/typeof.hpp deleted file mode 100644 index 16bbd102a0b9..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/attribute/typeof.hpp +++ /dev/null @@ -1,67 +0,0 @@ -/*============================================================================= - Copyright (c) 2006 Tobias Schwinger - http://spirit.sourceforge.net/ - - 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_ATTRIBUTE_TYPEOF_HPP) -#define BOOST_SPIRIT_ATTRIBUTE_TYPEOF_HPP - -#include - -#include -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - // parametric.hpp - template struct f_chlit; - template struct f_range; - template class f_chseq; - template class f_strlit; - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - - -// parametric.hpp - -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::f_chlit,1) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::f_range,2) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::f_chseq,2) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::f_strlit,2) - - -// closure.hpp (has forward header) - -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::closure,BOOST_SPIRIT_CLOSURE_LIMIT) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::closure_context,1) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::init_closure_context,1) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::init_closure_parser,2) - - -#if BOOST_SPIRIT_CLOSURE_LIMIT > 12 -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::closure,12) -#endif -#if BOOST_SPIRIT_CLOSURE_LIMIT > 9 -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::closure, 9) -#endif -#if BOOST_SPIRIT_CLOSURE_LIMIT > 6 -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::closure, 6) -#endif -#if BOOST_SPIRIT_CLOSURE_LIMIT > 3 -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::closure, 3) -#endif - - - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/core.hpp deleted file mode 100644 index 4f9d806f1765..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core.hpp +++ /dev/null @@ -1,73 +0,0 @@ -/*============================================================================= - Copyright (c) 1998-2003 Joel de Guzman - Copyright (c) 2001-2003 Daniel Nuffer - Copyright (c) 2001-2003 Hartmut Kaiser - Copyright (c) 2002-2003 Martin Wille - Copyright (c) 2002 Raghavendra Satish - Copyright (c) 2001 Bruce Florman - http://spirit.sourceforge.net/ - - 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_CORE_MAIN_HPP) -#define BOOST_SPIRIT_CORE_MAIN_HPP - -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -// -// Spirit.Core includes -// -/////////////////////////////////////////////////////////////////////////////// - -// Spirit.Core.Kernel -#include -#include -#include -#include - -// Spirit.Core.Primitives -#include -#include - -// Spirit.Core.Scanner -#include -#include - -// Spirit.Core.NonTerminal -#include -#include -#include - -// Spirit.Core.Composite -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// Deprecated interface includes -#include -#include - -#if defined(BOOST_SPIRIT_DEBUG) - ////////////////////////////////// - #include - -#endif // BOOST_SPIRIT_DEBUG - -#endif // BOOST_SPIRIT_CORE_MAIN_HPP - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/assert.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/core/assert.hpp deleted file mode 100644 index 809ab1ab2552..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/assert.hpp +++ /dev/null @@ -1,36 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2003 Joel de Guzman - Copyright (c) 2002-2003 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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_ASSERT_HPP) -#define BOOST_SPIRIT_ASSERT_HPP - -/////////////////////////////////////////////////////////////////////////////// -// -// BOOST_SPIRIT_ASSERT is used throughout the framework. It can be -// overridden by the user. If BOOST_SPIRIT_ASSERT_EXCEPTION is defined, -// then that will be thrown, otherwise, BOOST_SPIRIT_ASSERT simply turns -// into a plain BOOST_ASSERT() -// -/////////////////////////////////////////////////////////////////////////////// -#if !defined(BOOST_SPIRIT_ASSERT) -#if defined(NDEBUG) - #define BOOST_SPIRIT_ASSERT(x) -#elif defined (BOOST_SPIRIT_ASSERT_EXCEPTION) - #include - #define BOOST_SPIRIT_ASSERT_AUX(f, l, x) BOOST_SPIRIT_ASSERT_AUX2(f, l, x) - #define BOOST_SPIRIT_ASSERT_AUX2(f, l, x) \ - ( (x) ? (void)0 : boost::throw_exception( \ - BOOST_SPIRIT_ASSERT_EXCEPTION(f "(" #l "): " #x)) ) - #define BOOST_SPIRIT_ASSERT(x) BOOST_SPIRIT_ASSERT_AUX(__FILE__, __LINE__, x) -#else - #include - #define BOOST_SPIRIT_ASSERT(x) BOOST_ASSERT(x) -#endif -#endif // !defined(BOOST_SPIRIT_ASSERT) - -#endif // BOOST_SPIRIT_ASSERT_HPP diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/actions.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/actions.hpp deleted file mode 100644 index 43b638d7fa8e..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/actions.hpp +++ /dev/null @@ -1,137 +0,0 @@ -/*============================================================================= - Copyright (c) 1998-2003 Joel de Guzman - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_ACTIONS_HPP -#define BOOST_SPIRIT_ACTIONS_HPP - -#include -#include -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -#pragma warning(push) -#pragma warning(disable:4512) //assignment operator could not be generated -#endif - - /////////////////////////////////////////////////////////////////////////// - // - // action class - // - // The action class binds a parser with a user defined semantic - // action. Instances of action are never created manually. Instead, - // action objects are typically created indirectly through - // expression templates of the form: - // - // p[f] - // - // where p is a parser and f is a function or functor. The semantic - // action may be a function or a functor. When the parser is - // successful, the actor calls the scanner's action_policy policy - // (see scanner.hpp): - // - // scan.do_action(actor, attribute, first, last); - // - // passing in these information: - // - // actor: The action's function or functor - // attribute: The match (returned by the parser) object's - // attribute (see match.hpp) - // first: Iterator pointing to the start of the matching - // portion of the input - // last: Iterator pointing to one past the end of the - // matching portion of the input - // - // It is the responsibility of the scanner's action_policy policy to - // dispatch the function or functor as it sees fit. The expected - // function or functor signature depends on the parser being - // wrapped. In general, if the attribute type of the parser being - // wrapped is a nil_t, the function or functor expect the signature: - // - // void func(Iterator first, Iterator last); // functions - // - // struct ftor // functors - // { - // void func(Iterator first, Iterator last) const; - // }; - // - // where Iterator is the type of the iterator that is being used and - // first and last are the iterators pointing to the matching portion - // of the input. - // - // If the attribute type of the parser being wrapped is not a nil_t, - // the function or functor usually expect the signature: - // - // void func(T val); // functions - // - // struct ftor // functors - // { - // void func(T val) const; - // }; - // - // where T is the attribute type and val is the attribute value - // returned by the parser being wrapped. - // - /////////////////////////////////////////////////////////////////////////// - template - class action : public unary > > - { - public: - - typedef action self_t; - typedef action_parser_category parser_category_t; - typedef unary > base_t; - typedef ActionT predicate_t; - - template - struct result - { - typedef typename parser_result::type type; - }; - - action(ParserT const& p, ActionT const& a) - : base_t(p) - , actor(a) {} - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - typedef typename ScannerT::iterator_t iterator_t; - typedef typename parser_result::type result_t; - - ignore_unused(scan.at_end()); // allow skipper to take effect - iterator_t save = scan.first; - result_t hit = this->subject().parse(scan); - if (hit) - { - typename result_t::return_t val = hit.value(); - scan.do_action(actor, val, save, scan.first); - } - return hit; - } - - ActionT const& predicate() const { return actor; } - - private: - - ActionT actor; - }; - -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -#pragma warning(pop) -#endif - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/alternative.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/alternative.hpp deleted file mode 100644 index 5e472a9a640d..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/alternative.hpp +++ /dev/null @@ -1,147 +0,0 @@ -/*============================================================================= - Copyright (c) 1998-2003 Joel de Guzman - Copyright (c) 2001 Daniel Nuffer - Copyright (c) 2002 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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_ALTERNATIVE_HPP) -#define BOOST_SPIRIT_ALTERNATIVE_HPP - -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // - // alternative class - // - // Handles expressions of the form: - // - // a | b - // - // where a and b are parsers. The expression returns a composite - // parser that matches a or b. One (not both) of the operands may - // be a literal char, wchar_t or a primitive string char const*, - // wchar_t const*. - // - // The expression is short circuit evaluated. b is never touched - // when a is returns a successful match. - // - /////////////////////////////////////////////////////////////////////////// - struct alternative_parser_gen; - -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -#pragma warning(push) -#pragma warning(disable:4512) //assignment operator could not be generated -#endif - - template - struct alternative - : public binary > > - { - typedef alternative self_t; - typedef binary_parser_category parser_category_t; - typedef alternative_parser_gen parser_generator_t; - typedef binary > base_t; - - alternative(A const& a, B const& b) - : base_t(a, b) {} - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - typedef typename parser_result::type result_t; - typedef typename ScannerT::iterator_t iterator_t; - { // scope for save - iterator_t save = scan.first; - if (result_t hit = this->left().parse(scan)) - return hit; - scan.first = save; - } - return this->right().parse(scan); - } - }; - -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -#pragma warning(pop) -#endif - - struct alternative_parser_gen - { - template - struct result - { - typedef - alternative< - typename as_parser::type - , typename as_parser::type - > - type; - }; - - template - static alternative< - typename as_parser::type - , typename as_parser::type - > - generate(A const& a, B const& b) - { - return alternative::type, - BOOST_DEDUCED_TYPENAME as_parser::type> - (as_parser::convert(a), as_parser::convert(b)); - } - }; - - template - alternative - operator|(parser const& a, parser const& b); - - template - alternative > - operator|(parser const& a, char b); - - template - alternative, B> - operator|(char a, parser const& b); - - template - alternative > - operator|(parser const& a, char const* b); - - template - alternative, B> - operator|(char const* a, parser const& b); - - template - alternative > - operator|(parser const& a, wchar_t b); - - template - alternative, B> - operator|(wchar_t a, parser const& b); - - template - alternative > - operator|(parser const& a, wchar_t const* b); - - template - alternative, B> - operator|(wchar_t const* a, parser const& b); - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif - -#include diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/composite.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/composite.hpp deleted file mode 100644 index b156cab198fe..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/composite.hpp +++ /dev/null @@ -1,151 +0,0 @@ -/*============================================================================= - Copyright (c) 1998-2003 Joel de Guzman - http://spirit.sourceforge.net/ - - 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_COMPOSITE_HPP) -#define BOOST_SPIRIT_COMPOSITE_HPP - -/////////////////////////////////////////////////////////////////////////////// -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -#pragma warning(push) -#pragma warning(disable:4512) //assignment operator could not be generated -#endif - - /////////////////////////////////////////////////////////////////////////// - // - // unary class. - // - // Composite class composed of a single subject. This template class - // is parameterized by the subject type S and a base class to - // inherit from, BaseT. The unary class is meant to be a base class - // to inherit from. The inheritance structure, given the BaseT - // template parameter places the unary class in the middle of a - // linear, single parent hierarchy. For instance, given a class S - // and a base class B, a class D can derive from unary: - // - // struct D : public unary {...}; - // - // The inheritance structure is thus: - // - // B - // | - // unary (has S) - // | - // D - // - // The subject can be accessed from the derived class D as: - // this->subject(); - // - // Typically, the subject S is specified as typename S::embed_t. - // embed_t specifies how the subject is embedded in the composite - // (See parser.hpp for details). - // - /////////////////////////////////////////////////////////////////////////// - template - class unary : public BaseT - { - public: - - typedef BaseT base_t; - typedef typename boost::call_traits::param_type param_t; - typedef typename boost::call_traits::const_reference return_t; - typedef S subject_t; - typedef typename S::embed_t subject_embed_t; - - unary(param_t subj_) - : base_t(), subj(subj_) {} - - unary(BaseT const& base, param_t subj_) - : base_t(base), subj(subj_) {} - - return_t - subject() const - { return subj; } - - private: - - subject_embed_t subj; - }; - - /////////////////////////////////////////////////////////////////////////// - // - // binary class. - // - // Composite class composed of a pair (left and right). This - // template class is parameterized by the left and right subject - // types A and B and a base class to inherit from, BaseT. The binary - // class is meant to be a base class to inherit from. The - // inheritance structure, given the BaseT template parameter places - // the binary class in the middle of a linear, single parent - // hierarchy. For instance, given classes X and Y and a base class - // B, a class D can derive from binary: - // - // struct D : public binary {...}; - // - // The inheritance structure is thus: - // - // B - // | - // binary (has X and Y) - // | - // D - // - // The left and right subjects can be accessed from the derived - // class D as: this->left(); and this->right(); - // - // Typically, the pairs X and Y are specified as typename X::embed_t - // and typename Y::embed_t. embed_t specifies how the subject is - // embedded in the composite (See parser.hpp for details). - // - /////////////////////////////////////////////////////////////////////////////// - template - class binary : public BaseT - { - public: - - typedef BaseT base_t; - typedef typename boost::call_traits::param_type left_param_t; - typedef typename boost::call_traits::const_reference left_return_t; - typedef typename boost::call_traits::param_type right_param_t; - typedef typename boost::call_traits::const_reference right_return_t; - typedef A left_t; - typedef typename A::embed_t left_embed_t; - typedef B right_t; - typedef typename B::embed_t right_embed_t; - - binary(left_param_t a, right_param_t b) - : base_t(), subj(a, b) {} - - left_return_t - left() const - { return subj.first(); } - - right_return_t - right() const - { return subj.second(); } - - private: - - boost::compressed_pair subj; - }; - -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -#pragma warning(pop) -#endif - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/difference.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/difference.hpp deleted file mode 100644 index 7d1cb1433d0f..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/difference.hpp +++ /dev/null @@ -1,150 +0,0 @@ -/*============================================================================= - Copyright (c) 1998-2003 Joel de Guzman - Copyright (c) 2001 Daniel Nuffer - Copyright (c) 2002 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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_DIFFERENCE_HPP) -#define BOOST_SPIRIT_DIFFERENCE_HPP - -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // - // difference: a - b; Matches a but not b - // - // Handles expressions of the form: - // - // a - b - // - // where a and b are parsers. The expression returns a composite - // parser that matches a but not b. One (not both) of the operands - // may be a literal char, wchar_t or a primitive string char const*, - // wchar_t const*. - // - /////////////////////////////////////////////////////////////////////////// - struct difference_parser_gen; - -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -#pragma warning(push) -#pragma warning(disable:4512) //assignment operator could not be generated -#endif - - template - struct difference - : public binary > > - { - typedef difference self_t; - typedef binary_parser_category parser_category_t; - typedef difference_parser_gen parser_generator_t; - typedef binary > base_t; - - difference(A const& a, B const& b) - : base_t(a, b) {} - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - typedef typename parser_result::type result_t; - typedef typename ScannerT::iterator_t iterator_t; - iterator_t save = scan.first; - if (result_t hl = this->left().parse(scan)) - { - std::swap(save, scan.first); - result_t hr = this->right().parse(scan); - if (!hr || (hr.length() < hl.length())) - { - scan.first = save; - return hl; - } - } - - return scan.no_match(); - } - }; - -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -#pragma warning(pop) -#endif - - struct difference_parser_gen - { - template - struct result - { - typedef - difference< - typename as_parser::type - , typename as_parser::type - > - type; - }; - - template - static difference< - typename as_parser::type - , typename as_parser::type - > - generate(A const& a, B const& b) - { - return difference::type, - BOOST_DEDUCED_TYPENAME as_parser::type> - (as_parser::convert(a), as_parser::convert(b)); - } - }; - - template - difference - operator-(parser const& a, parser const& b); - - template - difference > - operator-(parser const& a, char b); - - template - difference, B> - operator-(char a, parser const& b); - - template - difference > - operator-(parser const& a, char const* b); - - template - difference, B> - operator-(char const* a, parser const& b); - - template - difference > - operator-(parser const& a, wchar_t b); - - template - difference, B> - operator-(wchar_t a, parser const& b); - - template - difference > - operator-(parser const& a, wchar_t const* b); - - template - difference, B> - operator-(wchar_t const* a, parser const& b); - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif - -#include diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/directives.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/directives.hpp deleted file mode 100644 index a66efa281ff4..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/directives.hpp +++ /dev/null @@ -1,607 +0,0 @@ -/*============================================================================= - Copyright (c) 1998-2003 Joel de Guzman - Copyright (c) 2001 Daniel Nuffer - http://spirit.sourceforge.net/ - - 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_DIRECTIVES_HPP) -#define BOOST_SPIRIT_DIRECTIVES_HPP - -/////////////////////////////////////////////////////////////////////////////// -#include - -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // - // contiguous class - // - /////////////////////////////////////////////////////////////////////////// - struct lexeme_parser_gen; - - template - struct contiguous - : public unary > > - { - typedef contiguous self_t; - typedef unary_parser_category parser_category_t; - typedef lexeme_parser_gen parser_generator_t; - typedef unary > base_t; - - template - struct result - { - typedef typename parser_result::type type; - }; - - contiguous(ParserT const& p) - : base_t(p) {} - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - typedef typename parser_result::type result_t; - return impl::contiguous_parser_parse - (this->subject(), scan, scan); - } - }; - - struct lexeme_parser_gen - { - template - struct result { - - typedef contiguous type; - }; - - template - static contiguous - generate(parser const& subject) - { - return contiguous(subject.derived()); - } - - template - contiguous - operator[](parser const& subject) const - { - return contiguous(subject.derived()); - } - }; - - ////////////////////////////////// - const lexeme_parser_gen lexeme_d = lexeme_parser_gen(); - - /////////////////////////////////////////////////////////////////////////// - // - // lexeme_scanner - // - // Given a Scanner, return the correct scanner type that - // the lexeme_d uses. Scanner is assumed to be a phrase - // level scanner (see skipper.hpp) - // - /////////////////////////////////////////////////////////////////////////// - template - struct lexeme_scanner - { - typedef scanner_policies< - no_skipper_iteration_policy< - typename ScannerT::iteration_policy_t>, - typename ScannerT::match_policy_t, - typename ScannerT::action_policy_t - > policies_t; - - typedef typename - rebind_scanner_policies::type type; - }; - - /////////////////////////////////////////////////////////////////////////// - // - // inhibit_case_iteration_policy class - // - /////////////////////////////////////////////////////////////////////////// - template - struct inhibit_case_iteration_policy : public BaseT - { - typedef BaseT base_t; - - inhibit_case_iteration_policy() - : BaseT() {} - - template - inhibit_case_iteration_policy(PolicyT const& other) - : BaseT(other) {} - - template - CharT filter(CharT ch) const - { return impl::tolower_(ch); } - }; - - /////////////////////////////////////////////////////////////////////////// - // - // inhibit_case class - // - /////////////////////////////////////////////////////////////////////////// - struct inhibit_case_parser_gen; - - template - struct inhibit_case - : public unary > > - { - typedef inhibit_case self_t; - typedef unary_parser_category parser_category_t; - typedef inhibit_case_parser_gen parser_generator_t; - typedef unary > base_t; - - template - struct result - { - typedef typename parser_result::type type; - }; - - inhibit_case(ParserT const& p) - : base_t(p) {} - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - typedef typename parser_result::type result_t; - return impl::inhibit_case_parser_parse - (this->subject(), scan, scan); - } - }; - - template - struct inhibit_case_parser_gen_base - { - // This hack is needed to make borland happy. - // If these member operators were defined in the - // inhibit_case_parser_gen class, or if this class - // is non-templated, borland ICEs. - - static inhibit_case > - generate(char const* str) - { return inhibit_case >(str); } - - static inhibit_case > - generate(wchar_t const* str) - { return inhibit_case >(str); } - - static inhibit_case > - generate(char ch) - { return inhibit_case >(ch); } - - static inhibit_case > - generate(wchar_t ch) - { return inhibit_case >(ch); } - - template - static inhibit_case - generate(parser const& subject) - { return inhibit_case(subject.derived()); } - - inhibit_case > - operator[](char const* str) const - { return inhibit_case >(str); } - - inhibit_case > - operator[](wchar_t const* str) const - { return inhibit_case >(str); } - - inhibit_case > - operator[](char ch) const - { return inhibit_case >(ch); } - - inhibit_case > - operator[](wchar_t ch) const - { return inhibit_case >(ch); } - - template - inhibit_case - operator[](parser const& subject) const - { return inhibit_case(subject.derived()); } - }; - - ////////////////////////////////// - struct inhibit_case_parser_gen : public inhibit_case_parser_gen_base<0> - { - inhibit_case_parser_gen() {} - }; - - ////////////////////////////////// - // Depracated - const inhibit_case_parser_gen nocase_d = inhibit_case_parser_gen(); - - // Preferred syntax - const inhibit_case_parser_gen as_lower_d = inhibit_case_parser_gen(); - - /////////////////////////////////////////////////////////////////////////// - // - // as_lower_scanner - // - // Given a Scanner, return the correct scanner type that - // the as_lower_d uses. Scanner is assumed to be a scanner - // with an inhibit_case_iteration_policy. - // - /////////////////////////////////////////////////////////////////////////// - template - struct as_lower_scanner - { - typedef scanner_policies< - inhibit_case_iteration_policy< - typename ScannerT::iteration_policy_t>, - typename ScannerT::match_policy_t, - typename ScannerT::action_policy_t - > policies_t; - - typedef typename - rebind_scanner_policies::type type; - }; - - /////////////////////////////////////////////////////////////////////////// - // - // longest_alternative class - // - /////////////////////////////////////////////////////////////////////////// - struct longest_parser_gen; - - template - struct longest_alternative - : public binary > > - { - typedef longest_alternative self_t; - typedef binary_parser_category parser_category_t; - typedef longest_parser_gen parser_generator_t; - typedef binary > base_t; - - longest_alternative(A const& a, B const& b) - : base_t(a, b) {} - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - typedef typename parser_result::type result_t; - typename ScannerT::iterator_t save = scan.first; - result_t l = this->left().parse(scan); - std::swap(scan.first, save); - result_t r = this->right().parse(scan); - - if (l || r) - { - if (l.length() > r.length()) - { - scan.first = save; - return l; - } - return r; - } - - return scan.no_match(); - } - }; - - struct longest_parser_gen - { - template - struct result { - - typedef typename - impl::to_longest_alternative >::result_t - type; - }; - - template - static typename - impl::to_longest_alternative >::result_t - generate(alternative const& alt) - { - return impl::to_longest_alternative >:: - convert(alt); - } - - //'generate' for binary composite - template - static - longest_alternative - generate(A const &left, B const &right) - { - return longest_alternative(left, right); - } - - template - typename impl::to_longest_alternative >::result_t - operator[](alternative const& alt) const - { - return impl::to_longest_alternative >:: - convert(alt); - } - }; - - const longest_parser_gen longest_d = longest_parser_gen(); - - /////////////////////////////////////////////////////////////////////////// - // - // shortest_alternative class - // - /////////////////////////////////////////////////////////////////////////// - struct shortest_parser_gen; - - template - struct shortest_alternative - : public binary > > - { - typedef shortest_alternative self_t; - typedef binary_parser_category parser_category_t; - typedef shortest_parser_gen parser_generator_t; - typedef binary > base_t; - - shortest_alternative(A const& a, B const& b) - : base_t(a, b) {} - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - typedef typename parser_result::type result_t; - typename ScannerT::iterator_t save = scan.first; - result_t l = this->left().parse(scan); - std::swap(scan.first, save); - result_t r = this->right().parse(scan); - - if (l || r) - { - if ((l.length() < r.length() && l) || !r) - { - scan.first = save; - return l; - } - return r; - } - - return scan.no_match(); - } - }; - - struct shortest_parser_gen - { - template - struct result { - - typedef typename - impl::to_shortest_alternative >::result_t - type; - }; - - template - static typename - impl::to_shortest_alternative >::result_t - generate(alternative const& alt) - { - return impl::to_shortest_alternative >:: - convert(alt); - } - - //'generate' for binary composite - template - static - shortest_alternative - generate(A const &left, B const &right) - { - return shortest_alternative(left, right); - } - - template - typename impl::to_shortest_alternative >::result_t - operator[](alternative const& alt) const - { - return impl::to_shortest_alternative >:: - convert(alt); - } - }; - - const shortest_parser_gen shortest_d = shortest_parser_gen(); - - /////////////////////////////////////////////////////////////////////////// - // - // min_bounded class - // - /////////////////////////////////////////////////////////////////////////// - template - struct min_bounded_gen; - - template - struct min_bounded - : public unary > > - { - typedef min_bounded self_t; - typedef unary_parser_category parser_category_t; - typedef min_bounded_gen parser_generator_t; - typedef unary > base_t; - - template - struct result - { - typedef typename parser_result::type type; - }; - - min_bounded(ParserT const& p, BoundsT const& min__) - : base_t(p) - , min_(min__) {} - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - typedef typename parser_result::type result_t; - result_t hit = this->subject().parse(scan); - if (hit.has_valid_attribute() && hit.value() < min_) - return scan.no_match(); - return hit; - } - - BoundsT min_; - }; - - template - struct min_bounded_gen - { - min_bounded_gen(BoundsT const& min__) - : min_(min__) {} - - template - min_bounded - operator[](parser const& p) const - { return min_bounded(p.derived(), min_); } - - BoundsT min_; - }; - - template - inline min_bounded_gen - min_limit_d(BoundsT const& min_) - { return min_bounded_gen(min_); } - - /////////////////////////////////////////////////////////////////////////// - // - // max_bounded class - // - /////////////////////////////////////////////////////////////////////////// - template - struct max_bounded_gen; - - template - struct max_bounded - : public unary > > - { - typedef max_bounded self_t; - typedef unary_parser_category parser_category_t; - typedef max_bounded_gen parser_generator_t; - typedef unary > base_t; - - template - struct result - { - typedef typename parser_result::type type; - }; - - max_bounded(ParserT const& p, BoundsT const& max__) - : base_t(p) - , max_(max__) {} - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - typedef typename parser_result::type result_t; - result_t hit = this->subject().parse(scan); - if (hit.has_valid_attribute() && hit.value() > max_) - return scan.no_match(); - return hit; - } - - BoundsT max_; - }; - - template - struct max_bounded_gen - { - max_bounded_gen(BoundsT const& max__) - : max_(max__) {} - - template - max_bounded - operator[](parser const& p) const - { return max_bounded(p.derived(), max_); } - - BoundsT max_; - }; - - ////////////////////////////////// - template - inline max_bounded_gen - max_limit_d(BoundsT const& max_) - { return max_bounded_gen(max_); } - - /////////////////////////////////////////////////////////////////////////// - // - // bounded class - // - /////////////////////////////////////////////////////////////////////////// - template - struct bounded_gen; - - template - struct bounded - : public unary > > - { - typedef bounded self_t; - typedef unary_parser_category parser_category_t; - typedef bounded_gen parser_generator_t; - typedef unary > base_t; - - template - struct result - { - typedef typename parser_result::type type; - }; - - bounded(ParserT const& p, BoundsT const& min__, BoundsT const& max__) - : base_t(p) - , min_(min__) - , max_(max__) {} - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - typedef typename parser_result::type result_t; - result_t hit = this->subject().parse(scan); - if (hit.has_valid_attribute() && - (hit.value() < min_ || hit.value() > max_)) - return scan.no_match(); - return hit; - } - - BoundsT min_, max_; - }; - - template - struct bounded_gen - { - bounded_gen(BoundsT const& min__, BoundsT const& max__) - : min_(min__) - , max_(max__) {} - - template - bounded - operator[](parser const& p) const - { return bounded(p.derived(), min_, max_); } - - BoundsT min_, max_; - }; - - template - inline bounded_gen - limit_d(BoundsT const& min_, BoundsT const& max_) - { return bounded_gen(min_, max_); } - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/epsilon.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/epsilon.hpp deleted file mode 100644 index 71f20a0c08f3..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/epsilon.hpp +++ /dev/null @@ -1,285 +0,0 @@ -/*============================================================================= - Copyright (c) 1998-2003 Joel de Guzman - Copyright (c) 2002-2003 Martin Wille - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_EPSILON_HPP -#define BOOST_SPIRIT_EPSILON_HPP - -//////////////////////////////////////////////////////////////////////////////// -#include -#include -#include -#include -#include - -#if defined(BOOST_MSVC) -# pragma warning(push) -# pragma warning(disable: 4800) // forcing value to bool 'true' or 'false' -#endif - -//////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -/////////////////////////////////////////////////////////////////////////////// -// -// condition_parser class -// -// handles expressions of the form -// -// epsilon_p(cond) -// -// where cond is a function or a functor that returns a value suitable -// to be used in boolean context. The expression returns a parser that -// returns an empty match when the condition evaluates to true. -// -/////////////////////////////////////////////////////////////////////////////// - template - struct condition_parser : parser > - { - typedef condition_parser self_t; - - // not explicit! (needed for implementation of if_p et al.) - condition_parser(CondT const& cond_) : cond(cond_) {} - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - if (positive_ == bool(cond())) // allow cond to return int - return scan.empty_match(); - else - return scan.no_match(); - } - - condition_parser - negate() const - { return condition_parser(cond); } - - private: - - CondT cond; - }; - -#if BOOST_WORKAROUND(BOOST_MSVC, == 1310) || \ - BOOST_WORKAROUND(BOOST_MSVC, == 1400) || \ - BOOST_WORKAROUND(__SUNPRO_CC, <= 0x580) -// VC 7.1, VC8 and Sun CC <= 5.8 do not support general -// expressions of non-type template parameters in instantiations - template - inline condition_parser - operator~(condition_parser const& p) - { return p.negate(); } - - template - inline condition_parser - operator~(condition_parser const& p) - { return p.negate(); } -#else // BOOST_WORKAROUND(BOOST_MSVC, == 1310) || == 1400 - template - inline condition_parser - operator~(condition_parser const& p) - { return p.negate(); } -#endif // BOOST_WORKAROUND(BOOST_MSVC, == 1310) || == 1400 - -/////////////////////////////////////////////////////////////////////////////// -// -// empty_match_parser class -// -// handles expressions of the form -// epsilon_p(subject) -// where subject is a parser. The expression returns a composite -// parser that returns an empty match if the subject parser matches. -// -/////////////////////////////////////////////////////////////////////////////// - struct empty_match_parser_gen; - struct negated_empty_match_parser_gen; - - template - struct negated_empty_match_parser; // Forward declaration - - template - struct empty_match_parser - : unary > > - { - typedef empty_match_parser self_t; - typedef unary > base_t; - typedef unary_parser_category parser_category_t; - typedef empty_match_parser_gen parser_genererator_t; - typedef self_t embed_t; - - explicit empty_match_parser(SubjectT const& p) : base_t(p) {} - - template - struct result - { typedef typename match_result::type type; }; - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - typename ScannerT::iterator_t save(scan.first); - - typedef typename no_actions_scanner::policies_t - policies_t; - - bool matches = this->subject().parse( - scan.change_policies(policies_t(scan))); - if (matches) - { - scan.first = save; // reset the position - return scan.empty_match(); - } - else - { - return scan.no_match(); - } - } - - negated_empty_match_parser - negate() const - { return negated_empty_match_parser(this->subject()); } - }; - - template - struct negated_empty_match_parser - : public unary > > - { - typedef negated_empty_match_parser self_t; - typedef unary > base_t; - typedef unary_parser_category parser_category_t; - typedef negated_empty_match_parser_gen parser_genererator_t; - - explicit negated_empty_match_parser(SubjectT const& p) : base_t(p) {} - - template - struct result - { typedef typename match_result::type type; }; - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - typename ScannerT::iterator_t save(scan.first); - - typedef typename no_actions_scanner::policies_t - policies_t; - - bool matches = this->subject().parse( - scan.change_policies(policies_t(scan))); - if (!matches) - { - scan.first = save; // reset the position - return scan.empty_match(); - } - else - { - return scan.no_match(); - } - } - - empty_match_parser - negate() const - { return empty_match_parser(this->subject()); } - }; - - struct empty_match_parser_gen - { - template - struct result - { typedef empty_match_parser type; }; - - template - static empty_match_parser - generate(parser const& subject) - { return empty_match_parser(subject.derived()); } - }; - - struct negated_empty_match_parser_gen - { - template - struct result - { typedef negated_empty_match_parser type; }; - - template - static negated_empty_match_parser - generate(parser const& subject) - { return negated_empty_match_parser(subject.derived()); } - }; - - ////////////////////////////// - template - inline negated_empty_match_parser - operator~(empty_match_parser const& p) - { return p.negate(); } - - template - inline empty_match_parser - operator~(negated_empty_match_parser const& p) - { return p.negate(); } - -/////////////////////////////////////////////////////////////////////////////// -// -// epsilon_ parser and parser generator class -// -// Operates as primitive parser that always matches an empty sequence. -// -// Also operates as a parser generator. According to the type of the -// argument an instance of empty_match_parser<> (when the argument is -// a parser) or condition_parser<> (when the argument is not a parser) -// is returned by operator(). -// -/////////////////////////////////////////////////////////////////////////////// - namespace impl - { - template - struct epsilon_selector - { - typedef typename as_parser::type subject_t; - typedef typename - mpl::if_< - is_parser - ,empty_match_parser - ,condition_parser - >::type type; - }; - } - - struct epsilon_parser : public parser - { - typedef epsilon_parser self_t; - - epsilon_parser() {} - - template - typename parser_result::type - parse(ScannerT const& scan) const - { return scan.empty_match(); } - - template - typename impl::epsilon_selector::type - operator()(SubjectT const& subject) const - { - typedef typename impl::epsilon_selector::type result_t; - return result_t(subject); - } - }; - - epsilon_parser const epsilon_p = epsilon_parser(); - epsilon_parser const eps_p = epsilon_parser(); - -/////////////////////////////////////////////////////////////////////////////// -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#ifdef BOOST_MSVC -# pragma warning (pop) -#endif - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/exclusive_or.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/exclusive_or.hpp deleted file mode 100644 index 69d4859b00ee..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/exclusive_or.hpp +++ /dev/null @@ -1,142 +0,0 @@ -/*============================================================================= - Copyright (c) 1998-2003 Joel de Guzman - Copyright (c) 2001 Daniel Nuffer - Copyright (c) 2002 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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_EXCLUSIVE_OR_HPP) -#define BOOST_SPIRIT_EXCLUSIVE_OR_HPP - -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // - // exclusive_or class - // - // Handles expressions of the form: - // - // a ^ b - // - // where a and b are parsers. The expression returns a composite - // parser that matches a or b but not both. One (not both) of the - // operands may be a literal char, wchar_t or a primitive string - // char const*, wchar_t const*. - // - /////////////////////////////////////////////////////////////////////////// - struct exclusive_or_parser_gen; - - template - struct exclusive_or - : public binary > > - { - typedef exclusive_or self_t; - typedef binary_parser_category parser_category_t; - typedef exclusive_or_parser_gen parser_generator_t; - typedef binary > base_t; - - exclusive_or(A const& a, B const& b) - : base_t(a, b) {} - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - typedef typename parser_result::type result_t; - typedef typename ScannerT::iterator_t iterator_t; - - iterator_t save = scan.first; - result_t l = this->left().parse(scan); - std::swap(save, scan.first); - result_t r = this->right().parse(scan); - - if (l ? !bool(r) : bool(r)) - { - if (l) - scan.first = save; - return l ? l : r; - } - - return scan.no_match(); - } - }; - - struct exclusive_or_parser_gen - { - template - struct result - { - typedef - exclusive_or< - typename as_parser::type - , typename as_parser::type - > - type; - }; - - template - static exclusive_or< - typename as_parser::type - , typename as_parser::type - > - generate(A const& a, B const& b) - { - return exclusive_or::type, - BOOST_DEDUCED_TYPENAME as_parser::type> - (as_parser::convert(a), as_parser::convert(b)); - } - }; - - template - exclusive_or - operator^(parser const& a, parser const& b); - - template - exclusive_or > - operator^(parser const& a, char b); - - template - exclusive_or, B> - operator^(char a, parser const& b); - - template - exclusive_or > - operator^(parser const& a, char const* b); - - template - exclusive_or, B> - operator^(char const* a, parser const& b); - - template - exclusive_or > - operator^(parser const& a, wchar_t b); - - template - exclusive_or, B> - operator^(wchar_t a, parser const& b); - - template - exclusive_or > - operator^(parser const& a, wchar_t const* b); - - template - exclusive_or, B> - operator^(wchar_t const* a, parser const& b); - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif - -#include diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/impl/alternative.ipp b/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/impl/alternative.ipp deleted file mode 100644 index 7a7599b85ccd..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/impl/alternative.ipp +++ /dev/null @@ -1,90 +0,0 @@ -/*============================================================================= - Copyright (c) 1998-2003 Joel de Guzman - Copyright (c) 2001 Daniel Nuffer - Copyright (c) 2002 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#if !defined(BOOST_SPIRIT_ALTERNATIVE_IPP) -#define BOOST_SPIRIT_ALTERNATIVE_IPP - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // - // alternative class implementation - // - /////////////////////////////////////////////////////////////////////////// - template - inline alternative - operator|(parser const& a, parser const& b) - { - return alternative(a.derived(), b.derived()); - } - - template - inline alternative > - operator|(parser const& a, char b) - { - return alternative >(a.derived(), b); - } - - template - inline alternative, B> - operator|(char a, parser const& b) - { - return alternative, B>(a, b.derived()); - } - - template - inline alternative > - operator|(parser const& a, char const* b) - { - return alternative >(a.derived(), b); - } - - template - inline alternative, B> - operator|(char const* a, parser const& b) - { - return alternative, B>(a, b.derived()); - } - - template - inline alternative > - operator|(parser const& a, wchar_t b) - { - return alternative >(a.derived(), b); - } - - template - inline alternative, B> - operator|(wchar_t a, parser const& b) - { - return alternative, B>(a, b.derived()); - } - - template - inline alternative > - operator|(parser const& a, wchar_t const* b) - { - return alternative >(a.derived(), b); - } - - template - inline alternative, B> - operator|(wchar_t const* a, parser const& b) - { - return alternative, B>(a, b.derived()); - } - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace boost::spirit - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/impl/difference.ipp b/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/impl/difference.ipp deleted file mode 100644 index f5df8c75282d..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/impl/difference.ipp +++ /dev/null @@ -1,90 +0,0 @@ -/*============================================================================= - Copyright (c) 1998-2003 Joel de Guzman - Copyright (c) 2001 Daniel Nuffer - Copyright (c) 2002 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#if !defined(BOOST_SPIRIT_DIFFERENCE_IPP) -#define BOOST_SPIRIT_DIFFERENCE_IPP - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // - // difference class implementation - // - /////////////////////////////////////////////////////////////////////////// - template - inline difference - operator-(parser const& a, parser const& b) - { - return difference(a.derived(), b.derived()); - } - - template - inline difference > - operator-(parser const& a, char b) - { - return difference >(a.derived(), b); - } - - template - inline difference, B> - operator-(char a, parser const& b) - { - return difference, B>(a, b.derived()); - } - - template - inline difference > - operator-(parser const& a, char const* b) - { - return difference >(a.derived(), b); - } - - template - inline difference, B> - operator-(char const* a, parser const& b) - { - return difference, B>(a, b.derived()); - } - - template - inline difference > - operator-(parser const& a, wchar_t b) - { - return difference >(a.derived(), b); - } - - template - inline difference, B> - operator-(wchar_t a, parser const& b) - { - return difference, B>(a, b.derived()); - } - - template - inline difference > - operator-(parser const& a, wchar_t const* b) - { - return difference >(a.derived(), b); - } - - template - inline difference, B> - operator-(wchar_t const* a, parser const& b) - { - return difference, B>(a, b.derived()); - } - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace boost::spirit - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/impl/directives.ipp b/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/impl/directives.ipp deleted file mode 100644 index 96b2dd79c59a..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/impl/directives.ipp +++ /dev/null @@ -1,210 +0,0 @@ -/*============================================================================= - Copyright (c) 1998-2003 Joel de Guzman - Copyright (c) 2001 Daniel Nuffer - Copyright (c) 2001 Bruce Florman - Copyright (c) 2002 Raghavendra Satish - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#if !defined(BOOST_SPIRIT_DIRECTIVES_IPP) -#define BOOST_SPIRIT_DIRECTIVES_IPP - -/////////////////////////////////////////////////////////////////////////////// -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - template - struct no_skipper_iteration_policy; - - template - struct inhibit_case_iteration_policy; - - template - struct alternative; - - template - struct longest_alternative; - - template - struct shortest_alternative; - - namespace impl - { - template - inline RT - contiguous_parser_parse( - ST const& s, - ScannerT const& scan, - skipper_iteration_policy const&) - { - typedef scanner_policies< - no_skipper_iteration_policy< - BOOST_DEDUCED_TYPENAME ScannerT::iteration_policy_t>, - BOOST_DEDUCED_TYPENAME ScannerT::match_policy_t, - BOOST_DEDUCED_TYPENAME ScannerT::action_policy_t - > policies_t; - - scan.skip(scan); - RT hit = s.parse(scan.change_policies(policies_t(scan))); - // We will not do a post skip!!! - return hit; - } - - template - inline RT - contiguous_parser_parse( - ST const& s, - ScannerT const& scan, - no_skipper_iteration_policy const&) - { - return s.parse(scan); - } - - template - inline RT - contiguous_parser_parse( - ST const& s, - ScannerT const& scan, - iteration_policy const&) - { - return s.parse(scan); - } - - template < - typename RT, - typename ParserT, - typename ScannerT, - typename BaseT> - inline RT - implicit_lexeme_parse( - ParserT const& p, - ScannerT const& scan, - skipper_iteration_policy const&) - { - typedef scanner_policies< - no_skipper_iteration_policy< - BOOST_DEDUCED_TYPENAME ScannerT::iteration_policy_t>, - BOOST_DEDUCED_TYPENAME ScannerT::match_policy_t, - BOOST_DEDUCED_TYPENAME ScannerT::action_policy_t - > policies_t; - - scan.skip(scan); - RT hit = p.parse_main(scan.change_policies(policies_t(scan))); - // We will not do a post skip!!! - return hit; - } - - template < - typename RT, - typename ParserT, - typename ScannerT, - typename BaseT> - inline RT - implicit_lexeme_parse( - ParserT const& p, - ScannerT const& scan, - no_skipper_iteration_policy const&) - { - return p.parse_main(scan); - } - - template - inline RT - implicit_lexeme_parse( - ParserT const& p, - ScannerT const& scan, - iteration_policy const&) - { - return p.parse_main(scan); - } - - template - inline RT - inhibit_case_parser_parse( - ST const& s, - ScannerT const& scan, - iteration_policy const&) - { - typedef scanner_policies< - inhibit_case_iteration_policy< - BOOST_DEDUCED_TYPENAME ScannerT::iteration_policy_t>, - BOOST_DEDUCED_TYPENAME ScannerT::match_policy_t, - BOOST_DEDUCED_TYPENAME ScannerT::action_policy_t - > policies_t; - - return s.parse(scan.change_policies(policies_t(scan))); - } - - template - inline RT - inhibit_case_parser_parse( - ST const& s, - ScannerT const& scan, - inhibit_case_iteration_policy const&) - { - return s.parse(scan); - } - - template - struct to_longest_alternative - { - typedef T result_t; - static result_t const& - convert(T const& a) // Special (end) case - { return a; } - }; - - template - struct to_longest_alternative > - { - typedef typename to_longest_alternative::result_t a_t; - typedef typename to_longest_alternative::result_t b_t; - typedef longest_alternative result_t; - - static result_t - convert(alternative const& alt) // Recursive case - { - return result_t( - to_longest_alternative::convert(alt.left()), - to_longest_alternative::convert(alt.right())); - } - }; - - template - struct to_shortest_alternative - { - typedef T result_t; - static result_t const& - convert(T const& a) // Special (end) case - { return a; } - }; - - template - struct to_shortest_alternative > - { - typedef typename to_shortest_alternative::result_t a_t; - typedef typename to_shortest_alternative::result_t b_t; - typedef shortest_alternative result_t; - - static result_t - convert(alternative const& alt) // Recursive case - { - return result_t( - to_shortest_alternative::convert(alt.left()), - to_shortest_alternative::convert(alt.right())); - } - }; - } - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace boost::spirit - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/impl/exclusive_or.ipp b/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/impl/exclusive_or.ipp deleted file mode 100644 index 34831a7e9f80..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/impl/exclusive_or.ipp +++ /dev/null @@ -1,90 +0,0 @@ -/*============================================================================= - Copyright (c) 1998-2003 Joel de Guzman - Copyright (c) 2001 Daniel Nuffer - Copyright (c) 2002 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#if !defined(BOOST_SPIRIT_EXCLUSIVE_OR_IPP) -#define BOOST_SPIRIT_EXCLUSIVE_OR_IPP - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // - // exclusive_or class implementation - // - /////////////////////////////////////////////////////////////////////////// - template - inline exclusive_or - operator^(parser const& a, parser const& b) - { - return exclusive_or(a.derived(), b.derived()); - } - - template - inline exclusive_or > - operator^(parser const& a, char b) - { - return exclusive_or >(a.derived(), b); - } - - template - inline exclusive_or, B> - operator^(char a, parser const& b) - { - return exclusive_or, B>(a, b.derived()); - } - - template - inline exclusive_or > - operator^(parser const& a, char const* b) - { - return exclusive_or >(a.derived(), b); - } - - template - inline exclusive_or, B> - operator^(char const* a, parser const& b) - { - return exclusive_or, B>(a, b.derived()); - } - - template - inline exclusive_or > - operator^(parser const& a, wchar_t b) - { - return exclusive_or >(a.derived(), b); - } - - template - inline exclusive_or, B> - operator^(wchar_t a, parser const& b) - { - return exclusive_or, B>(a, b.derived()); - } - - template - inline exclusive_or > - operator^(parser const& a, wchar_t const* b) - { - return exclusive_or >(a.derived(), b); - } - - template - inline exclusive_or, B> - operator^(wchar_t const* a, parser const& b) - { - return exclusive_or, B>(a, b.derived()); - } - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace boost::spirit - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/impl/intersection.ipp b/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/impl/intersection.ipp deleted file mode 100644 index 2810586cd72a..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/impl/intersection.ipp +++ /dev/null @@ -1,90 +0,0 @@ -/*============================================================================= - Copyright (c) 1998-2003 Joel de Guzman - Copyright (c) 2001 Daniel Nuffer - Copyright (c) 2002 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#if !defined(BOOST_SPIRIT_INTERSECTION_IPP) -#define BOOST_SPIRIT_INTERSECTION_IPP - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // - // intersection class implementation - // - /////////////////////////////////////////////////////////////////////////// - template - inline intersection - operator&(parser const& a, parser const& b) - { - return intersection(a.derived(), b.derived()); - } - - template - inline intersection > - operator&(parser const& a, char b) - { - return intersection >(a.derived(), b); - } - - template - inline intersection, B> - operator&(char a, parser const& b) - { - return intersection, B>(a, b.derived()); - } - - template - inline intersection > - operator&(parser const& a, char const* b) - { - return intersection >(a.derived(), b); - } - - template - inline intersection, B> - operator&(char const* a, parser const& b) - { - return intersection, B>(a, b.derived()); - } - - template - inline intersection > - operator&(parser const& a, wchar_t b) - { - return intersection >(a.derived(), b); - } - - template - inline intersection, B> - operator&(wchar_t a, parser const& b) - { - return intersection, B>(a, b.derived()); - } - - template - inline intersection > - operator&(parser const& a, wchar_t const* b) - { - return intersection >(a.derived(), b); - } - - template - inline intersection, B> - operator&(wchar_t const* a, parser const& b) - { - return intersection, B>(a, b.derived()); - } - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace boost::spirit - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/impl/kleene_star.ipp b/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/impl/kleene_star.ipp deleted file mode 100644 index 8c4f5135c06a..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/impl/kleene_star.ipp +++ /dev/null @@ -1,34 +0,0 @@ -/*============================================================================= - Copyright (c) 1998-2003 Joel de Guzman - Copyright (c) 2001 Daniel Nuffer - Copyright (c) 2002 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#if !defined(BOOST_SPIRIT_KLEENE_STAR_IPP) -#define BOOST_SPIRIT_KLEENE_STAR_IPP - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // - // kleene_star class implementation - // - /////////////////////////////////////////////////////////////////////////// - template - inline kleene_star - operator*(parser const& a) - { - return kleene_star(a.derived()); - } - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace boost::spirit - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/impl/list.ipp b/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/impl/list.ipp deleted file mode 100644 index cd7965adfd04..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/impl/list.ipp +++ /dev/null @@ -1,93 +0,0 @@ -/*============================================================================= - Copyright (c) 1998-2003 Joel de Guzman - Copyright (c) 2001 Daniel Nuffer - Copyright (c) 2002 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#if !defined(BOOST_SPIRIT_LIST_IPP) -#define BOOST_SPIRIT_LIST_IPP - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // - // operator% is defined as: - // a % b ---> a >> *(b >> a) - // - /////////////////////////////////////////////////////////////////////////// - template - inline sequence > > - operator%(parser const& a, parser const& b) - { - return a.derived() >> *(b.derived() >> a.derived()); - } - - template - inline sequence, A> > > - operator%(parser const& a, char b) - { - return a.derived() >> *(b >> a.derived()); - } - - template - inline sequence, kleene_star > > > - operator%(char a, parser const& b) - { - return a >> *(b.derived() >> a); - } - - template - inline sequence, A> > > - operator%(parser const& a, char const* b) - { - return a.derived() >> *(b >> a.derived()); - } - - template - inline sequence, - kleene_star > > > - operator%(char const* a, parser const& b) - { - return a >> *(b.derived() >> a); - } - - template - inline sequence, A> > > - operator%(parser const& a, wchar_t b) - { - return a.derived() >> *(b >> a.derived()); - } - - template - inline sequence, kleene_star > > > - operator%(wchar_t a, parser const& b) - { - return a >> *(b.derived() >> a); - } - - template - inline sequence, A> > > - operator%(parser const& a, wchar_t const* b) - { - return a.derived() >> *(b >> a.derived()); - } - - template - inline sequence, - kleene_star > > > - operator%(wchar_t const* a, parser const& b) - { - return a >> *(b.derived() >> a); - } - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace boost::spirit - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/impl/optional.ipp b/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/impl/optional.ipp deleted file mode 100644 index 629eac8336f1..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/impl/optional.ipp +++ /dev/null @@ -1,34 +0,0 @@ -/*============================================================================= - Copyright (c) 1998-2003 Joel de Guzman - Copyright (c) 2001 Daniel Nuffer - Copyright (c) 2002 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#if !defined(BOOST_SPIRIT_OPTIONAL_IPP) -#define BOOST_SPIRIT_OPTIONAL_IPP - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // - // optional class implementation - // - /////////////////////////////////////////////////////////////////////////// - template - optional - operator!(parser const& a) - { - return optional(a.derived()); - } - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace boost::spirit - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/impl/positive.ipp b/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/impl/positive.ipp deleted file mode 100644 index 9698e69e55c4..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/impl/positive.ipp +++ /dev/null @@ -1,34 +0,0 @@ -/*============================================================================= - Copyright (c) 1998-2003 Joel de Guzman - Copyright (c) 2001 Daniel Nuffer - Copyright (c) 2002 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#if !defined(BOOST_SPIRIT_POSITIVE_IPP) -#define BOOST_SPIRIT_POSITIVE_IPP - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // - // positive class implementation - // - /////////////////////////////////////////////////////////////////////////// - template - inline positive - operator+(parser const& a) - { - return positive(a.derived()); - } - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace boost::spirit - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/impl/sequence.ipp b/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/impl/sequence.ipp deleted file mode 100644 index 283d420bc3ad..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/impl/sequence.ipp +++ /dev/null @@ -1,90 +0,0 @@ -/*============================================================================= - Copyright (c) 1998-2003 Joel de Guzman - Copyright (c) 2001 Daniel Nuffer - Copyright (c) 2002 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#if !defined(BOOST_SPIRIT_SEQUENCE_IPP) -#define BOOST_SPIRIT_SEQUENCE_IPP - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // - // sequence class implementation - // - /////////////////////////////////////////////////////////////////////////// - template - inline sequence - operator>>(parser const& a, parser const& b) - { - return sequence(a.derived(), b.derived()); - } - - template - inline sequence > - operator>>(parser const& a, char b) - { - return sequence >(a.derived(), b); - } - - template - inline sequence, B> - operator>>(char a, parser const& b) - { - return sequence, B>(a, b.derived()); - } - - template - inline sequence > - operator>>(parser const& a, char const* b) - { - return sequence >(a.derived(), b); - } - - template - inline sequence, B> - operator>>(char const* a, parser const& b) - { - return sequence, B>(a, b.derived()); - } - - template - inline sequence > - operator>>(parser const& a, wchar_t b) - { - return sequence >(a.derived(), b); - } - - template - inline sequence, B> - operator>>(wchar_t a, parser const& b) - { - return sequence, B>(a, b.derived()); - } - - template - inline sequence > - operator>>(parser const& a, wchar_t const* b) - { - return sequence >(a.derived(), b); - } - - template - inline sequence, B> - operator>>(wchar_t const* a, parser const& b) - { - return sequence, B>(a, b.derived()); - } - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace boost::spirit - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/impl/sequential_and.ipp b/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/impl/sequential_and.ipp deleted file mode 100644 index 9f577a4f55cf..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/impl/sequential_and.ipp +++ /dev/null @@ -1,90 +0,0 @@ -/*============================================================================= - Copyright (c) 1998-2003 Joel de Guzman - Copyright (c) 2001 Daniel Nuffer - Copyright (c) 2002 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#if !defined(BOOST_SPIRIT_SEQUENTIAL_AND_IPP) -#define BOOST_SPIRIT_SEQUENTIAL_AND_IPP - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // - // sequential-and operators implementation - // - /////////////////////////////////////////////////////////////////////////// - template - inline sequence - operator&&(parser const& a, parser const& b) - { - return sequence(a.derived(), b.derived()); - } - - template - inline sequence > - operator&&(parser const& a, char b) - { - return sequence >(a.derived(), b); - } - - template - inline sequence, B> - operator&&(char a, parser const& b) - { - return sequence, B>(a, b.derived()); - } - - template - inline sequence > - operator&&(parser const& a, char const* b) - { - return sequence >(a.derived(), b); - } - - template - inline sequence, B> - operator&&(char const* a, parser const& b) - { - return sequence, B>(a, b.derived()); - } - - template - inline sequence > - operator&&(parser const& a, wchar_t b) - { - return sequence >(a.derived(), b); - } - - template - inline sequence, B> - operator&&(wchar_t a, parser const& b) - { - return sequence, B>(a, b.derived()); - } - - template - inline sequence > - operator&&(parser const& a, wchar_t const* b) - { - return sequence >(a.derived(), b); - } - - template - inline sequence, B> - operator&&(wchar_t const* a, parser const& b) - { - return sequence, B>(a, b.derived()); - } - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace boost::spirit - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/impl/sequential_or.ipp b/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/impl/sequential_or.ipp deleted file mode 100644 index 521faf61ec23..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/impl/sequential_or.ipp +++ /dev/null @@ -1,90 +0,0 @@ -/*============================================================================= - Copyright (c) 1998-2003 Joel de Guzman - Copyright (c) 2001 Daniel Nuffer - Copyright (c) 2002 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#if !defined(BOOST_SPIRIT_SEQUENTIAL_OR_IPP) -#define BOOST_SPIRIT_SEQUENTIAL_OR_IPP - -namespace boost { namespace spirit { - - BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // - // sequential-or class implementation - // - /////////////////////////////////////////////////////////////////////////// - template - inline sequential_or - operator||(parser const& a, parser const& b) - { - return sequential_or(a.derived(), b.derived()); - } - - template - inline sequential_or > - operator||(parser const& a, char b) - { - return sequential_or >(a.derived(), b); - } - - template - inline sequential_or, B> - operator||(char a, parser const& b) - { - return sequential_or, B>(a, b.derived()); - } - - template - inline sequential_or > - operator||(parser const& a, char const* b) - { - return sequential_or >(a.derived(), b); - } - - template - inline sequential_or, B> - operator||(char const* a, parser const& b) - { - return sequential_or, B>(a, b.derived()); - } - - template - inline sequential_or > - operator||(parser const& a, wchar_t b) - { - return sequential_or >(a.derived(), b); - } - - template - inline sequential_or, B> - operator||(wchar_t a, parser const& b) - { - return sequential_or, B>(a, b.derived()); - } - - template - inline sequential_or > - operator||(parser const& a, wchar_t const* b) - { - return sequential_or >(a.derived(), b); - } - - template - inline sequential_or, B> - operator||(wchar_t const* a, parser const& b) - { - return sequential_or, B>(a, b.derived()); - } - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace boost::spirit - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/intersection.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/intersection.hpp deleted file mode 100644 index 867c20f330b4..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/intersection.hpp +++ /dev/null @@ -1,142 +0,0 @@ -/*============================================================================= - Copyright (c) 1998-2003 Joel de Guzman - Copyright (c) 2001 Daniel Nuffer - Copyright (c) 2002 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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_INTERSECTION_HPP) -#define BOOST_SPIRIT_INTERSECTION_HPP - -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // - // intersection class - // - // Handles expressions of the form: - // - // a & b - // - // where a and b are parsers. The expression returns a composite - // parser that matches a and b. One (not both) of the operands may - // be a literal char, wchar_t or a primitive string char const*, - // wchar_t const*. - // - // The expression is short circuit evaluated. b is never touched - // when a is returns a no-match. - // - /////////////////////////////////////////////////////////////////////////// - struct intersection_parser_gen; - - template - struct intersection - : public binary > > - { - typedef intersection self_t; - typedef binary_parser_category parser_category_t; - typedef intersection_parser_gen parser_generator_t; - typedef binary > base_t; - - intersection(A const& a, B const& b) - : base_t(a, b) {} - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - typedef typename parser_result::type result_t; - typedef typename ScannerT::iterator_t iterator_t; - iterator_t save = scan.first; - if (result_t hl = this->left().parse(scan)) - { - ScannerT bscan(scan.first, scan.first, scan); - scan.first = save; - result_t hr = this->right().parse(bscan); - if (hl.length() == hr.length()) - return hl; - } - - return scan.no_match(); - } - }; - - struct intersection_parser_gen - { - template - struct result - { - typedef - intersection< - typename as_parser::type - , typename as_parser::type - > - type; - }; - - template - static intersection< - typename as_parser::type - , typename as_parser::type - > - generate(A const& a, B const& b) - { - return intersection::type, - BOOST_DEDUCED_TYPENAME as_parser::type> - (as_parser::convert(a), as_parser::convert(b)); - } - }; - - template - intersection - operator&(parser const& a, parser const& b); - - template - intersection > - operator&(parser const& a, char b); - - template - intersection, B> - operator&(char a, parser const& b); - - template - intersection > - operator&(parser const& a, char const* b); - - template - intersection, B> - operator&(char const* a, parser const& b); - - template - intersection > - operator&(parser const& a, wchar_t b); - - template - intersection, B> - operator&(wchar_t a, parser const& b); - - template - intersection > - operator&(parser const& a, wchar_t const* b); - - template - intersection, B> - operator&(wchar_t const* a, parser const& b); - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif - -#include diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/kleene_star.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/kleene_star.hpp deleted file mode 100644 index 9b6c73a00801..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/kleene_star.hpp +++ /dev/null @@ -1,109 +0,0 @@ -/*============================================================================= - Copyright (c) 1998-2003 Joel de Guzman - Copyright (c) 2001 Daniel Nuffer - Copyright (c) 2002 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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_KLEENE_STAR_HPP) -#define BOOST_SPIRIT_KLEENE_STAR_HPP - -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // - // kleene_star class - // - // Handles expressions of the form: - // - // *a - // - // where a is a parser. The expression returns a composite - // parser that matches its subject zero (0) or more times. - // - /////////////////////////////////////////////////////////////////////////// - struct kleene_star_parser_gen; - -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -#pragma warning(push) -#pragma warning(disable:4512) //assignment operator could not be generated -#endif - - template - struct kleene_star - : public unary > > - { - typedef kleene_star self_t; - typedef unary_parser_category parser_category_t; - typedef kleene_star_parser_gen parser_generator_t; - typedef unary > base_t; - - kleene_star(S const& a) - : base_t(a) {} - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - typedef typename parser_result::type result_t; - typedef typename ScannerT::iterator_t iterator_t; - result_t hit = scan.empty_match(); - - for (;;) - { - iterator_t save = scan.first; - if (result_t next = this->subject().parse(scan)) - { - scan.concat_match(hit, next); - } - else - { - scan.first = save; - return hit; - } - } - } - }; - -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -#pragma warning(pop) -#endif - - struct kleene_star_parser_gen - { - template - struct result - { - typedef kleene_star type; - }; - - template - static kleene_star - generate(parser const& a) - { - return kleene_star(a.derived()); - } - }; - - ////////////////////////////////// - template - kleene_star - operator*(parser const& a); - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif - -#include diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/list.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/list.hpp deleted file mode 100644 index cdb879e14a23..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/list.hpp +++ /dev/null @@ -1,73 +0,0 @@ -/*============================================================================= - Copyright (c) 1998-2003 Joel de Guzman - Copyright (c) 2001 Daniel Nuffer - Copyright (c) 2002 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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_LIST_HPP) -#define BOOST_SPIRIT_LIST_HPP - -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // - // operator% is defined as: - // a % b ---> a >> *(b >> a) - // - /////////////////////////////////////////////////////////////////////////// - template - sequence > > - operator%(parser const& a, parser const& b); - - template - sequence, A> > > - operator%(parser const& a, char b); - - template - sequence, kleene_star > > > - operator%(char a, parser const& b); - - template - sequence, A> > > - operator%(parser const& a, char const* b); - - template - sequence, - kleene_star > > > - operator%(char const* a, parser const& b); - - template - sequence, A> > > - operator%(parser const& a, wchar_t b); - - template - sequence, kleene_star > > > - operator%(wchar_t a, parser const& b); - - template - sequence, A> > > - operator%(parser const& a, wchar_t const* b); - - template - sequence, - kleene_star > > > - operator%(wchar_t const* a, parser const& b); - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif - -#include diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/no_actions.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/no_actions.hpp deleted file mode 100644 index 472b0e83f8f7..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/no_actions.hpp +++ /dev/null @@ -1,165 +0,0 @@ -/*============================================================================= - Copyright (c) 1998-2003 Joel de Guzman - Copyright (c) 2003 Vaclav Vesely - http://spirit.sourceforge.net/ - - 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_NO_ACTIONS_HPP) -#define BOOST_SPIRIT_NO_ACTIONS_HPP - -#include -#include -#include - -namespace boost { -namespace spirit { -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -//----------------------------------------------------------------------------- -// no_actions_action_policy - -template -struct no_actions_action_policy: - public BaseT -{ - typedef BaseT base_t; - - no_actions_action_policy(): - BaseT() - {} - - template - no_actions_action_policy(PolicyT const& other): - BaseT(other) - {} - - template - void - do_action( - ActorT const& /*actor*/, - AttrT& /*val*/, - IteratorT const& /*first*/, - IteratorT const& /*last*/) const - {} -}; - -//----------------------------------------------------------------------------- -// no_actions_scanner - - -namespace detail -{ - template - struct compute_no_actions_action_policy - { - typedef no_actions_action_policy type; - }; - - template - struct compute_no_actions_action_policy > - { - typedef no_actions_action_policy type; - }; -} - -template > -struct no_actions_scanner -{ - typedef scanner_policies< - typename ScannerT::iteration_policy_t, - typename ScannerT::match_policy_t, - typename detail::compute_no_actions_action_policy::type - > policies_t; - - typedef typename - rebind_scanner_policies::type type; -}; - -#if BOOST_SPIRIT_RULE_SCANNERTYPE_LIMIT > 1 - -template > -struct no_actions_scanner_list -{ - typedef - scanner_list< - ScannerT, - typename no_actions_scanner::type - > - type; -}; - -#endif // BOOST_SPIRIT_RULE_SCANNERTYPE_LIMIT > 1 - -//----------------------------------------------------------------------------- -// no_actions_parser - -struct no_actions_parser_gen; - -template -struct no_actions_parser: - public unary > > -{ - typedef no_actions_parser self_t; - typedef unary_parser_category parser_category_t; - typedef no_actions_parser_gen parser_generator_t; - typedef unary > base_t; - - template - struct result - { - typedef typename parser_result::type type; - }; - - no_actions_parser(ParserT const& p) - : base_t(p) - {} - - template - typename result::type - parse(ScannerT const& scan) const - { - typedef typename no_actions_scanner::policies_t policies_t; - - return this->subject().parse(scan.change_policies(policies_t(scan))); - } -}; - -//----------------------------------------------------------------------------- -// no_actions_parser_gen - -struct no_actions_parser_gen -{ - template - struct result - { - typedef no_actions_parser type; - }; - - template - static no_actions_parser - generate(parser const& subject) - { - return no_actions_parser(subject.derived()); - } - - template - no_actions_parser - operator[](parser const& subject) const - { - return no_actions_parser(subject.derived()); - } -}; - -//----------------------------------------------------------------------------- -// no_actions_d - -const no_actions_parser_gen no_actions_d = no_actions_parser_gen(); - -//----------------------------------------------------------------------------- -BOOST_SPIRIT_CLASSIC_NAMESPACE_END -} // namespace spirit -} // namespace boost - -#endif // !defined(BOOST_SPIRIT_NO_ACTIONS_HPP) diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/operators.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/operators.hpp deleted file mode 100644 index 5732ef9ae759..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/operators.hpp +++ /dev/null @@ -1,25 +0,0 @@ -/*============================================================================= - Copyright (c) 1998-2003 Joel de Guzman - Copyright (c) 2001 Daniel Nuffer - Copyright (c) 2002 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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_OPERATORS_HPP) -#define BOOST_SPIRIT_OPERATORS_HPP - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/optional.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/optional.hpp deleted file mode 100644 index 69e49f9a3a12..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/optional.hpp +++ /dev/null @@ -1,94 +0,0 @@ -/*============================================================================= - Copyright (c) 1998-2003 Joel de Guzman - Copyright (c) 2001 Daniel Nuffer - Copyright (c) 2002 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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_OPTIONAL_HPP) -#define BOOST_SPIRIT_OPTIONAL_HPP - -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // - // optional class - // - // Handles expressions of the form: - // - // !a - // - // where a is a parser. The expression returns a composite - // parser that matches its subject zero (0) or one (1) time. - // - /////////////////////////////////////////////////////////////////////////// - struct optional_parser_gen; - - template - struct optional - : public unary > > - { - typedef optional self_t; - typedef unary_parser_category parser_category_t; - typedef optional_parser_gen parser_generator_t; - typedef unary > base_t; - - optional(S const& a) - : base_t(a) {} - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - typedef typename parser_result::type result_t; - typedef typename ScannerT::iterator_t iterator_t; - iterator_t save = scan.first; - if (result_t r = this->subject().parse(scan)) - { - return r; - } - else - { - scan.first = save; - return scan.empty_match(); - } - } - }; - - struct optional_parser_gen - { - template - struct result - { - typedef optional type; - }; - - template - static optional - generate(parser const& a) - { - return optional(a.derived()); - } - }; - - template - optional - operator!(parser const& a); - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif - -#include diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/positive.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/positive.hpp deleted file mode 100644 index 7b494b45ca39..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/positive.hpp +++ /dev/null @@ -1,112 +0,0 @@ -/*============================================================================= - Copyright (c) 1998-2003 Joel de Guzman - Copyright (c) 2001 Daniel Nuffer - Copyright (c) 2002 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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_POSITIVE_HPP) -#define BOOST_SPIRIT_POSITIVE_HPP - -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // - // positive class - // - // Handles expressions of the form: - // - // +a - // - // where a is a parser. The expression returns a composite - // parser that matches its subject one (1) or more times. - // - /////////////////////////////////////////////////////////////////////////// - struct positive_parser_gen; - -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -#pragma warning(push) -#pragma warning(disable:4512) //assignment operator could not be generated -#endif - - template - struct positive - : public unary > > - { - typedef positive self_t; - typedef unary_parser_category parser_category_t; - typedef positive_parser_gen parser_generator_t; - typedef unary > base_t; - - positive(S const& a) - : base_t(a) {} - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - typedef typename parser_result::type result_t; - typedef typename ScannerT::iterator_t iterator_t; - result_t hit = this->subject().parse(scan); - - if (hit) - { - for (;;) - { - iterator_t save = scan.first; - if (result_t next = this->subject().parse(scan)) - { - scan.concat_match(hit, next); - } - else - { - scan.first = save; - break; - } - } - } - return hit; - } - }; - -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -#pragma warning(pop) -#endif - - struct positive_parser_gen - { - template - struct result - { - typedef positive type; - }; - - template - static positive - generate(parser const& a) - { - return positive(a.derived()); - } - }; - - template - inline positive - operator+(parser const& a); - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif - -#include diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/sequence.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/sequence.hpp deleted file mode 100644 index 3ccd9ea7a846..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/sequence.hpp +++ /dev/null @@ -1,142 +0,0 @@ -/*============================================================================= - Copyright (c) 1998-2003 Joel de Guzman - Copyright (c) 2001 Daniel Nuffer - Copyright (c) 2002 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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_SEQUENCE_HPP) -#define BOOST_SPIRIT_SEQUENCE_HPP - -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // - // sequence class - // - // Handles expressions of the form: - // - // a >> b - // - // where a and b are parsers. The expression returns a composite - // parser that matches a and b in sequence. One (not both) of the - // operands may be a literal char, wchar_t or a primitive string - // char const*, wchar_t const*. - // - ////////////////////////////////////////////////////////////////////////// - struct sequence_parser_gen; - -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -#pragma warning(push) -#pragma warning(disable:4512) //assignment operator could not be generated -#endif - - template - struct sequence : public binary > > - { - typedef sequence self_t; - typedef binary_parser_category parser_category_t; - typedef sequence_parser_gen parser_generator_t; - typedef binary > base_t; - - sequence(A const& a, B const& b) - : base_t(a, b) {} - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - typedef typename parser_result::type result_t; - if (result_t ma = this->left().parse(scan)) - if (result_t mb = this->right().parse(scan)) - { - scan.concat_match(ma, mb); - return ma; - } - return scan.no_match(); - } - }; - -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -#pragma warning(pop) -#endif - - struct sequence_parser_gen - { - template - struct result - { - typedef - sequence< - typename as_parser::type - , typename as_parser::type - > - type; - }; - - template - static sequence< - typename as_parser::type - , typename as_parser::type - > - generate(A const& a, B const& b) - { - return sequence::type, - BOOST_DEDUCED_TYPENAME as_parser::type> - (as_parser::convert(a), as_parser::convert(b)); - } - }; - - template - sequence - operator>>(parser const& a, parser const& b); - - template - sequence > - operator>>(parser const& a, char b); - - template - sequence, B> - operator>>(char a, parser const& b); - - template - sequence > - operator>>(parser const& a, char const* b); - - template - sequence, B> - operator>>(char const* a, parser const& b); - - template - sequence > - operator>>(parser const& a, wchar_t b); - - template - sequence, B> - operator>>(wchar_t a, parser const& b); - - template - sequence > - operator>>(parser const& a, wchar_t const* b); - - template - sequence, B> - operator>>(wchar_t const* a, parser const& b); - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif - -#include diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/sequential_and.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/sequential_and.hpp deleted file mode 100644 index da11f8729a5f..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/sequential_and.hpp +++ /dev/null @@ -1,76 +0,0 @@ -/*============================================================================= - Copyright (c) 1998-2003 Joel de Guzman - Copyright (c) 2001 Daniel Nuffer - Copyright (c) 2002 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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_SEQUENTIAL_AND_HPP) -#define BOOST_SPIRIT_SEQUENTIAL_AND_HPP - -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // - // sequential-and operators - // - // Handles expressions of the form: - // - // a && b - // - // Same as a >> b. - // - /////////////////////////////////////////////////////////////////////////// - template - sequence - operator&&(parser const& a, parser const& b); - - template - sequence > - operator&&(parser const& a, char b); - - template - sequence, B> - operator&&(char a, parser const& b); - - template - sequence > - operator&&(parser const& a, char const* b); - - template - sequence, B> - operator&&(char const* a, parser const& b); - - template - sequence > - operator&&(parser const& a, wchar_t b); - - template - sequence, B> - operator&&(wchar_t a, parser const& b); - - template - sequence > - operator&&(parser const& a, wchar_t const* b); - - template - sequence, B> - operator&&(wchar_t const* a, parser const& b); - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif - -#include diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/sequential_or.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/sequential_or.hpp deleted file mode 100644 index b276f6c9c366..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/composite/sequential_or.hpp +++ /dev/null @@ -1,154 +0,0 @@ -/*============================================================================= - Copyright (c) 1998-2003 Joel de Guzman - Copyright (c) 2001 Daniel Nuffer - Copyright (c) 2002 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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_SEQUENTIAL_OR_HPP) -#define BOOST_SPIRIT_SEQUENTIAL_OR_HPP - -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // - // sequential-or class - // - // Handles expressions of the form: - // - // a || b - // - // Equivalent to - // - // a | b | a >> b; - // - // where a and b are parsers. The expression returns a composite - // parser that matches matches a or b in sequence. One (not both) of - // the operands may be a literal char, wchar_t or a primitive string - // char const*, wchar_t const*. - // - /////////////////////////////////////////////////////////////////////////// - struct sequential_or_parser_gen; - - template - struct sequential_or : public binary > > - { - typedef sequential_or self_t; - typedef binary_parser_category parser_category_t; - typedef sequential_or_parser_gen parser_generator_t; - typedef binary > base_t; - - sequential_or(A const& a, B const& b) - : base_t(a, b) {} - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - typedef typename parser_result::type result_t; - typedef typename ScannerT::iterator_t iterator_t; - { // scope for save - iterator_t save = scan.first; - if (result_t ma = this->left().parse(scan)) - { - save = scan.first; - if (result_t mb = this->right().parse(scan)) - { - // matched a b - scan.concat_match(ma, mb); - return ma; - } - else - { - // matched a - scan.first = save; - return ma; - } - } - scan.first = save; - } - - // matched b - return this->right().parse(scan); - } - }; - - struct sequential_or_parser_gen - { - template - struct result - { - typedef - sequential_or< - typename as_parser::type - , typename as_parser::type - > - type; - }; - - template - static sequential_or< - typename as_parser::type - , typename as_parser::type - > - generate(A const& a, B const& b) - { - return sequential_or::type, - BOOST_DEDUCED_TYPENAME as_parser::type> - (as_parser::convert(a), as_parser::convert(b)); - } - }; - - template - sequential_or - operator||(parser const& a, parser const& b); - - template - sequential_or > - operator||(parser const& a, char b); - - template - sequential_or, B> - operator||(char a, parser const& b); - - template - sequential_or > - operator||(parser const& a, char const* b); - - template - sequential_or, B> - operator||(char const* a, parser const& b); - - template - sequential_or > - operator||(parser const& a, wchar_t b); - - template - sequential_or, B> - operator||(wchar_t a, parser const& b); - - template - sequential_or > - operator||(parser const& a, wchar_t const* b); - - template - sequential_or, B> - operator||(wchar_t const* a, parser const& b); - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif - -#include diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/config.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/core/config.hpp deleted file mode 100644 index 7b24ee654fc2..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/config.hpp +++ /dev/null @@ -1,62 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2003 Joel de Guzman - http://spirit.sourceforge.net/ - - 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_CONFIG_HPP) -#define BOOST_SPIRIT_CONFIG_HPP - -#include - -/////////////////////////////////////////////////////////////////////////////// -// -// Compiler check: -// -// Historically, Spirit supported a lot of compilers, including (to some -// extent) poorly conforming compilers such as VC6. Spirit v1.6.x will be -// the last release that will support older poorly conforming compilers. -// Starting from Spirit v1.8.0, ill conforming compilers will not be -// supported. If you are still using one of these older compilers, you can -// still use Spirit v1.6.x. -// -// The reason why Spirit v1.6.x worked on old non-conforming compilers is -// that the authors laboriously took the trouble of searching for -// workarounds to make these compilers happy. The process takes a lot of -// time and energy, especially when one encounters the dreaded ICE or -// "Internal Compiler Error". Sometimes searching for a single workaround -// takes days or even weeks. Sometimes, there are no known workarounds. This -// stifles progress a lot. And, as the library gets more progressive and -// takes on more advanced C++ techniques, the difficulty is escalated to -// even new heights. -// -// Spirit v1.6.x will still be supported. Maintenance and bug fixes will -// still be applied. There will still be active development for the back- -// porting of new features introduced in Spirit v1.8.0 (and Spirit 1.9.0) -// to lesser able compilers; hopefully, fueled by contributions from the -// community. For instance, there is already a working AST tree back-port -// for VC6 and VC7 by Peder Holt. -// -// If you got here somehow, your compiler is known to be poorly conforming -// WRT ANSI/ISO C++ standard. Library implementers get a bad reputation when -// someone attempts to compile the code on a non-conforming compiler. She'll -// be confronted with tons of compiler errors when she tries to compile the -// library. Such errors will somehow make less informed users conclude that -// the code is poorly written. It's better for the user to see a message -// "sorry, this code has not been ported to your compiler yet", than to see -// pages and pages of compiler error messages. -// -///////////////////////////////////////////////////////////////////////////////// -#if (defined(BOOST_MSVC) && (BOOST_MSVC < 1310)) \ - || (defined(BOOST_BORLANDC) && (BOOST_BORLANDC <= 0x570)) \ - || (defined(__GNUC__) && (__GNUC__ < 3)) \ - || (defined(__GNUC__) && (__GNUC__ == 3) && (__GNUC_MINOR__ < 1)) -# error "Compiler not supported. See note in " -#else -// Pass... Compiler supported. -#endif - -#endif - - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/impl/match.ipp b/framework/contrib/boost/include/boost/spirit/home/classic/core/impl/match.ipp deleted file mode 100644 index 0319dcf4e331..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/impl/match.ipp +++ /dev/null @@ -1,113 +0,0 @@ -/*============================================================================= - Copyright (c) 1998-2003 Joel de Guzman - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#if !defined(BOOST_SPIRIT_MATCH_IPP) -#define BOOST_SPIRIT_MATCH_IPP -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - template - inline match::match() - : len(-1), val() {} - - template - inline match::match(std::size_t length_) - : len(length_), val() {} - - template - inline match::match(std::size_t length_, ctor_param_t val_) - : len(length_), val(val_) {} - - template - inline bool - match::operator!() const - { - return len < 0; - } - - template - inline std::ptrdiff_t - match::length() const - { - return len; - } - - template - inline bool - match::has_valid_attribute() const - { - return val.is_initialized(); - } - - template - inline typename match::return_t - match::value() const - { - BOOST_SPIRIT_ASSERT(val.is_initialized()); - return *val; - } - - template - inline void - match::swap(match& other) - { - std::swap(len, other.len); - std::swap(val, other.val); - } - - inline match::match() - : len(-1) {} - - inline match::match(std::size_t length_) - : len(length_) {} - - inline match::match(std::size_t length_, nil_t) - : len(length_) {} - - inline bool - match::operator!() const - { - return len < 0; - } - - inline bool - match::has_valid_attribute() const - { - return false; - } - - inline std::ptrdiff_t - match::length() const - { - return len; - } - - inline nil_t - match::value() const - { - return nil_t(); - } - - inline void - match::value(nil_t) {} - - inline void - match::swap(match& other) - { - std::swap(len, other.len); - } - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace boost::spirit - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/impl/match_attr_traits.ipp b/framework/contrib/boost/include/boost/spirit/home/classic/core/impl/match_attr_traits.ipp deleted file mode 100644 index 24d9a43791bd..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/impl/match_attr_traits.ipp +++ /dev/null @@ -1,102 +0,0 @@ -/*============================================================================= - Copyright (c) 1998-2003 Joel de Guzman - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#if !defined(BOOST_SPIRIT_MATCH_ATTR_TRAITS_IPP) -#define BOOST_SPIRIT_MATCH_ATTR_TRAITS_IPP - -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -namespace impl -{ - template - struct match_attr_traits - { - typedef typename - boost::optional::reference_const_type - const_reference; - - // case where src *IS* convertible to T (dest) - template - static void - convert(boost::optional& dest, T2 const& src, mpl::true_) - { - dest.reset(src); - } - - // case where src *IS NOT* convertible to T (dest) - template - static void - convert(boost::optional& dest, T2 const& /*src*/, mpl::false_) - { - dest.reset(); - } - - static void - convert(boost::optional& dest, nil_t/*src*/) - { - dest.reset(); - } - - template - static void - convert(boost::optional& dest, T2 const& src) - { - convert(dest, src, is_convertible()); - } - - template - static void - copy(boost::optional& dest, OtherMatchT const& src) - { - if (src.has_valid_attribute()) - convert(dest, src.value()); - } - - template - static void - assign(boost::optional& dest, OtherMatchT const& src) - { - if (src.has_valid_attribute()) - convert(dest, src.value()); - else - dest.reset(); - } - - // T is not reference - template - static void - set_value(boost::optional& dest, ValueT const& val, mpl::false_) - { - dest.reset(val); - } - - // T is a reference - template - static void - set_value(boost::optional& dest, ValueT const& val, mpl::true_) - { - dest.get() = val; - } - }; - -} - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace boost::spirit::impl - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/impl/parser.ipp b/framework/contrib/boost/include/boost/spirit/home/classic/core/impl/parser.ipp deleted file mode 100644 index d5abe692fafd..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/impl/parser.ipp +++ /dev/null @@ -1,55 +0,0 @@ -/*============================================================================= - Copyright (c) 1998-2003 Joel de Guzman - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#if !defined(BOOST_SPIRIT_PARSER_IPP) -#define BOOST_SPIRIT_PARSER_IPP - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // - // Generic parse function implementation - // - /////////////////////////////////////////////////////////////////////////// - template - inline parse_info - parse( - IteratorT const& first_ - , IteratorT const& last - , parser const& p) - { - IteratorT first = first_; - scanner > scan(first, last); - match hit = p.derived().parse(scan); - return parse_info( - first, hit, hit && (first == last), hit.length()); - } - - /////////////////////////////////////////////////////////////////////////// - // - // Parse function for null terminated strings implementation - // - /////////////////////////////////////////////////////////////////////////// - template - inline parse_info - parse(CharT const* str, parser const& p) - { - CharT const* last = str; - while (*last) - last++; - return parse(str, last, p); - } - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace boost::spirit - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/match.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/core/match.hpp deleted file mode 100644 index c7f6da2b6b0b..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/match.hpp +++ /dev/null @@ -1,195 +0,0 @@ -/*============================================================================= - Copyright (c) 1998-2003 Joel de Guzman - http://spirit.sourceforge.net/ - - 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_MATCH_HPP) -#define BOOST_SPIRIT_MATCH_HPP - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // - // match class - // - // The match holds the result of a parser. A match object evaluates - // to true when a successful match is found, otherwise false. The - // length of the match is the number of characters (or tokens) that - // is successfully matched. This can be queried through its length() - // member function. A negative value means that the match is - // unsuccessful. - // - // Each parser may have an associated attribute. This attribute is - // also returned back to the client on a successful parse through - // the match object. The match's value() member function returns the - // match's attribute. - // - // A match attribute is valid: - // - // * on a successful match - // * when its value is set through the value(val) member function - // * if it is assigned or copied from a compatible match object - // (e.g. match from match) with a valid attribute. - // - // The match attribute is undefined: - // - // * on an unsuccessful match - // * when an attempt to copy or assign from another match object - // with an incompatible attribute type (e.g. match - // from match). - // - // The member function has_valid_attribute() can be queried to know if - // it is safe to get the match's attribute. The attribute may be set - // through the member function value(v) where v is the new attribute - // value. - // - /////////////////////////////////////////////////////////////////////////// - template - class match : public safe_bool > - { - typedef typename - conditional< - is_reference::value - , T - , typename add_reference< - typename add_const::type - >::type - >::type attr_ref_t; - - public: - - typedef typename boost::optional optional_type; - typedef attr_ref_t ctor_param_t; - typedef attr_ref_t return_t; - typedef T attr_t; - - match(); - explicit match(std::size_t length); - match(std::size_t length, ctor_param_t val); - - bool operator!() const; - std::ptrdiff_t length() const; - bool has_valid_attribute() const; - return_t value() const; - void swap(match& other); - - template - match(match const& other) - : len(other.length()), val() - { - impl::match_attr_traits::copy(val, other); - } - - template - match& - operator=(match const& other) - { - impl::match_attr_traits::assign(val, other); - len = other.length(); - return *this; - } - - template - void - concat(MatchT const& other) - { - BOOST_SPIRIT_ASSERT(*this && other); - len += other.length(); - } - - template - void - value(ValueT const& val_) - { - impl::match_attr_traits::set_value(val, val_, is_reference()); - } - - bool operator_bool() const - { - return len >= 0; - } - - private: - - std::ptrdiff_t len; - optional_type val; - }; - - /////////////////////////////////////////////////////////////////////////// - // - // match class specialization for nil_t values - // - /////////////////////////////////////////////////////////////////////////// - template <> - class match : public safe_bool > - { - public: - - typedef nil_t attr_t; - typedef nil_t return_t; - - match(); - explicit match(std::size_t length); - match(std::size_t length, nil_t); - - bool operator!() const; - bool has_valid_attribute() const; - std::ptrdiff_t length() const; - nil_t value() const; - void value(nil_t); - void swap(match& other); - - template - match(match const& other) - : len(other.length()) {} - - template - match<>& - operator=(match const& other) - { - len = other.length(); - return *this; - } - - template - void - concat(match const& other) - { - BOOST_SPIRIT_ASSERT(*this && other); - len += other.length(); - } - - bool operator_bool() const - { - return len >= 0; - } - - private: - - std::ptrdiff_t len; - }; - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif -#include - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/nil.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/core/nil.hpp deleted file mode 100644 index c94c064d6bbc..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/nil.hpp +++ /dev/null @@ -1,25 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2003 Joel de Guzman - http://spirit.sourceforge.net/ - - 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_NIL_HPP) -#define BOOST_SPIRIT_NIL_HPP - -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - struct nil_t {}; - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} - -#endif - - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/non_terminal/grammar.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/core/non_terminal/grammar.hpp deleted file mode 100644 index 153bc40c3e61..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/non_terminal/grammar.hpp +++ /dev/null @@ -1,84 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2003 Joel de Guzman - Copyright (c) 2002-2003 Martin Wille - Copyright (c) 2003 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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_GRAMMAR_HPP) -#define BOOST_SPIRIT_GRAMMAR_HPP - -/////////////////////////////////////////////////////////////////////////////// -#if defined(BOOST_SPIRIT_THREADSAFE) && defined(BOOST_SPIRIT_SINGLE_GRAMMAR_INSTANCE) -#undef BOOST_SPIRIT_SINGLE_GRAMMAR_INSTANCE -#endif - -#include -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -/////////////////////////////////////////////////////////////////////////////// -// -// grammar class -// -/////////////////////////////////////////////////////////////////////////////// -template > -struct grammar - : public parser - , public ContextT::base_t - , public context_aux - BOOST_SPIRIT_GRAMMAR_ID -{ - typedef grammar self_t; - typedef DerivedT const& embed_t; - typedef typename ContextT::context_linker_t context_t; - typedef typename context_t::attr_t attr_t; - - template - struct result - { - typedef typename match_result::type type; - }; - - grammar() {} - ~grammar() { impl::grammar_destruct(this); } - - template - typename parser_result::type - parse_main(ScannerT const& scan) const - { return impl::grammar_parser_parse<0>(this, scan); } - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - typedef typename parser_result::type result_t; - typedef parser_scanner_linker scanner_t; - BOOST_SPIRIT_CONTEXT_PARSE(scan, *this, scanner_t, context_t, result_t) - } - - template - impl::entry_grammar - use_parser() const - { return impl::entry_grammar( this->derived()); } - - BOOST_SPIRIT_GRAMMAR_STATE -}; - -/////////////////////////////////////////////////////////////////////////////// -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#undef BOOST_SPIRIT_GRAMMAR_ID -#undef BOOST_SPIRIT_GRAMMAR_STATE -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/non_terminal/impl/grammar.ipp b/framework/contrib/boost/include/boost/spirit/home/classic/core/non_terminal/impl/grammar.ipp deleted file mode 100644 index 371ea32ea0a6..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/non_terminal/impl/grammar.ipp +++ /dev/null @@ -1,365 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2003 Joel de Guzman - Copyright (c) 2002-2003 Martin Wille - Copyright (c) 2003 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#if !defined BOOST_SPIRIT_GRAMMAR_IPP -#define BOOST_SPIRIT_GRAMMAR_IPP - -#if !defined(BOOST_SPIRIT_SINGLE_GRAMMAR_INSTANCE) -#include -#include -#include -#include -#include -#endif - -#ifdef BOOST_SPIRIT_THREADSAFE -#include -#include -#include -#include -#endif - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -template -struct grammar; - - -////////////////////////////////// -template -struct grammar_definition -{ - typedef typename GrammarT::template definition type; -}; - - - namespace impl - { - -#if !defined(BOOST_SPIRIT_SINGLE_GRAMMAR_INSTANCE) - struct grammar_tag {}; - - ////////////////////////////////// - template - struct grammar_helper_base - { - virtual int undefine(GrammarT *) = 0; - virtual ~grammar_helper_base() {} - }; - - ////////////////////////////////// - template - struct grammar_helper_list - { - typedef GrammarT grammar_t; - typedef grammar_helper_base helper_t; - typedef std::vector vector_t; - - grammar_helper_list() {} - grammar_helper_list(grammar_helper_list const& /*x*/) - { // Does _not_ copy the helpers member ! - } - - grammar_helper_list& operator=(grammar_helper_list const& /*x*/) - { // Does _not_ copy the helpers member ! - return *this; - } - - void push_back(helper_t *helper) - { helpers.push_back(helper); } - - void pop_back() - { helpers.pop_back(); } - - typename vector_t::size_type - size() const - { return helpers.size(); } - - typename vector_t::reverse_iterator - rbegin() - { return helpers.rbegin(); } - - typename vector_t::reverse_iterator - rend() - { return helpers.rend(); } - -#ifdef BOOST_SPIRIT_THREADSAFE - boost::mutex & mutex() - { return m; } -#endif - - private: - - vector_t helpers; -#ifdef BOOST_SPIRIT_THREADSAFE - boost::mutex m; -#endif - }; - - ////////////////////////////////// - struct grammartract_helper_list; - -#if !defined(BOOST_SPIRIT_SINGLE_GRAMMAR_INSTANCE) - - struct grammartract_helper_list - { - template - static grammar_helper_list& - do_(GrammarT const* g) - { - return g->helpers; - } - }; - -#endif - - ////////////////////////////////// - template - struct grammar_helper : private grammar_helper_base - { - typedef GrammarT grammar_t; - typedef ScannerT scanner_t; - typedef DerivedT derived_t; - typedef typename grammar_definition::type definition_t; - - typedef grammar_helper helper_t; - typedef boost::shared_ptr helper_ptr_t; - typedef boost::weak_ptr helper_weak_ptr_t; - - grammar_helper* - this_() { return this; } - - grammar_helper(helper_weak_ptr_t& p) - : definitions_cnt(0) - , self(this_()) - { p = self; } - - definition_t& - define(grammar_t const* target_grammar) - { - grammar_helper_list &helpers = - grammartract_helper_list::do_(target_grammar); - typename grammar_t::object_id id = target_grammar->get_object_id(); - - if (definitions.size()<=id) - definitions.resize(id*3/2+1); - if (definitions[id]!=0) - return *definitions[id]; - - boost::movelib::unique_ptr - result(new definition_t(target_grammar->derived())); - -#ifdef BOOST_SPIRIT_THREADSAFE - boost::unique_lock lock(helpers.mutex()); -#endif - helpers.push_back(this); - - ++definitions_cnt; - definitions[id] = result.get(); - return *(result.release()); - } - - int - undefine(grammar_t* target_grammar) BOOST_OVERRIDE - { - typename grammar_t::object_id id = target_grammar->get_object_id(); - - if (definitions.size()<=id) - return 0; - delete definitions[id]; - definitions[id] = 0; - if (--definitions_cnt==0) - self.reset(); - return 0; - } - - private: - - std::vector definitions; - unsigned long definitions_cnt; - helper_ptr_t self; - }; - -#endif /* defined(BOOST_SPIRIT_SINGLE_GRAMMAR_INSTANCE) */ - -#ifdef BOOST_SPIRIT_THREADSAFE - class get_definition_static_data_tag - { - template - friend typename DerivedT::template definition & - get_definition(grammar const* self); - - get_definition_static_data_tag() {} - }; -#endif - - template - inline typename DerivedT::template definition & - get_definition(grammar const* self) - { -#if defined(BOOST_SPIRIT_SINGLE_GRAMMAR_INSTANCE) - - typedef typename DerivedT::template definition definition_t; - static definition_t def(self->derived()); - return def; -#else - typedef grammar self_t; - typedef impl::grammar_helper helper_t; - typedef typename helper_t::helper_weak_ptr_t ptr_t; - -# ifdef BOOST_SPIRIT_THREADSAFE - boost::thread_specific_ptr & tld_helper - = static_, - get_definition_static_data_tag>(get_definition_static_data_tag()); - - if (!tld_helper.get()) - tld_helper.reset(new ptr_t); - ptr_t &helper = *tld_helper; -# else - static ptr_t helper; -# endif - if (helper.expired()) - new helper_t(helper); - return helper.lock()->define(self); -#endif - } - - template - struct call_helper { - - template - static void - do_ (RT &result, DefinitionT &def, ScannerT const &scan) - { - result = def.template get_start_parser()->parse(scan); - } - }; - - template <> - struct call_helper<0> { - - template - static void - do_ (RT &result, DefinitionT &def, ScannerT const &scan) - { - result = def.start().parse(scan); - } - }; - - ////////////////////////////////// - template - inline typename parser_result, ScannerT>::type - grammar_parser_parse( - grammar const* self, - ScannerT const &scan) - { - typedef - typename parser_result, ScannerT>::type - result_t; - typedef typename DerivedT::template definition definition_t; - - result_t result; - definition_t &def = get_definition(self); - - call_helper::do_(result, def, scan); - return result; - } - - ////////////////////////////////// - template - inline void - grammar_destruct(GrammarT* self) - { -#if !defined(BOOST_SPIRIT_SINGLE_GRAMMAR_INSTANCE) - typedef grammar_helper_list helper_list_t; - - helper_list_t& helpers = - grammartract_helper_list::do_(self); - - typedef typename helper_list_t::vector_t::reverse_iterator iterator_t; - - for (iterator_t i = helpers.rbegin(); i != helpers.rend(); ++i) - (*i)->undefine(self); -#else - (void)self; -#endif - } - - /////////////////////////////////////////////////////////////////////////// - // - // entry_grammar class - // - /////////////////////////////////////////////////////////////////////////// - template - class entry_grammar - : public parser > - { - - public: - typedef entry_grammar self_t; - typedef self_t embed_t; - typedef typename ContextT::context_linker_t context_t; - typedef typename context_t::attr_t attr_t; - - template - struct result - { - typedef typename match_result::type type; - }; - - entry_grammar(DerivedT const &p) : target_grammar(p) {} - - template - typename parser_result::type - parse_main(ScannerT const& scan) const - { return impl::grammar_parser_parse(&target_grammar, scan); } - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - typedef typename parser_result::type result_t; - typedef parser_scanner_linker scanner_t; - BOOST_SPIRIT_CONTEXT_PARSE(scan, target_grammar, scanner_t, - context_t, result_t) - } - - private: - DerivedT const &target_grammar; - }; - - } // namespace impl - -/////////////////////////////////////// -#if !defined(BOOST_SPIRIT_SINGLE_GRAMMAR_INSTANCE) -#define BOOST_SPIRIT_GRAMMAR_ID , public impl::object_with_id -#else -#define BOOST_SPIRIT_GRAMMAR_ID -#endif - -/////////////////////////////////////// -#if !defined(BOOST_SPIRIT_SINGLE_GRAMMAR_INSTANCE) -#define BOOST_SPIRIT_GRAMMAR_STATE \ - private: \ - friend struct impl::grammartract_helper_list; \ - mutable impl::grammar_helper_list helpers; -#else -#define BOOST_SPIRIT_GRAMMAR_STATE -#endif - -/////////////////////////////////////////////////////////////////////////////// -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace boost::spirit - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/non_terminal/impl/object_with_id.ipp b/framework/contrib/boost/include/boost/spirit/home/classic/core/non_terminal/impl/object_with_id.ipp deleted file mode 100644 index fc56566377be..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/non_terminal/impl/object_with_id.ipp +++ /dev/null @@ -1,196 +0,0 @@ -/*============================================================================= - Copyright (c) 2002-2003 Joel de Guzman - Copyright (c) 2002-2003 Martin Wille - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#if !defined BOOST_SPIRIT_OBJECT_WITH_ID_IPP -#define BOOST_SPIRIT_OBJECT_WITH_ID_IPP - -#include -#include - -#ifdef BOOST_SPIRIT_THREADSAFE -#include -#include -#include -#endif - -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - namespace impl { - - ////////////////////////////////// - template - struct object_with_id_base_supply - { - typedef IdT object_id; - typedef std::vector id_vector; - - object_with_id_base_supply() : max_id(object_id()) {} - -#ifdef BOOST_SPIRIT_THREADSAFE - boost::mutex mutex; -#endif - object_id max_id; - id_vector free_ids; - - object_id acquire(); - void release(object_id); - }; - - ////////////////////////////////// - template - struct object_with_id_base - { - typedef TagT tag_t; - typedef IdT object_id; - - protected: - - object_id acquire_object_id(); - void release_object_id(object_id); - - private: -#ifdef BOOST_SPIRIT_THREADSAFE - static boost::mutex &mutex_instance(); - static void mutex_init(); -#endif - - boost::shared_ptr > id_supply; - }; - - ////////////////////////////////// - template - struct object_with_id : private object_with_id_base - { - typedef object_with_id self_t; - typedef object_with_id_base base_t; - typedef IdT object_id; - - object_with_id() : id(base_t::acquire_object_id()) {} - object_with_id(self_t const &other) - : base_t(other) - , id(base_t::acquire_object_id()) - {} // don't copy id - self_t &operator = (self_t const &other) - { // don't assign id - base_t::operator=(other); - return *this; - } - ~object_with_id() { base_t::release_object_id(id); } - object_id get_object_id() const { return id; } - - private: - - object_id const id; - }; - - ////////////////////////////////// - template - inline IdT - object_with_id_base_supply::acquire() - { -#ifdef BOOST_SPIRIT_THREADSAFE - boost::unique_lock lock(mutex); -#endif - if (!free_ids.empty()) - { - object_id id = *free_ids.rbegin(); - free_ids.pop_back(); - return id; - } - else - { - if (free_ids.capacity()<=max_id) - free_ids.reserve(max_id*3/2+1); - return ++max_id; - } - } - - ////////////////////////////////// - template - inline void - object_with_id_base_supply::release(IdT id) - { -#ifdef BOOST_SPIRIT_THREADSAFE - boost::unique_lock lock(mutex); -#endif - if (max_id == id) - max_id--; - else - free_ids.push_back(id); // doesn't throw - } - - ////////////////////////////////// - template - inline IdT - object_with_id_base::acquire_object_id() - { - { -#ifdef BOOST_SPIRIT_THREADSAFE -#ifndef BOOST_THREAD_PROVIDES_ONCE_CXX11 - static boost::once_flag been_here = BOOST_ONCE_INIT; -#else - static boost::once_flag been_here; -#endif - boost::call_once(been_here, mutex_init); - boost::mutex &mutex = mutex_instance(); - boost::unique_lock lock(mutex); -#endif - static boost::shared_ptr > - static_supply; - - if (!static_supply.get()) - static_supply.reset(new object_with_id_base_supply()); - id_supply = static_supply; - } - - return id_supply->acquire(); - } - - ////////////////////////////////// - template - inline void - object_with_id_base::release_object_id(IdT id) - { - id_supply->release(id); - } - - ////////////////////////////////// -#ifdef BOOST_SPIRIT_THREADSAFE - template - inline boost::mutex & - object_with_id_base::mutex_instance() - { - static boost::mutex mutex; - return mutex; - } -#endif - - ////////////////////////////////// -#ifdef BOOST_SPIRIT_THREADSAFE - template - inline void - object_with_id_base::mutex_init() - { - mutex_instance(); - } -#endif - - } // namespace impl - -/////////////////////////////////////////////////////////////////////////////// -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace boost::spirit - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/non_terminal/impl/rule.ipp b/framework/contrib/boost/include/boost/spirit/home/classic/core/non_terminal/impl/rule.ipp deleted file mode 100644 index 87eb717dbe3d..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/non_terminal/impl/rule.ipp +++ /dev/null @@ -1,420 +0,0 @@ -/*============================================================================= - Copyright (c) 1998-2003 Joel de Guzman - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#if !defined(BOOST_SPIRIT_RULE_IPP) -#define BOOST_SPIRIT_RULE_IPP - -#if BOOST_SPIRIT_RULE_SCANNERTYPE_LIMIT > 1 -#include -#include -#include -#include -#include -#include -#include -#endif - -#include -#include -#include -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -#if BOOST_SPIRIT_RULE_SCANNERTYPE_LIMIT > 1 - - template < - BOOST_PP_ENUM_BINARY_PARAMS( - BOOST_SPIRIT_RULE_SCANNERTYPE_LIMIT, - typename ScannerT, = mpl::void_ BOOST_PP_INTERCEPT - ) - > - struct scanner_list; - -#endif // BOOST_SPIRIT_RULE_SCANNERTYPE_LIMIT > 1 - - /////////////////////////////////////////////////////////////////////////// - namespace impl - { - template - struct get_param - { - typedef typename mpl::if_< - is_base_and_derived - , T0 - , typename mpl::if_< - is_base_and_derived - , T1 - , typename mpl::if_< - is_base_and_derived - , T2 - , DefaultT - >::type - >::type - >::type type; - }; - - template - struct get_context - { - typedef typename get_param< - parser_context_base, parser_context<>, T0, T1, T2>::type - type; - }; - - template - struct get_tag - { - typedef typename get_param< - parser_tag_base, parser_address_tag, T0, T1, T2>::type - type; - }; - - template - struct get_scanner - { - typedef typename get_param< - scanner_base, scanner<>, T0, T1, T2>::type - type; - }; - - /////////////////////////////////////////////////////////////////////// - // - // rule_base class - // - // The rule_base class implements the basic plumbing for rules - // minus the storage mechanism. It is up to the derived class - // to actually store the definition somewhere. The rule_base - // class assumes that the derived class provides a get() function - // that will return a pointer to a parser. The get() function - // may return NULL. See rule below for details. - // - // <<< For framework use only. Not for public consumption. >>> - // - /////////////////////////////////////////////////////////////////////// - template < - typename DerivedT // derived class - , typename EmbedT // how derived class is embedded - , typename T0 = nil_t // see rule class - , typename T1 = nil_t // see rule class - , typename T2 = nil_t // see rule class - > - class rule_base; // forward declaration - - class rule_base_access - { -#if defined(BOOST_NO_MEMBER_TEMPLATE_FRIENDS) - public: // YUCK! -#else - template < - typename DerivedT - , typename EmbedT - , typename T0 - , typename T1 - , typename T2 - > - friend class rule_base; -#endif - template - static typename RuleT::abstract_parser_t* - get(RuleT const& r) - { - return r.get(); - } - }; - - template < - typename DerivedT // derived class - , typename EmbedT // how derived class is embedded - , typename T0 // see rule class - , typename T1 // see rule class - , typename T2 // see rule class - > - class rule_base - : public parser - , public impl::get_context::type::base_t - , public context_aux< - typename impl::get_context::type, DerivedT> - , public impl::get_tag::type - { - public: - - typedef typename impl::get_scanner::type scanner_t; - typedef typename impl::get_context::type context_t; - typedef typename impl::get_tag::type tag_t; - - typedef EmbedT embed_t; - typedef typename context_t::context_linker_t linked_context_t; - typedef typename linked_context_t::attr_t attr_t; - - template - struct result - { - typedef typename match_result::type type; - }; - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - typedef parser_scanner_linker linked_scanner_t; - typedef typename parser_result::type result_t; - BOOST_SPIRIT_CONTEXT_PARSE( - scan, *this, linked_scanner_t, linked_context_t, result_t); - } - - template - typename parser_result::type - parse_main(ScannerT const& scan) const - { - typename parser_result::type hit; - - // MWCW 8.3 needs this cast to be done through a pointer, - // not a reference. Otherwise, it will silently construct - // a temporary, causing an infinite runtime recursion. - DerivedT const* derived_this = static_cast(this); - - if (rule_base_access::get(*derived_this)) - { - typename ScannerT::iterator_t s(scan.first); - hit = rule_base_access::get(*derived_this) - ->do_parse_virtual(scan); - scan.group_match(hit, this->id(), s, scan.first); - } - else - { - hit = scan.no_match(); - } - return hit; - } - }; - - /////////////////////////////////////////////////////////////////////// - // - // abstract_parser class - // - /////////////////////////////////////////////////////////////////////// - template - struct abstract_parser - { - abstract_parser() {} - virtual ~abstract_parser() {} - - virtual typename match_result::type - do_parse_virtual(ScannerT const& scan) const = 0; - - virtual abstract_parser* - clone() const = 0; - }; - - /////////////////////////////////////////////////////////////////////// - // - // concrete_parser class - // - /////////////////////////////////////////////////////////////////////// -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -#pragma warning(push) -#pragma warning(disable:4512) //assignment operator could not be generated -#endif - - template - struct concrete_parser : abstract_parser - { - concrete_parser(ParserT const& p_) : p(p_) {} - ~concrete_parser() BOOST_OVERRIDE {} - - typename match_result::type - do_parse_virtual(ScannerT const& scan) const BOOST_OVERRIDE - { - return p.parse(scan); - } - - abstract_parser* - clone() const BOOST_OVERRIDE - { - return new concrete_parser(p); - } - - typename ParserT::embed_t p; - }; - -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -#pragma warning(pop) -#endif - -#if BOOST_SPIRIT_RULE_SCANNERTYPE_LIMIT > 1 - - /////////////////////////////////////////////////////////////////////// - // - // This generates partial specializations for the class - // - // abstract_parser - // - // with an increasing number of different ScannerT template parameters - // and corresponding do_parse_virtual function declarations for each - // of the different required scanner types: - // - // template - // struct abstract_parser, AttrT> - // { - // abstract_parser() {} - // virtual ~abstract_parser() {} - // - // virtual typename match_result::type - // do_parse_virtual(ScannerT0 const &scan) const = 0; - // - // virtual abstract_parser* - // clone() const = 0; - // - // ... - // }; - // - /////////////////////////////////////////////////////////////////////// - #define BOOST_SPIRIT_RULE_ENUM_DOPARSE_A(z, N, _) \ - virtual typename match_result< \ - BOOST_PP_CAT(ScannerT, N), AttrT \ - >::type \ - do_parse_virtual( \ - BOOST_PP_CAT(ScannerT, N) const& scan) const = 0; \ - - #define BOOST_SPIRIT_ENUM_ABSTRACT_PARSERS(z, N, _) \ - template < \ - BOOST_PP_ENUM_PARAMS_Z(z, BOOST_PP_INC(N), typename ScannerT), \ - typename AttrT \ - > \ - struct abstract_parser< \ - scanner_list< \ - BOOST_PP_ENUM_PARAMS_Z(z, BOOST_PP_INC(N), ScannerT) \ - >, \ - AttrT \ - > \ - { \ - abstract_parser() {} \ - virtual ~abstract_parser() {} \ - \ - BOOST_PP_REPEAT_ ## z( \ - BOOST_PP_INC(N), BOOST_SPIRIT_RULE_ENUM_DOPARSE_A, _) \ - \ - virtual abstract_parser* \ - clone() const = 0; \ - }; \ - - BOOST_PP_REPEAT_FROM_TO(1, BOOST_SPIRIT_RULE_SCANNERTYPE_LIMIT, - BOOST_SPIRIT_ENUM_ABSTRACT_PARSERS, _) - - #undef BOOST_SPIRIT_RULE_ENUM_DOPARSE_A - #undef BOOST_SPIRIT_ENUM_ABSTRACT_PARSERS - /////////////////////////////////////////////////////////////////////// - - /////////////////////////////////////////////////////////////////////// - // - // This generates partial specializations for the class - // - // concrete_parser - // - // with an increasing number of different ScannerT template parameters - // and corresponding do_parse_virtual function declarations for each - // of the different required scanner types: - // - // template < - // typename ParserT, typename ScannerT0, ..., typename AttrT - // > - // struct concrete_parser< - // ParserT, scanner_list, AttrT - // > - // : public abstract_parser, AttrT> - // { - // concrete_parser(ParserT const& p_) : p(p_) {} - // virtual ~concrete_parser() {} - // - // virtual typename match_result::type - // do_parse_virtual(ScannerT0 const &scan) const - // { return p.parse(scan); } - // - // virtual abstract_parser, AttrT>* - // clone() const - // { - // return new concrete_parser(p); - // } - // - // ... - // - // typename ParserT::embed_t p; - // }; - // - /////////////////////////////////////////////////////////////////////// - #define BOOST_SPIRIT_RULE_ENUM_DOPARSE_C(z, N, _) \ - virtual typename match_result< \ - BOOST_PP_CAT(ScannerT, N), AttrT \ - >::type \ - do_parse_virtual( \ - BOOST_PP_CAT(ScannerT, N) const& scan) const \ - { return p.parse(scan); } \ - - #define BOOST_SPIRIT_ENUM_CONCRETE_PARSERS(z, N, _) \ - template < \ - typename ParserT, \ - BOOST_PP_ENUM_PARAMS_Z(z, BOOST_PP_INC(N), typename ScannerT), \ - typename AttrT \ - > \ - struct concrete_parser< \ - ParserT, \ - scanner_list< \ - BOOST_PP_ENUM_PARAMS_Z(z, BOOST_PP_INC(N), ScannerT) \ - >, \ - AttrT \ - > \ - : abstract_parser< \ - scanner_list< \ - BOOST_PP_ENUM_PARAMS_Z(z, BOOST_PP_INC(N), ScannerT) \ - >, \ - AttrT \ - > \ - { \ - concrete_parser(ParserT const& p_) : p(p_) {} \ - virtual ~concrete_parser() {} \ - \ - BOOST_PP_REPEAT_ ## z( \ - BOOST_PP_INC(N), BOOST_SPIRIT_RULE_ENUM_DOPARSE_C, _) \ - \ - virtual abstract_parser< \ - scanner_list< \ - BOOST_PP_ENUM_PARAMS_Z(z, BOOST_PP_INC(N), ScannerT) \ - >, \ - AttrT \ - >* \ - clone() const \ - { \ - return new concrete_parser(p); \ - } \ - \ - typename ParserT::embed_t p; \ - }; \ - - BOOST_PP_REPEAT_FROM_TO(1, BOOST_SPIRIT_RULE_SCANNERTYPE_LIMIT, - BOOST_SPIRIT_ENUM_CONCRETE_PARSERS, _) - - #undef BOOST_SPIRIT_ENUM_CONCRETE_PARSERS - #undef BOOST_SPIRIT_RULE_ENUM_DOPARSE_C - /////////////////////////////////////////////////////////////////////// - -#endif // BOOST_SPIRIT_RULE_SCANNERTYPE_LIMIT > 1 - - } // namespace impl - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace boost::spirit - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/non_terminal/impl/static.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/core/non_terminal/impl/static.hpp deleted file mode 100644 index ae2a66c50637..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/non_terminal/impl/static.hpp +++ /dev/null @@ -1,124 +0,0 @@ -/*============================================================================= - Copyright (c) 2006 Joao Abecasis - http://spirit.sourceforge.net/ - - 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_STATIC_HPP) -#define BOOST_SPIRIT_STATIC_HPP - -#include -#include -#include - -#include -#include - -#include - -#include // for placement new - -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - // - // Provides thread-safe initialization of a single static instance of T. - // - // This instance is guaranteed to be constructed on static storage in a - // thread-safe manner, on the first call to the constructor of static_. - // - // Requirements: - // T is default constructible - // (There's an alternate implementation that relaxes this - // requirement -- Joao Abecasis) - // T::T() MUST not throw! - // this is a requirement of boost::call_once. - // - template - struct static_ - : boost::noncopyable - { - private: - - struct destructor - { - ~destructor() - { - static_::get_address()->~value_type(); - } - }; - - struct default_ctor - { - static void construct() - { - ::new (static_::get_address()) value_type(); - static destructor d; - } - }; - - public: - - typedef T value_type; - typedef typename boost::call_traits::reference reference; - typedef typename boost::call_traits::const_reference const_reference; - - static_(Tag = Tag()) - { - boost::call_once(&default_ctor::construct, constructed_); - } - - operator reference() - { - return this->get(); - } - - operator const_reference() const - { - return this->get(); - } - - reference get() - { - return *this->get_address(); - } - - const_reference get() const - { - return *this->get_address(); - } - - private: - typedef typename boost::add_pointer::type pointer; - - static pointer get_address() - { - return static_cast(data_.address()); - } - - typedef boost::aligned_storage::value> storage_type; - - static storage_type data_; - static once_flag constructed_; - }; - - template - typename static_::storage_type static_::data_; - - template -#ifndef BOOST_THREAD_PROVIDES_ONCE_CXX11 - once_flag static_::constructed_ = BOOST_ONCE_INIT; -#else - once_flag static_::constructed_; -#endif - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif // include guard diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/non_terminal/impl/subrule.ipp b/framework/contrib/boost/include/boost/spirit/home/classic/core/non_terminal/impl/subrule.ipp deleted file mode 100644 index fc952fedea1c..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/non_terminal/impl/subrule.ipp +++ /dev/null @@ -1,142 +0,0 @@ -/*============================================================================= - Copyright (c) 2002-2003 Joel de Guzman - Copyright (c) 2002-2003 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#if !defined(BOOST_SPIRIT_SUBRULE_IPP) -#define BOOST_SPIRIT_SUBRULE_IPP - -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - template - struct subrule_list; - - template - struct subrule_parser; - - namespace impl { - - - template - struct get_subrule - { - // First case. ListT is non-empty but the list's - // first item does not have the ID we are looking for. - - typedef typename get_subrule::type type; - }; - - template - struct get_subrule< - ID, - subrule_list< - subrule_parser, - RestT> > - { - // Second case. ListT is non-empty and the list's - // first item has the ID we are looking for. - - typedef DefT type; - }; - - template - struct get_subrule - { - // Third case. ListT is empty - typedef nil_t type; - }; - - - template - struct get_result_t { - - // If the result type dictated by the context is nil_t (no closures - // present), then the whole subrule_parser return type is equal to - // the return type of the right hand side of this subrule_parser, - // otherwise it is equal to the dictated return value. - - typedef typename mpl::if_< - boost::is_same, T2, T1 - >::type type; - }; - - template - struct get_subrule_result - { - typedef typename - impl::get_subrule::type - parser_t; - - typedef typename parser_result::type - def_result_t; - - typedef typename match_result::type - context_result_t; - - typedef typename get_result_t::type - type; - }; - - template - struct get_subrule_parser_result - { - typedef typename parser_result::type - def_result_t; - - typedef typename match_result::type - context_result_t; - - typedef typename get_result_t::type - type; - }; - - template - struct same_subrule_id - { - BOOST_STATIC_CONSTANT(bool, value = (SubruleT::id == ID)); - }; - - template - struct parse_subrule - { - template - static void - do_parse(RT& r, ScannerT const& scan, ListT const& list, mpl::true_) - { - r = list.first.rhs.parse(scan); - } - - template - static void - do_parse(RT& r, ScannerT const& scan, ListT const& list, mpl::false_) - { - typedef typename ListT::rest_t::first_t subrule_t; - mpl::bool_::value> same_id; - do_parse(r, scan, list.rest, same_id); - } - - static void - do_(RT& r, ScannerT const& scan) - { - typedef typename ScannerT::list_t::first_t subrule_t; - mpl::bool_::value> same_id; - do_parse(r, scan, scan.list, same_id); - } - }; - -} - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace boost::spirit::impl - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/non_terminal/parser_context.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/core/non_terminal/parser_context.hpp deleted file mode 100644 index 2f7dd23e801b..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/non_terminal/parser_context.hpp +++ /dev/null @@ -1,150 +0,0 @@ -/*============================================================================= - Copyright (c) 2002-2003 Joel de Guzman - Copyright (c) 2002-2003 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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_PARSER_CONTEXT_HPP) -#define BOOST_SPIRIT_PARSER_CONTEXT_HPP - -/////////////////////////////////////////////////////////////////////////////// -namespace boost -{ - namespace spirit - { - BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - - /////////////////////////////////////////////////////////////////////////// - // - // default_parser_context_base class { default context base } - // - /////////////////////////////////////////////////////////////////////////// - struct default_parser_context_base - { - template - struct aux {}; - }; - - /////////////////////////////////////////////////////////////////////////// - // - // parser_context_base class { base class of all context classes } - // - /////////////////////////////////////////////////////////////////////////// - struct parser_context_base {}; - - /////////////////////////////////////////////////////////////////////////// - // - // parser_context class { default context } - // - /////////////////////////////////////////////////////////////////////////// - struct nil_t; - template struct parser_context_linker; - - template - struct parser_context : parser_context_base - { - typedef AttrT attr_t; - typedef default_parser_context_base base_t; - typedef parser_context_linker > context_linker_t; - - template - parser_context(ParserT const&) {} - - template - void - pre_parse(ParserT const&, ScannerT const&) {} - - template - ResultT& - post_parse(ResultT& hit, ParserT const&, ScannerT const&) - { return hit; } - }; - - /////////////////////////////////////////////////////////////////////////// - // - // context_aux class - // - // context_aux is a class derived from the - // ContextT's nested base_t::base template class. (see - // default_parser_context_base::aux for an example). - // - // Basically, this class provides ContextT dependent optional - // functionality to the derived class DerivedT through the CRTP - // idiom (Curiously recurring template pattern). - // - /////////////////////////////////////////////////////////////////////////// - template - struct context_aux : public ContextT::base_t::template aux {}; - - /////////////////////////////////////////////////////////////////////////// - // - // parser_scanner_linker and parser_scanner_linker classes - // { helper templates for the rule extensibility } - // - // This classes can be 'overloaded' (defined elsewhere), to plug - // in additional functionality into the non-terminal parsing process. - // - /////////////////////////////////////////////////////////////////////////// - #if !defined(BOOST_SPIRIT_PARSER_SCANNER_LINKER_DEFINED) - #define BOOST_SPIRIT_PARSER_SCANNER_LINKER_DEFINED - - template - struct parser_scanner_linker : public ScannerT - { - parser_scanner_linker(ScannerT const scan_) : ScannerT(scan_) {} - }; - - #endif // !defined(BOOST_SPIRIT_PARSER_SCANNER_LINKER_DEFINED) - - ////////////////////////////////// - #if !defined(BOOST_SPIRIT_PARSER_CONTEXT_LINKER_DEFINED) - #define BOOST_SPIRIT_PARSER_CONTEXT_LINKER_DEFINED - - template - struct parser_context_linker : public ContextT - { - template - parser_context_linker(ParserT const& p) - : ContextT(p) {} - - template - void pre_parse(ParserT const& p, ScannerT const& scan) - { ContextT::pre_parse(p, scan); } - - template - ResultT& - post_parse(ResultT& hit, ParserT const& p, ScannerT const& scan) - { return ContextT::post_parse(hit, p, scan); } - }; - - #endif // !defined(BOOST_SPIRIT_PARSER_CONTEXT_LINKER_DEFINED) - - /////////////////////////////////////////////////////////////////////////// - // - // BOOST_SPIRIT_CONTEXT_PARSE helper macro - // - // The original implementation uses a template class. However, we - // need to lessen the template instantiation depth to help inferior - // compilers that sometimes choke on deep template instantiations. - // The objective is to avoid code redundancy. A macro, in this case - // is an obvious solution. Sigh! - // - // WARNING: INTERNAL USE ONLY. NOT FOR PUBLIC CONSUMPTION. - // - /////////////////////////////////////////////////////////////////////////// - #define BOOST_SPIRIT_CONTEXT_PARSE(scan, this_, scanner_t, context_t, result_t) \ - scanner_t scan_wrap(scan); \ - context_t context_wrap(this_); \ - context_wrap.pre_parse(this_, scan_wrap); \ - result_t hit = parse_main(scan); \ - return context_wrap.post_parse(hit, this_, scan_wrap); - - BOOST_SPIRIT_CLASSIC_NAMESPACE_END - - } // namespace spirit -} // namespace boost - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/non_terminal/parser_id.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/core/non_terminal/parser_id.hpp deleted file mode 100644 index bc465dceaca7..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/non_terminal/parser_id.hpp +++ /dev/null @@ -1,122 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2003 Joel de Guzman - Copyright (c) 2001 Daniel Nuffer - http://spirit.sourceforge.net/ - - 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_PARSER_ID_HPP) -#define BOOST_SPIRIT_PARSER_ID_HPP - -#if defined(BOOST_SPIRIT_DEBUG) -# include -#endif -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // - // parser_id class - // - /////////////////////////////////////////////////////////////////////////// - class parser_id - { - public: - parser_id() : p(0) {} - explicit parser_id(void const* prule) : p(prule) {} - parser_id(std::size_t l_) : l(l_) {} - - bool operator==(parser_id const& x) const { return p == x.p; } - bool operator!=(parser_id const& x) const { return !(*this == x); } - bool operator<(parser_id const& x) const { return p < x.p; } - std::size_t to_long() const { return l; } - - private: - - union - { - void const* p; - std::size_t l; - }; - }; - - #if defined(BOOST_SPIRIT_DEBUG) - inline std::ostream& - operator<<(std::ostream& out, parser_id const& rid) - { - out << (unsigned int)rid.to_long(); - return out; - } - #endif - - /////////////////////////////////////////////////////////////////////////// - // - // parser_tag_base class: base class of all parser tags - // - /////////////////////////////////////////////////////////////////////////// - struct parser_tag_base {}; - - /////////////////////////////////////////////////////////////////////////// - // - // parser_address_tag class: tags a parser with its address - // - /////////////////////////////////////////////////////////////////////////// - struct parser_address_tag : parser_tag_base - { - parser_id id() const - { return parser_id(reinterpret_cast(this)); } - }; - - /////////////////////////////////////////////////////////////////////////// - // - // parser_tag class: tags a parser with an integer ID - // - /////////////////////////////////////////////////////////////////////////// - template - struct parser_tag : parser_tag_base - { - static parser_id id() - { return parser_id(std::size_t(N)); } - }; - - /////////////////////////////////////////////////////////////////////////// - // - // dynamic_parser_tag class: tags a parser with a dynamically changeable - // integer ID - // - /////////////////////////////////////////////////////////////////////////// - class dynamic_parser_tag : public parser_tag_base - { - public: - - dynamic_parser_tag() - : tag(std::size_t(0)) {} - - parser_id - id() const - { - return - tag.to_long() - ? tag - : parser_id(reinterpret_cast(this)); - } - - void set_id(parser_id id_) { tag = id_; } - - private: - - parser_id tag; - }; - -/////////////////////////////////////////////////////////////////////////////// -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/non_terminal/rule.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/core/non_terminal/rule.hpp deleted file mode 100644 index 1d4336bcc94d..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/non_terminal/rule.hpp +++ /dev/null @@ -1,175 +0,0 @@ -/*============================================================================= - Copyright (c) 1998-2003 Joel de Guzman - http://spirit.sourceforge.net/ - - 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_RULE_HPP) -#define BOOST_SPIRIT_RULE_HPP - -#include - -/////////////////////////////////////////////////////////////////////////////// -// -// Spirit predefined maximum number of simultaneously usable different -// scanner types. -// -// This limit defines the maximum number of possible different scanner -// types for which a specific rule<> may be used. If this isn't defined, a -// rule<> may be used with one scanner type only (multiple scanner support -// is disabled). -// -/////////////////////////////////////////////////////////////////////////////// -#if !defined(BOOST_SPIRIT_RULE_SCANNERTYPE_LIMIT) -# define BOOST_SPIRIT_RULE_SCANNERTYPE_LIMIT 1 -#endif - -// Ensure a meaningful maximum number of simultaneously usable scanner types -BOOST_STATIC_ASSERT(BOOST_SPIRIT_RULE_SCANNERTYPE_LIMIT > 0); - -#include -#include -#include - -#if BOOST_SPIRIT_RULE_SCANNERTYPE_LIMIT > 1 -# include -#endif - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -#if BOOST_SPIRIT_RULE_SCANNERTYPE_LIMIT > 1 - - /////////////////////////////////////////////////////////////////////////// - // - // scanner_list (a fake scanner) - // - // Typically, rules are tied to a specific scanner type and - // a particular rule cannot be used with anything else. Sometimes - // there's a need for rules that can accept more than one scanner - // type. The scanner_list can be used as a template - // parameter to the rule class to specify up to the number of - // scanner types defined by the BOOST_SPIRIT_RULE_SCANNERTYPE_LIMIT - // constant. Example: - // - // rule > r; - // - // *** This feature is available only to compilers that support - // partial template specialization. *** - // - /////////////////////////////////////////////////////////////////////////// - template < - BOOST_PP_ENUM_PARAMS( - BOOST_SPIRIT_RULE_SCANNERTYPE_LIMIT, - typename ScannerT - ) - > - struct scanner_list : scanner_base {}; - -#endif - - /////////////////////////////////////////////////////////////////////////// - // - // rule class - // - // The rule is a polymorphic parser that acts as a named place- - // holder capturing the behavior of an EBNF expression assigned to - // it. - // - // The rule is a template class parameterized by: - // - // 1) scanner (scanner_t, see scanner.hpp), - // 2) the rule's context (context_t, see parser_context.hpp) - // 3) an arbitrary tag (tag_t, see parser_id.hpp) that allows - // a rule to be tagged for identification. - // - // These template parameters may be specified in any order. The - // scanner will default to scanner<> when it is not specified. - // The context will default to parser_context when not specified. - // The tag will default to parser_address_tag when not specified. - // - // The definition of the rule (its right hand side, RHS) held by - // the rule through a scoped_ptr. When a rule is seen in the RHS - // of an assignment or copy construction EBNF expression, the rule - // is held by the LHS rule by reference. - // - /////////////////////////////////////////////////////////////////////////// - template < - typename T0 = nil_t - , typename T1 = nil_t - , typename T2 = nil_t - > - class rule - : public impl::rule_base< - rule - , rule const& - , T0, T1, T2> - { - public: - - typedef rule self_t; - typedef impl::rule_base< - self_t - , self_t const& - , T0, T1, T2> - base_t; - - typedef typename base_t::scanner_t scanner_t; - typedef typename base_t::attr_t attr_t; - typedef impl::abstract_parser abstract_parser_t; - - rule() : ptr() {} - ~rule() {} - - rule(rule const& r) - : ptr(new impl::concrete_parser(r)) {} - - template - rule(ParserT const& p) - : ptr(new impl::concrete_parser(p)) {} - - template - rule& operator=(ParserT const& p) - { - ptr.reset(new impl::concrete_parser(p)); - return *this; - } - - rule& operator=(rule const& r) - { - ptr.reset(new impl::concrete_parser(r)); - return *this; - } - - rule - copy() const - { - return rule(ptr.get() ? ptr->clone() : 0); - } - - private: - friend class impl::rule_base_access; - - abstract_parser_t* - get() const - { - return ptr.get(); - } - - rule(abstract_parser_t* ptr_) - : ptr(ptr_) {} - - rule(abstract_parser_t const* ptr_) - : ptr(ptr_) {} - - scoped_ptr ptr; - }; - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/non_terminal/subrule.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/core/non_terminal/subrule.hpp deleted file mode 100644 index 1d16d70aea09..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/non_terminal/subrule.hpp +++ /dev/null @@ -1,303 +0,0 @@ -/*============================================================================= - Copyright (c) 2002-2003 Joel de Guzman - Copyright (c) 2002-2003 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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_SUBRULE_HPP) -#define BOOST_SPIRIT_SUBRULE_HPP - -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // - // subrules_scanner class - // - /////////////////////////////////////////////////////////////////////////// - template - struct subrules_scanner : public ScannerT - { - typedef ScannerT scanner_t; - typedef ListT list_t; - typedef subrules_scanner self_t; - - subrules_scanner(ScannerT const& scan, ListT const& list_) - : ScannerT(scan), list(list_) {} - - template - struct rebind_policies - { - typedef typename rebind_scanner_policies::type - rebind_scanner; - typedef subrules_scanner type; - }; - - template - subrules_scanner< - typename rebind_scanner_policies::type, - ListT> - change_policies(PoliciesT const& policies) const - { - typedef subrules_scanner< - BOOST_DEDUCED_TYPENAME - rebind_scanner_policies::type, - ListT> - subrules_scanner_t; - - return subrules_scanner_t( - ScannerT::change_policies(policies), - list); - } - - template - struct rebind_iterator - { - typedef typename rebind_scanner_iterator::type - rebind_scanner; - typedef subrules_scanner type; - }; - - template - subrules_scanner< - typename rebind_scanner_iterator::type, - ListT> - change_iterator(IteratorT const& first, IteratorT const &last) const - { - typedef subrules_scanner< - BOOST_DEDUCED_TYPENAME - rebind_scanner_iterator::type, - ListT> - subrules_scanner_t; - - return subrules_scanner_t( - ScannerT::change_iterator(first, last), - list); - } - - ListT const& list; - }; - - /////////////////////////////////////////////////////////////////////////// - // - // subrule_scanner type computer class - // - // This computer ensures that the scanner will not be recursively - // instantiated if it's not needed. - // - /////////////////////////////////////////////////////////////////////////// - template - struct subrules_scanner_finder - { - typedef subrules_scanner type; - }; - - template - struct subrules_scanner_finder, ListT> - { - typedef subrules_scanner type; - }; - - /////////////////////////////////////////////////////////////////////////// - // - // subrule_list class - // - /////////////////////////////////////////////////////////////////////////// - template - struct subrule_list : public parser > - { - typedef subrule_list self_t; - typedef FirstT first_t; - typedef RestT rest_t; - - subrule_list(FirstT const& first_, RestT const& rest_) - : first(first_), rest(rest_) {} - - template - struct result - { - typedef typename parser_result::type type; - }; - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - typedef typename subrules_scanner_finder::type - subrules_scanner_t; - subrules_scanner_t g_arg(scan, *this); - return first.start.parse(g_arg); - } - - template - subrule_list< - FirstT, - subrule_list< - subrule_parser, - RestT> > - operator,(subrule_parser const& rhs_) - { - return subrule_list< - FirstT, - subrule_list< - subrule_parser, - RestT> >( - first, - subrule_list< - subrule_parser, - RestT>(rhs_, rest)); - } - - FirstT first; - RestT rest; - }; - - /////////////////////////////////////////////////////////////////////////// - // - // subrule_parser class - // - /////////////////////////////////////////////////////////////////////////// - template - struct subrule_parser - : public parser > - { - typedef subrule_parser self_t; - typedef subrule subrule_t; - typedef DefT def_t; - - BOOST_STATIC_CONSTANT(int, id = ID); - - template - struct result - { - typedef typename - impl::get_subrule_parser_result< - DefT, ScannerT, typename subrule_t::attr_t>::type type; - }; - - subrule_parser(subrule_t const& start_, DefT const& rhs_) - : rhs(rhs_), start(start_) {} - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - // This will only be called when parsing single subrules. - typedef subrule_list list_t; - typedef subrules_scanner scanner_t; - - list_t list(*this, nil_t()); - scanner_t g_arg(scan, list); - return start.parse(g_arg); - } - - template - inline subrule_list< - self_t, - subrule_list< - subrule_parser, - nil_t> > - operator,(subrule_parser const& rhs) const - { - return subrule_list< - self_t, - subrule_list< - subrule_parser, - nil_t> >( - *this, - subrule_list< - subrule_parser, nil_t>( - rhs, nil_t())); - } - - typename DefT::embed_t rhs; - subrule_t const& start; - }; - - /////////////////////////////////////////////////////////////////////////// - // - // subrule class - // - /////////////////////////////////////////////////////////////////////////// - template - struct subrule - : public parser > - , public ContextT::base_t - , public context_aux > - { - typedef subrule self_t; - typedef subrule const& embed_t; - - typedef typename ContextT::context_linker_t context_t; - typedef typename context_t::attr_t attr_t; - - BOOST_STATIC_CONSTANT(int, id = ID); - - template - struct result - { - typedef typename - impl::get_subrule_result::type type; - }; - - template - typename parser_result::type - parse_main(ScannerT const& scan) const - { - typedef typename parser_result::type result_t; - result_t result_; - impl::parse_subrule:: - do_(result_, scan); - return result_; - } - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - typedef typename parser_result::type result_t; - typedef parser_scanner_linker scanner_t; - BOOST_SPIRIT_CONTEXT_PARSE( - scan, *this, scanner_t, context_t, result_t); - } - - template - subrule_parser - operator=(parser const& rhs) const - { - return subrule_parser(*this, rhs.derived()); - } - - private: - - // assignment of subrules is not allowed. Use subrules - // with identical IDs if you want to have aliases. - - subrule& operator=(subrule const&); - - template - subrule& operator=(subrule const&); - }; - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/non_terminal/subrule_fwd.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/core/non_terminal/subrule_fwd.hpp deleted file mode 100644 index bb6ce878583e..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/non_terminal/subrule_fwd.hpp +++ /dev/null @@ -1,35 +0,0 @@ -/*============================================================================= - Copyright (c) 2006 Tobias Schwinger - http://spirit.sourceforge.net/ - - 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_SUBRULE_FWD_HPP) -#define BOOST_SPIRIT_SUBRULE_FWD_HPP - -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - template > - struct subrule; - - template > - struct subrule_parser; - - template - struct subrules_scanner; - - template - struct subrule_list; - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/parser.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/core/parser.hpp deleted file mode 100644 index 8f6bc6a3eebb..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/parser.hpp +++ /dev/null @@ -1,223 +0,0 @@ -/*============================================================================= - Copyright (c) 1998-2003 Joel de Guzman - http://spirit.sourceforge.net/ - - 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_PARSER_HPP) -#define BOOST_SPIRIT_PARSER_HPP - -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - template - class action; // forward declaration - - /////////////////////////////////////////////////////////////////////////// - // - // Parser categories - // - // Helper template classes to distinguish different types of - // parsers. The following categories are the most generic. More - // specific types may inherit from these. Each parser has a typedef - // parser_category_t that defines its category. By default, if one - // is not specified, it will inherit from the base parser class - // which typedefs its parser_category_t as plain_parser_category. - // - // - plain parser has nothing special - // - binary parser has subject a and b (e.g. alternative) - // - unary parser has single subject (e.g. kleene star) - // - action parser has an attached action parser - // - /////////////////////////////////////////////////////////////////////////// - struct plain_parser_category {}; - struct binary_parser_category : plain_parser_category {}; - struct unary_parser_category : plain_parser_category {}; - struct action_parser_category : unary_parser_category {}; - - /////////////////////////////////////////////////////////////////////////// - // - // parser_result metafunction - // - // Given a scanner type ScannerT and a parser type ParserT, the - // parser_result metafunction provides the actual result of the - // parser. - // - // Usage: - // - // typename parser_result::type - // - /////////////////////////////////////////////////////////////////////////// - template - struct parser_result - { - typedef typename boost::remove_reference::type parser_type; - typedef typename parser_type::template result::type type; - }; - - /////////////////////////////////////////////////////////////////////////// - // - // parser class - // - // This class is a protocol base class for all parsers. This is - // essentially an interface contract. The parser class does not - // really know how to parse anything but instead relies on the - // template parameter DerivedT (which obviously is assumed to be a - // subclass) to do the actual parsing. - // - // Concrete sub-classes inheriting from parser must have a - // corresponding member function parse(...) compatible with the - // conceptual Interface: - // - // template - // RT parse(ScannerT const& scan) const; - // - // where RT is the desired return type of the parser and ScannerT - // scan is the scanner (see scanner.hpp). - // - // Concrete sub-classes inheriting from parser in most cases need to - // have a nested meta-function result that returns the result type - // of the parser's parse member function, given a scanner type. The - // meta-function has the form: - // - // template - // struct result - // { - // typedef RT type; - // }; - // - // where RT is the desired return type of the parser. This is - // usually, but not always, dependent on the template parameter - // ScannerT. If a parser does not supply a result metafunction, a - // default is provided by the base parser class. - // - // The parser's derived() member function returns a reference to the - // parser as its derived object. - // - // An operator[] is provided. The operator returns a semantic action - // handler (see actions.hpp). - // - // Each parser has a typedef embed_t. This typedef specifies how a - // parser is embedded in a composite (see composite.hpp). By - // default, if one is not specified, the parser will be embedded by - // value. That is, a copy of the parser is placed as a member - // variable of the composite. Most parsers are embedded by value. In - // certain situations however, this is not desirable or possible. - // - /////////////////////////////////////////////////////////////////////////// - template - struct parser - { - typedef DerivedT embed_t; - typedef DerivedT derived_t; - typedef plain_parser_category parser_category_t; - - template - struct result - { - typedef typename match_result::type type; - }; - - DerivedT& derived() - { - return *static_cast(this); - } - - DerivedT const& derived() const - { - return *static_cast(this); - } - - template - action - operator[](ActionT const& actor) const - { - return action(derived(), actor); - } - }; - - /////////////////////////////////////////////////////////////////////////// - // - // parse_info - // - // Results returned by the free parse functions: - // - // stop: points to the final parse position (i.e parsing - // processed the input up to this point). - // - // hit: true if parsing is successful. This may be full: - // the parser consumed all the input, or partial: - // the parser consumed only a portion of the input. - // - // full: true when we have a full hit (i.e the parser - // consumed all the input. - // - // length: The number of characters consumed by the parser. - // This is valid only if we have a successful hit - // (either partial or full). - // - /////////////////////////////////////////////////////////////////////////// - template - struct parse_info - { - IteratorT stop; - bool hit; - bool full; - std::size_t length; - - parse_info( - IteratorT const& stop_ = IteratorT(), - bool hit_ = false, - bool full_ = false, - std::size_t length_ = 0) - : stop(stop_) - , hit(hit_) - , full(full_) - , length(length_) {} - - template - parse_info(ParseInfoT const& pi) - : stop(pi.stop) - , hit(pi.hit) - , full(pi.full) - , length(pi.length) {} - }; - - /////////////////////////////////////////////////////////////////////////// - // - // Generic parse function - // - /////////////////////////////////////////////////////////////////////////// - template - parse_info - parse( - IteratorT const& first, - IteratorT const& last, - parser const& p); - - /////////////////////////////////////////////////////////////////////////// - // - // Parse function for null terminated strings - // - /////////////////////////////////////////////////////////////////////////// - template - parse_info - parse( - CharT const* str, - parser const& p); - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif - -#include diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/primitives/impl/numerics.ipp b/framework/contrib/boost/include/boost/spirit/home/classic/core/primitives/impl/numerics.ipp deleted file mode 100644 index 19586f1a10da..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/primitives/impl/numerics.ipp +++ /dev/null @@ -1,478 +0,0 @@ -/*============================================================================= - Copyright (c) 1998-2003 Joel de Guzman - Copyright (c) 2001-2003 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_NUMERICS_IPP -#define BOOST_SPIRIT_NUMERICS_IPP - -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - struct sign_parser; // forward declaration only - - namespace impl - { - /////////////////////////////////////////////////////////////////////// - // - // Extract the prefix sign (- or +) - // - /////////////////////////////////////////////////////////////////////// - template - bool - extract_sign(ScannerT const& scan, std::size_t& count) - { - // Extract the sign - count = 0; - bool neg = *scan == '-'; - if (neg || (*scan == '+')) - { - ++scan; - ++count; - return neg; - } - - return false; - } - - /////////////////////////////////////////////////////////////////////// - // - // Traits class for radix specific number conversion - // - // Convert a digit from character representation, ch, to binary - // representation, returned in val. - // Returns whether the conversion was successful. - // - // template static bool digit(CharT ch, T& val); - // - /////////////////////////////////////////////////////////////////////// - template - struct radix_traits; - - ////////////////////////////////// Binary - template<> - struct radix_traits<2> - { - template - static bool digit(CharT ch, T& val) - { - val = ch - '0'; - return ('0' == ch || '1' == ch); - } - }; - - ////////////////////////////////// Octal - template<> - struct radix_traits<8> - { - template - static bool digit(CharT ch, T& val) - { - val = ch - '0'; - return ('0' <= ch && ch <= '7'); - } - }; - - ////////////////////////////////// Decimal - template<> - struct radix_traits<10> - { - template - static bool digit(CharT ch, T& val) - { - val = ch - '0'; - return impl::isdigit_(ch); - } - }; - - ////////////////////////////////// Hexadecimal - template<> - struct radix_traits<16> - { - template - static bool digit(CharT ch, T& val) - { - if (radix_traits<10>::digit(ch, val)) - return true; - - CharT lc = impl::tolower_(ch); - if ('a' <= lc && lc <= 'f') - { - val = lc - 'a' + 10; - return true; - } - return false; - } - }; - - /////////////////////////////////////////////////////////////////////// - // - // Helper templates for encapsulation of radix specific - // conversion of an input string to an integral value. - // - // main entry point: - // - // extract_int - // ::f(first, last, n, count); - // - // The template parameter Radix represents the radix of the - // number contained in the parsed string. The template - // parameter MinDigits specifies the minimum digits to - // accept. The template parameter MaxDigits specifies the - // maximum digits to parse. A -1 value for MaxDigits will - // make it parse an arbitrarilly large number as long as the - // numeric type can hold it. Accumulate is either - // positive_accumulate (default) for parsing positive - // numbers or negative_accumulate otherwise. - // Checking is only performed when std::numeric_limits:: - // is_specialized is true. Otherwise, there's no way to - // do the check. - // - // scan.first and scan.last are iterators as usual (i.e. - // first is mutable and is moved forward when a match is - // found), n is a variable that holds the number (passed by - // reference). The number of parsed characters is added to - // count (also passed by reference) - // - // NOTE: - // Returns a non-match, if the number to parse - // overflows (or underflows) the used type. - // - // BEWARE: - // the parameters 'n' and 'count' should be properly - // initialized before calling this function. - // - /////////////////////////////////////////////////////////////////////// -#if defined(BOOST_MSVC) -#pragma warning(push) -#pragma warning(disable:4127) //conditional expression is constant -#endif - - template - struct positive_accumulate - { - // Use this accumulator if number is positive - static bool add(T& n, T digit) - { - if (std::numeric_limits::is_specialized) - { - static T const max = (std::numeric_limits::max)(); - static T const max_div_radix = max/Radix; - - if (n > max_div_radix) - return false; - n *= Radix; - - if (n > max - digit) - return false; - n += digit; - - return true; - } - else - { - n *= Radix; - n += digit; - return true; - } - } - }; - - template - struct negative_accumulate - { - // Use this accumulator if number is negative - static bool add(T& n, T digit) - { - if (std::numeric_limits::is_specialized) - { - typedef std::numeric_limits num_limits; - static T const min = - (!num_limits::is_integer && num_limits::is_signed && num_limits::has_denorm) ? - -(num_limits::max)() : (num_limits::min)(); - static T const min_div_radix = min/Radix; - - if (n < min_div_radix) - return false; - n *= Radix; - - if (n < min + digit) - return false; - n -= digit; - - return true; - } - else - { - n *= Radix; - n -= digit; - return true; - } - } - }; - - template - inline bool allow_more_digits(std::size_t i) - { - return i < MaxDigits; - } - - template <> - inline bool allow_more_digits<-1>(std::size_t) - { - return true; - } - - ////////////////////////////////// - template < - int Radix, unsigned MinDigits, int MaxDigits, - typename Accumulate - > - struct extract_int - { - template - static bool - f(ScannerT& scan, T& n, std::size_t& count) - { - std::size_t i = 0; - T digit; - while( allow_more_digits(i) && !scan.at_end() && - radix_traits::digit(*scan, digit) ) - { - if (!Accumulate::add(n, digit)) - return false; // Overflow - ++i, ++scan, ++count; - } - return i >= MinDigits; - } - }; - - /////////////////////////////////////////////////////////////////////// - // - // uint_parser_impl class - // - /////////////////////////////////////////////////////////////////////// - template < - typename T = unsigned, - int Radix = 10, - unsigned MinDigits = 1, - int MaxDigits = -1 - > - struct uint_parser_impl - : parser > - { - typedef uint_parser_impl self_t; - - template - struct result - { - typedef typename match_result::type type; - }; - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - if (!scan.at_end()) - { - T n = 0; - std::size_t count = 0; - typename ScannerT::iterator_t save = scan.first; - if (extract_int >::f(scan, n, count)) - { - return scan.create_match(count, n, save, scan.first); - } - // return no-match if number overflows - } - return scan.no_match(); - } - }; - - /////////////////////////////////////////////////////////////////////// - // - // int_parser_impl class - // - /////////////////////////////////////////////////////////////////////// - template < - typename T = unsigned, - int Radix = 10, - unsigned MinDigits = 1, - int MaxDigits = -1 - > - struct int_parser_impl - : parser > - { - typedef int_parser_impl self_t; - - template - struct result - { - typedef typename match_result::type type; - }; - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - typedef extract_int > extract_int_neg_t; - typedef extract_int > extract_int_pos_t; - - if (!scan.at_end()) - { - T n = 0; - std::size_t count = 0; - typename ScannerT::iterator_t save = scan.first; - - bool hit = impl::extract_sign(scan, count); - - if (hit) - hit = extract_int_neg_t::f(scan, n, count); - else - hit = extract_int_pos_t::f(scan, n, count); - - if (hit) - return scan.create_match(count, n, save, scan.first); - else - scan.first = save; - // return no-match if number overflows or underflows - } - return scan.no_match(); - } - }; - - /////////////////////////////////////////////////////////////////////// - // - // real_parser_impl class - // - /////////////////////////////////////////////////////////////////////// - template - struct real_parser_impl - { - typedef real_parser_impl self_t; - - template - RT parse_main(ScannerT const& scan) const - { - if (scan.at_end()) - return scan.no_match(); - typename ScannerT::iterator_t save = scan.first; - - typedef typename parser_result::type - sign_match_t; - typedef typename parser_result, ScannerT>::type - exp_match_t; - - sign_match_t sign_match = RealPoliciesT::parse_sign(scan); - std::size_t count = sign_match ? sign_match.length() : 0; - bool neg = sign_match.has_valid_attribute() ? - sign_match.value() : false; - - RT n_match = RealPoliciesT::parse_n(scan); - T n = n_match.has_valid_attribute() ? - n_match.value() : T(0); - bool got_a_number = n_match; - exp_match_t e_hit; - - if (!got_a_number && !RealPoliciesT::allow_leading_dot) - return scan.no_match(); - else - count += n_match.length(); - - if (neg) - n = -n; - - if (RealPoliciesT::parse_dot(scan)) - { - // We got the decimal point. Now we will try to parse - // the fraction if it is there. If not, it defaults - // to zero (0) only if we already got a number. - - if (RT hit = RealPoliciesT::parse_frac_n(scan)) - { -#if !defined(BOOST_NO_STDC_NAMESPACE) - using namespace std; // allow for ADL to find pow() -#endif - hit.value(hit.value() - * pow(T(10), T(-hit.length()))); - if (neg) - n -= hit.value(); - else - n += hit.value(); - count += hit.length() + 1; - - } - - else if (!got_a_number || - !RealPoliciesT::allow_trailing_dot) - return scan.no_match(); - - e_hit = RealPoliciesT::parse_exp(scan); - } - else - { - // We have reached a point where we - // still haven't seen a number at all. - // We return early with a no-match. - if (!got_a_number) - return scan.no_match(); - - // If we must expect a dot and we didn't see - // an exponent, return early with a no-match. - e_hit = RealPoliciesT::parse_exp(scan); - if (RealPoliciesT::expect_dot && !e_hit) - return scan.no_match(); - } - - if (e_hit) - { - // We got the exponent prefix. Now we will try to parse the - // actual exponent. It is an error if it is not there. - if (RT e_n_hit = RealPoliciesT::parse_exp_n(scan)) - { -#if !defined(BOOST_NO_STDC_NAMESPACE) - using namespace std; // allow for ADL to find pow() -#endif - n *= pow(T(10), T(e_n_hit.value())); - count += e_n_hit.length() + e_hit.length(); - } - else - { - // Oops, no exponent, return a no-match - return scan.no_match(); - } - } - - return scan.create_match(count, n, save, scan.first); - } - - template - static RT parse(ScannerT const& scan) - { - static self_t this_; - return impl::implicit_lexeme_parse(this_, scan, scan); - } - }; - -#if defined(BOOST_MSVC) -#pragma warning(pop) -#endif - - } // namespace impl - -/////////////////////////////////////////////////////////////////////////////// -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace boost::spirit - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/primitives/impl/primitives.ipp b/framework/contrib/boost/include/boost/spirit/home/classic/core/primitives/impl/primitives.ipp deleted file mode 100644 index cd92154bbf44..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/primitives/impl/primitives.ipp +++ /dev/null @@ -1,396 +0,0 @@ -/*============================================================================= - Copyright (c) 1998-2003 Joel de Guzman - Copyright (c) 2003 Martin Wille - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#if !defined(BOOST_SPIRIT_PRIMITIVES_IPP) -#define BOOST_SPIRIT_PRIMITIVES_IPP - -#include -#if !defined(BOOST_NO_CWCTYPE) -#include -#endif - -#include // char_traits - -#if defined(BOOST_MSVC) -# pragma warning (push) -# pragma warning(disable:4800) -#endif - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - template struct char_parser; - - namespace impl - { - template - inline IteratorT - get_last(IteratorT first) - { - while (*first) - first++; - return first; - } - - template< - typename RT, - typename IteratorT, - typename ScannerT> - inline RT - string_parser_parse( - IteratorT str_first, - IteratorT str_last, - ScannerT& scan) - { - typedef typename ScannerT::iterator_t iterator_t; - iterator_t saved = scan.first; - std::size_t slen = str_last - str_first; - - while (str_first != str_last) - { - if (scan.at_end() || (*str_first != *scan)) - return scan.no_match(); - ++str_first; - ++scan; - } - - return scan.create_match(slen, nil_t(), saved, scan.first); - } - - /////////////////////////////////////////////////////////////////////////// - // - // Conversion from char_type to int_type - // - /////////////////////////////////////////////////////////////////////////// - - // Use char_traits for char and wchar_t only, as these are the only - // specializations provided in the standard. Other types are on their - // own. - // - // For UDT, one may override: - // - // isalnum - // isalpha - // iscntrl - // isdigit - // isgraph - // islower - // isprint - // ispunct - // isspace - // isupper - // isxdigit - // isblank - // isupper - // tolower - // toupper - // - // in a namespace suitable for Argument Dependent lookup or in - // namespace std (disallowed by the standard). - - template - struct char_type_char_traits_helper - { - typedef CharT char_type; - typedef typename std::char_traits::int_type int_type; - - static int_type to_int_type(CharT c) - { - return std::char_traits::to_int_type(c); - } - - static char_type to_char_type(int_type i) - { - return std::char_traits::to_char_type(i); - } - }; - - template - struct char_traits_helper - { - typedef CharT char_type; - typedef CharT int_type; - - static CharT & to_int_type(CharT & c) - { - return c; - } - - static CharT & to_char_type(CharT & c) - { - return c; - } - }; - - template <> - struct char_traits_helper - : char_type_char_traits_helper - { - }; - -#if !defined(BOOST_NO_CWCTYPE) - - template <> - struct char_traits_helper - : char_type_char_traits_helper - { - }; - -#endif - - template - inline typename char_traits_helper::int_type - to_int_type(CharT c) - { - return char_traits_helper::to_int_type(c); - } - - template - inline CharT - to_char_type(typename char_traits_helper::int_type c) - { - return char_traits_helper::to_char_type(c); - } - - /////////////////////////////////////////////////////////////////////// - // - // Convenience functions - // - /////////////////////////////////////////////////////////////////////// - - template - inline bool - isalnum_(CharT c) - { - using namespace std; - return isalnum(to_int_type(c)) ? true : false; - } - - template - inline bool - isalpha_(CharT c) - { - using namespace std; - return isalpha(to_int_type(c)) ? true : false; - } - - template - inline bool - iscntrl_(CharT c) - { - using namespace std; - return iscntrl(to_int_type(c)) ? true : false; - } - - template - inline bool - isdigit_(CharT c) - { - using namespace std; - return isdigit(to_int_type(c)) ? true : false; - } - - template - inline bool - isgraph_(CharT c) - { - using namespace std; - return isgraph(to_int_type(c)) ? true : false; - } - - template - inline bool - islower_(CharT c) - { - using namespace std; - return islower(to_int_type(c)) ? true : false; - } - - template - inline bool - isprint_(CharT c) - { - using namespace std; - return isprint(to_int_type(c)) ? true : false; - } - - template - inline bool - ispunct_(CharT c) - { - using namespace std; - return ispunct(to_int_type(c)) ? true : false; - } - - template - inline bool - isspace_(CharT c) - { - using namespace std; - return isspace(to_int_type(c)) ? true : false; - } - - template - inline bool - isupper_(CharT c) - { - using namespace std; - return isupper(to_int_type(c)) ? true : false; - } - - template - inline bool - isxdigit_(CharT c) - { - using namespace std; - return isxdigit(to_int_type(c)) ? true : false; - } - - template - inline bool - isblank_(CharT c) - { - return (c == ' ' || c == '\t'); - } - - template - inline CharT - tolower_(CharT c) - { - using namespace std; - return to_char_type(tolower(to_int_type(c))); - } - - template - inline CharT - toupper_(CharT c) - { - using namespace std; - return to_char_type(toupper(to_int_type(c))); - } - -#if !defined(BOOST_NO_CWCTYPE) - - inline bool - isalnum_(wchar_t c) - { - using namespace std; - return iswalnum(to_int_type(c)) ? true : false; - } - - inline bool - isalpha_(wchar_t c) - { - using namespace std; - return iswalpha(to_int_type(c)) ? true : false; - } - - inline bool - iscntrl_(wchar_t c) - { - using namespace std; - return iswcntrl(to_int_type(c)) ? true : false; - } - - inline bool - isdigit_(wchar_t c) - { - using namespace std; - return iswdigit(to_int_type(c)) ? true : false; - } - - inline bool - isgraph_(wchar_t c) - { - using namespace std; - return iswgraph(to_int_type(c)) ? true : false; - } - - inline bool - islower_(wchar_t c) - { - using namespace std; - return iswlower(to_int_type(c)) ? true : false; - } - - inline bool - isprint_(wchar_t c) - { - using namespace std; - return iswprint(to_int_type(c)) ? true : false; - } - - inline bool - ispunct_(wchar_t c) - { - using namespace std; - return iswpunct(to_int_type(c)) ? true : false; - } - - inline bool - isspace_(wchar_t c) - { - using namespace std; - return iswspace(to_int_type(c)) ? true : false; - } - - inline bool - isupper_(wchar_t c) - { - using namespace std; - return iswupper(to_int_type(c)) ? true : false; - } - - inline bool - isxdigit_(wchar_t c) - { - using namespace std; - return iswxdigit(to_int_type(c)) ? true : false; - } - - inline bool - isblank_(wchar_t c) - { - return (c == L' ' || c == L'\t'); - } - - inline wchar_t - tolower_(wchar_t c) - { - using namespace std; - return to_char_type(towlower(to_int_type(c))); - } - - inline wchar_t - toupper_(wchar_t c) - { - using namespace std; - return to_char_type(towupper(to_int_type(c))); - } - - inline bool - isblank_(bool) - { - return false; - } - -#endif // !defined(BOOST_NO_CWCTYPE) - -} - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace boost::spirit::impl - -#ifdef BOOST_MSVC -#pragma warning (pop) -#endif - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/primitives/numerics.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/core/primitives/numerics.hpp deleted file mode 100644 index 20ea0911a163..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/primitives/numerics.hpp +++ /dev/null @@ -1,289 +0,0 @@ -/*============================================================================= - Copyright (c) 1998-2003 Joel de Guzman - Copyright (c) 2001-2003 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_NUMERICS_HPP -#define BOOST_SPIRIT_NUMERICS_HPP - -#include -#include -#include -#include - -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // - // uint_parser class - // - /////////////////////////////////////////////////////////////////////////// - template < - typename T, - int Radix, - unsigned MinDigits, - int MaxDigits - > - struct uint_parser : parser > - { - typedef uint_parser self_t; - - template - struct result - { - typedef typename match_result::type type; - }; - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - typedef impl::uint_parser_impl impl_t; - typedef typename parser_result::type result_t; - return impl::contiguous_parser_parse(impl_t(), scan, scan); - } - }; - - /////////////////////////////////////////////////////////////////////////// - // - // int_parser class - // - /////////////////////////////////////////////////////////////////////////// - template < - typename T, - int Radix, - unsigned MinDigits, - int MaxDigits - > - struct int_parser : parser > - { - typedef int_parser self_t; - - template - struct result - { - typedef typename match_result::type type; - }; - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - typedef impl::int_parser_impl impl_t; - typedef typename parser_result::type result_t; - return impl::contiguous_parser_parse(impl_t(), scan, scan); - } - }; - - /////////////////////////////////////////////////////////////////////////// - // - // uint_parser/int_parser instantiations - // - /////////////////////////////////////////////////////////////////////////// - int_parser const - int_p = int_parser(); - - uint_parser const - uint_p = uint_parser(); - - uint_parser const - bin_p = uint_parser(); - - uint_parser const - oct_p = uint_parser(); - - uint_parser const - hex_p = uint_parser(); - - /////////////////////////////////////////////////////////////////////////// - // - // sign_parser class - // - /////////////////////////////////////////////////////////////////////////// - namespace impl - { - // Utility to extract the prefix sign ('-' | '+') - template - bool extract_sign(ScannerT const& scan, std::size_t& count); - } - - struct sign_parser : public parser - { - typedef sign_parser self_t; - - template - struct result - { - typedef typename match_result::type type; - }; - - sign_parser() {} - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - if (!scan.at_end()) - { - std::size_t length; - typename ScannerT::iterator_t save(scan.first); - bool neg = impl::extract_sign(scan, length); - if (length) - return scan.create_match(1, neg, save, scan.first); - } - return scan.no_match(); - } - }; - - sign_parser const sign_p = sign_parser(); - - /////////////////////////////////////////////////////////////////////////// - // - // default real number policies - // - /////////////////////////////////////////////////////////////////////////// - template - struct ureal_parser_policies - { - // trailing dot policy suggested suggested by Gustavo Guerra - BOOST_STATIC_CONSTANT(bool, allow_leading_dot = true); - BOOST_STATIC_CONSTANT(bool, allow_trailing_dot = true); - BOOST_STATIC_CONSTANT(bool, expect_dot = false); - - typedef uint_parser uint_parser_t; - typedef int_parser int_parser_t; - - template - static typename match_result::type - parse_sign(ScannerT& scan) - { - return scan.no_match(); - } - - template - static typename parser_result::type - parse_n(ScannerT& scan) - { - return uint_parser_t().parse(scan); - } - - template - static typename parser_result, ScannerT>::type - parse_dot(ScannerT& scan) - { - return ch_p('.').parse(scan); - } - - template - static typename parser_result::type - parse_frac_n(ScannerT& scan) - { - return uint_parser_t().parse(scan); - } - - template - static typename parser_result, ScannerT>::type - parse_exp(ScannerT& scan) - { - return as_lower_d['e'].parse(scan); - } - - template - static typename parser_result::type - parse_exp_n(ScannerT& scan) - { - return int_parser_t().parse(scan); - } - }; - - template - struct real_parser_policies : public ureal_parser_policies - { - template - static typename parser_result::type - parse_sign(ScannerT& scan) - { - return sign_p.parse(scan); - } - }; - - /////////////////////////////////////////////////////////////////////////// - // - // real_parser class - // - /////////////////////////////////////////////////////////////////////////// - template < - typename T, - typename RealPoliciesT - > - struct real_parser - : public parser > - { - typedef real_parser self_t; - - template - struct result - { - typedef typename match_result::type type; - }; - - real_parser() {} - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - typedef typename parser_result::type result_t; - return impl::real_parser_impl::parse(scan); - } - }; - - /////////////////////////////////////////////////////////////////////////// - // - // real_parser instantiations - // - /////////////////////////////////////////////////////////////////////////// - real_parser > const - ureal_p = real_parser >(); - - real_parser > const - real_p = real_parser >(); - - /////////////////////////////////////////////////////////////////////////// - // - // strict reals (do not allow plain integers (no decimal point)) - // - /////////////////////////////////////////////////////////////////////////// - template - struct strict_ureal_parser_policies : public ureal_parser_policies - { - BOOST_STATIC_CONSTANT(bool, expect_dot = true); - }; - - template - struct strict_real_parser_policies : public real_parser_policies - { - BOOST_STATIC_CONSTANT(bool, expect_dot = true); - }; - - real_parser > const - strict_ureal_p - = real_parser >(); - - real_parser > const - strict_real_p - = real_parser >(); - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/primitives/numerics_fwd.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/core/primitives/numerics_fwd.hpp deleted file mode 100644 index b0f20d9aaaaf..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/primitives/numerics_fwd.hpp +++ /dev/null @@ -1,88 +0,0 @@ -/*============================================================================= - Copyright (C) 2006 Tobias Schwinger - http://spirit.sourceforge.net/ - - 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_NUMERICS_FWD_HPP) -# define BOOST_SPIRIT_NUMERICS_FWD_HPP - -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // - // uint_parser class - // - /////////////////////////////////////////////////////////////////////////// - template < - typename T = unsigned, - int Radix = 10, - unsigned MinDigits = 1, - int MaxDigits = -1 - > - struct uint_parser; - - /////////////////////////////////////////////////////////////////////////// - // - // int_parser class - // - /////////////////////////////////////////////////////////////////////////// - template < - typename T = unsigned, - int Radix = 10, - unsigned MinDigits = 1, - int MaxDigits = -1 - > - struct int_parser; - - /////////////////////////////////////////////////////////////////////////// - // - // sign_parser class - // - /////////////////////////////////////////////////////////////////////////// - struct sign_parser; - - /////////////////////////////////////////////////////////////////////////// - // - // default real number policies - // - /////////////////////////////////////////////////////////////////////////// - template - struct ureal_parser_policies; - - template - struct real_parser_policies; - - /////////////////////////////////////////////////////////////////////////// - // - // real_parser class - // - /////////////////////////////////////////////////////////////////////////// - template < - typename T = double, - typename RealPoliciesT = ureal_parser_policies - > - struct real_parser; - - /////////////////////////////////////////////////////////////////////////// - // - // strict reals (do not allow plain integers (no decimal point)) - // - /////////////////////////////////////////////////////////////////////////// - template - struct strict_ureal_parser_policies; - - template - struct strict_real_parser_policies; - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/primitives/primitives.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/core/primitives/primitives.hpp deleted file mode 100644 index 4cbdd488cbf4..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/primitives/primitives.hpp +++ /dev/null @@ -1,666 +0,0 @@ -/*============================================================================= - Copyright (c) 1998-2003 Joel de Guzman - Copyright (c) 2003 Martin Wille - http://spirit.sourceforge.net/ - - 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_PRIMITIVES_HPP) -#define BOOST_SPIRIT_PRIMITIVES_HPP - -#include -#include -#include -#include -#include -#include - -#ifdef BOOST_MSVC -#pragma warning (push) -#pragma warning(disable : 4512) -#endif - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // - // char_parser class - // - /////////////////////////////////////////////////////////////////////////// - template - struct char_parser : public parser - { - typedef DerivedT self_t; - template - struct result - { - typedef typename match_result< - ScannerT, - typename ScannerT::value_t - >::type type; - }; - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - typedef typename ScannerT::value_t value_t; - typedef typename ScannerT::iterator_t iterator_t; - typedef scanner_policies< - no_skipper_iteration_policy< - BOOST_DEDUCED_TYPENAME ScannerT::iteration_policy_t>, - BOOST_DEDUCED_TYPENAME ScannerT::match_policy_t, - BOOST_DEDUCED_TYPENAME ScannerT::action_policy_t - > policies_t; - - if (!scan.at_end()) - { - value_t ch = *scan; - if (this->derived().test(ch)) - { - iterator_t save(scan.first); - ++scan.change_policies(policies_t(scan)); - return scan.create_match(1, ch, save, scan.first); - } - } - return scan.no_match(); - } - }; - - /////////////////////////////////////////////////////////////////////////// - // - // negation of char_parsers - // - /////////////////////////////////////////////////////////////////////////// - template - struct negated_char_parser - : public char_parser > - { - typedef negated_char_parser self_t; - typedef PositiveT positive_t; - - negated_char_parser(positive_t const& p) - : positive(p.derived()) {} - - template - bool test(T ch) const - { - return !positive.test(ch); - } - - positive_t const positive; - }; - - template - inline negated_char_parser - operator~(char_parser const& p) - { - return negated_char_parser(p.derived()); - } - - template - inline ParserT - operator~(negated_char_parser const& n) - { - return n.positive; - } - - /////////////////////////////////////////////////////////////////////////// - // - // chlit class - // - /////////////////////////////////////////////////////////////////////////// - template - struct chlit : public char_parser > - { - chlit(CharT ch_) - : ch(ch_) {} - - template - bool test(T ch_) const - { - return ch_ == ch; - } - - CharT ch; - }; - - template - inline chlit - ch_p(CharT ch) - { - return chlit(ch); - } - - // This should take care of ch_p("a") "bugs" - template - inline chlit - ch_p(CharT const (& str)[N]) - { - // ch_p's argument should be a single character or a null-terminated - // string with a single character - BOOST_STATIC_ASSERT(N < 3); - return chlit(str[0]); - } - - /////////////////////////////////////////////////////////////////////////// - // - // range class - // - /////////////////////////////////////////////////////////////////////////// - template - struct range : public char_parser > - { - range(CharT first_, CharT last_) - : first(first_), last(last_) - { - BOOST_SPIRIT_ASSERT(!(last < first)); - } - - template - bool test(T ch) const - { - return !(CharT(ch) < first) && !(last < CharT(ch)); - } - - CharT first; - CharT last; - }; - - template - inline range - range_p(CharT first, CharT last) - { - return range(first, last); - } - - /////////////////////////////////////////////////////////////////////////// - // - // chseq class - // - /////////////////////////////////////////////////////////////////////////// - template - class chseq : public parser > - { - public: - - typedef chseq self_t; - - chseq(IteratorT first_, IteratorT last_) - : first(first_), last(last_) {} - - chseq(IteratorT first_) - : first(first_), last(impl::get_last(first_)) {} - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - typedef typename boost::unwrap_reference::type striter_t; - typedef typename parser_result::type result_t; - return impl::string_parser_parse( - striter_t(first), - striter_t(last), - scan); - } - - private: - - IteratorT first; - IteratorT last; - }; - - template - inline chseq - chseq_p(CharT const* str) - { - return chseq(str); - } - - template - inline chseq - chseq_p(IteratorT first, IteratorT last) - { - return chseq(first, last); - } - - /////////////////////////////////////////////////////////////////////////// - // - // strlit class - // - /////////////////////////////////////////////////////////////////////////// - template - class strlit : public parser > - { - public: - - typedef strlit self_t; - - strlit(IteratorT first, IteratorT last) - : seq(first, last) {} - - strlit(IteratorT first) - : seq(first) {} - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - typedef typename parser_result::type result_t; - return impl::contiguous_parser_parse - (seq, scan, scan); - } - - private: - - chseq seq; - }; - - template - inline strlit - str_p(CharT const* str) - { - return strlit(str); - } - - template - inline strlit - str_p(CharT * str) - { - return strlit(str); - } - - template - inline strlit - str_p(IteratorT first, IteratorT last) - { - return strlit(first, last); - } - - // This should take care of str_p('a') "bugs" - template - inline chlit - str_p(CharT ch) - { - return chlit(ch); - } - - /////////////////////////////////////////////////////////////////////////// - // - // nothing_parser class - // - /////////////////////////////////////////////////////////////////////////// - struct nothing_parser : public parser - { - typedef nothing_parser self_t; - - nothing_parser() {} - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - return scan.no_match(); - } - }; - - nothing_parser const nothing_p = nothing_parser(); - - /////////////////////////////////////////////////////////////////////////// - // - // anychar_parser class - // - /////////////////////////////////////////////////////////////////////////// - struct anychar_parser : public char_parser - { - typedef anychar_parser self_t; - - anychar_parser() {} - - template - bool test(CharT) const - { - return true; - } - }; - - anychar_parser const anychar_p = anychar_parser(); - - inline nothing_parser - operator~(anychar_parser) - { - return nothing_p; - } - - /////////////////////////////////////////////////////////////////////////// - // - // alnum_parser class - // - /////////////////////////////////////////////////////////////////////////// - struct alnum_parser : public char_parser - { - typedef alnum_parser self_t; - - alnum_parser() {} - - template - bool test(CharT ch) const - { - return impl::isalnum_(ch); - } - }; - - alnum_parser const alnum_p = alnum_parser(); - - /////////////////////////////////////////////////////////////////////////// - // - // alpha_parser class - // - /////////////////////////////////////////////////////////////////////////// - struct alpha_parser : public char_parser - { - typedef alpha_parser self_t; - - alpha_parser() {} - - template - bool test(CharT ch) const - { - return impl::isalpha_(ch); - } - }; - - alpha_parser const alpha_p = alpha_parser(); - - /////////////////////////////////////////////////////////////////////////// - // - // cntrl_parser class - // - /////////////////////////////////////////////////////////////////////////// - struct cntrl_parser : public char_parser - { - typedef cntrl_parser self_t; - - cntrl_parser() {} - - template - bool test(CharT ch) const - { - return impl::iscntrl_(ch); - } - }; - - cntrl_parser const cntrl_p = cntrl_parser(); - - /////////////////////////////////////////////////////////////////////////// - // - // digit_parser class - // - /////////////////////////////////////////////////////////////////////////// - struct digit_parser : public char_parser - { - typedef digit_parser self_t; - - digit_parser() {} - - template - bool test(CharT ch) const - { - return impl::isdigit_(ch); - } - }; - - digit_parser const digit_p = digit_parser(); - - /////////////////////////////////////////////////////////////////////////// - // - // graph_parser class - // - /////////////////////////////////////////////////////////////////////////// - struct graph_parser : public char_parser - { - typedef graph_parser self_t; - - graph_parser() {} - - template - bool test(CharT ch) const - { - return impl::isgraph_(ch); - } - }; - - graph_parser const graph_p = graph_parser(); - - /////////////////////////////////////////////////////////////////////////// - // - // lower_parser class - // - /////////////////////////////////////////////////////////////////////////// - struct lower_parser : public char_parser - { - typedef lower_parser self_t; - - lower_parser() {} - - template - bool test(CharT ch) const - { - return impl::islower_(ch); - } - }; - - lower_parser const lower_p = lower_parser(); - - /////////////////////////////////////////////////////////////////////////// - // - // print_parser class - // - /////////////////////////////////////////////////////////////////////////// - struct print_parser : public char_parser - { - typedef print_parser self_t; - - print_parser() {} - - template - bool test(CharT ch) const - { - return impl::isprint_(ch); - } - }; - - print_parser const print_p = print_parser(); - - /////////////////////////////////////////////////////////////////////////// - // - // punct_parser class - // - /////////////////////////////////////////////////////////////////////////// - struct punct_parser : public char_parser - { - typedef punct_parser self_t; - - punct_parser() {} - - template - bool test(CharT ch) const - { - return impl::ispunct_(ch); - } - }; - - punct_parser const punct_p = punct_parser(); - - /////////////////////////////////////////////////////////////////////////// - // - // blank_parser class - // - /////////////////////////////////////////////////////////////////////////// - struct blank_parser : public char_parser - { - typedef blank_parser self_t; - - blank_parser() {} - - template - bool test(CharT ch) const - { - return impl::isblank_(ch); - } - }; - - blank_parser const blank_p = blank_parser(); - - /////////////////////////////////////////////////////////////////////////// - // - // space_parser class - // - /////////////////////////////////////////////////////////////////////////// - struct space_parser : public char_parser - { - typedef space_parser self_t; - - space_parser() {} - - template - bool test(CharT ch) const - { - return impl::isspace_(ch); - } - }; - - space_parser const space_p = space_parser(); - - /////////////////////////////////////////////////////////////////////////// - // - // upper_parser class - // - /////////////////////////////////////////////////////////////////////////// - struct upper_parser : public char_parser - { - typedef upper_parser self_t; - - upper_parser() {} - - template - bool test(CharT ch) const - { - return impl::isupper_(ch); - } - }; - - upper_parser const upper_p = upper_parser(); - - /////////////////////////////////////////////////////////////////////////// - // - // xdigit_parser class - // - /////////////////////////////////////////////////////////////////////////// - struct xdigit_parser : public char_parser - { - typedef xdigit_parser self_t; - - xdigit_parser() {} - - template - bool test(CharT ch) const - { - return impl::isxdigit_(ch); - } - }; - - xdigit_parser const xdigit_p = xdigit_parser(); - - /////////////////////////////////////////////////////////////////////////// - // - // eol_parser class (contributed by Martin Wille) - // - /////////////////////////////////////////////////////////////////////////// - struct eol_parser : public parser - { - typedef eol_parser self_t; - - eol_parser() {} - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - typedef scanner_policies< - no_skipper_iteration_policy< - BOOST_DEDUCED_TYPENAME ScannerT::iteration_policy_t>, - BOOST_DEDUCED_TYPENAME ScannerT::match_policy_t, - BOOST_DEDUCED_TYPENAME ScannerT::action_policy_t - > policies_t; - - typename ScannerT::iterator_t save = scan.first; - std::size_t len = 0; - - if (!scan.at_end() && *scan == '\r') // CR - { - ++scan.change_policies(policies_t(scan)); - ++len; - } - - // Don't call skipper here - if (scan.first != scan.last && *scan == '\n') // LF - { - ++scan.change_policies(policies_t(scan)); - ++len; - } - - if (len) - return scan.create_match(len, nil_t(), save, scan.first); - return scan.no_match(); - } - }; - - eol_parser const eol_p = eol_parser(); - - /////////////////////////////////////////////////////////////////////////// - // - // end_parser class (suggested by Markus Schoepflin) - // - /////////////////////////////////////////////////////////////////////////// - struct end_parser : public parser - { - typedef end_parser self_t; - - end_parser() {} - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - if (scan.at_end()) - return scan.empty_match(); - return scan.no_match(); - } - }; - - end_parser const end_p = end_parser(); - - /////////////////////////////////////////////////////////////////////////// - // - // the pizza_p parser :-) - // - /////////////////////////////////////////////////////////////////////////// - inline strlit const - pizza_p(char const* your_favorite_pizza) - { - return your_favorite_pizza; - } - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#ifdef BOOST_MSVC -#pragma warning (pop) -#endif - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/safe_bool.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/core/safe_bool.hpp deleted file mode 100644 index 73b6e7b64b54..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/safe_bool.hpp +++ /dev/null @@ -1,64 +0,0 @@ -/*============================================================================= - Copyright (c) 2003 Joel de Guzman - http://spirit.sourceforge.net/ - - 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_SAFE_BOOL_HPP) -#define BOOST_SPIRIT_SAFE_BOOL_HPP - -#include -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - namespace impl - { - template - struct no_base {}; - - template - struct safe_bool_impl - { -#if BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003)) - void stub(T*) {}; - typedef void (safe_bool_impl::*type)(T*); -#else - typedef T* TP; // workaround to make parsing easier - TP stub; - typedef TP safe_bool_impl::*type; -#endif - }; - } - - template > - struct safe_bool : BaseT - { - private: - typedef impl::safe_bool_impl impl_t; - typedef typename impl_t::type bool_type; - - public: - operator bool_type() const - { - return static_cast(this)->operator_bool() ? - &impl_t::stub : 0; - } - - operator bool_type() - { - return static_cast(this)->operator_bool() ? - &impl_t::stub : 0; - } - }; - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/scanner/impl/skipper.ipp b/framework/contrib/boost/include/boost/spirit/home/classic/core/scanner/impl/skipper.ipp deleted file mode 100644 index 1f1de8f19b8c..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/scanner/impl/skipper.ipp +++ /dev/null @@ -1,181 +0,0 @@ -/*============================================================================= - Copyright (c) 1998-2003 Joel de Guzman - http://spirit.sourceforge.net/ - - 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) -============================================================================*/ -#if !defined(BOOST_SPIRIT_SKIPPER_IPP) -#define BOOST_SPIRIT_SKIPPER_IPP - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - struct space_parser; - template - struct no_skipper_iteration_policy; - - namespace impl - { - template - inline void - skipper_skip( - ST const& s, - ScannerT const& scan, - skipper_iteration_policy const&) - { - typedef scanner_policies< - no_skipper_iteration_policy< - BOOST_DEDUCED_TYPENAME ScannerT::iteration_policy_t>, - BOOST_DEDUCED_TYPENAME ScannerT::match_policy_t, - BOOST_DEDUCED_TYPENAME ScannerT::action_policy_t - > policies_t; - - scanner - scan2(scan.first, scan.last, policies_t(scan)); - typedef typename ScannerT::iterator_t iterator_t; - - for (;;) - { - iterator_t save = scan.first; - if (!s.parse(scan2)) - { - scan.first = save; - break; - } - } - } - - template - inline void - skipper_skip( - ST const& s, - ScannerT const& scan, - no_skipper_iteration_policy const&) - { - for (;;) - { - typedef typename ScannerT::iterator_t iterator_t; - iterator_t save = scan.first; - if (!s.parse(scan)) - { - scan.first = save; - break; - } - } - } - - template - inline void - skipper_skip( - ST const& s, - ScannerT const& scan, - iteration_policy const&) - { - for (;;) - { - typedef typename ScannerT::iterator_t iterator_t; - iterator_t save = scan.first; - if (!s.parse(scan)) - { - scan.first = save; - break; - } - } - } - - template - struct phrase_parser - { - template - static parse_info - parse( - IteratorT const& first_, - IteratorT const& last, - ParserT const& p, - SkipT const& skip) - { - typedef skip_parser_iteration_policy it_policy_t; - typedef scanner_policies scan_policies_t; - typedef scanner scanner_t; - - it_policy_t iter_policy(skip); - scan_policies_t policies(iter_policy); - IteratorT first = first_; - scanner_t scan(first, last, policies); - match hit = p.parse(scan); - return parse_info( - first, hit, hit && (first == last), - hit.length()); - } - }; - - template <> - struct phrase_parser - { - template - static parse_info - parse( - IteratorT const& first_, - IteratorT const& last, - ParserT const& p, - space_parser const&) - { - typedef skipper_iteration_policy<> it_policy_t; - typedef scanner_policies scan_policies_t; - typedef scanner scanner_t; - - IteratorT first = first_; - scanner_t scan(first, last); - match hit = p.parse(scan); - return parse_info( - first, hit, hit && (first == last), - hit.length()); - } - }; - } - - /////////////////////////////////////////////////////////////////////////// - // - // Free parse functions using the skippers - // - /////////////////////////////////////////////////////////////////////////// - template - inline parse_info - parse( - IteratorT const& first, - IteratorT const& last, - parser const& p, - parser const& skip) - { - return impl::phrase_parser:: - parse(first, last, p.derived(), skip.derived()); - } - - /////////////////////////////////////////////////////////////////////////// - // - // Parse function for null terminated strings using the skippers - // - /////////////////////////////////////////////////////////////////////////// - template - inline parse_info - parse( - CharT const* str, - parser const& p, - parser const& skip) - { - CharT const* last = str; - while (*last) - last++; - return parse(str, last, p, skip); - } - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace boost::spirit - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/scanner/scanner.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/core/scanner/scanner.hpp deleted file mode 100644 index 48938dbeeded..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/scanner/scanner.hpp +++ /dev/null @@ -1,328 +0,0 @@ -/*============================================================================= - Copyright (c) 1998-2002 Joel de Guzman - http://spirit.sourceforge.net/ - - 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_SCANNER_HPP) -#define BOOST_SPIRIT_SCANNER_HPP - -#include -#include -#include -#include -#include - -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // - // iteration_policy class - // - /////////////////////////////////////////////////////////////////////////// - struct iteration_policy - { - template - void - advance(ScannerT const& scan) const - { - ++scan.first; - } - - template - bool at_end(ScannerT const& scan) const - { - return scan.first == scan.last; - } - - template - T filter(T ch) const - { - return ch; - } - - template - typename ScannerT::ref_t - get(ScannerT const& scan) const - { - return *scan.first; - } - }; - - /////////////////////////////////////////////////////////////////////////// - // - // match_policy class - // - /////////////////////////////////////////////////////////////////////////// - struct match_policy - { - template - struct result { typedef match type; }; - - const match - no_match() const - { - return match(); - } - - const match - empty_match() const - { - return match(0, nil_t()); - } - - template - match - create_match( - std::size_t length, - AttrT const& val, - IteratorT const& /*first*/, - IteratorT const& /*last*/) const - { - return match(length, val); - } - - template - void group_match( - MatchT& /*m*/, - parser_id const& /*id*/, - IteratorT const& /*first*/, - IteratorT const& /*last*/) const {} - - template - void concat_match(Match1T& l, Match2T const& r) const - { - l.concat(r); - } - }; - - /////////////////////////////////////////////////////////////////////////// - // - // match_result class - // - /////////////////////////////////////////////////////////////////////////// - template - struct match_result - { - typedef typename MatchPolicyT::template result::type type; - }; - - /////////////////////////////////////////////////////////////////////////// - // - // action_policy class - // - /////////////////////////////////////////////////////////////////////////// - template - struct attributed_action_policy - { - template - static void - call( - ActorT const& actor, - AttrT& val, - IteratorT const&, - IteratorT const&) - { - actor(val); - } - }; - - ////////////////////////////////// - template <> - struct attributed_action_policy - { - template - static void - call( - ActorT const& actor, - nil_t, - IteratorT const& first, - IteratorT const& last) - { - actor(first, last); - } - }; - - ////////////////////////////////// - struct action_policy - { - template - void - do_action( - ActorT const& actor, - AttrT& val, - IteratorT const& first, - IteratorT const& last) const - { - attributed_action_policy::call(actor, val, first, last); - } - }; - - /////////////////////////////////////////////////////////////////////////// - // - // scanner_policies class - // - /////////////////////////////////////////////////////////////////////////// - template < - typename IterationPolicyT, - typename MatchPolicyT, - typename ActionPolicyT> - struct scanner_policies : - public IterationPolicyT, - public MatchPolicyT, - public ActionPolicyT - { - typedef IterationPolicyT iteration_policy_t; - typedef MatchPolicyT match_policy_t; - typedef ActionPolicyT action_policy_t; - - scanner_policies( - IterationPolicyT const& i_policy = IterationPolicyT(), - MatchPolicyT const& m_policy = MatchPolicyT(), - ActionPolicyT const& a_policy = ActionPolicyT()) - : IterationPolicyT(i_policy) - , MatchPolicyT(m_policy) - , ActionPolicyT(a_policy) {} - - template - scanner_policies(ScannerPoliciesT const& policies) - : IterationPolicyT(policies) - , MatchPolicyT(policies) - , ActionPolicyT(policies) {} - }; - - /////////////////////////////////////////////////////////////////////////// - // - // scanner_policies_base class: the base class of all scanners - // - /////////////////////////////////////////////////////////////////////////// - struct scanner_base {}; - - /////////////////////////////////////////////////////////////////////////// - // - // scanner class - // - /////////////////////////////////////////////////////////////////////////// - template < - typename IteratorT, - typename PoliciesT> - class scanner : public PoliciesT, public scanner_base - { - public: - - typedef IteratorT iterator_t; - typedef PoliciesT policies_t; - - typedef typename std:: - iterator_traits::value_type value_t; - typedef typename std:: - iterator_traits::reference ref_t; - typedef typename boost:: - call_traits::param_type iter_param_t; - - scanner( - IteratorT& first_, - iter_param_t last_, - PoliciesT const& policies = PoliciesT()) - : PoliciesT(policies), first(first_), last(last_) - { - at_end(); - } - - scanner(scanner const& other) - : PoliciesT(other), first(other.first), last(other.last) {} - - scanner(scanner const& other, IteratorT& first_) - : PoliciesT(other), first(first_), last(other.last) {} - - template - scanner(scanner const& other) - : PoliciesT(other), first(other.first), last(other.last) {} - - bool - at_end() const - { - typedef typename PoliciesT::iteration_policy_t iteration_policy_type; - return iteration_policy_type::at_end(*this); - } - - value_t - operator*() const - { - typedef typename PoliciesT::iteration_policy_t iteration_policy_type; - return iteration_policy_type::filter(iteration_policy_type::get(*this)); - } - - scanner const& - operator++() const - { - typedef typename PoliciesT::iteration_policy_t iteration_policy_type; - iteration_policy_type::advance(*this); - return *this; - } - - template - struct rebind_policies - { - typedef scanner type; - }; - - template - scanner - change_policies(PoliciesT2 const& policies) const - { - return scanner(first, last, policies); - } - - template - struct rebind_iterator - { - typedef scanner type; - }; - - template - scanner - change_iterator(IteratorT2 const& first_, IteratorT2 const &last_) const - { - return scanner(first_, last_, *this); - } - - IteratorT& first; - IteratorT const last; - - private: - - scanner& - operator=(scanner const& other); - }; - - /////////////////////////////////////////////////////////////////////////// - // - // rebind_scanner_policies class - // - /////////////////////////////////////////////////////////////////////////// - template - struct rebind_scanner_policies - { - typedef typename ScannerT::template - rebind_policies::type type; - }; - - ////////////////////////////////// - template - struct rebind_scanner_iterator - { - typedef typename ScannerT::template - rebind_iterator::type type; - }; - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/scanner/scanner_fwd.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/core/scanner/scanner_fwd.hpp deleted file mode 100644 index efd78cfa544e..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/scanner/scanner_fwd.hpp +++ /dev/null @@ -1,52 +0,0 @@ -/*============================================================================= - Copyright (c) 2006 Tobias Schwinger - http://spirit.sourceforge.net/ - - 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_SCANNER_FWD_HPP) -#define BOOST_SPIRIT_SCANNER_FWD_HPP - -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // - // policy classes - // - /////////////////////////////////////////////////////////////////////////// - struct iteration_policy; - struct action_policy; - struct match_policy; - - /////////////////////////////////////////////////////////////////////////// - // - // scanner_policies class - // - /////////////////////////////////////////////////////////////////////////// - template < - typename IterationPolicyT = iteration_policy, - typename MatchPolicyT = match_policy, - typename ActionPolicyT = action_policy> - struct scanner_policies; - - /////////////////////////////////////////////////////////////////////////// - // - // scanner class - // - /////////////////////////////////////////////////////////////////////////// - template < - typename IteratorT = char const*, - typename PoliciesT = scanner_policies<> > - class scanner; - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/scanner/skipper.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/core/scanner/skipper.hpp deleted file mode 100644 index 4e655aeafefb..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/scanner/skipper.hpp +++ /dev/null @@ -1,197 +0,0 @@ -/*============================================================================= - Copyright (c) 1998-2003 Joel de Guzman - http://spirit.sourceforge.net/ - - 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_SKIPPER_HPP) -#define BOOST_SPIRIT_SKIPPER_HPP - -/////////////////////////////////////////////////////////////////////////////// -#include - -#include -#include -#include - -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // - // skipper_iteration_policy class - // - /////////////////////////////////////////////////////////////////////////// - template - struct skipper_iteration_policy : public BaseT - { - typedef BaseT base_t; - - skipper_iteration_policy() - : BaseT() {} - - template - skipper_iteration_policy(PolicyT const& other) - : BaseT(other) {} - - template - void - advance(ScannerT const& scan) const - { - BaseT::advance(scan); - scan.skip(scan); - } - - template - bool - at_end(ScannerT const& scan) const - { - scan.skip(scan); - return BaseT::at_end(scan); - } - - template - void - skip(ScannerT const& scan) const - { - while (!BaseT::at_end(scan) && impl::isspace_(BaseT::get(scan))) - BaseT::advance(scan); - } - }; - - /////////////////////////////////////////////////////////////////////////// - // - // no_skipper_iteration_policy class - // - /////////////////////////////////////////////////////////////////////////// - template - struct no_skipper_iteration_policy : public BaseT - { - typedef BaseT base_t; - - no_skipper_iteration_policy() - : BaseT() {} - - template - no_skipper_iteration_policy(PolicyT const& other) - : BaseT(other) {} - - template - void - skip(ScannerT const& /*scan*/) const {} - }; - - /////////////////////////////////////////////////////////////////////////// - // - // skip_parser_iteration_policy class - // - /////////////////////////////////////////////////////////////////////////// - namespace impl - { - template - void - skipper_skip( - ST const& s, - ScannerT const& scan, - skipper_iteration_policy const&); - - template - void - skipper_skip( - ST const& s, - ScannerT const& scan, - no_skipper_iteration_policy const&); - - template - void - skipper_skip( - ST const& s, - ScannerT const& scan, - iteration_policy const&); - } - - template - class skip_parser_iteration_policy : public skipper_iteration_policy - { - public: - - typedef skipper_iteration_policy base_t; - - skip_parser_iteration_policy( - ParserT const& skip_parser, - base_t const& base = base_t()) - : base_t(base), subject(skip_parser) {} - - template - skip_parser_iteration_policy(PolicyT const& other) - : base_t(other), subject(other.skipper()) {} - - template - void - skip(ScannerT const& scan) const - { - impl::skipper_skip(subject, scan, scan); - } - - ParserT const& - skipper() const - { - return subject; - } - - private: - - ParserT const& subject; - }; - - /////////////////////////////////////////////////////////////////////////////// - // - // Free parse functions using the skippers - // - /////////////////////////////////////////////////////////////////////////////// - template - parse_info - parse( - IteratorT const& first, - IteratorT const& last, - parser const& p, - parser const& skip); - - /////////////////////////////////////////////////////////////////////////////// - // - // Parse function for null terminated strings using the skippers - // - /////////////////////////////////////////////////////////////////////////////// - template - parse_info - parse( - CharT const* str, - parser const& p, - parser const& skip); - - /////////////////////////////////////////////////////////////////////////////// - // - // phrase_scanner_t and wide_phrase_scanner_t - // - // The most common scanners. Use these typedefs when you need - // a scanner that skips white spaces. - // - /////////////////////////////////////////////////////////////////////////////// - typedef skipper_iteration_policy<> iter_policy_t; - typedef scanner_policies scanner_policies_t; - typedef scanner phrase_scanner_t; - typedef scanner wide_phrase_scanner_t; - - /////////////////////////////////////////////////////////////////////////////// - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#include -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/scanner/skipper_fwd.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/core/scanner/skipper_fwd.hpp deleted file mode 100644 index 228e618bace5..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/scanner/skipper_fwd.hpp +++ /dev/null @@ -1,32 +0,0 @@ -/*============================================================================= - Copyright (c) 2006 Tobias Schwinger - http://spirit.sourceforge.net/ - - 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_SKIPPER_FWD_HPP) -#define BOOST_SPIRIT_SKIPPER_FWD_HPP - -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - template - struct skipper_iteration_policy; - - template - struct no_skipper_iteration_policy; - - template - class skip_parser_iteration_policy; - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/core/typeof.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/core/typeof.hpp deleted file mode 100644 index ca824284151e..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/core/typeof.hpp +++ /dev/null @@ -1,343 +0,0 @@ -/*============================================================================= - Copyright (c) 2006 Tobias Schwinger - http://spirit.sourceforge.net/ - - 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_CORE_TYPEOF_HPP) -#define BOOST_SPIRIT_CORE_TYPEOF_HPP - -#include -#include - -#include - -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - // parser.hpp - template struct parse_info; - struct plain_parser_category; - struct binary_parser_category; - struct unary_parser_category; - struct action_parser_category; - - // match.hpp - template class match; - - // primitives/primitives.hpp - template struct negated_char_parser; - template struct chlit; - template struct range; - template class chseq; - template class strlit; - struct nothing_parser; - struct anychar_parser; - struct alnum_parser; - struct alpha_parser; - struct cntrl_parser; - struct digit_parser; - struct xdigit_parser; - struct graph_parser; - struct upper_parser; - struct lower_parser; - struct print_parser; - struct punct_parser; - struct blank_parser; - struct space_parser; - struct eol_parser; - struct end_parser; - - // non_terminal/parser_context.hpp - template struct parser_context; - - // non_terminal/parser_id.hpp - class parser_id; - template struct parser_tag; - class dynamic_parser_tag; - struct parser_address_tag; - - // non_terminal/rule.hpp - template class rule; - - // non_terminal/grammar.hpp - template struct grammar; - - // composite.hpp - template class action; - template struct alternative; - template struct difference; - template struct exclusive_or; - template struct intersection; - template struct sequence; - template struct sequential_or; - template struct kleene_star; - template struct positive; - template struct optional; - // composite/directives.hpp - template struct contiguous; - template struct inhibit_case; - template struct inhibit_case_iteration_policy; - template struct longest_alternative; - template struct shortest_alternative; - template struct min_bounded; - template struct max_bounded; - template struct bounded; - // composite/no_actions.hpp - template struct no_actions_parser; - template struct no_actions_action_policy; - // composite/epsilon.hpp - struct epsilon_parser; - template struct condition_parser; - template struct empty_match_parser; - template struct negated_empty_match_parser; - - // deprecated assign/push_back actor -- they live somewhere else, now - struct assign_action; - struct push_back_action; - template class ref_value_actor; - template - class ref_const_ref_actor; - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - - - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - - -// parser.hpp - -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::parse_info,1) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::plain_parser_category) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::binary_parser_category) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::unary_parser_category) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::action_parser_category) - - -// nil.hpp (included directly) - -#if !defined(BOOST_SPIRIT_NIL_T_TYPEOF_REGISTERED) -// registration guard to decouple the iterators from the core -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::nil_t) -# define BOOST_SPIRIT_NIL_T_TYPEOF_REGISTERED -#endif - -// match.hpp - -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::match, 1) - -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::match) - - -// primitives/primitives.hpp - -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::negated_char_parser, 1) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::chlit, 1) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::range, 1) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::chseq, 1) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::strlit, 1) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::nothing_parser) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::anychar_parser) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::alnum_parser) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::alpha_parser) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::cntrl_parser) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::digit_parser) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::xdigit_parser) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::graph_parser) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::upper_parser) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::lower_parser) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::print_parser) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::punct_parser) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::blank_parser) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::space_parser) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::eol_parser) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::end_parser) - -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::chlit) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::chlit) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::range) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::range) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::chseq) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::chseq) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::strlit) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::strlit) - - -// primitives/numerics.hpp (has forward header) - -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::int_parser, (class)(int)(unsigned)(int)) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::uint_parser, (class)(int)(unsigned)(int)) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::sign_parser) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::real_parser, 2) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::real_parser_policies, 1) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::ureal_parser_policies, 1) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::strict_real_parser_policies, 1) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::strict_ureal_parser_policies, 1) - -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::int_parser, (class)(int)) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::uint_parser, (class)(int)) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::int_parser) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::uint_parser) -#if !defined(BOOST_NO_INT64_T) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::int_parser) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::uint_parser) -#endif -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::real_parser_policies) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::real_parser_policies) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::ureal_parser_policies) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::ureal_parser_policies) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::strict_real_parser_policies) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::strict_real_parser_policies) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::strict_ureal_parser_policies) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::strict_ureal_parser_policies) - - -// scanner/scanner.hpp (has forward header) - -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::scanner,2) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::scanner_policies,3) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::iteration_policy) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::action_policy) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::match_policy) - -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::scanner,1) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::scanner_policies,2) - - -// scanner/skipper.hpp (has forward header) - -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::skipper_iteration_policy,1) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::no_skipper_iteration_policy,1) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::skip_parser_iteration_policy,2) - -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::skipper_iteration_policy<>) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::skip_parser_iteration_policy,1) - - -// non_terminal/parser_context.hpp - -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::parser_context,1) - -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::parser_context) - - -// non_terminal/parser_id.hpp - -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::parser_id) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::parser_tag, (int)) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::dynamic_parser_tag) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::parser_address_tag) - - -// non_terminal/subrule.hpp (has forward header) - -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::subrule,(int)(class)) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::subrule_parser,(int)(class)(class)) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::subrule_list,2) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::subrules_scanner,2) - -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::subrule,(int)) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::subrule_parser,(int)(class)) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::subrule<0>) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::subrule<1>) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::subrule<2>) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::subrule<3>) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::subrule<4>) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::subrule<5>) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::subrule<6>) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::subrule<7>) - - -// non_terminal/rule.hpp - -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::rule,3) -#if BOOST_SPIRIT_RULE_SCANNERTYPE_LIMIT > 1 -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::scanner_list,1) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::scanner_list,BOOST_SPIRIT_RULE_SCANNERTYPE_LIMIT) -#endif - - -// non_terminal/grammar.hpp - -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::grammar,2) - - -// composite.hpp - -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::action, 2) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::alternative, 2) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::difference, 2) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::exclusive_or, 2) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::intersection, 2) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::sequence, 2) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::sequential_or, 2) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::kleene_star, 1) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::positive, 1) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::optional, 1) - - -// composite/directives.hpp - -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::contiguous, 1) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::inhibit_case, 1) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::inhibit_case_iteration_policy,1) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::longest_alternative, 2) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::shortest_alternative, 2) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::min_bounded, 2) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::max_bounded, 2) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::bounded, 2) - - -// composite/no_actions.hpp - -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::no_actions_parser, 1) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::no_actions_action_policy, 1) - -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::no_actions_action_policy) - - -// composite/epsilon.hpp - -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::epsilon_parser) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::condition_parser, (class)(bool)) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::empty_match_parser, 1) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::negated_empty_match_parser, 1) - - -#if !defined(BOOST_SPIRIT_ACTOR_TYPEOF_HPP) -// deprecated assign/push_back actor -- they live somewhere else, now -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::ref_value_actor,2) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::ref_const_ref_actor,3) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::assign_action) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::push_back_action) -#endif - - -#if BOOST_WORKAROUND(BOOST_MSVC,BOOST_TESTED_AT(1400)) && BOOST_MSVC >= 1400 -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - nil_t & operator* (nil_t); - nil_t & operator+ (nil_t); - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -} } // namespace ::BOOST_SPIRIT_CLASSIC_NS -#endif - - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/debug.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/debug.hpp deleted file mode 100644 index 9737b35beee7..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/debug.hpp +++ /dev/null @@ -1,154 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2003 Joel de Guzman - Copyright (c) 2002-2003 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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_DEBUG_MAIN_HPP) -#define BOOST_SPIRIT_DEBUG_MAIN_HPP - -/////////////////////////////////////////////////////////////////////////// -#if defined(BOOST_SPIRIT_DEBUG) - -#include - -/////////////////////////////////////////////////////////////////////////////// -// -// Spirit.Debug includes and defines -// -/////////////////////////////////////////////////////////////////////////////// - - #include - - /////////////////////////////////////////////////////////////////////////// - // - // The BOOST_SPIRIT_DEBUG_OUT defines the stream object, which should be used - // for debug diagnostics. This defaults to std::cout. - // - /////////////////////////////////////////////////////////////////////////// - #if !defined(BOOST_SPIRIT_DEBUG_OUT) - #define BOOST_SPIRIT_DEBUG_OUT std::cout - #endif - - /////////////////////////////////////////////////////////////////////////// - // - // The BOOST_SPIRIT_DEBUG_PRINT_SOME constant defines the number of characters - // from the stream to be printed for diagnosis. This defaults to the first - // 20 characters. - // - /////////////////////////////////////////////////////////////////////////// - #if !defined(BOOST_SPIRIT_DEBUG_PRINT_SOME) - #define BOOST_SPIRIT_DEBUG_PRINT_SOME 20 - #endif - - /////////////////////////////////////////////////////////////////////////// - // - // Additional BOOST_SPIRIT_DEBUG_FLAGS control the level of diagnostics printed - // Basic constants are defined in debug/minimal.hpp. - // - /////////////////////////////////////////////////////////////////////////// - #define BOOST_SPIRIT_DEBUG_FLAGS_NODES 0x0001 // node diagnostics - #define BOOST_SPIRIT_DEBUG_FLAGS_ESCAPE_CHAR 0x0002 // escape_char_parse diagnostics - #define BOOST_SPIRIT_DEBUG_FLAGS_TREES 0x0004 // parse tree/ast diagnostics - #define BOOST_SPIRIT_DEBUG_FLAGS_CLOSURES 0x0008 // closure diagnostics - #define BOOST_SPIRIT_DEBUG_FLAGS_SLEX 0x8000 // slex diagnostics - - #define BOOST_SPIRIT_DEBUG_FLAGS_MAX 0xFFFF // print maximal diagnostics - - #if !defined(BOOST_SPIRIT_DEBUG_FLAGS) - #define BOOST_SPIRIT_DEBUG_FLAGS BOOST_SPIRIT_DEBUG_FLAGS_MAX - #endif - - /////////////////////////////////////////////////////////////////////////// - // - // By default all nodes are traced (even those, not registered with - // BOOST_SPIRIT_DEBUG_RULE et.al. - see below). The following constant may be - // used to redefine this default. - // - /////////////////////////////////////////////////////////////////////////// - #if !defined(BOOST_SPIRIT_DEBUG_TRACENODE) - #define BOOST_SPIRIT_DEBUG_TRACENODE (true) - #endif // !defined(BOOST_SPIRIT_DEBUG_TRACENODE) - - /////////////////////////////////////////////////////////////////////////// - // - // Helper macros for giving rules and subrules a name accessible through - // parser_name() functions (see parser_names.hpp). - // - // Additionally, the macros BOOST_SPIRIT_DEBUG_RULE, SPIRIT_DEBUG_NODE and - // BOOST_SPIRIT_DEBUG_GRAMMAR enable/disable the tracing of the - // correspondingnode accordingly to the PP constant - // BOOST_SPIRIT_DEBUG_TRACENODE. - // - // The macros BOOST_SPIRIT_DEBUG_TRACE_RULE, BOOST_SPIRIT_DEBUG_TRACE_NODE - // and BOOST_SPIRIT_DEBUG_TRACE_GRAMMAR allow to specify a flag to define, - // whether the corresponding node is to be traced or not. - // - /////////////////////////////////////////////////////////////////////////// - #if !defined(BOOST_SPIRIT_DEBUG_RULE) - #define BOOST_SPIRIT_DEBUG_RULE(r) \ - ::BOOST_SPIRIT_CLASSIC_NS::impl::get_node_registry(). \ - register_node(&r, #r, BOOST_SPIRIT_DEBUG_TRACENODE) - #endif // !defined(BOOST_SPIRIT_DEBUG_RULE) - - #if !defined(BOOST_SPIRIT_DEBUG_NODE) - #define BOOST_SPIRIT_DEBUG_NODE(r) \ - ::BOOST_SPIRIT_CLASSIC_NS::impl::get_node_registry(). \ - register_node(&r, #r, BOOST_SPIRIT_DEBUG_TRACENODE) - #endif // !defined(BOOST_SPIRIT_DEBUG_NODE) - - #if !defined(BOOST_SPIRIT_DEBUG_GRAMMAR) - #define BOOST_SPIRIT_DEBUG_GRAMMAR(r) \ - ::BOOST_SPIRIT_CLASSIC_NS::impl::get_node_registry(). \ - register_node(&r, #r, BOOST_SPIRIT_DEBUG_TRACENODE) - #endif // !defined(BOOST_SPIRIT_DEBUG_GRAMMAR) - - #if !defined(BOOST_SPIRIT_DEBUG_TRACE_RULE) - #define BOOST_SPIRIT_DEBUG_TRACE_RULE(r, t) \ - ::BOOST_SPIRIT_CLASSIC_NS::impl::get_node_registry(). \ - register_node(&r, #r, (t)) - #endif // !defined(BOOST_SPIRIT_TRACE_RULE) - - #if !defined(BOOST_SPIRIT_DEBUG_TRACE_NODE) - #define BOOST_SPIRIT_DEBUG_TRACE_NODE(r, t) \ - ::BOOST_SPIRIT_CLASSIC_NS::impl::get_node_registry(). \ - register_node(&r, #r, (t)) - #endif // !defined(BOOST_SPIRIT_DEBUG_TRACE_NODE) - - #if !defined(BOOST_SPIRIT_DEBUG_TRACE_GRAMMAR) - #define BOOST_SPIRIT_DEBUG_TRACE_GRAMMAR(r, t) \ - ::BOOST_SPIRIT_CLASSIC_NS::impl::get_node_registry(). \ - register_node(&r, #r, (t)) - #endif // !defined(BOOST_SPIRIT_DEBUG_TRACE_GRAMMAR) - - #if !defined(BOOST_SPIRIT_DEBUG_TRACE_RULE_NAME) - #define BOOST_SPIRIT_DEBUG_TRACE_RULE_NAME(r, n, t) \ - ::BOOST_SPIRIT_CLASSIC_NS::impl::get_node_registry(). \ - register_node(&r, (n), (t)) - #endif // !defined(BOOST_SPIRIT_DEBUG_TRACE_RULE_NAME) - - #if !defined(BOOST_SPIRIT_DEBUG_TRACE_NODE_NAME) - #define BOOST_SPIRIT_DEBUG_TRACE_NODE_NAME(r, n, t) \ - ::BOOST_SPIRIT_CLASSIC_NS::impl::get_node_registry(). \ - register_node(&r, (n), (t)) - #endif // !defined(BOOST_SPIRIT_DEBUG_TRACE_NODE_NAME) - - #if !defined(BOOST_SPIRIT_DEBUG_TRACE_GRAMMAR_NAME) - #define BOOST_SPIRIT_DEBUG_TRACE_GRAMMAR_NAME(r, n, t) \ - ::BOOST_SPIRIT_CLASSIC_NS::impl::get_node_registry(). \ - register_node(&r, (n), (t)) - #endif // !defined(BOOST_SPIRIT_DEBUG_TRACE_GRAMMAR_NAME) - - ////////////////////////////////// - #include - -#else - ////////////////////////////////// - #include - -#endif // BOOST_SPIRIT_DEBUG - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/debug/debug_node.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/debug/debug_node.hpp deleted file mode 100644 index adc1f91f2220..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/debug/debug_node.hpp +++ /dev/null @@ -1,319 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2003 Joel de Guzman - Copyright (c) 2002-2003 Hartmut Kaiser - Copyright (c) 2003 Gustavo Guerra - http://spirit.sourceforge.net/ - - 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_DEBUG_NODE_HPP) -#define BOOST_SPIRIT_DEBUG_NODE_HPP - -#if !defined(BOOST_SPIRIT_DEBUG_MAIN_HPP) -#error "You must include boost/spirit/debug.hpp, not boost/spirit/debug/debug_node.hpp" -#endif - -#if defined(BOOST_SPIRIT_DEBUG) - -#include - -#include -#include -#include -#include -#include // for iscntrl_ - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -/////////////////////////////////////////////////////////////////////////////// -// -// Debug helper classes for rules, which ensure maximum non-intrusiveness of -// the Spirit debug support -// -/////////////////////////////////////////////////////////////////////////////// - -namespace impl { - - struct token_printer_aux_for_chars - { - template - static void print(std::ostream& o, CharT c) - { - if (c == static_cast('\a')) - o << "\\a"; - - else if (c == static_cast('\b')) - o << "\\b"; - - else if (c == static_cast('\f')) - o << "\\f"; - - else if (c == static_cast('\n')) - o << "\\n"; - - else if (c == static_cast('\r')) - o << "\\r"; - - else if (c == static_cast('\t')) - o << "\\t"; - - else if (c == static_cast('\v')) - o << "\\v"; - - else if (iscntrl_(c)) - o << "\\" << static_cast(c); - - else - o << static_cast(c); - } - }; - - // for token types where the comparison with char constants wouldn't work - struct token_printer_aux_for_other_types - { - template - static void print(std::ostream& o, CharT c) - { - o << c; - } - }; - - template - struct token_printer_aux - : mpl::if_< - mpl::and_< - is_convertible, - is_convertible >, - token_printer_aux_for_chars, - token_printer_aux_for_other_types - >::type - { - }; - - template - inline void token_printer(std::ostream& o, CharT c) - { - #if !defined(BOOST_SPIRIT_DEBUG_TOKEN_PRINTER) - - token_printer_aux::print(o, c); - - #else - - BOOST_SPIRIT_DEBUG_TOKEN_PRINTER(o, c); - - #endif - } - -/////////////////////////////////////////////////////////////////////////////// -// -// Dump infos about the parsing state of a rule -// -/////////////////////////////////////////////////////////////////////////////// - -#if BOOST_SPIRIT_DEBUG_FLAGS & BOOST_SPIRIT_DEBUG_FLAGS_NODES - template - inline void - print_node_info(bool hit, int level, bool close, std::string const& name, - IteratorT first, IteratorT last) - { - if (!name.empty()) - { - for (int i = 0; i < level; ++i) - BOOST_SPIRIT_DEBUG_OUT << " "; - if (close) - { - if (hit) - BOOST_SPIRIT_DEBUG_OUT << "/"; - else - BOOST_SPIRIT_DEBUG_OUT << "#"; - } - BOOST_SPIRIT_DEBUG_OUT << name << ":\t\""; - IteratorT iter = first; - IteratorT ilast = last; - for (int j = 0; j < BOOST_SPIRIT_DEBUG_PRINT_SOME; ++j) - { - if (iter == ilast) - break; - - token_printer(BOOST_SPIRIT_DEBUG_OUT, *iter); - ++iter; - } - BOOST_SPIRIT_DEBUG_OUT << "\"\n"; - } - } -#endif // BOOST_SPIRIT_DEBUG_FLAGS & BOOST_SPIRIT_DEBUG_FLAGS_NODES - -#if BOOST_SPIRIT_DEBUG_FLAGS & BOOST_SPIRIT_DEBUG_FLAGS_CLOSURES - template - inline ResultT & - print_closure_info(ResultT &hit, int level, std::string const& name) - { - if (!name.empty()) - { - for (int i = 0; i < level-1; ++i) - BOOST_SPIRIT_DEBUG_OUT << " "; - - // for now, print out the return value only - BOOST_SPIRIT_DEBUG_OUT << "^" << name << ":\t"; - if (hit.has_valid_attribute()) - BOOST_SPIRIT_DEBUG_OUT << hit.value(); - else - BOOST_SPIRIT_DEBUG_OUT << "undefined attribute"; - BOOST_SPIRIT_DEBUG_OUT << "\n"; - } - return hit; - } -#endif // BOOST_SPIRIT_DEBUG_FLAGS & BOOST_SPIRIT_DEBUG_FLAGS_CLOSURES - -} - -/////////////////////////////////////////////////////////////////////////////// -// -// Implementation note: The parser_context_linker, parser_scanner_linker and -// closure_context_linker classes are wrapped by a PP constant to allow -// redefinition of this classes outside of Spirit -// -/////////////////////////////////////////////////////////////////////////////// -#if !defined(BOOST_SPIRIT_PARSER_CONTEXT_LINKER_DEFINED) -#define BOOST_SPIRIT_PARSER_CONTEXT_LINKER_DEFINED - - /////////////////////////////////////////////////////////////////////////// - // - // parser_context_linker is a debug wrapper for the ContextT template - // parameter of the rule<>, subrule<> and the grammar<> classes - // - /////////////////////////////////////////////////////////////////////////// - template - struct parser_context_linker : public ContextT - { - typedef ContextT base_t; - - template - parser_context_linker(ParserT const& p) - : ContextT(p) {} - - template - void pre_parse(ParserT const& p, ScannerT &scan) - { - this->base_t::pre_parse(p, scan); - -#if BOOST_SPIRIT_DEBUG_FLAGS & BOOST_SPIRIT_DEBUG_FLAGS_NODES - if (trace_parser(p.derived())) { - impl::print_node_info( - false, - scan.get_level(), - false, - parser_name(p.derived()), - scan.first, - scan.last); - } - scan.get_level()++; -#endif // BOOST_SPIRIT_DEBUG_FLAGS & BOOST_SPIRIT_DEBUG_FLAGS_NODES - } - - template - ResultT& post_parse(ResultT& hit, ParserT const& p, ScannerT &scan) - { -#if BOOST_SPIRIT_DEBUG_FLAGS & BOOST_SPIRIT_DEBUG_FLAGS_NODES - --scan.get_level(); - if (trace_parser(p.derived())) { - impl::print_node_info( - hit, - scan.get_level(), - true, - parser_name(p.derived()), - scan.first, - scan.last); - } -#endif // BOOST_SPIRIT_DEBUG_FLAGS & BOOST_SPIRIT_DEBUG_FLAGS_NODES - - return this->base_t::post_parse(hit, p, scan); - } - }; - -#endif // !defined(BOOST_SPIRIT_PARSER_CONTEXT_LINKER_DEFINED) - -#if !defined(BOOST_SPIRIT_PARSER_SCANNER_LINKER_DEFINED) -#define BOOST_SPIRIT_PARSER_SCANNER_LINKER_DEFINED - -/////////////////////////////////////////////////////////////////////////////// -// This class is to avoid linker problems and to ensure a real singleton -// 'level' variable - struct debug_support - { - int& get_level() - { - static int level = 0; - return level; - } - }; - - template - struct parser_scanner_linker : public ScannerT - { - parser_scanner_linker(ScannerT const &scan_) : ScannerT(scan_) - {} - - int &get_level() - { return debug.get_level(); } - - private: debug_support debug; - }; - -#endif // !defined(BOOST_SPIRIT_PARSER_SCANNER_LINKER_DEFINED) - -#if !defined(BOOST_SPIRIT_CLOSURE_CONTEXT_LINKER_DEFINED) -#define BOOST_SPIRIT_CLOSURE_CONTEXT_LINKER_DEFINED - - /////////////////////////////////////////////////////////////////////////// - // - // closure_context_linker is a debug wrapper for the closure template - // parameter of the rule<>, subrule<> and grammar classes - // - /////////////////////////////////////////////////////////////////////////// - - template - struct closure_context_linker : public parser_context_linker - { - typedef parser_context_linker base_t; - - template - closure_context_linker(ParserT const& p) - : parser_context_linker(p) {} - - template - void pre_parse(ParserT const& p, ScannerT &scan) - { this->base_t::pre_parse(p, scan); } - - template - ResultT& - post_parse(ResultT& hit, ParserT const& p, ScannerT &scan) - { -#if BOOST_SPIRIT_DEBUG_FLAGS & BOOST_SPIRIT_DEBUG_FLAGS_CLOSURES - if (hit && trace_parser(p.derived())) { - // for now, print out the return value only - return impl::print_closure_info( - this->base_t::post_parse(hit, p, scan), - scan.get_level(), - parser_name(p.derived()) - ); - } -#endif // BOOST_SPIRIT_DEBUG_FLAGS & BOOST_SPIRIT_DEBUG_FLAGS_CLOSURES - - return this->base_t::post_parse(hit, p, scan); - } - }; - -#endif // !defined(BOOST_SPIRIT_CLOSURE_CONTEXT_LINKER_DEFINED) - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif // defined(BOOST_SPIRIT_DEBUG) - -#endif // !defined(BOOST_SPIRIT_DEBUG_NODE_HPP) - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/debug/impl/parser_names.ipp b/framework/contrib/boost/include/boost/spirit/home/classic/debug/impl/parser_names.ipp deleted file mode 100644 index 85cecae5b162..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/debug/impl/parser_names.ipp +++ /dev/null @@ -1,555 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2003 Joel de Guzman - Copyright (c) 2002-2003 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#if !defined(BOOST_SPIRIT_PARSER_NAMES_IPP) -#define BOOST_SPIRIT_PARSER_NAMES_IPP - -#if defined(BOOST_SPIRIT_DEBUG) - -#include -#include -#include - -#include -#ifdef BOOST_NO_STRINGSTREAM -#include -#define BOOST_SPIRIT_SSTREAM std::strstream -std::string BOOST_SPIRIT_GETSTRING(std::strstream& ss) -{ - ss << ends; - std::string rval = ss.str(); - ss.freeze(false); - return rval; -} -#else -#include -#define BOOST_SPIRIT_GETSTRING(ss) ss.str() -#define BOOST_SPIRIT_SSTREAM std::stringstream -#endif - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -/////////////////////////////////////////////////////////////////////////////// -// from actions.hpp - template - inline std::string - parser_name(action const& p) - { - return std::string("action") - + std::string("[") - + parser_name(p.subject()) - + std::string("]"); - } - -/////////////////////////////////////////////////////////////////////////////// -// from directives.hpp - template - inline std::string - parser_name(contiguous const& p) - { - return std::string("contiguous") - + std::string("[") - + parser_name(p.subject()) - + std::string("]"); - } - - template - inline std::string - parser_name(inhibit_case const& p) - { - return std::string("inhibit_case") - + std::string("[") - + parser_name(p.subject()) - + std::string("]"); - } - - template - inline std::string - parser_name(longest_alternative const& p) - { - return std::string("longest_alternative") - + std::string("[") - + parser_name(p.left()) + std::string(", ") + parser_name(p.right()) - + std::string("]"); - } - - template - inline std::string - parser_name(shortest_alternative const& p) - { - return std::string("shortest_alternative") - + std::string("[") - + parser_name(p.left()) + std::string(", ") + parser_name(p.right()) - + std::string("]"); - } - -/////////////////////////////////////////////////////////////////////////////// -// from numerics.hpp - template - inline std::string - parser_name(uint_parser const& /*p*/) - { - BOOST_SPIRIT_SSTREAM stream; - stream << Radix << ", " << MinDigits << ", " << MaxDigits; - return std::string("uint_parser<") - + BOOST_SPIRIT_GETSTRING(stream) - + std::string(">"); - } - - template - inline std::string - parser_name(int_parser const& /*p*/) - { - BOOST_SPIRIT_SSTREAM stream; - stream << Radix << ", " << MinDigits << ", " << MaxDigits; - return std::string("int_parser<") - + BOOST_SPIRIT_GETSTRING(stream) - + std::string(">"); - } - - template - inline std::string - parser_name(real_parser const& /*p*/) - { - return std::string("real_parser"); - } - -/////////////////////////////////////////////////////////////////////////////// -// from operators.hpp - template - inline std::string - parser_name(sequence const& p) - { - return std::string("sequence") - + std::string("[") - + parser_name(p.left()) + std::string(", ") + parser_name(p.right()) - + std::string("]"); - } - - template - inline std::string - parser_name(sequential_or const& p) - { - return std::string("sequential_or") - + std::string("[") - + parser_name(p.left()) + std::string(", ") + parser_name(p.right()) - + std::string("]"); - } - - template - inline std::string - parser_name(alternative const& p) - { - return std::string("alternative") - + std::string("[") - + parser_name(p.left()) + std::string(", ") + parser_name(p.right()) - + std::string("]"); - } - - template - inline std::string - parser_name(intersection const& p) - { - return std::string("intersection") - + std::string("[") - + parser_name(p.left()) + std::string(", ") + parser_name(p.right()) - + std::string("]"); - } - - template - inline std::string - parser_name(difference const& p) - { - return std::string("difference") - + std::string("[") - + parser_name(p.left()) + std::string(", ") + parser_name(p.right()) - + std::string("]"); - } - - template - inline std::string - parser_name(exclusive_or const& p) - { - return std::string("exclusive_or") - + std::string("[") - + parser_name(p.left()) + std::string(", ") + parser_name(p.right()) - + std::string("]"); - } - - template - inline std::string - parser_name(optional const& p) - { - return std::string("optional") - + std::string("[") - + parser_name(p.subject()) - + std::string("]"); - } - - template - inline std::string - parser_name(kleene_star const& p) - { - return std::string("kleene_star") - + std::string("[") - + parser_name(p.subject()) - + std::string("]"); - } - - template - inline std::string - parser_name(positive const& p) - { - return std::string("positive") - + std::string("[") - + parser_name(p.subject()) - + std::string("]"); - } - -/////////////////////////////////////////////////////////////////////////////// -// from parser.hpp - template - inline std::string - parser_name(parser const& /*p*/) - { - return std::string("parser"); - } - -/////////////////////////////////////////////////////////////////////////////// -// from primitives.hpp - template - inline std::string - parser_name(char_parser const &/*p*/) - { - return std::string("char_parser"); - } - - template - inline std::string - parser_name(chlit const &p) - { - return std::string("chlit(\'") - + std::string(1, p.ch) - + std::string("\')"); - } - - template - inline std::string - parser_name(range const &p) - { - return std::string("range(") - + std::string(1, p.first) + std::string(", ") + std::string(1, p.last) - + std::string(")"); - } - - template - inline std::string - parser_name(chseq const &p) - { - return std::string("chseq(\"") - + std::string(p.first, p.last) - + std::string("\")"); - } - - template - inline std::string - parser_name(strlit const &p) - { - return std::string("strlit(\"") - + std::string(p.seq.first, p.seq.last) - + std::string("\")"); - } - - inline std::string - parser_name(nothing_parser const&) - { - return std::string("nothing"); - } - - inline std::string - parser_name(epsilon_parser const&) - { - return std::string("epsilon"); - } - - inline std::string - parser_name(anychar_parser const&) - { - return std::string("anychar"); - } - - inline std::string - parser_name(alnum_parser const&) - { - return std::string("alnum"); - } - - inline std::string - parser_name(alpha_parser const&) - { - return std::string("alpha"); - } - - inline std::string - parser_name(cntrl_parser const&) - { - return std::string("cntrl"); - } - - inline std::string - parser_name(digit_parser const&) - { - return std::string("digit"); - } - - inline std::string - parser_name(graph_parser const&) - { - return std::string("graph"); - } - - inline std::string - parser_name(lower_parser const&) - { - return std::string("lower"); - } - - inline std::string - parser_name(print_parser const&) - { - return std::string("print"); - } - - inline std::string - parser_name(punct_parser const&) - { - return std::string("punct"); - } - - inline std::string - parser_name(blank_parser const&) - { - return std::string("blank"); - } - - inline std::string - parser_name(space_parser const&) - { - return std::string("space"); - } - - inline std::string - parser_name(upper_parser const&) - { - return std::string("upper"); - } - - inline std::string - parser_name(xdigit_parser const&) - { - return std::string("xdigit"); - } - - inline std::string - parser_name(eol_parser const&) - { - return std::string("eol"); - } - - inline std::string - parser_name(end_parser const&) - { - return std::string("end"); - } - -/////////////////////////////////////////////////////////////////////////////// -// from rule.hpp - namespace impl { - struct node_registry - { - typedef std::pair rule_info; - typedef std::map rule_infos; - - std::string find_node(void const *r) - { - rule_infos::const_iterator cit = infos.find(r); - if (cit != infos.end()) - return (*cit).second.first; - return std::string(""); - } - - bool trace_node(void const *r) - { - rule_infos::const_iterator cit = infos.find(r); - if (cit != infos.end()) - return (*cit).second.second; - return BOOST_SPIRIT_DEBUG_TRACENODE; - } - - bool register_node(void const *r, char const *name_to_register, - bool trace_node) - { - if (infos.find(r) != infos.end()) - return false; - - return infos.insert(rule_infos::value_type(r, - rule_info(std::string(name_to_register), trace_node)) - ).second; - } - - bool unregister_node(void const *r) - { - if (infos.find(r) == infos.end()) - return false; - return (1 == infos.erase(r)); - } - - private: - rule_infos infos; - }; - - inline node_registry & - get_node_registry() - { - static node_registry node_infos; - return node_infos; - } - } // namespace impl - - template< - typename DerivedT, typename EmbedT, - typename T0, typename T1, typename T2 - > - inline std::string - parser_name(impl::rule_base const& p) - { - return std::string("rule_base") - + std::string("(") - + impl::get_node_registry().find_node(&p) - + std::string(")"); - } - - template - inline std::string - parser_name(rule const& p) - { - return std::string("rule") - + std::string("(") - + impl::get_node_registry().find_node(&p) - + std::string(")"); - } - -/////////////////////////////////////////////////////////////////////////////// -// from subrule.hpp - template - inline std::string - parser_name(subrule_list const &p) - { - return std::string("subrule_list") - + std::string("(") - + impl::get_node_registry().find_node(&p) - + std::string(")"); - } - - template - inline std::string - parser_name(subrule_parser const &p) - { - return std::string("subrule_parser") - + std::string("(") - + impl::get_node_registry().find_node(&p) - + std::string(")"); - } - - template - inline std::string - parser_name(subrule const &p) - { - BOOST_SPIRIT_SSTREAM stream; - stream << ID; - return std::string("subrule<") - + BOOST_SPIRIT_GETSTRING(stream) - + std::string(">(") - + impl::get_node_registry().find_node(&p) - + std::string(")"); - } - -/////////////////////////////////////////////////////////////////////////////// -// from grammar.hpp - template - inline std::string - parser_name(grammar const& p) - { - return std::string("grammar") - + std::string("(") - + impl::get_node_registry().find_node(&p) - + std::string(")"); - } - -/////////////////////////////////////////////////////////////////////////////// -// decide, if a node is to be traced or not - template< - typename DerivedT, typename EmbedT, - typename T0, typename T1, typename T2 - > - inline bool - trace_parser(impl::rule_base - const& p) - { - return impl::get_node_registry().trace_node(&p); - } - - template - inline bool - trace_parser(rule const& p) - { - return impl::get_node_registry().trace_node(&p); - } - - template - inline bool - trace_parser(grammar const& p) - { - return impl::get_node_registry().trace_node(&p); - } - - template - inline bool - trace_parser(impl::entry_grammar const& p) - { - return impl::get_node_registry().trace_node(&p); - } - - template - bool - trace_parser(subrule const& p) - { - return impl::get_node_registry().trace_node(&p); - } - - template - bool - trace_parser(init_closure_parser const& p) - { - return impl::get_node_registry().trace_node(&p); - } - -/////////////////////////////////////////////////////////////////////////////// -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace boost::spirit - -#undef BOOST_SPIRIT_SSTREAM -#undef BOOST_SPIRIT_GETSTRING - -#endif // defined(BOOST_SPIRIT_DEBUG) - -#endif // !defined(BOOST_SPIRIT_PARSER_NAMES_IPP) diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/debug/minimal.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/debug/minimal.hpp deleted file mode 100644 index 0cb42644aaf0..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/debug/minimal.hpp +++ /dev/null @@ -1,81 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2003 Joel de Guzman - Copyright (c) 2002-2003 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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_MINIMAL_DEBUG_HPP) -#define BOOST_SPIRIT_MINIMAL_DEBUG_HPP - -#if !defined(BOOST_SPIRIT_DEBUG_MAIN_HPP) -#error "You must include boost/spirit/debug.hpp, not boost/spirit/debug/minimal.hpp" -#endif -/////////////////////////////////////////////////////////////////////////////// -// -// Minimum debugging tools support -// -/////////////////////////////////////////////////////////////////////////////// -#if !defined(BOOST_SPIRIT_DEBUG_OUT) -#define BOOST_SPIRIT_DEBUG_OUT std::cout -#endif - -/////////////////////////////////////////////////////////////////////////// -// -// BOOST_SPIRIT_DEBUG_FLAGS controls the level of diagnostics printed -// -/////////////////////////////////////////////////////////////////////////// -#if !defined(BOOST_SPIRIT_DEBUG_FLAGS_NONE) -#define BOOST_SPIRIT_DEBUG_FLAGS_NONE 0x0000 // no diagnostics at all -#endif - -#if !defined(BOOST_SPIRIT_DEBUG_FLAGS_MAX) -#define BOOST_SPIRIT_DEBUG_FLAGS_MAX 0xFFFF // print maximal diagnostics -#endif - -#if !defined(BOOST_SPIRIT_DEBUG_FLAGS) -#define BOOST_SPIRIT_DEBUG_FLAGS BOOST_SPIRIT_DEBUG_FLAGS_MAX -#endif - -#if !defined(BOOST_SPIRIT_DEBUG_PRINT_SOME) -#define BOOST_SPIRIT_DEBUG_PRINT_SOME 20 -#endif - -#if !defined(BOOST_SPIRIT_DEBUG_RULE) -#define BOOST_SPIRIT_DEBUG_RULE(r) -#endif // !defined(BOOST_SPIRIT_DEBUG_RULE) - -#if !defined(BOOST_SPIRIT_DEBUG_NODE) -#define BOOST_SPIRIT_DEBUG_NODE(r) -#endif // !defined(BOOST_SPIRIT_DEBUG_NODE) - -#if !defined(BOOST_SPIRIT_DEBUG_GRAMMAR) -#define BOOST_SPIRIT_DEBUG_GRAMMAR(r) -#endif // !defined(BOOST_SPIRIT_DEBUG_GRAMMAR) - -#if !defined(BOOST_SPIRIT_DEBUG_TRACE_RULE) -#define BOOST_SPIRIT_DEBUG_TRACE_RULE(r, t) -#endif // !defined(BOOST_SPIRIT_DEBUG_TRACE_RULE) - -#if !defined(BOOST_SPIRIT_DEBUG_TRACE_NODE) -#define BOOST_SPIRIT_DEBUG_TRACE_NODE(r, t) -#endif // !defined(BOOST_SPIRIT_DEBUG_TRACE_NODE) - -#if !defined(BOOST_SPIRIT_DEBUG_TRACE_GRAMMAR) -#define BOOST_SPIRIT_DEBUG_TRACE_GRAMMAR(r, t) -#endif // !defined(BOOST_SPIRIT_DEBUG_TRACE_GRAMMAR) - -#if !defined(BOOST_SPIRIT_DEBUG_TRACE_RULE_NAME) -#define BOOST_SPIRIT_DEBUG_TRACE_RULE_NAME(r, n, t) -#endif // !defined(BOOST_SPIRIT_DEBUG_TRACE_RULE_NAME) - -#if !defined(BOOST_SPIRIT_DEBUG_TRACE_NODE_NAME) -#define BOOST_SPIRIT_DEBUG_TRACE_NODE_NAME(r, n, t) -#endif // !defined(BOOST_SPIRIT_DEBUG_TRACE_NODE_NAME) - -#if !defined(BOOST_SPIRIT_DEBUG_TRACE_GRAMMAR_NAME) -#define BOOST_SPIRIT_DEBUG_TRACE_GRAMMAR_NAME(r, n, t) -#endif // !defined(BOOST_SPIRIT_DEBUG_TRACE_GRAMMAR_NAME) - -#endif // !defined(BOOST_SPIRIT_MINIMAL_DEBUG_HPP) diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/debug/parser_names.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/debug/parser_names.hpp deleted file mode 100644 index edd17cc004ce..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/debug/parser_names.hpp +++ /dev/null @@ -1,254 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2003 Joel de Guzman - Copyright (c) 2002-2003 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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_PARSER_NAMES_HPP) -#define BOOST_SPIRIT_PARSER_NAMES_HPP - -#if defined(BOOST_SPIRIT_DEBUG) - -////////////////////////////////// -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -/////////////////////////////////////////////////////////////////////////////// -// -// Declaration of helper functions, which return the name of a concrete -// parser instance. The functions are specialized on the parser types. The -// functions declared in this file are for the predefined parser types from -// the Spirit core library only, so additional functions might be provided as -// needed. -// -/////////////////////////////////////////////////////////////////////////////// - -/////////////////////////////////////////////////////////////////////////////// -// from actions.hpp - template - std::string - parser_name(action const& p); - -/////////////////////////////////////////////////////////////////////////////// -// from directives.hpp - template - std::string - parser_name(contiguous const& p); - - template - std::string - parser_name(inhibit_case const& p); - - template - std::string - parser_name(longest_alternative const& p); - - template - std::string - parser_name(shortest_alternative const& p); - -/////////////////////////////////////////////////////////////////////////////// -// from grammar.hpp - template - std::string - parser_name(grammar const& p); - -/////////////////////////////////////////////////////////////////////////////// -// from numerics.hpp - template - std::string - parser_name(uint_parser const& p); - - template - std::string - parser_name(int_parser const& p); - - template - std::string - parser_name(real_parser const& p); - -/////////////////////////////////////////////////////////////////////////////// -// from operators.hpp - template - std::string - parser_name(sequence const& p); - - template - std::string - parser_name(sequential_or const& p); - - template - std::string - parser_name(alternative const& p); - - template - std::string - parser_name(intersection const& p); - - template - std::string - parser_name(difference const& p); - - template - std::string - parser_name(exclusive_or const& p); - - template - std::string - parser_name(optional const& p); - - template - std::string - parser_name(kleene_star const& p); - - template - std::string - parser_name(positive const& p); - -/////////////////////////////////////////////////////////////////////////////// -// from parser.hpp - template - std::string - parser_name(parser const& p); - -/////////////////////////////////////////////////////////////////////////////// -// from primitives.hpp - template - std::string - parser_name(char_parser const &p); - - template - std::string - parser_name(chlit const &p); - - template - std::string - parser_name(range const &p); - - template - std::string - parser_name(chseq const &p); - - template - std::string - parser_name(strlit const &p); - - std::string - parser_name(nothing_parser const &p); - - std::string - parser_name(epsilon_parser const &p); - - std::string - parser_name(anychar_parser const &p); - - std::string - parser_name(alnum_parser const &p); - - std::string - parser_name(alpha_parser const &p); - - std::string - parser_name(cntrl_parser const &p); - - std::string - parser_name(digit_parser const &p); - - std::string - parser_name(graph_parser const &p); - - std::string - parser_name(lower_parser const &p); - - std::string - parser_name(print_parser const &p); - - std::string - parser_name(punct_parser const &p); - - std::string - parser_name(blank_parser const &p); - - std::string - parser_name(space_parser const &p); - - std::string - parser_name(upper_parser const &p); - - std::string - parser_name(xdigit_parser const &p); - - std::string - parser_name(eol_parser const &p); - - std::string - parser_name(end_parser const &p); - -/////////////////////////////////////////////////////////////////////////////// -// from rule.hpp - template - std::string - parser_name(rule const& p); - -/////////////////////////////////////////////////////////////////////////////// -// from subrule.hpp - template - std::string - parser_name(subrule_list const &p); - - template - std::string - parser_name(subrule_parser const &p); - - template - std::string - parser_name(subrule const &p); - -/////////////////////////////////////////////////////////////////////////////// -// from chset.hpp - -/////////////////////////////////////////////////////////////////////////////// -// -// Decide, if a node is to be traced or not -// -/////////////////////////////////////////////////////////////////////////////// - template< - typename DerivedT, typename EmbedT, - typename T0, typename T1, typename T2 - > - bool - trace_parser(impl::rule_base - const& p); - - template - bool - trace_parser(grammar const& p); - - template - bool - trace_parser(subrule const& p); - - template - struct init_closure_parser; - - template - bool - trace_parser(init_closure_parser const& p); - -/////////////////////////////////////////////////////////////////////////////// -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -////////////////////////////////// -#include - -#endif // defined(BOOST_SPIRIT_DEBUG) - -#endif // !defined(BOOST_SPIRIT_PARSER_NAMES_HPP) diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/debug/typeof.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/debug/typeof.hpp deleted file mode 100644 index c764d318b0b3..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/debug/typeof.hpp +++ /dev/null @@ -1,37 +0,0 @@ -/*============================================================================= - Copyright (c) 2006 Tobias Schwinger - http://spirit.sourceforge.net/ - - 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_DEBUG_TYPEOF_HPP) -#define BOOST_SPIRIT_DEBUG_TYPEOF_HPP - -#include - -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - // debug_node.hpp - template struct parser_context_linker; - template struct scanner_context_linker; - template struct closure_context_linker; - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - -// debug_node.hpp -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::parser_context_linker,1) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::scanner_context_linker,1) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::closure_context_linker,1) - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/dynamic.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/dynamic.hpp deleted file mode 100644 index 41ed74f788b0..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/dynamic.hpp +++ /dev/null @@ -1,30 +0,0 @@ -/*============================================================================= - Copyright (c) 2002-2003 Joel de Guzman - Copyright (c) 2002 Juan Carlos Arevalo-Baeza - Copyright (c) 2002-2003 Martin Wille - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_DYNAMIC_HPP -#define BOOST_SPIRIT_DYNAMIC_HPP - -#include - -/////////////////////////////////////////////////////////////////////////////// -// -// Master header for Spirit.Dynamic -// -/////////////////////////////////////////////////////////////////////////////// -#include -#include -#include -#include -#include -#include -#include -#include - -//////////////////////////////////////////////////////////////////////////////// -#endif // BOOST_SPIRIT_DYNAMIC_HPP diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/dynamic/for.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/dynamic/for.hpp deleted file mode 100644 index 21c4b78969e9..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/dynamic/for.hpp +++ /dev/null @@ -1,185 +0,0 @@ -/*============================================================================= - Copyright (c) 2002-2003 Joel de Guzman - Copyright (c) 2002-2003 Martin Wille - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_FOR_HPP -#define BOOST_SPIRIT_FOR_HPP -//////////////////////////////////////////////////////////////////////////////// -#include -#include -#include -#include - -//////////////////////////////////////////////////////////////////////////////// - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - namespace impl - { - - template - struct for_functor - { - typedef typename boost::call_traits::param_type param_t; - - for_functor(param_t f) : func(f) {} - for_functor() {} - FuncT func; - }; - - template - struct for_init_functor : for_functor - { - typedef for_functor base_t; - typedef typename base_t::param_t param_t; - - for_init_functor(param_t f) : base_t(f) {} - for_init_functor() : base_t() {} - void init() const { /*return*/ this->func(); } - }; - - template - struct for_step_functor : for_functor - { - typedef for_functor base_t; - typedef typename base_t::param_t param_t; - - for_step_functor(param_t f) : base_t(f) {} - for_step_functor() : base_t() {} - void step() const { /*return*/ this->func(); } - }; - - ////////////////////////////////// - // for_parser - template - < - typename InitF, typename CondT, typename StepF, - typename ParsableT - > - struct for_parser - : private for_init_functor - , private for_step_functor - , private condition_evaluator::type> - , public unary - < - typename as_parser::type, - parser< for_parser > - > - { - typedef for_parser self_t; - typedef as_parser cond_as_parser_t; - typedef typename cond_as_parser_t::type condition_t; - typedef condition_evaluator eval_t; - typedef as_parser as_parser_t; - typedef typename as_parser_t::type parser_t; - typedef unary< parser_t, parser< self_t > > base_t; - - - ////////////////////////////// - // constructor, saves init, condition and step functors - // for later use the parse member function - for_parser - ( - InitF const &i, CondT const &c, StepF const &s, - ParsableT const &p - ) - : for_init_functor(i) - , for_step_functor(s) - , eval_t(cond_as_parser_t::convert(c)) - , base_t(as_parser_t::convert(p)) - { } - - for_parser() - : for_init_functor() - , for_step_functor() - , eval_t() - , base_t() - {} - - ////////////////////////////// - // parse member function - template - typename parser_result::type - parse(ScannerT const &scan) const - { - typedef typename parser_result::type - body_result_t; - - typename ScannerT::iterator_t save(scan.first); - - std::size_t length = 0; - std::ptrdiff_t eval_length = 0; - - this->init(); - while ((eval_length = this->evaluate(scan))>=0) - { - length += eval_length; - body_result_t tmp(this->subject().parse(scan)); - if (tmp) - { - length+=tmp.length(); - } - else - { - return scan.no_match(); - } - this->step(); - } - - BOOST_SPIRIT_CLASSIC_NS::nil_t attr; - return scan.create_match - (length, attr, save, scan.first); - } - }; - - ////////////////////////////////// - // for_parser_gen generates takes the body parser in brackets - // and returns the for_parser - template - struct for_parser_gen - { - for_parser_gen(InitF const &i, CondT const &c, StepF const &s) - : init(i) - , condition(c) - , step(s) - {} - - template - for_parser - operator[](ParsableT const &p) const - { - return for_parser - (init, condition, step, p); - } - - InitF const &init; - CondT const &condition; - StepF const &step; - }; - } // namespace impl - - ////////////////////////////// - // for_p, returns for-parser generator - // Usage: spirit::for_p(init-ftor, condition, step-ftor)[body] - template - < - typename InitF, typename ConditionT, typename StepF - > - impl::for_parser_gen - for_p(InitF const &init_f, ConditionT const &condition, StepF const &step_f) - { - return impl::for_parser_gen - (init_f, condition, step_f); - } - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif // BOOST_SPIRIT_FOR_HPP diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/dynamic/if.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/dynamic/if.hpp deleted file mode 100644 index 9427a3714d26..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/dynamic/if.hpp +++ /dev/null @@ -1,229 +0,0 @@ -/*============================================================================= - Copyright (c) 2002-2003 Joel de Guzman - Copyright (c) 2002 Juan Carlos Arevalo-Baeza - Copyright (c) 2002-2003 Martin Wille - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_IF_HPP -#define BOOST_SPIRIT_IF_HPP - -#include -#include -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - namespace impl { - - ////////////////////////////////// - // if-else-parser, holds two alternative parsers and a conditional functor - // that selects between them. - template - struct if_else_parser - : public condition_evaluator::type> - , public binary - < - typename as_parser::type, - typename as_parser::type, - parser< if_else_parser > - > - { - typedef if_else_parser self_t; - - typedef as_parser as_parser_true_t; - typedef as_parser as_parser_false_t; - typedef typename as_parser_true_t::type parser_true_t; - typedef typename as_parser_false_t::type parser_false_t; - typedef as_parser cond_as_parser_t; - typedef typename cond_as_parser_t::type condition_t; - - typedef binary > base_t; - typedef condition_evaluator eval_t; - - if_else_parser - ( - ParsableTrueT const& p_true, - ParsableFalseT const& p_false, - CondT const& cond_ - ) - : eval_t(cond_as_parser_t::convert(cond_)) - , base_t - ( - as_parser_true_t::convert(p_true), - as_parser_false_t::convert(p_false) - ) - { } - - template - struct result - { - typedef typename match_result::type type; - }; - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - typedef typename parser_result - ::type then_result_t; - typedef typename parser_result - ::type else_result_t; - - typename ScannerT::iterator_t const save(scan.first); - - std::ptrdiff_t length = this->evaluate(scan); - if (length >= 0) - { - then_result_t then_result(this->left().parse(scan)); - if (then_result) - { - length += then_result.length(); - return scan.create_match(std::size_t(length), nil_t(), save, scan.first); - } - } - else - { - else_result_t else_result(this->right().parse(scan)); - if (else_result) - { - length = else_result.length(); - return scan.create_match(std::size_t(length), nil_t(), save, scan.first); - } - } - return scan.no_match(); - } - }; - - ////////////////////////////////// - // if-else-parser generator, takes the false-parser in brackets - // and returns the if-else-parser. - template - struct if_else_parser_gen - { - if_else_parser_gen(ParsableTrueT const& p_true_, CondT const& cond_) - : p_true(p_true_) - , cond(cond_) {} - - template - if_else_parser - < - ParsableTrueT, - ParsableFalseT, - CondT - > - operator[](ParsableFalseT const& p_false) const - { - return if_else_parser - ( - p_true, - p_false, - cond - ); - } - - ParsableTrueT const &p_true; - CondT const &cond; - }; - - ////////////////////////////////// - // if-parser, conditionally runs a parser is a functor condition is true. - // If the condition is false, it fails the parse. - // It can optionally become an if-else-parser through the member else_p. - template - struct if_parser - : public condition_evaluator::type> - , public unary - < - typename as_parser::type, - parser > > - { - typedef if_parser self_t; - typedef as_parser as_parser_t; - typedef typename as_parser_t::type parser_t; - - typedef as_parser cond_as_parser_t; - typedef typename cond_as_parser_t::type condition_t; - typedef condition_evaluator eval_t; - typedef unary > base_t; - - if_parser(ParsableT const& p, CondT const& cond_) - : eval_t(cond_as_parser_t::convert(cond_)) - , base_t(as_parser_t::convert(p)) - , else_p(p, cond_) - {} - - template - struct result - { - typedef typename match_result::type type; - }; - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - typedef typename parser_result::type t_result_t; - typename ScannerT::iterator_t const save(scan.first); - - std::ptrdiff_t length = this->evaluate(scan); - if (length >= 0) - { - t_result_t then_result(this->subject().parse(scan)); - if (then_result) - { - length += then_result.length(); - return scan.create_match(std::size_t(length), nil_t(), save, scan.first); - } - return scan.no_match(); - } - return scan.empty_match(); - } - - if_else_parser_gen else_p; - }; - - ////////////////////////////////// - // if-parser generator, takes the true-parser in brackets and returns the - // if-parser. - template - struct if_parser_gen - { - if_parser_gen(CondT const& cond_) : cond(cond_) {} - - template - if_parser - < - ParsableT, - CondT - > - operator[](ParsableT const& subject) const - { - return if_parser(subject, cond); - } - - CondT const &cond; - }; - -} // namespace impl - -////////////////////////////////// -// if_p function, returns "if" parser generator - -template -impl::if_parser_gen -if_p(CondT const& cond) -{ - return impl::if_parser_gen(cond); -} - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif // BOOST_SPIRIT_IF_HPP diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/dynamic/impl/conditions.ipp b/framework/contrib/boost/include/boost/spirit/home/classic/dynamic/impl/conditions.ipp deleted file mode 100644 index 3a7b530eb27c..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/dynamic/impl/conditions.ipp +++ /dev/null @@ -1,97 +0,0 @@ -/*============================================================================= - Copyright (c) 2002-2003 Martin Wille - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_CONDITIONS_IPP -#define BOOST_SPIRIT_CONDITIONS_IPP - -/////////////////////////////////////////////////////////////////////////////// -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - namespace impl { - -/////////////////////////////////////////////////////////////////////////////// -// -// condition evaluation -// -/////////////////////////////////////////////////////////////////////////////// - ////////////////////////////////// - // condition_parser_selector, decides which parser to use for a condition - // If the template argument is a parser then that parser is used. - // If the template argument is a functor then a condition parser using - // the functor is chosen - - template struct embed_t_accessor - { - typedef typename T::embed_t type; - }; - - template - struct condition_parser_selector - { - typedef - typename mpl::if_< - is_parser, - ConditionT, - condition_parser - >::type - type; - - typedef typename embed_t_accessor::type embed_t; - }; - - ////////////////////////////////// - // condition_evaluator, uses a parser to check wether a condition is met - // takes a parser or a functor that can be evaluated in boolean context - // as template parameter. - - // JDG 4-15-03 refactored - template - struct condition_evaluator - { - typedef condition_parser_selector selector_t; - typedef typename selector_t::type selected_t; - typedef typename selector_t::embed_t cond_embed_t; - - typedef typename boost::call_traits::param_type - param_t; - - condition_evaluator(param_t s) : cond(s) {} - - ///////////////////////////// - // evaluate, checks wether condition is met - // returns length of a match or a negative number for no-match - template - std::ptrdiff_t - evaluate(ScannerT const &scan) const - { - typedef typename ScannerT::iterator_t iterator_t; - typedef typename parser_result::type cres_t; - iterator_t save(scan.first); - cres_t result = cond.parse(scan); - if (!result) // reset the position if evaluation - scan.first = save; // fails. - return result.length(); - } - - cond_embed_t cond; - }; - -/////////////////////////////////////////////////////////////////////////////// - } // namespace impl - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace boost::spirit - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/dynamic/impl/select.ipp b/framework/contrib/boost/include/boost/spirit/home/classic/dynamic/impl/select.ipp deleted file mode 100644 index 724f6fad6ead..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/dynamic/impl/select.ipp +++ /dev/null @@ -1,122 +0,0 @@ -/*============================================================================= - Copyright (c) 2003 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_SELECT_IPP -#define BOOST_SPIRIT_SELECT_IPP - -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -/////////////////////////////////////////////////////////////////////////////// -namespace impl { - -/////////////////////////////////////////////////////////////////////////////// -template -struct as_embedded_parser : public as_parser -{ - typedef typename as_parser::type::derived_t::embed_t type; -}; - -/////////////////////////////////////////////////////////////////////////////// - -// no implementation here to catch unknown BehaviourT template arguments -template -struct select_match_gen; - -// implementation for the select_default_no_fail behaviour -template -struct select_match_gen { - - template - static ResultT - do_ (ScannerT const &scan) - { - return scan.create_match(0, -1, scan.first, scan.first); - } -}; - -// implementation for the select_default_fail behaviour -template -struct select_match_gen { - - template - static ResultT - do_ (ScannerT const &scan) - { - return scan.no_match(); - } -}; - -/////////////////////////////////////////////////////////////////////////////// -template -struct parse_tuple_element { - - BOOST_STATIC_CONSTANT(int, index = (TupleT::length - N)); - - template - static ResultT - do_(TupleT const &t, ScannerT const &scan) - { - typedef typename ::phoenix::tuple_element::type parser_t; - typedef typename ScannerT::iterator_t iterator_t; - typedef typename parser_result::type result_t; - - iterator_t save(scan.first); - ::phoenix::tuple_index const idx; - result_t result(t[idx].parse(scan)); - - if (result) { - return scan.create_match(result.length(), TupleT::length - N, - save, scan.first); - } - scan.first = save; // reset the input stream - return parse_tuple_element:: - do_(t, scan); - } -}; - -template -struct parse_tuple_element<1, ResultT, TupleT, BehaviourT> { - - BOOST_STATIC_CONSTANT(int, index = (TupleT::length - 1)); - - template - static ResultT - do_(TupleT const &t, ScannerT const &scan) - { - typedef typename ::phoenix::tuple_element::type parser_t; - typedef typename ScannerT::iterator_t iterator_t; - typedef typename parser_result::type result_t; - - iterator_t save(scan.first); - ::phoenix::tuple_index const idx; - result_t result(t[idx].parse(scan)); - - if (result) { - return scan.create_match(result.length(), TupleT::length - 1, - save, scan.first); - } - scan.first = save; // reset the input stream - return select_match_gen::do_(scan); - } -}; - -/////////////////////////////////////////////////////////////////////////////// -} // namespace impl - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace boost::spirit - -#endif // BOOST_SPIRIT_SELECT_IPP diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/dynamic/impl/switch.ipp b/framework/contrib/boost/include/boost/spirit/home/classic/dynamic/impl/switch.ipp deleted file mode 100644 index bf5507ad5847..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/dynamic/impl/switch.ipp +++ /dev/null @@ -1,575 +0,0 @@ -/*============================================================================= - Copyright (c) 2003 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_SWITCH_IPP -#define BOOST_SPIRIT_SWITCH_IPP - -#include -#include -#include -#include - -#include -#include -#include -#include - -#include -#include -#include -#include - -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -// forward declaration -template struct case_parser; - -/////////////////////////////////////////////////////////////////////////////// -namespace impl { - -/////////////////////////////////////////////////////////////////////////////// -// parse helper functions -template -inline typename parser_result::type -delegate_parse(ParserT const &p, ScannerT const &scan, - typename ScannerT::iterator_t const save) -{ - typedef typename parser_result::type result_t; - - result_t result (p.subject().parse(scan)); - if (!result) - scan.first = save; - return result; -} - -/////////////////////////////////////////////////////////////////////////////// -// General default case handling (no default_p case branch given). -// First try to match the current parser node (if the condition value is -// matched) and, if that fails, return a no_match -template -struct default_delegate_parse { - - template < - typename ParserT, typename DefaultT, - typename ValueT, typename ScannerT - > - static typename parser_result::type - parse (ValueT const &value, ParserT const &p, DefaultT const &, - ScannerT const &scan, typename ScannerT::iterator_t const save) - { - if (value == N) - return delegate_parse(p, scan, save); - return scan.no_match(); - } -}; - -// The current case parser node is the default parser. -// Ignore the given case value and try to match the given default parser. -template -struct default_delegate_parse { - - template < - typename ParserT, typename DefaultT, - typename ValueT, typename ScannerT - > - static typename parser_result::type - parse (ValueT const& /*value*/, ParserT const &, DefaultT const &d, - ScannerT const &scan, typename ScannerT::iterator_t const save) - { - // Since there is a default_p case branch defined, the corresponding - // parser shouldn't be the nothing_parser - BOOST_STATIC_ASSERT((!boost::is_same::value)); - return delegate_parse(d, scan, save); - } -}; - -// The current case parser node is not the default parser, but there is a -// default_p branch given inside the switch_p parser. -// First try to match the current parser node (if the condition value is -// matched) and, if that fails, match the given default_p parser. -template -struct default_delegate_parse { - - template < - typename ParserT, typename DefaultT, - typename ValueT, typename ScannerT - > - static typename parser_result::type - parse (ValueT const &value, ParserT const &p, DefaultT const &d, - ScannerT const &scan, typename ScannerT::iterator_t const save) - { - // Since there is a default_p case branch defined, the corresponding - // parser shouldn't be the nothing_parser - BOOST_STATIC_ASSERT((!boost::is_same::value)); - if (value == N) - return delegate_parse(p, scan, save); - - return delegate_parse(d, scan, save); - } -}; - -/////////////////////////////////////////////////////////////////////////////// -// Look through the case parser chain to test, if there is a default case -// branch defined (returned by 'value'). -template -struct default_case; - -//////////////////////////////////////// -template -struct get_default_parser { - - template - static ResultT - get(parser const &p) - { - return default_case:: - get(p.derived().left()); - } -}; - -template -struct get_default_parser { - - template - static ResultT - get(parser const &p) { return p.derived().right(); } -}; - -//////////////////////////////////////// -template -struct default_case { - - // The 'value' constant is true, if the current case_parser or one of its - // left siblings is a default_p generated case_parser. - BOOST_STATIC_CONSTANT(bool, value = - (CaseT::is_default || default_case::value)); - - // The 'is_epsilon' constant is true, if the current case_parser or one of - // its left siblings is a default_p generated parser with an attached - // epsilon_p (this is generated by the plain default_p). - BOOST_STATIC_CONSTANT(bool, is_epsilon = ( - (CaseT::is_default && CaseT::is_epsilon) || - default_case::is_epsilon - )); - - // The computed 'type' represents the type of the default case branch - // parser (if there is one) or nothing_parser (if there isn't any default - // case branch). - typedef typename boost::mpl::if_c< - CaseT::is_default, typename CaseT::right_embed_t, - typename default_case::type - >::type type; - - // The get function returns the parser attached to the default case branch - // (if there is one) or an instance of a nothing_parser (if there isn't - // any default case branch). - template - static type - get(parser const &p) - { return get_default_parser::get(p); } -}; - -//////////////////////////////////////// -template -struct get_default_parser_simple { - - template - static ResultT - get(parser const &p) { return p.derived(); } -}; - -template -struct get_default_parser_simple { - - template - static nothing_parser - get(parser const &) { return nothing_p; } -}; - -//////////////////////////////////////// -// Specialization of the default_case template for the last (leftmost) element -// of the case parser chain. -template -struct default_case { - - // The 'value' and 'is_epsilon' constant, the 'type' type and the function - // 'get' are described above. - - BOOST_STATIC_CONSTANT(bool, value = CaseT::is_default); - BOOST_STATIC_CONSTANT(bool, is_epsilon = ( - CaseT::is_default && CaseT::is_epsilon - )); - - typedef typename boost::mpl::if_c< - CaseT::is_default, CaseT, nothing_parser - >::type type; - - template - static type - get(parser const &p) - { return get_default_parser_simple::get(p); } -}; - -/////////////////////////////////////////////////////////////////////////////// -// The case_chain template calculates recursively the depth of the left -// subchain of the given case branch node. -template -struct case_chain { - - BOOST_STATIC_CONSTANT(int, depth = ( - case_chain::depth + 1 - )); -}; - -template -struct case_chain { - - BOOST_STATIC_CONSTANT(int, depth = 0); -}; - -/////////////////////////////////////////////////////////////////////////////// -// The chain_parser template is used to extract the type and the instance of -// a left or a right parser, buried arbitrary deep inside the case parser -// chain. -template -struct chain_parser { - - typedef typename CaseT::left_t our_left_t; - - typedef typename chain_parser::left_t left_t; - typedef typename chain_parser::right_t right_t; - - static left_t - left(CaseT const &p) - { return chain_parser::left(p.left()); } - - static right_t - right(CaseT const &p) - { return chain_parser::right(p.left()); } -}; - -template -struct chain_parser<1, CaseT> { - - typedef typename CaseT::left_t left_t; - typedef typename CaseT::right_t right_t; - - static left_t left(CaseT const &p) { return p.left(); } - static right_t right(CaseT const &p) { return p.right(); } -}; - -template -struct chain_parser<0, CaseT>; // shouldn't be instantiated - -/////////////////////////////////////////////////////////////////////////////// -// Type computing meta function for calculating the type of the return value -// of the used conditional switch expression -template -struct condition_result { - - typedef typename TargetT::template result::type type; -}; - -/////////////////////////////////////////////////////////////////////////////// -template -struct compound_case_parser -: public binary > > -{ - typedef compound_case_parser self_t; - typedef binary_parser_category parser_category_t; - typedef binary > base_t; - - BOOST_STATIC_CONSTANT(int, value = RightT::value); - BOOST_STATIC_CONSTANT(bool, is_default = IsDefault); - BOOST_STATIC_CONSTANT(bool, is_simple = false); - BOOST_STATIC_CONSTANT(bool, is_epsilon = ( - is_default && - boost::is_same::value - )); - - compound_case_parser(parser const &lhs, parser const &rhs) - : base_t(lhs.derived(), rhs.derived()) - {} - - template - struct result - { - typedef typename match_result::type type; - }; - - template - typename parser_result::type - parse(ScannerT const& scan, CondT const &cond) const; - - template - compound_case_parser< - self_t, case_parser, IsDefault1 - > - operator, (case_parser const &p) const - { - // If the following compile time assertion fires, you've probably used - // more than one default_p case inside the switch_p parser construct. - BOOST_STATIC_ASSERT(!default_case::value || !IsDefault1); - - // If this compile time assertion fires, you've probably want to use - // more case_p/default_p case branches, than possible. - BOOST_STATIC_ASSERT( - case_chain::depth < BOOST_SPIRIT_SWITCH_CASE_LIMIT - ); - - typedef case_parser rhs_t; - return compound_case_parser(*this, p); - } -}; - -/////////////////////////////////////////////////////////////////////////////// -// The parse_switch::do_ functions dispatch to the correct parser, which is -// selected through the given conditional switch value. -template -struct parse_switch; - -/////////////////////////////////////////////////////////////////////////////// -// -// The following generates a couple of parse_switch template specializations -// with an increasing number of handled case branches (for 1..N). -// -// template -// struct parse_switch { -// -// template -// static typename parser_result::type -// do_(ParserT const &p, ScannerT const &scan, long cond_value, -// typename ScannerT::iterator_t const &save) -// { -// typedef ParserT left_t0; -// typedef typename left_t0::left left_t1; -// ... -// -// switch (cond_value) { -// case left_tN::value: -// return delegate_parse(chain_parser< -// case_chain::depth, ParserT -// >::left(p), scan, save); -// ... -// case left_t1::value: -// return delegate_parse(chain_parser< -// 1, left_t1 -// >::right(p.left()), scan, save); -// -// case left_t0::value: -// default: -// typedef default_case default_t; -// typedef default_delegate_parse< -// Value, IsDefault, default_t::value> -// default_parse_t; -// -// return default_parse_t::parse(cond_value, p.right(), -// default_t::get(p), scan, save); -// } -// } -// }; -// -/////////////////////////////////////////////////////////////////////////////// -#define BOOST_SPIRIT_PARSE_SWITCH_TYPEDEFS(z, N, _) \ - typedef typename BOOST_PP_CAT(left_t, N)::left_t \ - BOOST_PP_CAT(left_t, BOOST_PP_INC(N)); \ - /**/ - -#define BOOST_SPIRIT_PARSE_SWITCH_CASES(z, N, _) \ - case (long)(BOOST_PP_CAT(left_t, N)::value): \ - return delegate_parse(chain_parser::right(p.left()), \ - scan, save); \ - /**/ - -#define BOOST_SPIRIT_PARSE_SWITCHES(z, N, _) \ - template \ - struct parse_switch { \ - \ - template \ - static typename parser_result::type \ - do_(ParserT const &p, ScannerT const &scan, long cond_value, \ - typename ScannerT::iterator_t const &save) \ - { \ - typedef ParserT left_t0; \ - BOOST_PP_REPEAT_FROM_TO_ ## z(0, BOOST_PP_INC(N), \ - BOOST_SPIRIT_PARSE_SWITCH_TYPEDEFS, _) \ - \ - switch (cond_value) { \ - case (long)(BOOST_PP_CAT(left_t, BOOST_PP_INC(N))::value): \ - return delegate_parse( \ - chain_parser< \ - case_chain::depth, ParserT \ - >::left(p), scan, save); \ - \ - BOOST_PP_REPEAT_FROM_TO_ ## z(1, BOOST_PP_INC(N), \ - BOOST_SPIRIT_PARSE_SWITCH_CASES, _) \ - \ - case (long)(left_t0::value): \ - default: \ - typedef default_case default_t; \ - typedef \ - default_delegate_parse \ - default_parse_t; \ - \ - return default_parse_t::parse(cond_value, p.right(), \ - default_t::get(p), scan, save); \ - } \ - } \ - }; \ - /**/ - -BOOST_PP_REPEAT(BOOST_PP_DEC(BOOST_SPIRIT_SWITCH_CASE_LIMIT), - BOOST_SPIRIT_PARSE_SWITCHES, _) - -#undef BOOST_SPIRIT_PARSE_SWITCH_TYPEDEFS -#undef BOOST_SPIRIT_PARSE_SWITCH_CASES -#undef BOOST_SPIRIT_PARSE_SWITCHES -/////////////////////////////////////////////////////////////////////////////// - -template -template -inline typename parser_result< - compound_case_parser, ScannerT ->::type -compound_case_parser:: - parse(ScannerT const& scan, CondT const &cond) const -{ - ignore_unused(scan.at_end()); // allow skipper to take effect - return parse_switch::depth, is_default>:: - do_(*this, scan, cond(scan), scan.first); -} - -/////////////////////////////////////////////////////////////////////////////// -// The switch condition is to be evaluated from a parser result value. -template -struct cond_functor { - - typedef cond_functor self_t; - - cond_functor(ParserT const &p_) - : p(p_) - {} - - template - struct result - { - typedef typename parser_result::type::attr_t type; - }; - - template - typename condition_result::type - operator()(ScannerT const &scan) const - { - typedef typename parser_result::type result_t; - typedef typename result_t::attr_t attr_t; - - result_t result(p.parse(scan)); - return !result ? attr_t() : result.value(); - } - - typename ParserT::embed_t p; -}; - -template -struct make_cond_functor { - - typedef as_parser as_parser_t; - - static cond_functor - do_(ParserT const &cond) - { - return cond_functor( - as_parser_t::convert(cond)); - } -}; - -/////////////////////////////////////////////////////////////////////////////// -// The switch condition is to be evaluated from a phoenix actor -template -struct cond_actor { - - typedef cond_actor self_t; - - cond_actor(ActorT const &actor_) - : actor(actor_) - {} - - template - struct result - { - typedef typename ::phoenix::actor_result >::type - type; - }; - - template - typename condition_result::type - operator()(ScannerT const& /*scan*/) const - { - return actor(); - } - - ActorT const &actor; -}; - -template -struct make_cond_functor< ::phoenix::actor > { - - static cond_actor< ::phoenix::actor > - do_(::phoenix::actor const &actor) - { - return cond_actor< ::phoenix::actor >(actor); - } -}; - -/////////////////////////////////////////////////////////////////////////////// -// The switch condition is to be taken directly from the input stream -struct get_next_token_cond { - - typedef get_next_token_cond self_t; - - template - struct result - { - typedef typename ScannerT::value_t type; - }; - - template - typename condition_result::type - operator()(ScannerT const &scan) const - { - typename ScannerT::value_t val(*scan); - ++scan.first; - return val; - } -}; - -template <> -struct make_cond_functor { - - static get_next_token_cond - do_(get_next_token_cond const &cond) - { - return cond; - } -}; - -/////////////////////////////////////////////////////////////////////////////// -} // namespace impl - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace boost::spirit - -#endif // BOOST_SPIRIT_SWITCH_IPP diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/dynamic/lazy.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/dynamic/lazy.hpp deleted file mode 100644 index 5bc9df3af9ee..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/dynamic/lazy.hpp +++ /dev/null @@ -1,66 +0,0 @@ -/*============================================================================= - Copyright (c) 2003 Joel de Guzman - Copyright (c) 2003 Vaclav Vesely - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_LAZY_HPP -#define BOOST_SPIRIT_LAZY_HPP - -//////////////////////////////////////////////////////////////////////////////// -#include -#include -#include - -//////////////////////////////////////////////////////////////////////////////// - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - //////////////////////////////////////////////////////////////////////////// - // - // lazy_parser, holds phoenix actor which returns a spirit parser. - // - //////////////////////////////////////////////////////////////////////////// - - template - struct lazy_parser : parser > - { - typedef lazy_parser self_t; - typedef typename ::phoenix::actor_result< - ActorT, ::phoenix::tuple<> >::plain_type actor_result_t; - - template - struct result - { - typedef typename - parser_result::type - type; - }; - - lazy_parser(ActorT const& actor_) - : actor(actor_) {} - - template - typename parser_result::type - parse(ScannerT const& scan) const - { return actor().parse(scan); } - - ActorT actor; - }; - - ////////////////////////////// - // lazy_p, returns lazy_parser - // Usage: lazy_p(actor) - template - lazy_parser lazy_p(ActorT const& actor) - { return lazy_parser(actor); } - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif // BOOST_SPIRIT_LAZY_HPP diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/dynamic/rule_alias.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/dynamic/rule_alias.hpp deleted file mode 100644 index de291c916d8f..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/dynamic/rule_alias.hpp +++ /dev/null @@ -1,76 +0,0 @@ -/*============================================================================= - Copyright (c) 1998-2003 Joel de Guzman - http://spirit.sourceforge.net/ - - 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_RULE_ALIAS_HPP) -#define BOOST_SPIRIT_RULE_ALIAS_HPP - -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // - // rule_alias class - // - /////////////////////////////////////////////////////////////////////////// - template - class rule_alias : - public parser > - { - public: - - typedef rule_alias self_t; - - template - struct result - { - typedef typename parser_result::type type; - }; - - rule_alias() - : ptr(0) {} - - rule_alias(ParserT const& p) - : ptr(&p) {} - - rule_alias& - operator=(ParserT const& p) - { - ptr = &p; - return *this; - } - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - if (ptr) - return ptr->parse(scan); - else - return scan.no_match(); - } - - ParserT const& - get() const - { - BOOST_ASSERT(ptr != 0); - return *ptr; - } - - private: - - ParserT const* ptr; // hold it by pointer - }; - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/dynamic/select.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/dynamic/select.hpp deleted file mode 100644 index 865b27c5e9f7..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/dynamic/select.hpp +++ /dev/null @@ -1,245 +0,0 @@ -/*============================================================================= - Copyright (c) 2003 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_SELECT_HPP -#define BOOST_SPIRIT_SELECT_HPP - -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include - -/////////////////////////////////////////////////////////////////////////////// -// -// Spirit predefined maximum number of possible embedded select_p parsers. -// It should NOT be greater than PHOENIX_LIMIT! -// -/////////////////////////////////////////////////////////////////////////////// -#if !defined(BOOST_SPIRIT_SELECT_LIMIT) -#define BOOST_SPIRIT_SELECT_LIMIT PHOENIX_LIMIT -#endif // !defined(BOOST_SPIRIT_SELECT_LIMIT) - -/////////////////////////////////////////////////////////////////////////////// -// -// ensure BOOST_SPIRIT_SELECT_LIMIT <= PHOENIX_LIMIT and -// BOOST_SPIRIT_SELECT_LIMIT > 0 -// BOOST_SPIRIT_SELECT_LIMIT <= 15 -// -// [Pushed this down a little to make CW happy with BOOST_STATIC_ASSERT] -// [Otherwise, it complains: 'boost_static_assert_test_42' redefined] -// -/////////////////////////////////////////////////////////////////////////////// -BOOST_STATIC_ASSERT(BOOST_SPIRIT_SELECT_LIMIT <= PHOENIX_LIMIT); -BOOST_STATIC_ASSERT(BOOST_SPIRIT_SELECT_LIMIT > 0); -BOOST_STATIC_ASSERT(BOOST_SPIRIT_SELECT_LIMIT <= 15); - -/////////////////////////////////////////////////////////////////////////////// -// -// Calculate the required amount of tuple members rounded up to the nearest -// integer dividable by 3 -// -/////////////////////////////////////////////////////////////////////////////// -#if BOOST_SPIRIT_SELECT_LIMIT > 12 -#define BOOST_SPIRIT_SELECT_LIMIT_A 15 -#elif BOOST_SPIRIT_SELECT_LIMIT > 9 -#define BOOST_SPIRIT_SELECT_LIMIT_A 12 -#elif BOOST_SPIRIT_SELECT_LIMIT > 6 -#define BOOST_SPIRIT_SELECT_LIMIT_A 9 -#elif BOOST_SPIRIT_SELECT_LIMIT > 3 -#define BOOST_SPIRIT_SELECT_LIMIT_A 6 -#else -#define BOOST_SPIRIT_SELECT_LIMIT_A 3 -#endif - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -/////////////////////////////////////////////////////////////////////////////// -// -// The select_default_no_fail and select_default_fail structs are used to -// distinguish two different behaviours for the select_parser in case that not -// any of the given sub-parsers match. -// -// If the select_parser is used with the select_default_no_fail behaviour, -// then in case of no matching sub-parser the whole select_parser returns an -// empty match and the value -1. -// -// If the select_parser is used with the select_default_fail behaviour, then -// in case of no matching sub-parser the whole select_parser fails to match at -// all. -// -/////////////////////////////////////////////////////////////////////////////// -struct select_default_no_fail {}; -struct select_default_fail {}; - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -/////////////////////////////////////////////////////////////////////////////// -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -/////////////////////////////////////////////////////////////////////////////// -template -struct select_parser -: public parser > -{ - typedef select_parser self_t; - - select_parser(TupleT const &t_) - : t(t_) - {} - - template - struct result - { - typedef typename match_result::type type; - }; - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - typedef typename parser_result::type result_t; - - if (!scan.at_end()) { - return impl::parse_tuple_element< - TupleT::length, result_t, TupleT, BehaviourT>::do_(t, scan); - } - return impl::select_match_gen::do_(scan); - } - - TupleT const t; -}; - -/////////////////////////////////////////////////////////////////////////////// -template -struct select_parser_gen { - - /////////////////////////////////////////////////////////////////////////// - // - // This generates different select_parser_gen::operator()() functions with - // an increasing number of parser parameters: - // - // template - // select_parser< - // ::phoenix::tuple< - // typename impl::as_embedded_parser::type, - // ... - // >, - // BehaviourT, - // T - // > - // operator()(ParserT0 const &p0, ...) const - // { - // typedef impl::as_embedded_parser parser_t0; - // ... - // - // typedef ::phoenix::tuple< - // parser_t0::type, - // ... - // > tuple_t; - // typedef select_parser result_t; - // - // return result_t(tuple_t( - // parser_t0::convert(p0), - // ... - // )); - // } - // - // The number of generated functions depends on the maximum tuple member - // limit defined by the PHOENIX_LIMIT pp constant. - // - /////////////////////////////////////////////////////////////////////////// - #define BOOST_SPIRIT_SELECT_EMBEDDED(z, N, _) \ - typename impl::as_embedded_parser::type \ - /**/ - #define BOOST_SPIRIT_SELECT_EMBEDDED_TYPEDEF(z, N, _) \ - typedef impl::as_embedded_parser \ - BOOST_PP_CAT(parser_t, N); \ - /**/ - #define BOOST_SPIRIT_SELECT_CONVERT(z, N, _) \ - BOOST_PP_CAT(parser_t, N)::convert(BOOST_PP_CAT(p, N)) \ - /**/ - - #define BOOST_SPIRIT_SELECT_PARSER(z, N, _) \ - template < \ - BOOST_PP_ENUM_PARAMS_Z(z, BOOST_PP_INC(N), typename ParserT) \ - > \ - select_parser< \ - ::phoenix::tuple< \ - BOOST_PP_ENUM_ ## z(BOOST_PP_INC(N), \ - BOOST_SPIRIT_SELECT_EMBEDDED, _) \ - >, \ - BehaviourT, \ - T \ - > \ - operator()( \ - BOOST_PP_ENUM_BINARY_PARAMS_Z(z, BOOST_PP_INC(N), \ - ParserT, const &p) \ - ) const \ - { \ - BOOST_PP_REPEAT_ ## z(BOOST_PP_INC(N), \ - BOOST_SPIRIT_SELECT_EMBEDDED_TYPEDEF, _) \ - \ - typedef ::phoenix::tuple< \ - BOOST_PP_ENUM_BINARY_PARAMS_Z(z, BOOST_PP_INC(N), \ - typename parser_t, ::type BOOST_PP_INTERCEPT) \ - > tuple_t; \ - typedef select_parser result_t; \ - \ - return result_t(tuple_t( \ - BOOST_PP_ENUM_ ## z(BOOST_PP_INC(N), \ - BOOST_SPIRIT_SELECT_CONVERT, _) \ - )); \ - } \ - /**/ - - BOOST_PP_REPEAT(BOOST_SPIRIT_SELECT_LIMIT_A, - BOOST_SPIRIT_SELECT_PARSER, _) - - #undef BOOST_SPIRIT_SELECT_PARSER - #undef BOOST_SPIRIT_SELECT_CONVERT - #undef BOOST_SPIRIT_SELECT_EMBEDDED_TYPEDEF - #undef BOOST_SPIRIT_SELECT_EMBEDDED - /////////////////////////////////////////////////////////////////////////// -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// Predefined parser generator helper objects -// -/////////////////////////////////////////////////////////////////////////////// -select_parser_gen const select_p = - select_parser_gen(); - -select_parser_gen const select_fail_p = - select_parser_gen(); - -#undef BOOST_SPIRIT_SELECT_LIMIT_A - -/////////////////////////////////////////////////////////////////////////////// -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif // BOOST_SPIRIT_SELECT_HPP diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/dynamic/stored_rule.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/dynamic/stored_rule.hpp deleted file mode 100644 index 5248ba18fa55..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/dynamic/stored_rule.hpp +++ /dev/null @@ -1,121 +0,0 @@ -/*============================================================================= - Copyright (c) 1998-2003 Joel de Guzman - http://spirit.sourceforge.net/ - - 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_STORED_RULE_HPP) -#define BOOST_SPIRIT_STORED_RULE_HPP - -/////////////////////////////////////////////////////////////////////////////// -#include -#include -#include -#include - -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // - // stored_rule class - // - /////////////////////////////////////////////////////////////////////////// - template < - typename T0 - , typename T1 - , typename T2 - , bool EmbedByValue - > - class stored_rule - : public impl::rule_base< - stored_rule - , typename mpl::if_c< - EmbedByValue - , stored_rule - , stored_rule const&>::type - , T0, T1, T2> - { - public: - - typedef stored_rule self_t; - typedef impl::rule_base< - self_t - , typename mpl::if_c< - EmbedByValue - , stored_rule - , self_t const&>::type - , T0, T1, T2> - base_t; - - typedef typename base_t::scanner_t scanner_t; - typedef typename base_t::attr_t attr_t; - typedef impl::abstract_parser abstract_parser_t; - typedef rule_alias alias_t; - - stored_rule() : ptr() {} - ~stored_rule() {} - - stored_rule(stored_rule const& r) - : ptr(r.ptr) {} - - template - stored_rule(ParserT const& p) - : ptr(new impl::concrete_parser(p)) {} - - template - stored_rule& operator=(ParserT const& p) - { - ptr.reset(new impl::concrete_parser(p)); - return *this; - } - - stored_rule& operator=(stored_rule const& r) - { - // If this is placed above the templatized assignment - // operator, VC6 incorrectly complains ambiguity with - // r1 = r2, where r1 and r2 are both rules. - ptr = r.ptr; - return *this; - } - - stored_rule - copy() const - { - return stored_rule(ptr); - } - - alias_t - alias() const - { - return alias_t(*this); - } - - private: - - friend class impl::rule_base_access; - friend class stored_rule; - - abstract_parser_t* - get() const - { - return ptr.get(); - } - - stored_rule(shared_ptr const& ptr) - : ptr(ptr) {} - - shared_ptr ptr; - }; - -/////////////////////////////////////////////////////////////////////////////// -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/dynamic/stored_rule_fwd.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/dynamic/stored_rule_fwd.hpp deleted file mode 100644 index 655bd838a944..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/dynamic/stored_rule_fwd.hpp +++ /dev/null @@ -1,31 +0,0 @@ -/*============================================================================= - Copyright (c) 2006 Tobias Schwinger - http://spirit.sourceforge.net/ - - 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_STORED_RULE_FWD_HPP) -#define BOOST_SPIRIT_STORED_RULE_FWD_HPP - -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - template < - typename T0 = nil_t - , typename T1 = nil_t - , typename T2 = nil_t - , bool EmbedByValue = false - > - class stored_rule; - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/dynamic/switch.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/dynamic/switch.hpp deleted file mode 100644 index 44b9a72ff0d1..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/dynamic/switch.hpp +++ /dev/null @@ -1,259 +0,0 @@ -/*============================================================================= - Copyright (c) 2003 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_SWITCH_HPP -#define BOOST_SPIRIT_SWITCH_HPP - -/////////////////////////////////////////////////////////////////////////////// -// -// The default_p parser generator template uses the following magic number -// as the corresponding case label value inside the generated switch() -// statements. If this number conflicts with your code, please pick a -// different one. -// -/////////////////////////////////////////////////////////////////////////////// -#if !defined(BOOST_SPIRIT_DEFAULTCASE_MAGIC) -#define BOOST_SPIRIT_DEFAULTCASE_MAGIC 0x15F97A7 -#endif - -/////////////////////////////////////////////////////////////////////////////// -// -// Spirit predefined maximum number of possible case_p/default_p case branch -// parsers. -// -/////////////////////////////////////////////////////////////////////////////// -#if !defined(BOOST_SPIRIT_SWITCH_CASE_LIMIT) -#define BOOST_SPIRIT_SWITCH_CASE_LIMIT 3 -#endif // !defined(BOOST_SPIRIT_SWITCH_CASE_LIMIT) - -/////////////////////////////////////////////////////////////////////////////// -#include - -/////////////////////////////////////////////////////////////////////////////// -// -// Ensure BOOST_SPIRIT_SELECT_LIMIT > 0 -// -/////////////////////////////////////////////////////////////////////////////// -BOOST_STATIC_ASSERT(BOOST_SPIRIT_SWITCH_CASE_LIMIT > 0); - -#include -#include -#include -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -/////////////////////////////////////////////////////////////////////////////// -// -// The switch_parser allows to build switch like parsing constructs, which -// will have much better performance as comparable straight solutions. -// -// Input stream driven syntax: -// -// switch_p -// [ -// case_p<'a'> -// (...parser to use, if the next character is 'a'...), -// case_p<'b'> -// (...parser to use, if the next character is 'b'...), -// default_p -// (...parser to use, if nothing was matched before...) -// ] -// -// General syntax: -// -// switch_p(...lazy expression returning the switch condition value...) -// [ -// case_p<1> -// (...parser to use, if the switch condition value is 1...), -// case_p<2> -// (...parser to use, if the switch condition value is 2...), -// default_p -// (...parser to use, if nothing was matched before...) -// ] -// -// The maximum number of possible case_p branches is defined by the p constant -// BOOST_SPIRIT_SWITCH_CASE_LIMIT (this value defaults to 3 if not otherwise -// defined). -// -/////////////////////////////////////////////////////////////////////////////// -template -struct switch_parser -: public unary > > -{ - typedef switch_parser self_t; - typedef unary_parser_category parser_category_t; - typedef unary > base_t; - - switch_parser(CaseT const &case_) - : base_t(case_), cond(CondT()) - {} - - switch_parser(CaseT const &case_, CondT const &cond_) - : base_t(case_), cond(cond_) - {} - - template - struct result - { - typedef typename match_result::type type; - }; - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - return this->subject().parse(scan, - impl::make_cond_functor::do_(cond)); - } - - CondT cond; -}; - -/////////////////////////////////////////////////////////////////////////////// -template -struct switch_cond_parser -{ - switch_cond_parser(CondT const &cond_) - : cond(cond_) - {} - - template - switch_parser - operator[](parser const &p) const - { - return switch_parser(p.derived(), cond); - } - - CondT const &cond; -}; - -/////////////////////////////////////////////////////////////////////////////// -template -struct case_parser -: public unary > > -{ - typedef case_parser self_t; - typedef unary_parser_category parser_category_t; - typedef unary > base_t; - - typedef typename base_t::subject_t self_subject_t; - - BOOST_STATIC_CONSTANT(int, value = N); - BOOST_STATIC_CONSTANT(bool, is_default = IsDefault); - BOOST_STATIC_CONSTANT(bool, is_simple = true); - BOOST_STATIC_CONSTANT(bool, is_epsilon = ( - is_default && boost::is_same::value - )); - - case_parser(parser const &p) - : base_t(p.derived()) - {} - - template - struct result - { - typedef typename match_result::type type; - }; - - template - typename parser_result::type - parse(ScannerT const& scan, CondT const &cond) const - { - typedef impl::default_case default_t; - - if (!scan.at_end()) { - typedef impl::default_delegate_parse< - value, is_default, default_t::value> default_parse_t; - - typename ScannerT::iterator_t const save(scan.first); - return default_parse_t::parse(cond(scan), *this, - *this, scan, save); - } - - return default_t::is_epsilon ? scan.empty_match() : scan.no_match(); - } - - template - impl::compound_case_parser< - self_t, case_parser, IsDefault1 - > - operator, (case_parser const &p) const - { - // If the following compile time assertion fires, you've probably used - // more than one default_p case inside the switch_p parser construct. - BOOST_STATIC_ASSERT(!is_default || !IsDefault1); - - typedef case_parser right_t; - return impl::compound_case_parser(*this, p); - } -}; - -/////////////////////////////////////////////////////////////////////////////// -struct switch_parser_gen { - -// This generates a switch parser, which is driven by the condition value -// returned by the lazy parameter expression 'cond'. This may be a parser, -// which result is used or a phoenix actor, which will be dereferenced to -// obtain the switch condition value. - template - switch_cond_parser - operator()(CondT const &cond) const - { - return switch_cond_parser(cond); - } - -// This generates a switch parser, which is driven by the next character/token -// found in the input stream. - template - switch_parser - operator[](parser const &p) const - { - return switch_parser(p.derived()); - } -}; - -switch_parser_gen const switch_p = switch_parser_gen(); - -/////////////////////////////////////////////////////////////////////////////// -template -inline case_parser -case_p(parser const &p) -{ - return case_parser(p); -} - -/////////////////////////////////////////////////////////////////////////////// -struct default_parser_gen -: public case_parser -{ - default_parser_gen() - : case_parser - (epsilon_p) - {} - - template - case_parser - operator()(parser const &p) const - { - return case_parser(p); - } -}; - -default_parser_gen const default_p = default_parser_gen(); - -/////////////////////////////////////////////////////////////////////////////// -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif // BOOST_SPIRIT_SWITCH_HPP diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/dynamic/typeof.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/dynamic/typeof.hpp deleted file mode 100644 index 7ed99c657b6a..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/dynamic/typeof.hpp +++ /dev/null @@ -1,89 +0,0 @@ -/*============================================================================= - Copyright (c) 2006 Tobias Schwinger - http://spirit.sourceforge.net/ - - 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_DYNAMIC_TYPEOF_HPP) -#define BOOST_SPIRIT_DYNAMIC_TYPEOF_HPP - -#include - -#include -#include - -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - // if.hpp - template struct if_parser; - template - struct if_else_parser; - - // for.hpp - namespace impl { - template - struct for_parser; - } - - // while.hpp - template - struct while_parser; - - // lazy.hpp - template struct lazy_parser; - - // rule_alias.hpp - template class rule_alias; - - // switch.hpp - template struct switch_parser; - template struct case_parser; - - // select.hpp - template - struct select_parser; - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - -// if.hpp -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::if_parser,2) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::if_else_parser,3) - -// for.hpp -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::impl::for_parser,4) - -// while.hpp -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::while_parser,(class)(class)(bool)) - -// lazy.hpp -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::lazy_parser,1) - -// stored_rule.hpp (has forward header) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::stored_rule,(typename)(typename)(typename)(bool)) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::stored_rule,3) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::stored_rule,2) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::stored_rule,1) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::stored_rule<>) - -// rule_alias.hpp -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::rule_alias,1) - -// switch.hpp -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::switch_parser,2) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::case_parser,(int)(class)(bool)) - -// select.hpp -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::select_parser,3) - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/dynamic/while.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/dynamic/while.hpp deleted file mode 100644 index d0eae118aefd..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/dynamic/while.hpp +++ /dev/null @@ -1,189 +0,0 @@ -/*============================================================================= - Copyright (c) 2002-2003 Joel de Guzman - Copyright (c) 2002-2003 Martin Wille - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_WHILE_HPP -#define BOOST_SPIRIT_WHILE_HPP - -#include -#include -#include -#include - -//////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - namespace impl { - - ////////////////////////////////// - // while parser - // object are created by while_parser_gen and do_parser_gen - template - struct while_parser - : public condition_evaluator< typename as_parser::type > - , public unary // the parent stores a copy of the body parser - < - typename as_parser::type, - parser > - > - { - typedef while_parser self_t; - - typedef as_parser as_parser_t; - typedef typename as_parser_t::type parser_t; - typedef as_parser cond_as_parser_t; - typedef typename cond_as_parser_t::type condition_t; - - typedef unary > base_t; - typedef condition_evaluator eval_t; - - - ////////////////////////////// - // constructor, saves condition and body parser - while_parser(ParsableT const &body, CondT const &cond) - : eval_t(cond_as_parser_t::convert(cond)) - , base_t(as_parser_t::convert(body)) - {} - - ////////////////////////////// - // result type computer. - template - struct result - { - typedef typename match_result - ::type type; - }; - - ////////////////////////////// - // parse member function - template - typename parser_result::type - parse(ScannerT const& scan) const - { - typedef typename parser_result::type sresult_t; - typedef typename ScannerT::iterator_t iterator_t; - - iterator_t save(scan.first); - std::size_t length = 0; - std::ptrdiff_t eval_length = 0; - - bool dont_check_condition = is_do_parser; - - while (dont_check_condition || (eval_length=this->evaluate(scan))>=0) - { - dont_check_condition = false; - length += eval_length; - sresult_t tmp(this->subject().parse(scan)); - if (tmp) - { - length+=tmp.length(); - } - else - { - return scan.no_match(); - } - } - return scan.create_match(length, nil_t(), save, scan.first); - } - }; - - ////////////////////////////////// - // while-parser generator, takes the body-parser in brackets - // and returns the actual while-parser. - template - struct while_parser_gen - { - ////////////////////////////// - // constructor, saves the condition for use by operator[] - while_parser_gen(CondT const& cond_) : cond(cond_) {} - - ////////////////////////////// - // operator[] returns the actual while-parser object - template - while_parser - operator[](ParsableT const &subject) const - { - return while_parser(subject, cond); - } - private: - - ////////////////////////////// - // the condition is stored by reference here. - // this should not cause any harm since object of type - // while_parser_gen<> are only used as temporaries - // the while-parser object constructed by the operator[] - // stores a copy of the condition. - CondT const &cond; - }; - - ////////////////////////////////// - // do-while-parser generator, takes the condition as - // parameter to while_p member function and returns the - // actual do-while-parser. - template - struct do_while_parser_gen - { - ////////////////////////////// - // constructor. saves the body parser for use by while_p. - explicit do_while_parser_gen(ParsableT const &body_parser) - : body(body_parser) - {} - - ////////////////////////////// - // while_p returns the actual while-parser object - template - while_parser - while_p(CondT cond) const - { - return while_parser(body, cond); - } - private: - - ////////////////////////////// - // the body is stored by reference here - // this should not cause any harm since object of type - // do_while_parser_gen<> are only used as temporaries - // the while-parser object constructed by the while_p - // member function stores a copy of the body parser. - ParsableT const &body; - }; - - struct do_parser_gen - { - inline do_parser_gen() {} - - template - impl::do_while_parser_gen - operator[](ParsableT const& body) const - { - return impl::do_while_parser_gen(body); - } - }; -} // namespace impl - -////////////////////////////////// -// while_p function, while-parser generator -// Usage: spirit::while_p(Condition)[Body] -template -impl::while_parser_gen -while_p(CondT const& cond) -{ - return impl::while_parser_gen(cond); -} - -////////////////////////////////// -// do_p functor, do-while-parser generator -// Usage: spirit::do_p[Body].while_p(Condition) -impl::do_parser_gen const do_p = impl::do_parser_gen(); - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif // BOOST_SPIRIT_WHILE_HPP diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/error_handling.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/error_handling.hpp deleted file mode 100644 index 72c5d2cac20a..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/error_handling.hpp +++ /dev/null @@ -1,21 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2003 Joel de Guzman - http://spirit.sourceforge.net/ - - 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_ERROR_HANDLING_MAIN_HPP) -#define BOOST_SPIRIT_ERROR_HANDLING_MAIN_HPP - -#include - -/////////////////////////////////////////////////////////////////////////////// -// -// Master header for Spirit.ErrorHandling -// -/////////////////////////////////////////////////////////////////////////////// - -#include - -#endif // !defined(BOOST_SPIRIT_ERROR_HANDLING_MAIN_HPP) diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/error_handling/exceptions.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/error_handling/exceptions.hpp deleted file mode 100644 index 947d7a7b6265..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/error_handling/exceptions.hpp +++ /dev/null @@ -1,364 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2003 Joel de Guzman - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_EXCEPTIONS_HPP -#define BOOST_SPIRIT_EXCEPTIONS_HPP - -#include -#include -#include -#include -#include -#include - -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // - // parser_error_base class - // - // This is the base class of parser_error (see below). This may be - // used to catch any type of parser error. - // - // This exception shouldn't propagate outside the parser. However to - // avoid quirks of many platforms/implementations which fall outside - // the C++ standard, we derive parser_error_base from std::exception - // to allow a single catch handler to catch all exceptions. - // - /////////////////////////////////////////////////////////////////////////// - class BOOST_SYMBOL_VISIBLE parser_error_base : public std::exception - { - protected: - - parser_error_base() {} - virtual ~parser_error_base() BOOST_NOEXCEPT_OR_NOTHROW {} - - public: - - parser_error_base(parser_error_base const& rhs) - : std::exception(rhs) {} - parser_error_base& operator=(parser_error_base const&) - { - return *this; - } - }; - - /////////////////////////////////////////////////////////////////////////// - // - // parser_error class - // - // Generic parser exception class. This is the base class for all - // parser exceptions. The exception holds the iterator position - // where the error was encountered in its member variable "where". - // The parser_error also holds information regarding the error - // (error descriptor) in its member variable "descriptor". - // - // The throw_ function creates and throws a parser_error given - // an iterator and an error descriptor. - // - /////////////////////////////////////////////////////////////////////////// - template - struct parser_error : public parser_error_base - { - typedef ErrorDescrT error_descr_t; - typedef IteratorT iterator_t; - - parser_error(IteratorT where_, ErrorDescrT descriptor_) - : where(where_), descriptor(descriptor_) {} - - parser_error(parser_error const& rhs) - : parser_error_base(rhs) - , where(rhs.where), descriptor(rhs.descriptor) {} - - parser_error& - operator=(parser_error const& rhs) - { - where = rhs.where; - descriptor = rhs.descriptor; - return *this; - } - - virtual - ~parser_error() BOOST_NOEXCEPT_OR_NOTHROW {} - - virtual const char* - what() const BOOST_NOEXCEPT_OR_NOTHROW - { - return "BOOST_SPIRIT_CLASSIC_NS::parser_error"; - } - - IteratorT where; - ErrorDescrT descriptor; - }; - - ////////////////////////////////// - template - inline void - throw_(IteratorT where, ErrorDescrT descriptor) - { - boost::throw_exception( - parser_error(where, descriptor)); - } - - /////////////////////////////////////////////////////////////////////////// - // - // assertive_parser class - // - // An assertive_parser class is a parser that throws an exception - // in response to a parsing failure. The assertive_parser throws a - // parser_error exception rather than returning an unsuccessful - // match to signal that the parser failed to match the input. - // - /////////////////////////////////////////////////////////////////////////// - template - struct assertive_parser - : public unary > > - { - typedef assertive_parser self_t; - typedef unary > base_t; - typedef unary_parser_category parser_category_t; - - assertive_parser(ParserT const& parser, ErrorDescrT descriptor_) - : base_t(parser), descriptor(descriptor_) {} - - template - struct result - { - typedef typename parser_result::type type; - }; - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - typedef typename parser_result::type result_t; - - result_t hit = this->subject().parse(scan); - if (!hit) - { - throw_(scan.first, descriptor); - } - return hit; - } - - ErrorDescrT descriptor; - }; - - /////////////////////////////////////////////////////////////////////////// - // - // assertion class - // - // assertive_parsers are never instantiated directly. The assertion - // class is used to indirectly create an assertive_parser object. - // Before declaring the grammar, we declare some assertion objects. - // Examples: - // - // enum Errors - // { - // program_expected, begin_expected, end_expected - // }; - // - // assertion expect_program(program_expected); - // assertion expect_begin(begin_expected); - // assertion expect_end(end_expected); - // - // Now, we can use these assertions as wrappers around parsers: - // - // expect_end(str_p("end")) - // - // Take note that although the example uses enums to hold the - // information regarding the error (error desccriptor), we are free - // to use other types such as integers and strings. Enums are - // convenient for error handlers to easily catch since C++ treats - // enums as unique types. - // - /////////////////////////////////////////////////////////////////////////// - template - struct assertion - { - assertion(ErrorDescrT descriptor_) - : descriptor(descriptor_) {} - - template - assertive_parser - operator()(ParserT const& parser) const - { - return assertive_parser(parser, descriptor); - } - - ErrorDescrT descriptor; - }; - - /////////////////////////////////////////////////////////////////////////// - // - // error_status - // - // Where T is an attribute type compatible with the match attribute - // of the fallback_parser's subject (defaults to nil_t). The class - // error_status reports the result of an error handler (see - // fallback_parser). result can be one of: - // - // fail: quit and fail (return a no_match) - // retry: attempt error recovery, possibly moving the scanner - // accept: force success returning a matching length, moving - // the scanner appropriately and returning an attribute - // value - // rethrow: rethrows the error. - // - /////////////////////////////////////////////////////////////////////////// - template - struct error_status - { - enum result_t { fail, retry, accept, rethrow }; - - error_status( - result_t result_ = fail, - std::ptrdiff_t length_ = -1, - T const& value_ = T()) - : result(result_), length(length_), value(value_) {} - - result_t result; - std::ptrdiff_t length; - T value; - }; - - /////////////////////////////////////////////////////////////////////////// - // - // fallback_parser class - // - // Handles exceptions of type parser_error - // thrown somewhere inside its embedded ParserT object. The class - // sets up a try block before delegating parsing to its subject. - // When an exception is caught, the catch block then calls the - // HandlerT object. HandlerT may be a function or a functor (with - // an operator() member function) compatible with the interface: - // - // error_status - // handler(ScannerT const& scan, ErrorT error); - // - // Where scan points to the scanner state prior to parsing and error - // is the error that arose (see parser_error). The handler must - // return an error_status object (see above). - // - /////////////////////////////////////////////////////////////////////////// - namespace impl - { - template - RT fallback_parser_parse(ParserT const& p, ScannerT const& scan); - } - - template - struct fallback_parser - : public unary > > - { - typedef fallback_parser - self_t; - typedef ErrorDescrT - error_descr_t; - typedef unary > - base_t; - typedef unary_parser_category - parser_category_t; - - fallback_parser(ParserT const& parser, HandlerT const& handler_) - : base_t(parser), handler(handler_) {} - - template - struct result - { - typedef typename parser_result::type type; - }; - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - typedef typename parser_result::type result_t; - return impl::fallback_parser_parse(*this, scan); - } - - HandlerT handler; - }; - - /////////////////////////////////////////////////////////////////////////// - // - // guard class - // - // fallback_parser objects are not instantiated directly. The guard - // class is used to indirectly create a fallback_parser object. - // guards are typically predeclared just like assertions (see the - // assertion class above; the example extends the previous example - // introduced in the assertion class above): - // - // guard my_guard; - // - // Errors, in this example is the error descriptor type we want to - // detect; This is essentially the ErrorDescrT template parameter - // of the fallback_parser class. - // - // my_guard may now be used in a grammar declaration as: - // - // my_guard(p)[h] - // - // where p is a parser, h is a function or functor compatible with - // fallback_parser's HandlerT (see above). - // - /////////////////////////////////////////////////////////////////////////// - template - struct guard_gen : public unary - { - typedef guard parser_generator_t; - typedef unary_parser_category parser_category_t; - - guard_gen(ParserT const& p) - : unary(p) {} - - template - fallback_parser - operator[](HandlerT const& handler) const - { - return fallback_parser - (this->subject(), handler); - } - }; - - template - struct guard - { - template - struct result - { - typedef guard_gen type; - }; - - template - static guard_gen - generate(ParserT const& parser) - { - return guard_gen(parser); - } - - template - guard_gen - operator()(ParserT const& parser) const - { - return guard_gen(parser); - } - }; - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#include -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/error_handling/exceptions_fwd.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/error_handling/exceptions_fwd.hpp deleted file mode 100644 index a8c132cf812c..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/error_handling/exceptions_fwd.hpp +++ /dev/null @@ -1,41 +0,0 @@ -/*============================================================================= - Copyright (c) 2006 Tobias Schwinger - http://spirit.sourceforge.net/ - - 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_EXCEPTIONS_FWD_HPP) -#define BOOST_SPIRIT_EXCEPTIONS_FWD_HPP - -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - template - struct parser_error; - - template - struct assertive_parser; - - template - struct assertion; - - template - struct error_status; - - template - struct fallback_parser; - - template - struct guard; - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/error_handling/impl/exceptions.ipp b/framework/contrib/boost/include/boost/spirit/home/classic/error_handling/impl/exceptions.ipp deleted file mode 100644 index 1cc63e798cd2..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/error_handling/impl/exceptions.ipp +++ /dev/null @@ -1,93 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2003 Joel de Guzman - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_EXCEPTIONS_IPP -#define BOOST_SPIRIT_EXCEPTIONS_IPP - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -namespace impl { - -#ifdef __BORLANDC__ - template - typename parser_result::type - fallback_parser_helper(ParserT const& subject, ScannerT const& scan); -#endif - - template - RT fallback_parser_parse(ParserT const& p, ScannerT const& scan) - { - typedef typename ScannerT::iterator_t iterator_t; - typedef typename RT::attr_t attr_t; - typedef error_status error_status_t; - typedef typename ParserT::error_descr_t error_descr_t; - - iterator_t save = scan.first; - error_status_t hr(error_status_t::retry); - - while (hr.result == error_status_t::retry) - { - try - { - #ifndef __BORLANDC__ - return p.subject().parse(scan); - #else - return impl::fallback_parser_helper(p, scan); - #endif - } - - catch (parser_error& error) - { - scan.first = save; - hr = p.handler(scan, error); - switch (hr.result) - { - case error_status_t::fail: - return scan.no_match(); - case error_status_t::accept: - return scan.create_match - (std::size_t(hr.length), hr.value, save, scan.first); - case error_status_t::rethrow: - boost::throw_exception(error); - default: - continue; - } - } - } - return scan.no_match(); - } - -/////////////////////////////////////////////////////////////////////////// -// -// Borland does not like calling the subject directly in the try block. -// Removing the #ifdef __BORLANDC__ code makes Borland complain that -// some variables and types cannot be found in the catch block. Weird! -// -/////////////////////////////////////////////////////////////////////////// -#ifdef __BORLANDC__ - - template - typename parser_result::type - fallback_parser_helper(ParserT const& p, ScannerT const& scan) - { - return p.subject().parse(scan); - } - -#endif - -} - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace boost::spirit::impl - -/////////////////////////////////////////////////////////////////////////////// -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/error_handling/typeof.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/error_handling/typeof.hpp deleted file mode 100644 index 9e31cce62bde..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/error_handling/typeof.hpp +++ /dev/null @@ -1,33 +0,0 @@ -/*============================================================================= - Copyright (c) 2006 Tobias Schwinger - http://spirit.sourceforge.net/ - - 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_ERROR_HANDLING_TYPEOF_HPP) -#define BOOST_SPIRIT_ERROR_HANDLING_TYPEOF_HPP - -#include - -#include - -#include - - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - - -// exceptions.hpp (has forward header) - -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::parser_error,2) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::assertive_parser,2) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::error_status,1) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::fallback_parser,3) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::guard,1) - -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::error_status<>) - - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/iterator.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/iterator.hpp deleted file mode 100644 index fb2b68f17c68..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/iterator.hpp +++ /dev/null @@ -1,25 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2003 Daniel Nuffer - Copyright (c) 2003 Giovanni Bajo - http://spirit.sourceforge.net/ - - 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_ITERATOR_MAIN_HPP) -#define BOOST_SPIRIT_ITERATOR_MAIN_HPP - -#include - -/////////////////////////////////////////////////////////////////////////////// -// -// Master header for Spirit.Iterators -// -/////////////////////////////////////////////////////////////////////////////// - -#include -#include -#include -#include - -#endif // !defined(BOOST_SPIRIT_ITERATOR_MAIN_HPP) diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/iterator/file_iterator.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/iterator/file_iterator.hpp deleted file mode 100644 index 5c20f15fe375..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/iterator/file_iterator.hpp +++ /dev/null @@ -1,229 +0,0 @@ -/*============================================================================= - Copyright (c) 2003 Giovanni Bajo - Copyright (c) 2003 Thomas Witt - Copyright (c) 2003 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ - -/////////////////////////////////////////////////////////////////////////////// -// -// File Iterator structure -// -// The new structure is designed on layers. The top class (used by the user) -// is file_iterator, which implements a full random access iterator through -// the file, and some specific member functions (constructor that opens -// the file, make_end() to generate the end iterator, operator bool to check -// if the file was opened correctly). -// -// file_iterator implements the random access iterator interface by the means -// of boost::iterator_adaptor, that is inhering an object created with it. -// iterator_adaptor gets a low-level file iterator implementation (with just -// a few member functions) and a policy (that basically describes to it how -// the low-level file iterator interface is). The advantage is that -// with boost::iterator_adaptor only 5 functions are needed to implement -// a fully conformant random access iterator, instead of dozens of functions -// and operators. -// -// There are two low-level file iterators implemented in this module. The -// first (std_file_iterator) uses cstdio stream functions (fopen/fread), which -// support full buffering, and is available everywhere (it's standard C++). -// The second (mmap_file_iterator) is currently available only on Windows -// platforms, and uses memory mapped files, which gives a decent speed boost. -// -/////////////////////////////////////////////////////////////////////////////// -// -// TODO LIST: -// -// - In the Win32 mmap iterator, we could check if keeping a handle to the -// opened file is really required. If it's not, we can just store the file -// length (for make_end()) and save performance. Notice that this should be -// tested under different Windows versions, the behaviour might change. -// - Add some error support (by the means of some exceptions) in case of -// low-level I/O failure. -// -/////////////////////////////////////////////////////////////////////////////// - -#ifndef BOOST_SPIRIT_FILE_ITERATOR_HPP -#define BOOST_SPIRIT_FILE_ITERATOR_HPP - -#include -#include -#include -#include -#include - -#include - -#if !defined(BOOST_SPIRIT_FILEITERATOR_STD) -# if (defined(WIN32) || defined(_WIN32) || defined(__WIN32__)) \ - && !defined(BOOST_DISABLE_WIN32) -# define BOOST_SPIRIT_FILEITERATOR_WINDOWS -# elif defined(BOOST_HAS_UNISTD_H) -extern "C" -{ -# include -} -# ifdef _POSIX_MAPPED_FILES -# define BOOST_SPIRIT_FILEITERATOR_POSIX -# endif // _POSIX_MAPPED_FILES -# endif // BOOST_HAS_UNISTD_H - -# if !defined(BOOST_SPIRIT_FILEITERATOR_WINDOWS) && \ - !defined(BOOST_SPIRIT_FILEITERATOR_POSIX) -# define BOOST_SPIRIT_FILEITERATOR_STD -# endif -#endif // BOOST_SPIRIT_FILEITERATOR_STD - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -template < - typename CharT = char, - typename BaseIterator = -#ifdef BOOST_SPIRIT_FILEITERATOR_STD - fileiter_impl::std_file_iterator -#else - fileiter_impl::mmap_file_iterator -#endif -> class file_iterator; - -/////////////////////////////////////////////////////////////////////////////// -namespace fileiter_impl { - - ///////////////////////////////////////////////////////////////////////// - // - // file_iter_generator - // - // Template meta-function to invoke boost::iterator_adaptor - // NOTE: This cannot be moved into the implementation file because of - // a bug of MSVC 7.0 and previous versions (base classes types are - // looked up at compilation time, not instantion types, and - // file_iterator would break). - // - ///////////////////////////////////////////////////////////////////////// - -#if !defined(BOOST_ITERATOR_ADAPTORS_VERSION) || \ - BOOST_ITERATOR_ADAPTORS_VERSION < 0x0200 -#error "Please use at least Boost V1.31.0 while compiling the file_iterator class!" -#else // BOOST_ITERATOR_ADAPTORS_VERSION < 0x0200 - - template - struct file_iter_generator - { - public: - typedef BaseIteratorT adapted_t; - typedef typename adapted_t::value_type value_type; - - typedef boost::iterator_adaptor < - file_iterator, - adapted_t, - value_type const, - std::random_access_iterator_tag, - boost::use_default, - std::ptrdiff_t - > type; - }; - -#endif // BOOST_ITERATOR_ADAPTORS_VERSION < 0x0200 - -/////////////////////////////////////////////////////////////////////////////// -} /* namespace impl */ - - -/////////////////////////////////////////////////////////////////////////////// -// -// file_iterator -// -// Iterates through an opened file. -// -// The main iterator interface is implemented by the iterator_adaptors -// library, which wraps a conforming iterator interface around the -// impl::BaseIterator class. This class merely derives the iterator_adaptors -// generated class to implement the custom constructors and make_end() -// member function. -// -/////////////////////////////////////////////////////////////////////////////// - -template -class file_iterator - : public fileiter_impl::file_iter_generator::type, - public safe_bool > -{ -private: - typedef typename - fileiter_impl::file_iter_generator::type - base_t; - typedef typename - fileiter_impl::file_iter_generator::adapted_t - adapted_t; - -public: - file_iterator() - {} - - file_iterator(std::string const& fileName) - : base_t(adapted_t(fileName)) - {} - - file_iterator(const base_t& iter) - : base_t(iter) - {} - - inline file_iterator& operator=(const base_t& iter); - file_iterator make_end(void); - - // operator bool. This borrows a trick from boost::shared_ptr to avoid - // to interfere with arithmetic operations. - bool operator_bool(void) const - { return this->base(); } - -private: - friend class ::boost::iterator_core_access; - - typename base_t::reference dereference() const - { - return this->base_reference().get_cur_char(); - } - - void increment() - { - this->base_reference().next_char(); - } - - void decrement() - { - this->base_reference().prev_char(); - } - - void advance(typename base_t::difference_type n) - { - this->base_reference().advance(n); - } - - template < - typename OtherDerivedT, typename OtherIteratorT, - typename V, typename C, typename R, typename D - > - typename base_t::difference_type distance_to( - iterator_adaptor - const &x) const - { - return x.base().distance(this->base_reference()); - } -}; - -/////////////////////////////////////////////////////////////////////////////// -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} /* namespace BOOST_SPIRIT_CLASSIC_NS */ - -/////////////////////////////////////////////////////////////////////////////// -#include /* implementation */ - -#endif /* BOOST_SPIRIT_FILE_ITERATOR_HPP */ - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/iterator/file_iterator_fwd.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/iterator/file_iterator_fwd.hpp deleted file mode 100644 index fb732d56e689..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/iterator/file_iterator_fwd.hpp +++ /dev/null @@ -1,39 +0,0 @@ -/*============================================================================= - Copyright (c) 2006 Tobias Schwinger - http://spirit.sourceforge.net/ - - 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_FILE_ITERATOR_FWD_HPP) -#define BOOST_SPIRIT_FILE_ITERATOR_FWD_HPP - -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - namespace fileiter_impl - { - template - class std_file_iterator; - - // may never be defined -- so what... - template - class mmap_file_iterator; - } - - // no defaults here -- too much dependencies - template < - typename CharT, - typename BaseIterator - > class file_iterator; - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/iterator/fixed_size_queue.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/iterator/fixed_size_queue.hpp deleted file mode 100644 index 98de03889aa5..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/iterator/fixed_size_queue.hpp +++ /dev/null @@ -1,402 +0,0 @@ -/*============================================================================= - Copyright (c) 2001, Daniel C. Nuffer - Copyright (c) 2003, Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_CLASSIC_ITERATOR_FIXED_SIZE_QUEUE_HPP -#define BOOST_SPIRIT_CLASSIC_ITERATOR_FIXED_SIZE_QUEUE_HPP - -#include -#include -#include - -#include -#include // for BOOST_SPIRIT_ASSERT - -// FIXES for broken compilers -#include -#include - -#define BOOST_SPIRIT_ASSERT_FSQ_SIZE \ - BOOST_SPIRIT_ASSERT(((m_tail + N + 1) - m_head) % (N+1) == m_size % (N+1)) \ - /**/ - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -/////////////////////////////////////////////////////////////////////////////// -namespace impl { - -#if !defined(BOOST_ITERATOR_ADAPTORS_VERSION) || \ - BOOST_ITERATOR_ADAPTORS_VERSION < 0x0200 -#error "Please use at least Boost V1.31.0 while compiling the fixed_size_queue class!" -#else // BOOST_ITERATOR_ADAPTORS_VERSION < 0x0200 - -template -class fsq_iterator -: public boost::iterator_adaptor< - fsq_iterator, - PointerT, - T, - std::random_access_iterator_tag - > -{ -public: - typedef typename QueueT::position_t position; - typedef boost::iterator_adaptor< - fsq_iterator, PointerT, T, - std::random_access_iterator_tag - > base_t; - - fsq_iterator() {} - fsq_iterator(position const &p_) : p(p_) {} - - position const &get_position() const { return p; } - -private: - friend class boost::iterator_core_access; - - typename base_t::reference dereference() const - { - return p.self->m_queue[p.pos]; - } - - void increment() - { - ++p.pos; - if (p.pos == QueueT::MAX_SIZE+1) - p.pos = 0; - } - - void decrement() - { - if (p.pos == 0) - p.pos = QueueT::MAX_SIZE; - else - --p.pos; - } - - template < - typename OtherDerivedT, typename OtherIteratorT, - typename V, typename C, typename R, typename D - > - bool equal(iterator_adaptor - const &x) const - { - position const &rhs_pos = - static_cast(x).get_position(); - return (p.self == rhs_pos.self) && (p.pos == rhs_pos.pos); - } - - template < - typename OtherDerivedT, typename OtherIteratorT, - typename V, typename C, typename R, typename D - > - typename base_t::difference_type distance_to( - iterator_adaptor - const &x) const - { - typedef typename base_t::difference_type diff_t; - - position const &p2 = - static_cast(x).get_position(); - std::size_t pos1 = p.pos; - std::size_t pos2 = p2.pos; - - // Undefined behaviour if the iterators come from different - // containers - BOOST_SPIRIT_ASSERT(p.self == p2.self); - - if (pos1 < p.self->m_head) - pos1 += QueueT::MAX_SIZE; - if (pos2 < p2.self->m_head) - pos2 += QueueT::MAX_SIZE; - - if (pos2 > pos1) - return diff_t(pos2 - pos1); - else - return -diff_t(pos1 - pos2); - } - - void advance(typename base_t::difference_type n) - { - // Notice that we don't care values of n that can - // wrap around more than one time, since it would - // be undefined behaviour anyway (going outside - // the begin/end range). Negative wrapping is a bit - // cumbersome because we don't want to case p.pos - // to signed. - if (n < 0) - { - n = -n; - if (p.pos < (std::size_t)n) - p.pos = QueueT::MAX_SIZE+1 - (n - p.pos); - else - p.pos -= n; - } - else - { - p.pos += n; - if (p.pos >= QueueT::MAX_SIZE+1) - p.pos -= QueueT::MAX_SIZE+1; - } - } - -private: - position p; -}; - -#endif // BOOST_ITERATOR_ADAPTORS_VERSION < 0x0200 - -/////////////////////////////////////////////////////////////////////////////// -} /* namespace impl */ - -template -class fixed_size_queue -{ -private: - struct position - { - fixed_size_queue* self; - std::size_t pos; - - position() : self(0), pos(0) {} - - // The const_cast here is just to avoid to have two different - // position structures for the const and non-const case. - // The const semantic is guaranteed by the iterator itself - position(const fixed_size_queue* s, std::size_t p) - : self(const_cast(s)), pos(p) - {} - }; - -public: - // Declare the iterators - typedef impl::fsq_iterator, T, T*> iterator; - typedef impl::fsq_iterator, T const, T const*> - const_iterator; - typedef position position_t; - - friend class impl::fsq_iterator, T, T*>; - friend class impl::fsq_iterator, T const, T const*>; - - fixed_size_queue(); - fixed_size_queue(const fixed_size_queue& x); - fixed_size_queue& operator=(const fixed_size_queue& x); - ~fixed_size_queue(); - - void push_back(const T& e); - void push_front(const T& e); - void serve(T& e); - void pop_front(); - - bool empty() const - { - return m_size == 0; - } - - bool full() const - { - return m_size == N; - } - - iterator begin() - { - return iterator(position(this, m_head)); - } - - const_iterator begin() const - { - return const_iterator(position(this, m_head)); - } - - iterator end() - { - return iterator(position(this, m_tail)); - } - - const_iterator end() const - { - return const_iterator(position(this, m_tail)); - } - - std::size_t size() const - { - return m_size; - } - - T& front() - { - return m_queue[m_head]; - } - - const T& front() const - { - return m_queue[m_head]; - } - -private: - // Redefine the template parameters to avoid using partial template - // specialization on the iterator policy to extract N. - BOOST_STATIC_CONSTANT(std::size_t, MAX_SIZE = N); - - std::size_t m_head; - std::size_t m_tail; - std::size_t m_size; - T m_queue[N+1]; -}; - -template -inline -fixed_size_queue::fixed_size_queue() - : m_head(0) - , m_tail(0) - , m_size(0) -{ - BOOST_SPIRIT_ASSERT(m_size <= N+1); - BOOST_SPIRIT_ASSERT_FSQ_SIZE; - BOOST_SPIRIT_ASSERT(m_head <= N+1); - BOOST_SPIRIT_ASSERT(m_tail <= N+1); -} - -template -inline -fixed_size_queue::fixed_size_queue(const fixed_size_queue& x) - : m_head(x.m_head) - , m_tail(x.m_tail) - , m_size(x.m_size) -{ - copy(x.begin(), x.end(), begin()); - BOOST_SPIRIT_ASSERT(m_size <= N+1); - BOOST_SPIRIT_ASSERT_FSQ_SIZE; - BOOST_SPIRIT_ASSERT(m_head <= N+1); - BOOST_SPIRIT_ASSERT(m_tail <= N+1); -} - -template -inline fixed_size_queue& -fixed_size_queue::operator=(const fixed_size_queue& x) -{ - if (this != &x) - { - m_head = x.m_head; - m_tail = x.m_tail; - m_size = x.m_size; - copy(x.begin(), x.end(), begin()); - } - BOOST_SPIRIT_ASSERT(m_size <= N+1); - BOOST_SPIRIT_ASSERT_FSQ_SIZE; - BOOST_SPIRIT_ASSERT(m_head <= N+1); - BOOST_SPIRIT_ASSERT(m_tail <= N+1); - - return *this; -} - -template -inline -fixed_size_queue::~fixed_size_queue() -{ - BOOST_SPIRIT_ASSERT(m_size <= N+1); - BOOST_SPIRIT_ASSERT_FSQ_SIZE; - BOOST_SPIRIT_ASSERT(m_head <= N+1); - BOOST_SPIRIT_ASSERT(m_tail <= N+1); -} - -template -inline void -fixed_size_queue::push_back(const T& e) -{ - BOOST_SPIRIT_ASSERT(m_size <= N+1); - BOOST_SPIRIT_ASSERT_FSQ_SIZE; - BOOST_SPIRIT_ASSERT(m_head <= N+1); - BOOST_SPIRIT_ASSERT(m_tail <= N+1); - - BOOST_SPIRIT_ASSERT(!full()); - - m_queue[m_tail] = e; - ++m_size; - ++m_tail; - if (m_tail == N+1) - m_tail = 0; - - - BOOST_SPIRIT_ASSERT(m_size <= N+1); - BOOST_SPIRIT_ASSERT_FSQ_SIZE; - BOOST_SPIRIT_ASSERT(m_head <= N+1); - BOOST_SPIRIT_ASSERT(m_tail <= N+1); -} - -template -inline void -fixed_size_queue::push_front(const T& e) -{ - BOOST_SPIRIT_ASSERT(m_size <= N+1); - BOOST_SPIRIT_ASSERT_FSQ_SIZE; - BOOST_SPIRIT_ASSERT(m_head <= N+1); - BOOST_SPIRIT_ASSERT(m_tail <= N+1); - - BOOST_SPIRIT_ASSERT(!full()); - - if (m_head == 0) - m_head = N; - else - --m_head; - - m_queue[m_head] = e; - ++m_size; - - BOOST_SPIRIT_ASSERT(m_size <= N+1); - BOOST_SPIRIT_ASSERT_FSQ_SIZE; - BOOST_SPIRIT_ASSERT(m_head <= N+1); - BOOST_SPIRIT_ASSERT(m_tail <= N+1); -} - - -template -inline void -fixed_size_queue::serve(T& e) -{ - BOOST_SPIRIT_ASSERT(m_size <= N+1); - BOOST_SPIRIT_ASSERT_FSQ_SIZE; - BOOST_SPIRIT_ASSERT(m_head <= N+1); - BOOST_SPIRIT_ASSERT(m_tail <= N+1); - - e = m_queue[m_head]; - pop_front(); -} - - - -template -inline void -fixed_size_queue::pop_front() -{ - BOOST_SPIRIT_ASSERT(m_size <= N+1); - BOOST_SPIRIT_ASSERT_FSQ_SIZE; - BOOST_SPIRIT_ASSERT(m_head <= N+1); - BOOST_SPIRIT_ASSERT(m_tail <= N+1); - - ++m_head; - if (m_head == N+1) - m_head = 0; - --m_size; - - BOOST_SPIRIT_ASSERT(m_size <= N+1); - BOOST_SPIRIT_ASSERT_FSQ_SIZE; - BOOST_SPIRIT_ASSERT(m_head <= N+1); - BOOST_SPIRIT_ASSERT(m_tail <= N+1); -} - -/////////////////////////////////////////////////////////////////////////////// -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#undef BOOST_SPIRIT_ASSERT_FSQ_SIZE - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/iterator/impl/file_iterator.ipp b/framework/contrib/boost/include/boost/spirit/home/classic/iterator/impl/file_iterator.ipp deleted file mode 100644 index 4953e86a64fc..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/iterator/impl/file_iterator.ipp +++ /dev/null @@ -1,463 +0,0 @@ -/*============================================================================= - Copyright (c) 2003 Giovanni Bajo - Copyright (c) 2003 Martin Wille - Copyright (c) 2003 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ - -#ifndef BOOST_SPIRIT_FILE_ITERATOR_IPP -#define BOOST_SPIRIT_FILE_ITERATOR_IPP - -#ifdef BOOST_SPIRIT_FILEITERATOR_WINDOWS -# include -#endif - -#include -#include - -#ifdef BOOST_SPIRIT_FILEITERATOR_WINDOWS -# include -#endif - -#ifdef BOOST_SPIRIT_FILEITERATOR_POSIX -# include // open, stat, mmap, munmap -# include // stat -# include // open -# include // stat, mmap, munmap -# include // mmap, mmunmap -#endif - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -/////////////////////////////////////////////////////////////////////////////// -namespace fileiter_impl { - -/////////////////////////////////////////////////////////////////////////////// -// -// std_file_iterator -// -// Base class that implements iteration through a file using standard C -// stream library (fopen and friends). This class and the following are -// the base components on which the iterator is built (through the -// iterator adaptor library). -// -// The opened file stream (FILE) is held with a shared_ptr<>, whose -// custom deleter invokes fcose(). This makes the syntax of the class -// very easy, especially everything related to copying. -// -/////////////////////////////////////////////////////////////////////////////// - -template -class std_file_iterator -{ -public: - typedef CharT value_type; - - std_file_iterator() - {} - - explicit std_file_iterator(std::string const& fileName) - { - using namespace std; - FILE* f = fopen(fileName.c_str(), "rb"); - - // If the file was opened, store it into - // the smart pointer. - if (f) - { - m_file.reset(f, fclose); - m_pos = 0; - m_eof = false; - update_char(); - } - } - - std_file_iterator(const std_file_iterator& iter) - { *this = iter; } - - std_file_iterator& operator=(const std_file_iterator& iter) - { - m_file = iter.m_file; - m_curChar = iter.m_curChar; - m_eof = iter.m_eof; - m_pos = iter.m_pos; - - return *this; - } - - // Nasty bug in Comeau up to 4.3.0.1, we need explicit boolean context - // for shared_ptr to evaluate correctly - operator bool() const - { return m_file ? true : false; } - - bool operator==(const std_file_iterator& iter) const - { - return (m_file == iter.m_file) && (m_eof == iter.m_eof) && - (m_pos == iter.m_pos); - } - - const CharT& get_cur_char(void) const - { - return m_curChar; - } - - void prev_char(void) - { - m_pos -= sizeof(CharT); - update_char(); - } - - void next_char(void) - { - m_pos += sizeof(CharT); - update_char(); - } - - void seek_end(void) - { - using namespace std; - fseek(m_file.get(), 0, SEEK_END); - m_pos = ftell(m_file.get()) / sizeof(CharT); - m_eof = true; - } - - void advance(std::ptrdiff_t n) - { - m_pos += static_cast(n) * sizeof(CharT); - update_char(); - } - - std::ptrdiff_t distance(const std_file_iterator& iter) const - { - return (std::ptrdiff_t)(m_pos - iter.m_pos) / sizeof(CharT); - } - -private: - boost::shared_ptr m_file; - long m_pos; - CharT m_curChar; - bool m_eof; - - void update_char(void) - { - using namespace std; - if (ftell(m_file.get()) != m_pos) - fseek(m_file.get(), m_pos, SEEK_SET); - - m_eof = (fread(&m_curChar, sizeof(CharT), 1, m_file.get()) < 1); - } -}; - - -/////////////////////////////////////////////////////////////////////////////// -// -// mmap_file_iterator -// -// File iterator for memory mapped files, for now implemented on Windows and -// POSIX platforms. This class has the same interface of std_file_iterator, -// and can be used in its place (in fact, it's the default for Windows and -// POSIX). -// -/////////////////////////////////////////////////////////////////////////////// - -/////////////////////////////////////////////////////////////////////////////// -// mmap_file_iterator, Windows version -#ifdef BOOST_SPIRIT_FILEITERATOR_WINDOWS -template -class mmap_file_iterator -{ -public: - typedef CharT value_type; - - mmap_file_iterator() - : m_filesize(0), m_curChar(0) - {} - - explicit mmap_file_iterator(std::string const& fileName) - : m_filesize(0), m_curChar(0) - { - HANDLE hFile = ::CreateFileA( - fileName.c_str(), - GENERIC_READ, - FILE_SHARE_READ, - NULL, - OPEN_EXISTING, - FILE_FLAG_SEQUENTIAL_SCAN, - NULL - ); - - if (hFile == INVALID_HANDLE_VALUE) - return; - - // Store the size of the file, it's used to construct - // the end iterator - m_filesize = ::GetFileSize(hFile, NULL); - - HANDLE hMap = ::CreateFileMapping( - hFile, - NULL, - PAGE_READONLY, - 0, 0, - NULL - ); - - if (hMap == NULL) - { - ::CloseHandle(hFile); - return; - } - - LPVOID pMem = ::MapViewOfFile( - hMap, - FILE_MAP_READ, - 0, 0, 0 - ); - - if (pMem == NULL) - { - ::CloseHandle(hMap); - ::CloseHandle(hFile); - return; - } - - // We hold both the file handle and the memory pointer. - // We can close the hMap handle now because Windows holds internally - // a reference to it since there is a view mapped. - ::CloseHandle(hMap); - - // It seems like we can close the file handle as well (because - // a reference is hold by the filemap object). - ::CloseHandle(hFile); - - // Store the handles inside the shared_ptr (with the custom destructors) - m_mem.reset(static_cast(pMem), ::UnmapViewOfFile); - - // Start of the file - m_curChar = m_mem.get(); - } - - mmap_file_iterator(const mmap_file_iterator& iter) - { *this = iter; } - - mmap_file_iterator& operator=(const mmap_file_iterator& iter) - { - m_curChar = iter.m_curChar; - m_mem = iter.m_mem; - m_filesize = iter.m_filesize; - - return *this; - } - - // Nasty bug in Comeau up to 4.3.0.1, we need explicit boolean context - // for shared_ptr to evaluate correctly - operator bool() const - { return m_mem ? true : false; } - - bool operator==(const mmap_file_iterator& iter) const - { return m_curChar == iter.m_curChar; } - - const CharT& get_cur_char(void) const - { return *m_curChar; } - - void next_char(void) - { m_curChar++; } - - void prev_char(void) - { m_curChar--; } - - void advance(std::ptrdiff_t n) - { m_curChar += n; } - - std::ptrdiff_t distance(const mmap_file_iterator& iter) const - { return m_curChar - iter.m_curChar; } - - void seek_end(void) - { - m_curChar = m_mem.get() + - (m_filesize / sizeof(CharT)); - } - -private: - typedef boost::remove_pointer::type handle_t; - - boost::shared_ptr m_mem; - std::size_t m_filesize; - CharT* m_curChar; -}; - -#endif // BOOST_SPIRIT_FILEITERATOR_WINDOWS - -/////////////////////////////////////////////////////////////////////////////// -// mmap_file_iterator, POSIX version -#ifdef BOOST_SPIRIT_FILEITERATOR_POSIX -template -class mmap_file_iterator -{ -private: - struct mapping - { - mapping(void *p, off_t len) - : data(p) - , size(len) - { } - - CharT const *begin() const - { - return static_cast(data); - } - - CharT const *end() const - { - return static_cast(data) + size/sizeof(CharT); - } - - ~mapping() - { - munmap(static_cast(data), size); - } - - private: - void *data; - off_t size; - }; - -public: - typedef CharT value_type; - - mmap_file_iterator() - : m_curChar(0) - {} - - explicit mmap_file_iterator(std::string const& file_name) - : m_curChar(0) - { - // open the file - int fd = open(file_name.c_str(), -#ifdef O_NOCTTY - O_NOCTTY | // if stdin was closed then opening a file - // would cause the file to become the controlling - // terminal if the filename refers to a tty. Setting - // O_NOCTTY inhibits this. -#endif - O_RDONLY); - - if (fd == -1) - return; - - // call fstat to find get information about the file just - // opened (size and file type) - struct stat stat_buf; - if ((fstat(fd, &stat_buf) != 0) || !S_ISREG(stat_buf.st_mode)) - { // if fstat returns an error or if the file isn't a - // regular file we give up. - close(fd); - return; - } - - // perform the actual mapping - void *p = mmap(0, stat_buf.st_size, PROT_READ, MAP_SHARED, fd, 0); - // it is safe to close() here. POSIX requires that the OS keeps a - // second handle to the file while the file is mmapped. - close(fd); - - if (p == MAP_FAILED) - return; - - mapping *m = 0; - try - { - m = new mapping(p, stat_buf.st_size); - } - catch(...) - { - munmap(static_cast(p), stat_buf.st_size); - throw; - } - - m_mem.reset(m); - - // Start of the file - m_curChar = m_mem->begin(); - } - - mmap_file_iterator(const mmap_file_iterator& iter) - { *this = iter; } - - mmap_file_iterator& operator=(const mmap_file_iterator& iter) - { - m_curChar = iter.m_curChar; - m_mem = iter.m_mem; - - return *this; - } - - // Nasty bug in Comeau up to 4.3.0.1, we need explicit boolean context - // for shared_ptr to evaluate correctly - operator bool() const - { return m_mem ? true : false; } - - bool operator==(const mmap_file_iterator& iter) const - { return m_curChar == iter.m_curChar; } - - const CharT& get_cur_char(void) const - { return *m_curChar; } - - void next_char(void) - { m_curChar++; } - - void prev_char(void) - { m_curChar--; } - - void advance(signed long n) - { m_curChar += n; } - - long distance(const mmap_file_iterator& iter) const - { return m_curChar - iter.m_curChar; } - - void seek_end(void) - { - m_curChar = m_mem->end(); - } - -private: - - boost::shared_ptr m_mem; - CharT const* m_curChar; -}; - -#endif // BOOST_SPIRIT_FILEITERATOR_POSIX - -/////////////////////////////////////////////////////////////////////////////// -} /* namespace boost::spirit::fileiter_impl */ - -template -file_iterator -file_iterator::make_end(void) -{ - file_iterator iter(*this); - iter.base_reference().seek_end(); - return iter; -} - -template -file_iterator& -file_iterator::operator=(const base_t& iter) -{ - base_t::operator=(iter); - return *this; -} - -/////////////////////////////////////////////////////////////////////////////// -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} /* namespace boost::spirit */ - - -#endif /* BOOST_SPIRIT_FILE_ITERATOR_IPP */ diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/iterator/impl/position_iterator.ipp b/framework/contrib/boost/include/boost/spirit/home/classic/iterator/impl/position_iterator.ipp deleted file mode 100644 index 5a9e485a7e02..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/iterator/impl/position_iterator.ipp +++ /dev/null @@ -1,150 +0,0 @@ -/*============================================================================= - Copyright (c) 2002 Juan Carlos Arevalo-Baeza - Copyright (c) 2002-2006 Hartmut Kaiser - Copyright (c) 2003 Giovanni Bajo - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_CLASSIC_ITERATOR_IMPL_POSITION_ITERATOR_IPP -#define BOOST_SPIRIT_CLASSIC_ITERATOR_IMPL_POSITION_ITERATOR_IPP - -#include -#include -#include -#include -#include -#include // for nil_t -#include // for std::iterator_traits - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -/////////////////////////////////////////////////////////////////////////////// -// -// position_policy -// -// Specialization to handle file_position_without_column. Only take care of -// newlines since no column tracking is needed. -// -/////////////////////////////////////////////////////////////////////////////// -template -class position_policy > { - -public: - void next_line(file_position_without_column_base& pos) - { - ++pos.line; - } - - void set_tab_chars(unsigned int /*chars*/){} - void next_char(file_position_without_column_base& /*pos*/) {} - void tabulation(file_position_without_column_base& /*pos*/) {} -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// position_policy -// -// Specialization to handle file_position. Track characters and tabulation -// to compute the current column correctly. -// -// Default tab size is 4. You can change this with the set_tabchars member -// of position_iterator. -// -/////////////////////////////////////////////////////////////////////////////// -template -class position_policy > { - -public: - position_policy() - : m_CharsPerTab(4) - {} - - void next_line(file_position_base& pos) - { - ++pos.line; - pos.column = 1; - } - - void set_tab_chars(unsigned int chars) - { - m_CharsPerTab = chars; - } - - void next_char(file_position_base& pos) - { - ++pos.column; - } - - void tabulation(file_position_base& pos) - { - pos.column += m_CharsPerTab - (pos.column - 1) % m_CharsPerTab; - } - -private: - unsigned int m_CharsPerTab; -}; - -/* namespace boost::spirit { */ namespace iterator_ { namespace impl { - -template -struct make_const : boost::add_const -{}; - -template -struct make_const -{ - typedef typename boost::add_const::type& type; -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// position_iterator_base_generator -// -// Metafunction to generate the iterator type using boost::iterator_adaptors, -// hiding all the metaprogramming thunking code in it. It is used -// mainly to keep the public interface (position_iterator) cleanear. -// -/////////////////////////////////////////////////////////////////////////////// -template -struct position_iterator_base_generator -{ -private: - typedef std::iterator_traits traits; - typedef typename traits::value_type value_type; - typedef typename traits::iterator_category iter_category_t; - typedef typename traits::reference reference; - - // Position iterator is always a non-mutable iterator - typedef typename boost::add_const::type const_value_type; - -public: - // Check if the MainIterT is nil. If it's nil, it means that the actual - // self type is position_iterator. Otherwise, it's a real type we - // must use - typedef typename boost::mpl::if_< - typename boost::is_same::type, - position_iterator, - MainIterT - >::type main_iter_t; - - typedef boost::iterator_adaptor< - main_iter_t, - ForwardIterT, - const_value_type, - boost::forward_traversal_tag, - typename make_const::type - > type; -}; - -}} - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} /* namespace boost::spirit::iterator_::impl */ - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/iterator/multi_pass.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/iterator/multi_pass.hpp deleted file mode 100644 index ff27d4e2c676..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/iterator/multi_pass.hpp +++ /dev/null @@ -1,1298 +0,0 @@ -/*============================================================================= - Copyright (c) 2001, Daniel C. Nuffer - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_ITERATOR_MULTI_PASS_HPP -#define BOOST_SPIRIT_ITERATOR_MULTI_PASS_HPP - -#include -#include -#include -#include -#include -#include // for std::swap -#include // for std::exception -#include - -#include -#include // for BOOST_SPIRIT_ASSERT -#include - -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -namespace impl { - template - inline void mp_swap(T& t1, T& t2); -} - -namespace multi_pass_policies -{ - -/////////////////////////////////////////////////////////////////////////////// -// class ref_counted -// Implementation of an OwnershipPolicy used by multi_pass. -// -// Implementation modified from RefCounted class from the Loki library by -// Andrei Alexandrescu -/////////////////////////////////////////////////////////////////////////////// -class ref_counted -{ - protected: - ref_counted() - : count(new std::size_t(1)) - {} - - ref_counted(ref_counted const& x) - : count(x.count) - {} - - // clone is called when a copy of the iterator is made, so increment - // the ref-count. - void clone() - { - ++*count; - } - - // called when a copy is deleted. Decrement the ref-count. Return - // value of true indicates that the last copy has been released. - bool release() - { - if (!--*count) - { - delete count; - count = 0; - return true; - } - return false; - } - - void swap(ref_counted& x) - { - impl::mp_swap(count, x.count); - } - - public: - // returns true if there is only one iterator in existence. - // std_deque StoragePolicy will free it's buffered data if this - // returns true. - bool unique() const - { - return *count == 1; - } - - private: - std::size_t* count; -}; - -/////////////////////////////////////////////////////////////////////////////// -// class first_owner -// Implementation of an OwnershipPolicy used by multi_pass -// This ownership policy dictates that the first iterator created will -// determine the lifespan of the shared components. This works well for -// spirit, since no dynamic allocation of iterators is done, and all copies -// are make on the stack. -// -// There is a caveat about using this policy together with the std_deque -// StoragePolicy. Since first_owner always returns false from unique(), -// std_deque will only release the queued data if clear_queue() is called. -/////////////////////////////////////////////////////////////////////////////// -class first_owner -{ - protected: - first_owner() - : first(true) - {} - - first_owner(first_owner const&) - : first(false) - {} - - void clone() - { - } - - // return true to indicate deletion of resources - bool release() - { - return first; - } - - void swap(first_owner&) - { - // if we're the first, we still remain the first, even if assigned - // to, so don't swap first_. swap is only called from operator= - } - - public: - bool unique() const - { - return false; // no way to know, so always return false - } - - private: - bool first; -}; - -/////////////////////////////////////////////////////////////////////////////// -// class illegal_backtracking -// thrown by buf_id_check CheckingPolicy if an instance of an iterator is -// used after another one has invalidated the queue -/////////////////////////////////////////////////////////////////////////////// -class BOOST_SYMBOL_VISIBLE illegal_backtracking : public std::exception -{ -public: - - illegal_backtracking() BOOST_NOEXCEPT_OR_NOTHROW {} - ~illegal_backtracking() BOOST_NOEXCEPT_OR_NOTHROW BOOST_OVERRIDE {} - - const char* - what() const BOOST_NOEXCEPT_OR_NOTHROW BOOST_OVERRIDE - { return "BOOST_SPIRIT_CLASSIC_NS::illegal_backtracking"; } -}; - -/////////////////////////////////////////////////////////////////////////////// -// class buf_id_check -// Implementation of the CheckingPolicy used by multi_pass -// This policy is most effective when used together with the std_deque -// StoragePolicy. -// If used with the fixed_size_queue StoragePolicy, it will not detect -// iterator dereferences that are out of the range of the queue. -/////////////////////////////////////////////////////////////////////////////// -class buf_id_check -{ - protected: - buf_id_check() - : shared_buf_id(new unsigned long(0)) - , buf_id(0) - {} - - buf_id_check(buf_id_check const& x) - : shared_buf_id(x.shared_buf_id) - , buf_id(x.buf_id) - {} - - // will be called from the destructor of the last iterator. - void destroy() - { - delete shared_buf_id; - shared_buf_id = 0; - } - - void swap(buf_id_check& x) - { - impl::mp_swap(shared_buf_id, x.shared_buf_id); - impl::mp_swap(buf_id, x.buf_id); - } - - // called to verify that everything is okay. - void check_if_valid() const - { - if (buf_id != *shared_buf_id) - { - boost::throw_exception(illegal_backtracking()); - } - } - - // called from multi_pass::clear_queue, so we can increment the count - void clear_queue() - { - ++*shared_buf_id; - ++buf_id; - } - - private: - unsigned long* shared_buf_id; - unsigned long buf_id; -}; - -/////////////////////////////////////////////////////////////////////////////// -// class no_check -// Implementation of the CheckingPolicy used by multi_pass -// It does not do anything :-) -/////////////////////////////////////////////////////////////////////////////// -class no_check -{ - protected: - no_check() {} - no_check(no_check const&) {} - void destroy() {} - void swap(no_check&) {} - void check_if_valid() const {} - void clear_queue() {} -}; - -/////////////////////////////////////////////////////////////////////////////// -// class std_deque -// Implementation of the StoragePolicy used by multi_pass -// This stores all data in a std::deque, and keeps an offset to the current -// position. It stores all the data unless there is only one -// iterator using the queue. -// Note: a position is used instead of an iterator, because a push_back on -// a deque can invalidate any iterators. -/////////////////////////////////////////////////////////////////////////////// -class std_deque -{ - public: - -template -class inner -{ - private: - - typedef std::deque queue_type; - queue_type* queuedElements; - mutable typename queue_type::size_type queuePosition; - - protected: - inner() - : queuedElements(new queue_type) - , queuePosition(0) - {} - - inner(inner const& x) - : queuedElements(x.queuedElements) - , queuePosition(x.queuePosition) - {} - - // will be called from the destructor of the last iterator. - void destroy() - { - BOOST_SPIRIT_ASSERT(NULL != queuedElements); - delete queuedElements; - queuedElements = 0; - } - - void swap(inner& x) - { - impl::mp_swap(queuedElements, x.queuedElements); - impl::mp_swap(queuePosition, x.queuePosition); - } - - // This is called when the iterator is dereferenced. It's a template - // method so we can recover the type of the multi_pass iterator - // and call unique and access the m_input data member. - template - static typename MultiPassT::reference dereference(MultiPassT const& mp) - { - if (mp.queuePosition == mp.queuedElements->size()) - { - // check if this is the only iterator - if (mp.unique()) - { - // free up the memory used by the queue. - if (mp.queuedElements->size() > 0) - { - mp.queuedElements->clear(); - mp.queuePosition = 0; - } - } - return mp.get_input(); - } - else - { - return (*mp.queuedElements)[mp.queuePosition]; - } - } - - // This is called when the iterator is incremented. It's a template - // method so we can recover the type of the multi_pass iterator - // and call unique and access the m_input data member. - template - static void increment(MultiPassT& mp) - { - if (mp.queuePosition == mp.queuedElements->size()) - { - // check if this is the only iterator - if (mp.unique()) - { - // free up the memory used by the queue. - if (mp.queuedElements->size() > 0) - { - mp.queuedElements->clear(); - mp.queuePosition = 0; - } - } - else - { - mp.queuedElements->push_back(mp.get_input()); - ++mp.queuePosition; - } - mp.advance_input(); - } - else - { - ++mp.queuePosition; - } - - } - - // called to forcibly clear the queue - void clear_queue() - { - queuedElements->clear(); - queuePosition = 0; - } - - // called to determine whether the iterator is an eof iterator - template - static bool is_eof(MultiPassT const& mp) - { - return mp.queuePosition == mp.queuedElements->size() && - mp.input_at_eof(); - } - - // called by operator== - bool equal_to(inner const& x) const - { - return queuePosition == x.queuePosition; - } - - // called by operator< - bool less_than(inner const& x) const - { - return queuePosition < x.queuePosition; - } -}; // class inner - -}; // class std_deque - - -/////////////////////////////////////////////////////////////////////////////// -// class fixed_size_queue -// Implementation of the StoragePolicy used by multi_pass -// fixed_size_queue keeps a circular buffer (implemented by -// BOOST_SPIRIT_CLASSIC_NS::fixed_size_queue class) that is size N+1 and stores N elements. -// It is up to the user to ensure that there is enough look ahead for their -// grammar. Currently there is no way to tell if an iterator is pointing -// to forgotten data. The leading iterator will put an item in the queue -// and remove one when it is incremented. No dynamic allocation is done, -// except on creation of the queue (fixed_size_queue constructor). -/////////////////////////////////////////////////////////////////////////////// -template < std::size_t N> -class fixed_size_queue -{ - public: - -template -class inner -{ - private: - - typedef BOOST_SPIRIT_CLASSIC_NS::fixed_size_queue queue_type; - queue_type * queuedElements; - mutable typename queue_type::iterator queuePosition; - - protected: - inner() - : queuedElements(new queue_type) - , queuePosition(queuedElements->begin()) - {} - - inner(inner const& x) - : queuedElements(x.queuedElements) - , queuePosition(x.queuePosition) - {} - - // will be called from the destructor of the last iterator. - void destroy() - { - BOOST_SPIRIT_ASSERT(NULL != queuedElements); - delete queuedElements; - queuedElements = 0; - } - - void swap(inner& x) - { - impl::mp_swap(queuedElements, x.queuedElements); - impl::mp_swap(queuePosition, x.queuePosition); - } - - // This is called when the iterator is dereferenced. It's a template - // method so we can recover the type of the multi_pass iterator - // and access the m_input data member. - template - static typename MultiPassT::reference dereference(MultiPassT const& mp) - { - if (mp.queuePosition == mp.queuedElements->end()) - { - return mp.get_input(); - } - else - { - return *mp.queuePosition; - } - } - - // This is called when the iterator is incremented. It's a template - // method so we can recover the type of the multi_pass iterator - // and access the m_input data member. - template - static void increment(MultiPassT& mp) - { - if (mp.queuePosition == mp.queuedElements->end()) - { - // don't let the queue get larger than N - if (mp.queuedElements->size() >= N) - mp.queuedElements->pop_front(); - - mp.queuedElements->push_back(mp.get_input()); - mp.advance_input(); - } - ++mp.queuePosition; - } - - // no-op - void clear_queue() - {} - - // called to determine whether the iterator is an eof iterator - template - static bool is_eof(MultiPassT const& mp) - { - return mp.queuePosition == mp.queuedElements->end() && - mp.input_at_eof(); - } - - // called by operator== - bool equal_to(inner const& x) const - { - return queuePosition == x.queuePosition; - } - - // called by operator< - bool less_than(inner const& x) const - { - return queuePosition < x.queuePosition; - } -}; // class inner - -}; // class fixed_size_queue - - -/////////////////////////////////////////////////////////////////////////////// -// class input_iterator -// Implementation of the InputPolicy used by multi_pass -// input_iterator encapsulates an input iterator of type InputT -/////////////////////////////////////////////////////////////////////////////// -class input_iterator -{ - public: - -template -class inner -{ - private: - typedef - typename std::iterator_traits::value_type - result_type; - - public: - typedef result_type value_type; - - private: - struct Data { - Data(InputT const &input_) - : input(input_), was_initialized(false) - {} - - InputT input; - value_type curtok; - bool was_initialized; - }; - - // Needed by compilers not implementing the resolution to DR45. For - // reference, see - // http://www.open-std.org/JTC1/SC22/WG21/docs/cwg_defects.html#45. - - friend struct Data; - - public: - typedef - typename std::iterator_traits::difference_type - difference_type; - typedef - typename std::iterator_traits::pointer - pointer; - typedef - typename std::iterator_traits::reference - reference; - - protected: - inner() - : data(0) - {} - - inner(InputT x) - : data(new Data(x)) - {} - - inner(inner const& x) - : data(x.data) - {} - - void destroy() - { - delete data; - data = 0; - } - - bool same_input(inner const& x) const - { - return data == x.data; - } - - typedef - typename std::iterator_traits::value_type - value_t; - void swap(inner& x) - { - impl::mp_swap(data, x.data); - } - - void ensure_initialized() const - { - if (data && !data->was_initialized) { - data->curtok = *data->input; // get the first token - data->was_initialized = true; - } - } - - public: - reference get_input() const - { - BOOST_SPIRIT_ASSERT(NULL != data); - ensure_initialized(); - return data->curtok; - } - - void advance_input() - { - BOOST_SPIRIT_ASSERT(NULL != data); - data->was_initialized = false; // should get the next token - ++data->input; - } - - bool input_at_eof() const - { - return !data || data->input == InputT(); - } - - private: - Data *data; -}; - -}; - -/////////////////////////////////////////////////////////////////////////////// -// class lex_input -// Implementation of the InputPolicy used by multi_pass -// lex_input gets tokens (ints) from yylex() -/////////////////////////////////////////////////////////////////////////////// -class lex_input -{ - public: - -template -class inner -{ - public: - typedef int value_type; - typedef std::ptrdiff_t difference_type; - typedef int* pointer; - typedef int& reference; - - protected: - inner() - : curtok(new int(0)) - {} - - inner(InputT x) - : curtok(new int(x)) - {} - - inner(inner const& x) - : curtok(x.curtok) - {} - - void destroy() - { - delete curtok; - curtok = 0; - } - - bool same_input(inner const& x) const - { - return curtok == x.curtok; - } - - void swap(inner& x) - { - impl::mp_swap(curtok, x.curtok); - } - - public: - reference get_input() const - { - return *curtok; - } - - void advance_input() - { - extern int yylex(); - *curtok = yylex(); - } - - bool input_at_eof() const - { - return *curtok == 0; - } - - private: - int* curtok; - -}; - -}; - -/////////////////////////////////////////////////////////////////////////////// -// class functor_input -// Implementation of the InputPolicy used by multi_pass -// functor_input gets tokens from a functor -// Note: the functor must have a typedef for result_type -// It also must have a static variable of type result_type defined to -// represent eof that is called eof. -/////////////////////////////////////////////////////////////////////////////// -class functor_input -{ - public: - -template -class inner -{ - typedef typename FunctorT::result_type result_type; - public: - typedef result_type value_type; - typedef std::ptrdiff_t difference_type; - typedef result_type* pointer; - typedef result_type& reference; - - protected: - inner() - : ftor(0) - , curtok(0) - {} - - inner(FunctorT const& x) - : ftor(new FunctorT(x)) - , curtok(new result_type((*ftor)())) - {} - - inner(inner const& x) - : ftor(x.ftor) - , curtok(x.curtok) - {} - - void destroy() - { - delete ftor; - ftor = 0; - delete curtok; - curtok = 0; - } - - bool same_input(inner const& x) const - { - return ftor == x.ftor; - } - - void swap(inner& x) - { - impl::mp_swap(curtok, x.curtok); - impl::mp_swap(ftor, x.ftor); - } - - public: - reference get_input() const - { - return *curtok; - } - - void advance_input() - { - if (curtok) { - *curtok = (*ftor)(); - } - } - - bool input_at_eof() const - { - return !curtok || *curtok == ftor->eof; - } - - FunctorT& get_functor() const - { - return *ftor; - } - - - private: - FunctorT* ftor; - result_type* curtok; - -}; - -}; - -} // namespace multi_pass_policies - -/////////////////////////////////////////////////////////////////////////////// -// iterator_base_creator -/////////////////////////////////////////////////////////////////////////////// - -namespace iterator_ { namespace impl { - -// Meta-function to generate a std::iterator<>-like base class for multi_pass. -template -struct iterator_base_creator -{ - typedef typename InputPolicyT::BOOST_NESTED_TEMPLATE inner input_t; - - struct type { - typedef std::forward_iterator_tag iterator_category; - typedef typename input_t::value_type value_type; - typedef typename input_t::difference_type difference_type; - typedef typename input_t::pointer pointer; - typedef typename input_t::reference reference; - }; -}; - -}} - -/////////////////////////////////////////////////////////////////////////////// -// class template multi_pass -/////////////////////////////////////////////////////////////////////////////// - -// The default multi_pass instantiation uses a ref-counted std_deque scheme. -template -< - typename InputT, - typename InputPolicy, - typename OwnershipPolicy, - typename CheckingPolicy, - typename StoragePolicy -> -class multi_pass - : public OwnershipPolicy - , public CheckingPolicy - , public StoragePolicy::template inner< - typename InputPolicy::template inner::value_type> - , public InputPolicy::template inner - , public iterator_::impl::iterator_base_creator::type -{ - typedef OwnershipPolicy OP; - typedef CheckingPolicy CHP; - typedef typename StoragePolicy::template inner< - typename InputPolicy::template inner::value_type> SP; - typedef typename InputPolicy::template inner IP; - typedef typename - iterator_::impl::iterator_base_creator::type - IB; - - public: - typedef typename IB::value_type value_type; - typedef typename IB::difference_type difference_type; - typedef typename IB::reference reference; - typedef typename IB::pointer pointer; - typedef InputT iterator_type; - - multi_pass(); - explicit multi_pass(InputT input); - -#if BOOST_WORKAROUND(__GLIBCPP__, == 20020514) - multi_pass(int); -#endif // BOOST_WORKAROUND(__GLIBCPP__, == 20020514) - - ~multi_pass(); - - multi_pass(multi_pass const&); - multi_pass& operator=(multi_pass const&); - - void swap(multi_pass& x); - - reference operator*() const; - pointer operator->() const; - multi_pass& operator++(); - multi_pass operator++(int); - - void clear_queue(); - - bool operator==(const multi_pass& y) const; - bool operator<(const multi_pass& y) const; - - private: // helper functions - bool is_eof() const; -}; - -template -< - typename InputT, - typename InputPolicy, - typename OwnershipPolicy, - typename CheckingPolicy, - typename StoragePolicy -> -inline -multi_pass:: -multi_pass() - : OP() - , CHP() - , SP() - , IP() -{ -} - -template -< - typename InputT, - typename InputPolicy, - typename OwnershipPolicy, - typename CheckingPolicy, - typename StoragePolicy -> -inline -multi_pass:: -multi_pass(InputT input) - : OP() - , CHP() - , SP() - , IP(input) -{ -} - -#if BOOST_WORKAROUND(__GLIBCPP__, == 20020514) - // The standard library shipped with gcc-3.1 has a bug in - // bits/basic_string.tcc. It tries to use iter::iter(0) to - // construct an iterator. Ironically, this happens in sanity - // checking code that isn't required by the standard. - // The workaround is to provide an additional constructor that - // ignores its int argument and behaves like the default constructor. -template -< - typename InputT, - typename InputPolicy, - typename OwnershipPolicy, - typename CheckingPolicy, - typename StoragePolicy -> -inline -multi_pass:: -multi_pass(int) - : OP() - , CHP() - , SP() - , IP() -{ -} -#endif // BOOST_WORKAROUND(__GLIBCPP__, == 20020514) - -template -< - typename InputT, - typename InputPolicy, - typename OwnershipPolicy, - typename CheckingPolicy, - typename StoragePolicy -> -inline -multi_pass:: -~multi_pass() -{ - if (OP::release()) - { - CHP::destroy(); - SP::destroy(); - IP::destroy(); - } -} - -template -< - typename InputT, - typename InputPolicy, - typename OwnershipPolicy, - typename CheckingPolicy, - typename StoragePolicy -> -inline -multi_pass:: -multi_pass( - multi_pass const& x) - : OP(x) - , CHP(x) - , SP(x) - , IP(x) -{ - OP::clone(); -} - -template -< - typename InputT, - typename InputPolicy, - typename OwnershipPolicy, - typename CheckingPolicy, - typename StoragePolicy -> -inline -multi_pass& -multi_pass:: -operator=( - multi_pass const& x) -{ - multi_pass temp(x); - temp.swap(*this); - return *this; -} - -template -< - typename InputT, - typename InputPolicy, - typename OwnershipPolicy, - typename CheckingPolicy, - typename StoragePolicy -> -inline void -multi_pass:: -swap(multi_pass& x) -{ - OP::swap(x); - CHP::swap(x); - SP::swap(x); - IP::swap(x); -} - -template -< - typename InputT, - typename InputPolicy, - typename OwnershipPolicy, - typename CheckingPolicy, - typename StoragePolicy -> -inline -typename multi_pass:: -reference -multi_pass:: -operator*() const -{ - CHP::check_if_valid(); - return SP::dereference(*this); -} - -template -< - typename InputT, - typename InputPolicy, - typename OwnershipPolicy, - typename CheckingPolicy, - typename StoragePolicy -> -inline -typename multi_pass:: -pointer -multi_pass:: -operator->() const -{ - return &(operator*()); -} - -template -< - typename InputT, - typename InputPolicy, - typename OwnershipPolicy, - typename CheckingPolicy, - typename StoragePolicy -> -inline -multi_pass& -multi_pass:: -operator++() -{ - CHP::check_if_valid(); - SP::increment(*this); - return *this; -} - -template -< - typename InputT, - typename InputPolicy, - typename OwnershipPolicy, - typename CheckingPolicy, - typename StoragePolicy -> -inline -multi_pass -multi_pass:: -operator++(int) -{ - multi_pass - < - InputT, - InputPolicy, - OwnershipPolicy, - CheckingPolicy, - StoragePolicy - > tmp(*this); - - ++*this; - - return tmp; -} - -template -< - typename InputT, - typename InputPolicy, - typename OwnershipPolicy, - typename CheckingPolicy, - typename StoragePolicy -> -inline void -multi_pass:: -clear_queue() -{ - SP::clear_queue(); - CHP::clear_queue(); -} - -template -< - typename InputT, - typename InputPolicy, - typename OwnershipPolicy, - typename CheckingPolicy, - typename StoragePolicy -> -inline bool -multi_pass:: -is_eof() const -{ - return SP::is_eof(*this); -} - -///// Comparisons -template -< - typename InputT, - typename InputPolicy, - typename OwnershipPolicy, - typename CheckingPolicy, - typename StoragePolicy -> -inline bool -multi_pass:: -operator==(const multi_pass& y) const -{ - bool is_eof_ = SP::is_eof(*this); - bool y_is_eof_ = SP::is_eof(y); - - if (is_eof_ && y_is_eof_) - { - return true; // both are EOF - } - else if (is_eof_ ^ y_is_eof_) - { - return false; // one is EOF, one isn't - } - else if (!IP::same_input(y)) - { - return false; - } - else - { - return SP::equal_to(y); - } -} - -template -< - typename InputT, - typename InputPolicy, - typename OwnershipPolicy, - typename CheckingPolicy, - typename StoragePolicy -> -inline bool -multi_pass:: -operator<(const multi_pass& y) const -{ - return SP::less_than(y); -} - -template -< - typename InputT, - typename InputPolicy, - typename OwnershipPolicy, - typename CheckingPolicy, - typename StoragePolicy -> -inline -bool operator!=( - const multi_pass& x, - const multi_pass& y) -{ - return !(x == y); -} - -template -< - typename InputT, - typename InputPolicy, - typename OwnershipPolicy, - typename CheckingPolicy, - typename StoragePolicy -> -inline -bool operator>( - const multi_pass& x, - const multi_pass& y) -{ - return y < x; -} - -template -< - typename InputT, - typename InputPolicy, - typename OwnershipPolicy, - typename CheckingPolicy, - typename StoragePolicy -> -inline -bool operator>=( - const multi_pass& x, - const multi_pass& y) -{ - return !(x < y); -} - -template -< - typename InputT, - typename InputPolicy, - typename OwnershipPolicy, - typename CheckingPolicy, - typename StoragePolicy -> -inline -bool operator<=( - const multi_pass& x, - const multi_pass& y) -{ - return !(y < x); -} - -///// Generator function -template -inline multi_pass -make_multi_pass(InputT i) -{ - return multi_pass(i); -} - -// this could be a template typedef, since such a thing doesn't -// exist in C++, we'll use inheritance to accomplish the same thing. - -template -class look_ahead : - public multi_pass< - InputT, - multi_pass_policies::input_iterator, - multi_pass_policies::first_owner, - multi_pass_policies::no_check, - multi_pass_policies::fixed_size_queue > -{ - typedef multi_pass< - InputT, - multi_pass_policies::input_iterator, - multi_pass_policies::first_owner, - multi_pass_policies::no_check, - multi_pass_policies::fixed_size_queue > base_t; - public: - look_ahead() - : base_t() {} - - explicit look_ahead(InputT x) - : base_t(x) {} - - look_ahead(look_ahead const& x) - : base_t(x) {} - -#if BOOST_WORKAROUND(__GLIBCPP__, == 20020514) - look_ahead(int) // workaround for a bug in the library - : base_t() {} // shipped with gcc 3.1 -#endif // BOOST_WORKAROUND(__GLIBCPP__, == 20020514) - - // default generated operators destructor and assignment operator are okay. -}; - -template -< - typename InputT, - typename InputPolicy, - typename OwnershipPolicy, - typename CheckingPolicy, - typename StoragePolicy -> -void swap( - multi_pass< - InputT, InputPolicy, OwnershipPolicy, CheckingPolicy, StoragePolicy - > &x, - multi_pass< - InputT, InputPolicy, OwnershipPolicy, CheckingPolicy, StoragePolicy - > &y) -{ - x.swap(y); -} - -namespace impl { - - template - inline void mp_swap(T& t1, T& t2) - { - using std::swap; - using BOOST_SPIRIT_CLASSIC_NS::swap; - swap(t1, t2); - } -} - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif // BOOST_SPIRIT_ITERATOR_MULTI_PASS_HPP diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/iterator/multi_pass_fwd.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/iterator/multi_pass_fwd.hpp deleted file mode 100644 index a212305ac2d3..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/iterator/multi_pass_fwd.hpp +++ /dev/null @@ -1,47 +0,0 @@ -/*============================================================================= - Copyright (c) 2006 Tobias Schwinger - http://spirit.sourceforge.net/ - - 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_ITERATOR_MULTI_PASS_FWD_HPP) -#define BOOST_SPIRIT_ITERATOR_MULTI_PASS_FWD_HPP - -#include - -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - namespace multi_pass_policies - { - class ref_counted; - class first_owner; - class buf_id_check; - class no_check; - class std_deque; - template class fixed_size_queue; - class input_iterator; - class lex_input; - class functor_input; - } - - template - < - typename InputT, - typename InputPolicy = multi_pass_policies::input_iterator, - typename OwnershipPolicy = multi_pass_policies::ref_counted, - typename CheckingPolicy = multi_pass_policies::buf_id_check, - typename StoragePolicy = multi_pass_policies::std_deque - > - class multi_pass; - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/iterator/position_iterator.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/iterator/position_iterator.hpp deleted file mode 100644 index 29d5bd4a7b61..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/iterator/position_iterator.hpp +++ /dev/null @@ -1,435 +0,0 @@ -/*============================================================================= - Copyright (c) 2002 Juan Carlos Arevalo-Baeza - Copyright (c) 2002-2006 Hartmut Kaiser - Copyright (c) 2003 Giovanni Bajo - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_POSITION_ITERATOR_HPP -#define BOOST_SPIRIT_POSITION_ITERATOR_HPP - -#include -#include - -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -/////////////////////////////////////////////////////////////////////////////// -// -// file_position_without_column -// -// A structure to hold positional information. This includes the file, -// and the line number -// -/////////////////////////////////////////////////////////////////////////////// -template -struct file_position_without_column_base { - String file; - int line; - - file_position_without_column_base(String const& file_ = String(), - int line_ = 1): - file (file_), - line (line_) - {} - - bool operator==(const file_position_without_column_base& fp) const - { return line == fp.line && file == fp.file; } -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// file_position -// -// This structure holds complete file position, including file name, -// line and column number -// -/////////////////////////////////////////////////////////////////////////////// -template -struct file_position_base : public file_position_without_column_base { - int column; - - file_position_base(String const& file_ = String(), - int line_ = 1, int column_ = 1): - file_position_without_column_base (file_, line_), - column (column_) - {} - - bool operator==(const file_position_base& fp) const - { return column == fp.column && this->line == fp.line && this->file == fp.file; } -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// position_policy<> -// -// This template is the policy to handle the file position. It is specialized -// on the position type. Providing a custom file_position also requires -// providing a specialization of this class. -// -// Policy interface: -// -// Default constructor of the custom position class must be accessible. -// set_tab_chars(unsigned int chars) - Set the tabstop width -// next_char(PositionT& pos) - Notify that a new character has been -// processed -// tabulation(PositionT& pos) - Notify that a tab character has been -// processed -// next_line(PositionT& pos) - Notify that a new line delimiter has -// been reached. -// -/////////////////////////////////////////////////////////////////////////////// -template class position_policy; - -/////////////////////////////////////////////////////////////////////////////// -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} /* namespace BOOST_SPIRIT_CLASSIC_NS */ - - -// This must be included here for full compatibility with old MSVC -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -/////////////////////////////////////////////////////////////////////////////// -// -// position_iterator -// -// It wraps an iterator, and keeps track of the current position in the input, -// as it gets incremented. -// -// The wrapped iterator must be at least a Forward iterator. The position -// iterator itself will always be a non-mutable Forward iterator. -// -// In order to have begin/end iterators constructed, the end iterator must be -// empty constructed. Similar to what happens with stream iterators. The begin -// iterator must be constructed from both, the begin and end iterators of the -// wrapped iterator type. This is necessary to implement the lookahead of -// characters necessary to parse CRLF sequences. -// -// In order to extract the current positional data from the iterator, you may -// use the get_position member function. -// -// You can also use the set_position member function to reset the current -// position to something new. -// -// The structure that holds the current position can be customized through a -// template parameter, and the class position_policy must be specialized -// on the new type to define how to handle it. Currently, it's possible -// to choose between the file_position and file_position_without_column -// (which saves some overhead if managing current column is not required). -// -/////////////////////////////////////////////////////////////////////////////// - -#if !defined(BOOST_ITERATOR_ADAPTORS_VERSION) || \ - BOOST_ITERATOR_ADAPTORS_VERSION < 0x0200 -#error "Please use at least Boost V1.31.0 while compiling the position_iterator class!" -#else // BOOST_ITERATOR_ADAPTORS_VERSION < 0x0200 - -/////////////////////////////////////////////////////////////////////////////// -// -// Uses the newer iterator_adaptor version (should be released with -// Boost V1.31.0) -// -/////////////////////////////////////////////////////////////////////////////// -template < - typename ForwardIteratorT, - typename PositionT, - typename SelfT -> -class position_iterator -: public iterator_::impl::position_iterator_base_generator< - SelfT, - ForwardIteratorT, - PositionT - >::type, - public position_policy -{ -private: - - typedef position_policy position_policy_t; - typedef typename iterator_::impl::position_iterator_base_generator< - SelfT, - ForwardIteratorT, - PositionT - >::type base_t; - typedef typename iterator_::impl::position_iterator_base_generator< - SelfT, - ForwardIteratorT, - PositionT - >::main_iter_t main_iter_t; - -public: - - typedef PositionT position_t; - - position_iterator() - : _isend(true) - {} - - position_iterator( - const ForwardIteratorT& begin, - const ForwardIteratorT& end) - : base_t(begin), _end(end), _pos(PositionT()), _isend(begin == end) - {} - - template - position_iterator( - const ForwardIteratorT& begin, - const ForwardIteratorT& end, - FileNameT fileName) - : base_t(begin), _end(end), _pos(PositionT(fileName)), - _isend(begin == end) - {} - - template - position_iterator( - const ForwardIteratorT& begin, - const ForwardIteratorT& end, - FileNameT fileName, LineT line) - : base_t(begin), _end(end), _pos(PositionT(fileName, line)), - _isend(begin == end) - {} - - template - position_iterator( - const ForwardIteratorT& begin, - const ForwardIteratorT& end, - FileNameT fileName, LineT line, ColumnT column) - : base_t(begin), _end(end), _pos(PositionT(fileName, line, column)), - _isend(begin == end) - {} - - position_iterator( - const ForwardIteratorT& begin, - const ForwardIteratorT& end, - const PositionT& pos) - : base_t(begin), _end(end), _pos(pos), _isend(begin == end) - {} - - position_iterator(const position_iterator& iter) - : base_t(iter.base()), position_policy_t(iter), - _end(iter._end), _pos(iter._pos), _isend(iter._isend) - {} - - position_iterator& operator=(const position_iterator& iter) - { - base_t::operator=(iter); - position_policy_t::operator=(iter); - _end = iter._end; - _pos = iter._pos; - _isend = iter._isend; - return *this; - } - - void set_position(PositionT const& newpos) { _pos = newpos; } - PositionT& get_position() { return _pos; } - PositionT const& get_position() const { return _pos; } - - void set_tabchars(unsigned int chars) - { - // This function (which comes from the position_policy) has a - // different name on purpose, to avoid messing with using - // declarations or qualified calls to access the base template - // function, which might break some compilers. - this->position_policy_t::set_tab_chars(chars); - } - -private: - friend class boost::iterator_core_access; - - void increment() - { - typename base_t::reference val = *(this->base()); - if (val == '\n') { - ++this->base_reference(); - this->next_line(_pos); - static_cast(*this).newline(); - } - else if ( val == '\r') { - ++this->base_reference(); - if (this->base_reference() == _end || *(this->base()) != '\n') - { - this->next_line(_pos); - static_cast(*this).newline(); - } - } - else if (val == '\t') { - this->tabulation(_pos); - ++this->base_reference(); - } - else { - this->next_char(_pos); - ++this->base_reference(); - } - - // The iterator is at the end only if it's the same - // of the - _isend = (this->base_reference() == _end); - } - - template < - typename OtherDerivedT, typename OtherIteratorT, - typename V, typename C, typename R, typename D - > - bool equal(iterator_adaptor - const &x) const - { - OtherDerivedT const &rhs = static_cast(x); - bool x_is_end = rhs._isend; - - return (_isend == x_is_end) && (_isend || this->base() == rhs.base()); - } - -protected: - - void newline() - {} - - ForwardIteratorT _end; - PositionT _pos; - bool _isend; -}; - -#endif // BOOST_ITERATOR_ADAPTORS_VERSION < 0x0200 - -/////////////////////////////////////////////////////////////////////////////// -// -// position_iterator2 -// -// Equivalent to position_iterator, but it is able to extract the current -// line into a string. This is very handy for error reports. -// -// Notice that the footprint of this class is higher than position_iterator, -// (how much depends on how bulky the underlying iterator is), so it should -// be used only if necessary. -// -/////////////////////////////////////////////////////////////////////////////// - -template -< - typename ForwardIteratorT, - typename PositionT -> -class position_iterator2 - : public position_iterator - < - ForwardIteratorT, - PositionT, - position_iterator2 - > -{ - typedef position_iterator - < - ForwardIteratorT, - PositionT, - position_iterator2 // JDG 4-15-03 - > base_t; - -public: - typedef typename base_t::value_type value_type; - typedef PositionT position_t; - - position_iterator2() - {} - - position_iterator2( - const ForwardIteratorT& begin, - const ForwardIteratorT& end): - base_t(begin, end), - _startline(begin) - {} - - template - position_iterator2( - const ForwardIteratorT& begin, - const ForwardIteratorT& end, - FileNameT file): - base_t(begin, end, file), - _startline(begin) - {} - - template - position_iterator2( - const ForwardIteratorT& begin, - const ForwardIteratorT& end, - FileNameT file, LineT line): - base_t(begin, end, file, line), - _startline(begin) - {} - - template - position_iterator2( - const ForwardIteratorT& begin, - const ForwardIteratorT& end, - FileNameT file, LineT line, ColumnT column): - base_t(begin, end, file, line, column), - _startline(begin) - {} - - position_iterator2( - const ForwardIteratorT& begin, - const ForwardIteratorT& end, - const PositionT& pos): - base_t(begin, end, pos), - _startline(begin) - {} - - position_iterator2(const position_iterator2& iter) - : base_t(iter), _startline(iter._startline) - {} - - position_iterator2& operator=(const position_iterator2& iter) - { - base_t::operator=(iter); - _startline = iter._startline; - return *this; - } - - ForwardIteratorT get_currentline_begin() const - { return _startline; } - - ForwardIteratorT get_currentline_end() const - { return get_endline(); } - - std::basic_string get_currentline() const - { - return std::basic_string - (get_currentline_begin(), get_currentline_end()); - } - -protected: - ForwardIteratorT _startline; - - friend class position_iterator >; - - ForwardIteratorT get_endline() const - { - ForwardIteratorT endline = _startline; - while (endline != this->_end && *endline != '\r' && *endline != '\n') - { - ++endline; - } - return endline; - } - - void newline() - { _startline = this->base(); } -}; - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/iterator/position_iterator_fwd.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/iterator/position_iterator_fwd.hpp deleted file mode 100644 index 8b0ff6addbce..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/iterator/position_iterator_fwd.hpp +++ /dev/null @@ -1,60 +0,0 @@ -/*============================================================================= - Copyright (c) 2006 Tobias Schwinger - Copyright (c) 2002-2006 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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_POSITION_ITERATOR_FWD_HPP) -#define BOOST_SPIRIT_POSITION_ITERATOR_FWD_HPP - -#include -#include // for std::iterator_traits -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - template - struct file_position_base; - - typedef file_position_base file_position; - - template - struct file_position_without_column_base; - - typedef file_position_without_column_base file_position_without_column; - - template < - typename ForwardIteratorT, - typename PositionT = file_position_base< - std::basic_string< - typename std::iterator_traits::value_type - > - >, - typename SelfT = nil_t - > - class position_iterator; - - template - < - typename ForwardIteratorT, - typename PositionT = file_position_base< - std::basic_string< - typename std::iterator_traits::value_type - > - > - > - class position_iterator2; - - template class position_policy; - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/iterator/typeof.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/iterator/typeof.hpp deleted file mode 100644 index 23882cab64fb..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/iterator/typeof.hpp +++ /dev/null @@ -1,94 +0,0 @@ -/*============================================================================= - Copyright (c) 2006 Tobias Schwinger - http://spirit.sourceforge.net/ - - 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_ITERATOR_TYPEOF_HPP) -#define BOOST_SPIRIT_ITERATOR_TYPEOF_HPP - -#include -#include - -#include -#include -#include -#include - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - // external (from core) - struct nil_t; - - // fixed_size_queue.hpp - template class fixed_size_queue; - template - class fsq_iterator; - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - -#if !defined(BOOST_SPIRIT_NIL_T_TYPEOF_REGISTERED) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::nil_t) -# define BOOST_SPIRIT_NIL_T_TYPEOF_REGISTERED -#endif - - -// multi_pass.hpp (has forward header) - -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::multi_pass,5) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::multi_pass_policies::ref_counted) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::multi_pass_policies::first_owner) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::multi_pass_policies::buf_id_check) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::multi_pass_policies::no_check) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::multi_pass_policies::std_deque) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::multi_pass_policies::fixed_size_queue,(BOOST_TYPEOF_INTEGRAL(std::size_t))) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::multi_pass_policies::input_iterator) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::multi_pass_policies::lex_input) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::multi_pass_policies::functor_input) - -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::multi_pass,3) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::multi_pass,1) - - -// file_iterator.hpp - -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::file_iterator,2) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::fileiter_impl::std_file_iterator,1) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::fileiter_impl::mmap_file_iterator,1) - -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::fileiter_impl::std_file_iterator) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::fileiter_impl::std_file_iterator) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::fileiter_impl::mmap_file_iterator) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::fileiter_impl::mmap_file_iterator) - - -// fixed_size_queue.hpp - -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::fixed_size_queue,(typename)(BOOST_TYPEOF_INTEGRAL(std::size_t))) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::fsq_iterator,3) - - -// position_iterator.hpp - -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::position_iterator,3) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::position_iterator2,2) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::position_policy,1) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::file_position_base,1) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::file_position_without_column_base,1) - -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::file_position) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::file_position_base >) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::file_position_without_column) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::file_position_without_column_base >) - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/meta.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/meta.hpp deleted file mode 100644 index bdb93c5bb0bd..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/meta.hpp +++ /dev/null @@ -1,26 +0,0 @@ -/*============================================================================= - Copyright (c) 1998-2003 Joel de Guzman - Copyright (c) 2001-2003 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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_META_MAIN_HPP) -#define BOOST_SPIRIT_META_MAIN_HPP - -#include - -/////////////////////////////////////////////////////////////////////////////// -// -// Master header for Spirit.Meta -// -/////////////////////////////////////////////////////////////////////////////// - -#include -#include -#include -#include - -#endif // BOOST_SPIRIT_CORE_MAIN_HPP - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/meta/as_parser.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/meta/as_parser.hpp deleted file mode 100644 index d1215fbdabf8..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/meta/as_parser.hpp +++ /dev/null @@ -1,113 +0,0 @@ -/*============================================================================= - Copyright (c) 2002-2003 Joel de Guzman - Copyright (c) 2002-2003 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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_AS_PARSER_HPP) -#define BOOST_SPIRIT_AS_PARSER_HPP - -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // - // Helper templates to derive the parser type from an auxiliary type - // and to generate an object of the required parser type given an - // auxiliary object. Supported types to convert are parsers, - // single characters and character strings. - // - /////////////////////////////////////////////////////////////////////////// - namespace impl - { - template - struct default_as_parser - { - typedef T type; - static type const& convert(type const& p) - { - return p; - } - }; - - struct char_as_parser - { - typedef chlit type; - static type convert(char ch) - { - return type(ch); - } - }; - - struct wchar_as_parser - { - typedef chlit type; - static type convert(wchar_t ch) - { - return type(ch); - } - }; - - struct string_as_parser - { - typedef strlit type; - static type convert(char const* str) - { - return type(str); - } - }; - - struct wstring_as_parser - { - typedef strlit type; - static type convert(wchar_t const* str) - { - return type(str); - } - }; - } - - template - struct as_parser : impl::default_as_parser {}; - - template<> - struct as_parser : impl::char_as_parser {}; - - template<> - struct as_parser : impl::wchar_as_parser {}; - - template<> - struct as_parser : impl::string_as_parser {}; - - template<> - struct as_parser : impl::string_as_parser {}; - - template<> - struct as_parser : impl::wstring_as_parser {}; - - template<> - struct as_parser : impl::wstring_as_parser {}; - - template - struct as_parser : impl::string_as_parser {}; - - template - struct as_parser : impl::wstring_as_parser {}; - - template - struct as_parser : impl::string_as_parser {}; - - template - struct as_parser : impl::wstring_as_parser {}; - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/meta/fundamental.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/meta/fundamental.hpp deleted file mode 100644 index c7fcf04492ca..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/meta/fundamental.hpp +++ /dev/null @@ -1,56 +0,0 @@ -/*============================================================================= - Copyright (c) 2002-2003 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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_FUNDAMENTAL_HPP) -#define BOOST_SPIRIT_FUNDAMENTAL_HPP - -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // - // Helper template for counting the number of nodes contained in a - // given parser type. - // All parser_category type parsers are counted as nodes. - // - /////////////////////////////////////////////////////////////////////////// - template - struct node_count { - - typedef typename ParserT::parser_category_t parser_category_t; - typedef typename impl::nodes - ::template count > count_t; - - BOOST_STATIC_CONSTANT(int, value = count_t::value); - }; - - /////////////////////////////////////////////////////////////////////////// - // - // Helper template for counting the number of leaf nodes contained in a - // given parser type. - // Only plain_parser_category type parsers are counted as leaf nodes. - // - /////////////////////////////////////////////////////////////////////////// - template - struct leaf_count { - - typedef typename ParserT::parser_category_t parser_category_t; - typedef typename impl::leafs - ::template count > count_t; - - BOOST_STATIC_CONSTANT(int, value = count_t::value); - }; - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif // !defined(BOOST_SPIRIT_FUNDAMENTAL_HPP) diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/meta/impl/fundamental.ipp b/framework/contrib/boost/include/boost/spirit/home/classic/meta/impl/fundamental.ipp deleted file mode 100644 index 96de548161cd..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/meta/impl/fundamental.ipp +++ /dev/null @@ -1,171 +0,0 @@ -/*============================================================================= - Copyright (c) 2002-2003 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#if !defined(BOOST_SPIRIT_FUNDAMENTAL_IPP) -#define BOOST_SPIRIT_FUNDAMENTAL_IPP - -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -namespace impl -{ - /////////////////////////////////////////////////////////////////////////// - // - // Helper template for counting the number of nodes contained in a - // given parser type. - // All parser_category type parsers are counted as nodes. - // - /////////////////////////////////////////////////////////////////////////// - template - struct nodes; - - template <> - struct nodes { - - template - struct count { - - BOOST_STATIC_CONSTANT(int, value = (LeafCountT::value + 1)); - }; - }; - - template <> - struct nodes { - - template - struct count { - - typedef typename ParserT::subject_t subject_t; - typedef typename subject_t::parser_category_t subject_category_t; - - BOOST_STATIC_CONSTANT(int, value = (nodes - ::template count::value + 1)); - }; - }; - - template <> - struct nodes { - - template - struct count { - - typedef typename ParserT::subject_t subject_t; - typedef typename subject_t::parser_category_t subject_category_t; - - BOOST_STATIC_CONSTANT(int, value = (nodes - ::template count::value + 1)); - }; - }; - - template <> - struct nodes { - - template - struct count { - - typedef typename ParserT::left_t left_t; - typedef typename ParserT::right_t right_t; - typedef typename left_t::parser_category_t left_category_t; - typedef typename right_t::parser_category_t right_category_t; - - typedef count self_t; - - BOOST_STATIC_CONSTANT(int, - leftcount = (nodes - ::template count::value)); - BOOST_STATIC_CONSTANT(int, - rightcount = (nodes - ::template count::value)); - BOOST_STATIC_CONSTANT(int, - value = ((self_t::leftcount) + (self_t::rightcount) + 1)); - }; - }; - - /////////////////////////////////////////////////////////////////////////// - // - // Helper template for counting the number of leaf nodes contained in a - // given parser type. - // Only plain_parser_category type parsers are counted as leaf nodes. - // - /////////////////////////////////////////////////////////////////////////// - template - struct leafs; - - template <> - struct leafs { - - template - struct count { - - BOOST_STATIC_CONSTANT(int, value = (LeafCountT::value + 1)); - }; - }; - - template <> - struct leafs { - - template - struct count { - - typedef typename ParserT::subject_t subject_t; - typedef typename subject_t::parser_category_t subject_category_t; - - BOOST_STATIC_CONSTANT(int, value = (leafs - ::template count::value)); - }; - }; - - template <> - struct leafs { - - template - struct count { - - typedef typename ParserT::subject_t subject_t; - typedef typename subject_t::parser_category_t subject_category_t; - - BOOST_STATIC_CONSTANT(int, value = (leafs - ::template count::value)); - }; - }; - - template <> - struct leafs { - - template - struct count { - - typedef typename ParserT::left_t left_t; - typedef typename ParserT::right_t right_t; - typedef typename left_t::parser_category_t left_category_t; - typedef typename right_t::parser_category_t right_category_t; - - typedef count self_t; - - BOOST_STATIC_CONSTANT(int, - leftcount = (leafs - ::template count::value)); - BOOST_STATIC_CONSTANT(int, - rightcount = (leafs - ::template count::value)); - BOOST_STATIC_CONSTANT(int, - value = (self_t::leftcount + self_t::rightcount)); - }; - }; - -} // namespace impl - -/////////////////////////////////////////////////////////////////////////////// -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace boost::spirit - -#endif // !defined(BOOST_SPIRIT_FUNDAMENTAL_IPP) diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/meta/impl/parser_traits.ipp b/framework/contrib/boost/include/boost/spirit/home/classic/meta/impl/parser_traits.ipp deleted file mode 100644 index 846a58b75fc2..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/meta/impl/parser_traits.ipp +++ /dev/null @@ -1,116 +0,0 @@ -/*============================================================================= - Copyright (c) 2002-2003 Joel de Guzman - Copyright (c) 2002-2003 Hartmut Kaiser - Copyright (c) 2003 Martin Wille - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#if !defined(BOOST_SPIRIT_PARSER_TRAITS_IPP) -#define BOOST_SPIRIT_PARSER_TRAITS_IPP - -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -namespace impl -{ - - - /////////////////////////////////////////////////////////////////////////// - struct parser_type_traits_base { - - BOOST_STATIC_CONSTANT(bool, is_alternative = false); - BOOST_STATIC_CONSTANT(bool, is_sequence = false); - BOOST_STATIC_CONSTANT(bool, is_sequential_or = false); - BOOST_STATIC_CONSTANT(bool, is_intersection = false); - BOOST_STATIC_CONSTANT(bool, is_difference = false); - BOOST_STATIC_CONSTANT(bool, is_exclusive_or = false); - BOOST_STATIC_CONSTANT(bool, is_optional = false); - BOOST_STATIC_CONSTANT(bool, is_kleene_star = false); - BOOST_STATIC_CONSTANT(bool, is_positive = false); - }; - - template - struct parser_type_traits : public parser_type_traits_base { - - // no definition here, fallback for all not explicitly mentioned parser - // types - }; - - template - struct parser_type_traits > - : public parser_type_traits_base { - - BOOST_STATIC_CONSTANT(bool, is_alternative = true); - }; - - template - struct parser_type_traits > - : public parser_type_traits_base { - - BOOST_STATIC_CONSTANT(bool, is_sequence = true); - }; - - template - struct parser_type_traits > - : public parser_type_traits_base { - - BOOST_STATIC_CONSTANT(bool, is_sequential_or = true); - }; - - template - struct parser_type_traits > - : public parser_type_traits_base { - - BOOST_STATIC_CONSTANT(bool, is_intersection = true); - }; - - template - struct parser_type_traits > - : public parser_type_traits_base { - - BOOST_STATIC_CONSTANT(bool, is_difference = true); - }; - - template - struct parser_type_traits > - : public parser_type_traits_base { - - BOOST_STATIC_CONSTANT(bool, is_exclusive_or = true); - }; - - template - struct parser_type_traits > - : public parser_type_traits_base { - - BOOST_STATIC_CONSTANT(bool, is_optional = true); - }; - - template - struct parser_type_traits > - : public parser_type_traits_base { - - BOOST_STATIC_CONSTANT(bool, is_kleene_star = true); - }; - - template - struct parser_type_traits > - : public parser_type_traits_base { - - BOOST_STATIC_CONSTANT(bool, is_positive = true); - }; - -} // namespace impl - -/////////////////////////////////////////////////////////////////////////////// -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace boost::spirit - -#endif // !defined(BOOST_SPIRIT_PARSER_TRAITS_IPP) diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/meta/impl/refactoring.ipp b/framework/contrib/boost/include/boost/spirit/home/classic/meta/impl/refactoring.ipp deleted file mode 100644 index cebad09370e4..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/meta/impl/refactoring.ipp +++ /dev/null @@ -1,451 +0,0 @@ -/*============================================================================= - Copyright (c) 2002-2003 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_REFACTORING_IPP -#define BOOST_SPIRIT_REFACTORING_IPP - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -/////////////////////////////////////////////////////////////////////////////// -// -// The struct 'self_nested_refactoring' is used to indicate, that the -// refactoring algorithm should be 'self-nested'. -// -// The struct 'non_nested_refactoring' is used to indicate, that no nesting -// of refactoring algorithms is reqired. -// -/////////////////////////////////////////////////////////////////////////////// - -struct non_nested_refactoring { typedef non_nested_refactoring embed_t; }; -struct self_nested_refactoring { typedef self_nested_refactoring embed_t; }; - -/////////////////////////////////////////////////////////////////////////////// -namespace impl { - -/////////////////////////////////////////////////////////////////////////////// -// -// Helper templates for refactoring parsers -// -/////////////////////////////////////////////////////////////////////////////// - - /////////////////////////////////////////////////////////////////////////// - // - // refactor the left unary operand of a binary parser - // - // The refactoring should be done only if the left operand is an - // unary_parser_category parser. - // - /////////////////////////////////////////////////////////////////////////// - - /////////////////////////////////////////////////////////////////////////// - template - struct refactor_unary_nested { - - template < - typename ParserT, typename NestedT, - typename ScannerT, typename BinaryT - > - static typename parser_result::type - parse(ParserT const &, ScannerT const& scan, BinaryT const& binary, - NestedT const& /*nested_d*/) - { - return binary.parse(scan); - } - }; - - template <> - struct refactor_unary_nested { - - template < - typename ParserT, typename ScannerT, typename BinaryT, - typename NestedT - > - static typename parser_result::type - parse(ParserT const &, ScannerT const& scan, BinaryT const& binary, - NestedT const& nested_d) - { - typedef typename BinaryT::parser_generator_t op_t; - typedef - typename BinaryT::left_t::parser_generator_t - unary_t; - - return - unary_t::generate( - nested_d[ - op_t::generate(binary.left().subject(), binary.right()) - ] - ).parse(scan); - } - }; - - /////////////////////////////////////////////////////////////////////////// - template - struct refactor_unary_non_nested { - - template - static typename parser_result::type - parse(ParserT const &, ScannerT const& scan, BinaryT const& binary) - { - return binary.parse(scan); - } - }; - - template <> - struct refactor_unary_non_nested { - - template - static typename parser_result::type - parse(ParserT const &, ScannerT const& scan, BinaryT const& binary) - { - typedef typename BinaryT::parser_generator_t op_t; - typedef - typename BinaryT::left_t::parser_generator_t - unary_t; - - return unary_t::generate( - op_t::generate(binary.left().subject(), binary.right()) - ).parse(scan); - } - }; - - /////////////////////////////////////////////////////////////////////////// - template - struct refactor_unary_type { - - template - static typename parser_result::type - parse(ParserT const &p, ScannerT const& scan, BinaryT const& binary, - NestedT const& nested_d) - { - typedef - typename BinaryT::left_t::parser_category_t - parser_category_t; - - return refactor_unary_nested:: - parse(p, scan, binary, nested_d); - } - }; - - template <> - struct refactor_unary_type { - - template - static typename parser_result::type - parse(ParserT const &p, ScannerT const& scan, BinaryT const& binary, - non_nested_refactoring const&) - { - typedef - typename BinaryT::left_t::parser_category_t - parser_category_t; - - return refactor_unary_non_nested:: - parse(p, scan, binary); - } - - }; - - template <> - struct refactor_unary_type { - - template - static typename parser_result::type - parse(ParserT const &p, ScannerT const& scan, BinaryT const& binary, - self_nested_refactoring const &nested_tag) - { - typedef - typename BinaryT::left_t::parser_category_t - parser_category_t; - typedef typename ParserT::parser_generator_t parser_generator_t; - - parser_generator_t nested_d(nested_tag); - return refactor_unary_nested:: - parse(p, scan, binary, nested_d); - } - - }; - - /////////////////////////////////////////////////////////////////////////// - // - // refactor the action on the left operand of a binary parser - // - // The refactoring should be done only if the left operand is an - // action_parser_category parser. - // - /////////////////////////////////////////////////////////////////////////// - - /////////////////////////////////////////////////////////////////////////// - template - struct refactor_action_nested { - - template < - typename ParserT, typename ScannerT, typename BinaryT, - typename NestedT - > - static typename parser_result::type - parse(ParserT const &, ScannerT const& scan, BinaryT const& binary, - NestedT const& nested_d) - { - return nested_d[binary].parse(scan); - } - }; - - template <> - struct refactor_action_nested { - - template < - typename ParserT, typename ScannerT, typename BinaryT, - typename NestedT - > - static typename parser_result::type - parse(ParserT const &, ScannerT const& scan, BinaryT const& binary, - NestedT const& nested_d) - { - typedef typename BinaryT::parser_generator_t binary_gen_t; - - return ( - nested_d[ - binary_gen_t::generate( - binary.left().subject(), - binary.right() - ) - ][binary.left().predicate()] - ).parse(scan); - } - }; - - /////////////////////////////////////////////////////////////////////////// - template - struct refactor_action_non_nested { - - template - static typename parser_result::type - parse(ParserT const &, ScannerT const& scan, BinaryT const& binary) - { - return binary.parse(scan); - } - }; - - template <> - struct refactor_action_non_nested { - - template - static typename parser_result::type - parse(ParserT const &, ScannerT const& scan, BinaryT const& binary) - { - typedef typename BinaryT::parser_generator_t binary_gen_t; - - return ( - binary_gen_t::generate( - binary.left().subject(), - binary.right() - )[binary.left().predicate()] - ).parse(scan); - } - }; - - /////////////////////////////////////////////////////////////////////////// - template - struct refactor_action_type { - - template - static typename parser_result::type - parse(ParserT const &p, ScannerT const& scan, BinaryT const& binary, - NestedT const& nested_d) - { - typedef - typename BinaryT::left_t::parser_category_t - parser_category_t; - - return refactor_action_nested:: - parse(p, scan, binary, nested_d); - } - }; - - template <> - struct refactor_action_type { - - template - static typename parser_result::type - parse(ParserT const &p, ScannerT const& scan, BinaryT const& binary, - non_nested_refactoring const&) - { - typedef - typename BinaryT::left_t::parser_category_t - parser_category_t; - - return refactor_action_non_nested:: - parse(p, scan, binary); - } - }; - - template <> - struct refactor_action_type { - - template - static typename parser_result::type - parse(ParserT const &p, ScannerT const& scan, BinaryT const& binary, - self_nested_refactoring const &nested_tag) - { - typedef typename ParserT::parser_generator_t parser_generator_t; - typedef - typename BinaryT::left_t::parser_category_t - parser_category_t; - - parser_generator_t nested_d(nested_tag); - return refactor_action_nested:: - parse(p, scan, binary, nested_d); - } - }; - - /////////////////////////////////////////////////////////////////////////// - // - // refactor the action attached to a binary parser - // - // The refactoring should be done only if the given parser is an - // binary_parser_category parser. - // - /////////////////////////////////////////////////////////////////////////// - - /////////////////////////////////////////////////////////////////////////// - template - struct attach_action_nested { - - template < - typename ParserT, typename ScannerT, typename ActionT, - typename NestedT - > - static typename parser_result::type - parse(ParserT const &, ScannerT const& scan, ActionT const &action, - NestedT const& /*nested_d*/) - { - return action.parse(scan); - } - }; - - template <> - struct attach_action_nested { - - template < - typename ParserT, typename ScannerT, typename ActionT, - typename NestedT - > - static typename parser_result::type - parse(ParserT const &, ScannerT const& scan, ActionT const &action, - NestedT const& nested_d) - { - typedef - typename ActionT::subject_t::parser_generator_t - binary_gen_t; - - return ( - binary_gen_t::generate( - nested_d[action.subject().left()[action.predicate()]], - nested_d[action.subject().right()[action.predicate()]] - ) - ).parse(scan); - } - }; - - /////////////////////////////////////////////////////////////////////////// - template - struct attach_action_non_nested { - - template - static typename parser_result::type - parse(ParserT const &, ScannerT const& scan, ActionT const &action) - { - return action.parse(scan); - } - }; - - template <> - struct attach_action_non_nested { - - template - static typename parser_result::type - parse(ParserT const &, ScannerT const& scan, ActionT const &action) - { - typedef - typename ActionT::subject_t::parser_generator_t - binary_gen_t; - - return ( - binary_gen_t::generate( - action.subject().left()[action.predicate()], - action.subject().right()[action.predicate()] - ) - ).parse(scan); - } - }; - - /////////////////////////////////////////////////////////////////////////// - template - struct attach_action_type { - - template - static typename parser_result::type - parse(ParserT const &p, ScannerT const& scan, ActionT const& action, - NestedT const& nested_d) - { - typedef - typename ActionT::subject_t::parser_category_t - parser_category_t; - - return attach_action_nested:: - parse(p, scan, action, nested_d); - } - }; - - template <> - struct attach_action_type { - - template - static typename parser_result::type - parse(ParserT const &p, ScannerT const& scan, ActionT const &action, - non_nested_refactoring const&) - { - typedef - typename ActionT::subject_t::parser_category_t - parser_category_t; - - return attach_action_non_nested:: - parse(p, scan, action); - } - }; - - template <> - struct attach_action_type { - - template - static typename parser_result::type - parse(ParserT const &p, ScannerT const& scan, ActionT const &action, - self_nested_refactoring const& nested_tag) - { - typedef typename ParserT::parser_generator_t parser_generator_t; - typedef - typename ActionT::subject_t::parser_category_t - parser_category_t; - - parser_generator_t nested_d(nested_tag); - return attach_action_nested:: - parse(p, scan, action, nested_d); - } - }; - -} // namespace impl - -/////////////////////////////////////////////////////////////////////////////// -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace boost::spirit - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/meta/impl/traverse.ipp b/framework/contrib/boost/include/boost/spirit/home/classic/meta/impl/traverse.ipp deleted file mode 100644 index 396823088933..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/meta/impl/traverse.ipp +++ /dev/null @@ -1,393 +0,0 @@ -/*============================================================================= - Copyright (c) 2002-2003 Joel de Guzman - Copyright (c) 2002-2003 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#if !defined(BOOST_SPIRIT_TRAVERSE_IPP) -#define BOOST_SPIRIT_TRAVERSE_IPP - -/////////////////////////////////////////////////////////////////////////////// -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -/////////////////////////////////////////////////////////////////////////////// -namespace impl -{ - - template - struct traverse_post_order_return_category; - -} // namespace impl - -/////////////////////////////////////////////////////////////////////////////// -// -// Environment class for post_order_traversal -// -/////////////////////////////////////////////////////////////////////////////// - -template -struct traverse_post_order_env { - - BOOST_STATIC_CONSTANT(int, level = Level); - BOOST_STATIC_CONSTANT(int, node = Node); - BOOST_STATIC_CONSTANT(int, index = Index); - BOOST_STATIC_CONSTANT(int, lastleft = LastLeft); -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// traverse_post_order_return template -// -// This template is a helper for dispatching the calculation of a parser -// type result for a traversal level to the corresponding parser_category -// based specialization. -// -/////////////////////////////////////////////////////////////////////////////// - -template -struct traverse_post_order_return { - - typedef typename ParserT::parser_category_t parser_category_t; - typedef typename impl::traverse_post_order_return_category - ::template result::type type; -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// parser_traversal_..._result templates -// -// These are metafunctions, which calculate the resulting parser type -// for all subparsers and feed these types to the user supplied -// metafunctions to get back the resulting parser type of this traversal -// level. -// -/////////////////////////////////////////////////////////////////////////////// - -template -struct parser_traversal_plain_result { - - typedef typename MetaT::template plain_result::type type; -}; - -/////////////////////////////////////////////////////////////////////////////// -template -struct parser_traversal_unary_result { - - typedef typename MetaT - ::template unary_result::type type; -}; - -/////////////////////////////////////////////////////////////////////////////// -template -struct parser_traversal_action_result { - - typedef typename MetaT - ::template action_result::type type; -}; - -/////////////////////////////////////////////////////////////////////////////// -template < - typename MetaT, typename BinaryT, typename LeftT, - typename RightT, typename EnvT -> -struct parser_traversal_binary_result { - - BOOST_STATIC_CONSTANT(int, - thisnum = (node_count::value + EnvT::lastleft-1)); - BOOST_STATIC_CONSTANT(int, - leftnum = (node_count::value + EnvT::lastleft-1)); - BOOST_STATIC_CONSTANT(int, - leafnum = (leaf_count::value + EnvT::index)); - - typedef parser_traversal_binary_result self_t; - - // left traversal environment and resulting parser type - typedef traverse_post_order_env< - (EnvT::level+1), (self_t::leftnum), (EnvT::index), (EnvT::lastleft) - > left_sub_env_t; - typedef typename traverse_post_order_return< - MetaT, LeftT, left_sub_env_t - >::type - left_t; - - // right traversal environment and resulting parser type - typedef traverse_post_order_env< - (EnvT::level+1), (self_t::thisnum-1), (self_t::leafnum), (self_t::leftnum+1) - > right_sub_env_t; - typedef typename traverse_post_order_return< - MetaT, RightT, right_sub_env_t - >::type - right_t; - - typedef typename MetaT::template binary_result< - BinaryT, left_t, right_t, EnvT - >::type - type; -}; - -/////////////////////////////////////////////////////////////////////////////// -namespace impl -{ - /////////////////////////////////////////////////////////////////////////// - // - // Meta functions, which dispatch the calculation of the return type of - // of the post_order traverse function to the result template of the - // corresponding parser_category based metafunction template. - // - /////////////////////////////////////////////////////////////////////////// - - template - struct traverse_post_order_return_category; - - template <> - struct traverse_post_order_return_category { - - template - struct result { - - typedef typename parser_traversal_plain_result< - MetaT, ParserT, EnvT - >::type - type; - }; - }; - - template <> - struct traverse_post_order_return_category { - - template - struct result { - - typedef typename parser_traversal_unary_result< - MetaT, ParserT, typename ParserT::subject_t, EnvT - >::type - type; - }; - }; - - template <> - struct traverse_post_order_return_category { - - template - struct result { - - typedef typename parser_traversal_action_result< - MetaT, ParserT, typename ParserT::subject_t, EnvT - >::type - type; - }; - }; - - template <> - struct traverse_post_order_return_category { - - template - struct result { - - typedef typename parser_traversal_binary_result< - MetaT, ParserT, typename ParserT::left_t, - typename ParserT::right_t, EnvT - >::type - type; - }; - }; - - /////////////////////////////////////////////////////////////////////////// - // - // Post-order parser traversal - // - // The following templates contain the parser_category based code for - // - // - calculating the type of the resulting parser, which is to be - // returned from a level of traversal - // - traversing down the composite parser structure, this traversal - // returnes a new parser object - // - // Both tasks are delegated to the MetaT metafunction supplied by the - // user. - // - /////////////////////////////////////////////////////////////////////////// - - template - struct traverse_post_order; - - template <> - struct traverse_post_order { - - template - struct result { - - typedef - typename parser_traversal_plain_result::type - type; - }; - - template - static - typename parser_traversal_plain_result::type - generate(MetaT const &meta_, ParserT const &parser_, EnvT const &env) - { - return meta_.generate_plain(parser_, env); - } - }; - - template <> - struct traverse_post_order { - - template < - typename MetaT, typename ParserT, typename SubjectT, typename EnvT - > - struct result { - - typedef typename parser_traversal_unary_result< - MetaT, ParserT, SubjectT, EnvT - >::type - type; - }; - - template - static - typename parser_traversal_unary_result< - MetaT, ParserT, - typename traverse_post_order_return< - MetaT, typename ParserT::subject_t, EnvT - >::type, - EnvT - >::type - generate(MetaT const &meta_, ParserT const &unary_, EnvT const &env) - { - typedef typename ParserT::subject_t subject_t; - typedef typename subject_t::parser_category_t subject_category_t; - - return meta_.generate_unary( - unary_, - traverse_post_order::generate(meta_, - unary_.subject(), - traverse_post_order_env< - EnvT::level+1, EnvT::node-1, EnvT::index, EnvT::lastleft - >() - ), - env - ); - } - }; - - template <> - struct traverse_post_order { - - template < - typename MetaT, typename ParserT, typename SubjectT, typename EnvT - > - struct result { - - typedef typename parser_traversal_action_result< - MetaT, ParserT, SubjectT, EnvT - >::type - type; - }; - - template - static - typename parser_traversal_action_result< - MetaT, ParserT, - typename traverse_post_order_return< - MetaT, typename ParserT::subject_t, EnvT - >::type, - EnvT - >::type - generate(MetaT const &meta_, ParserT const &action_, EnvT const &env) - { - typedef typename ParserT::subject_t subject_t; - typedef typename subject_t::parser_category_t subject_category_t; - - return meta_.generate_action( - action_, - traverse_post_order::generate(meta_, - action_.subject(), - traverse_post_order_env< - EnvT::level+1, EnvT::node-1, EnvT::index, EnvT::lastleft - >() - ), - env - ); - } - }; - - template <> - struct traverse_post_order { - - template < - typename MetaT, typename ParserT, typename LeftT, - typename RightT, typename EnvT - > - struct result { - - typedef typename parser_traversal_binary_result< - MetaT, ParserT, LeftT, RightT, EnvT - >::type - type; - }; - - template - static - typename parser_traversal_binary_result< - MetaT, ParserT, - typename traverse_post_order_return< - MetaT, typename ParserT::left_t, EnvT - >::type, - typename traverse_post_order_return< - MetaT, typename ParserT::right_t, EnvT - >::type, - EnvT - >::type - generate(MetaT const &meta_, ParserT const &binary_, EnvT const& /*env*/) - { - typedef typename ParserT::left_t left_t; - typedef typename ParserT::right_t right_t; - typedef typename left_t::parser_category_t left_category_t; - typedef typename right_t::parser_category_t right_category_t; - - enum { - leftnum = (node_count::value + EnvT::lastleft-1), - thisnum = (node_count::value + EnvT::lastleft-1), - rightnum = (thisnum-1), - leafnum = (leaf_count::value + EnvT::index) - }; - - return meta_.generate_binary( - binary_, - traverse_post_order::generate( - meta_, binary_.left(), - traverse_post_order_env< - EnvT::level+1, leftnum, EnvT::index, EnvT::lastleft - >() - ), - traverse_post_order::generate( - meta_, binary_.right(), - traverse_post_order_env< - EnvT::level+1, rightnum, leafnum, leftnum+1 - >() - ), - traverse_post_order_env< - EnvT::level, thisnum, EnvT::index, EnvT::lastleft - >() - ); - } - }; - -} // namespace impl - -/////////////////////////////////////////////////////////////////////////////// -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace boost::spirit - -#endif // !defined(BOOST_SPIRIT_TRAVERSE_IPP) diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/meta/parser_traits.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/meta/parser_traits.hpp deleted file mode 100644 index d603d5ba4373..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/meta/parser_traits.hpp +++ /dev/null @@ -1,320 +0,0 @@ -/*============================================================================= - Copyright (c) 2002-2003 Joel de Guzman - Copyright (c) 2002-2003 Hartmut Kaiser - Copyright (c) 2003 Martin Wille - http://spirit.sourceforge.net/ - - 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_PARSER_TRAITS_HPP) -#define BOOST_SPIRIT_PARSER_TRAITS_HPP - -#include -#include - -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -/////////////////////////////////////////////////////////////////////////////// -// -// Parser traits templates -// -// Used to determine the type and several other characteristics of a given -// parser type. -// -/////////////////////////////////////////////////////////////////////////////// - -/////////////////////////////////////////////////////////////////////////////// -// -// The is_parser traits template can be used to tell wether a given -// class is a parser. -// -/////////////////////////////////////////////////////////////////////////////// -template -struct is_parser -{ - BOOST_STATIC_CONSTANT(bool, value = - (::boost::is_base_and_derived, T>::value)); - -// [JDG 2/3/03] simplified implementation by -// using boost::is_base_and_derived -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// The is_unary_composite traits template can be used to tell if a given -// parser is a unary parser as for instance kleene_star or optional. -// -/////////////////////////////////////////////////////////////////////////////// -template -struct is_unary_composite { - - BOOST_STATIC_CONSTANT(bool, value = (::boost::is_convertible< - typename UnaryT::parser_category_t, unary_parser_category>::value)); -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// The is_acction_parser traits template can be used to tell if a given -// parser is a action parser, i.e. it is a composite consisting of a -// auxiliary parser and an attached semantic action. -// -/////////////////////////////////////////////////////////////////////////////// -template -struct is_action_parser { - - BOOST_STATIC_CONSTANT(bool, value = (::boost::is_convertible< - typename ActionT::parser_category_t, action_parser_category>::value)); -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// The is_binary_composite traits template can be used to tell if a given -// parser is a binary parser as for instance sequence or difference. -// -/////////////////////////////////////////////////////////////////////////////// -template -struct is_binary_composite { - - BOOST_STATIC_CONSTANT(bool, value = (::boost::is_convertible< - typename BinaryT::parser_category_t, binary_parser_category>::value)); -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// The is_composite_parser traits template can be used to tell if a given -// parser is a unary or a binary parser composite type. -// -/////////////////////////////////////////////////////////////////////////////// -template -struct is_composite_parser { - - BOOST_STATIC_CONSTANT(bool, value = ( - ::BOOST_SPIRIT_CLASSIC_NS::is_unary_composite::value || - ::BOOST_SPIRIT_CLASSIC_NS::is_binary_composite::value)); -}; - -/////////////////////////////////////////////////////////////////////////////// -template -struct is_alternative { - - BOOST_STATIC_CONSTANT(bool, value = ( - ::BOOST_SPIRIT_CLASSIC_NS::impl::parser_type_traits::is_alternative)); -}; - -template -struct is_sequence { - - BOOST_STATIC_CONSTANT(bool, value = ( - ::BOOST_SPIRIT_CLASSIC_NS::impl::parser_type_traits::is_sequence)); -}; - -template -struct is_sequential_or { - - BOOST_STATIC_CONSTANT(bool, value = ( - ::BOOST_SPIRIT_CLASSIC_NS::impl::parser_type_traits::is_sequential_or)); -}; - -template -struct is_intersection { - - BOOST_STATIC_CONSTANT(bool, value = ( - ::BOOST_SPIRIT_CLASSIC_NS::impl::parser_type_traits::is_intersection)); -}; - -template -struct is_difference { - - BOOST_STATIC_CONSTANT(bool, value = ( - ::BOOST_SPIRIT_CLASSIC_NS::impl::parser_type_traits::is_difference)); -}; - -template -struct is_exclusive_or { - - BOOST_STATIC_CONSTANT(bool, value = ( - ::BOOST_SPIRIT_CLASSIC_NS::impl::parser_type_traits::is_exclusive_or)); -}; - -template -struct is_optional { - - BOOST_STATIC_CONSTANT(bool, value = ( - ::BOOST_SPIRIT_CLASSIC_NS::impl::parser_type_traits::is_optional)); -}; - -template -struct is_kleene_star { - - BOOST_STATIC_CONSTANT(bool, value = ( - ::BOOST_SPIRIT_CLASSIC_NS::impl::parser_type_traits::is_kleene_star)); -}; - -template -struct is_positive { - - BOOST_STATIC_CONSTANT(bool, value = ( - ::BOOST_SPIRIT_CLASSIC_NS::impl::parser_type_traits::is_positive)); -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// Parser extraction templates -// -/////////////////////////////////////////////////////////////////////////////// - -/////////////////////////////////////////////////////////////////////////////// -// -// The unary_subject template can be used to return the type of the -// parser used as the subject of an unary parser. -// If the parser under inspection is not an unary type parser the compilation -// will fail. -// -/////////////////////////////////////////////////////////////////////////////// -template -struct unary_subject { - - BOOST_STATIC_ASSERT(BOOST_SPIRIT_CLASSIC_NS::is_unary_composite::value); - typedef typename UnaryT::subject_t type; -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// The get_unary_subject template function returns the parser object, which -// is used as the subject of an unary parser. -// If the parser under inspection is not an unary type parser the compilation -// will fail. -// -/////////////////////////////////////////////////////////////////////////////// -template -inline typename unary_subject::type const & -get_unary_subject(UnaryT const &unary_) -{ - BOOST_STATIC_ASSERT(::BOOST_SPIRIT_CLASSIC_NS::is_unary_composite::value); - return unary_.subject(); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// The binary_left_subject and binary_right_subject templates can be used to -// return the types of the parsers used as the left and right subject of an -// binary parser. -// If the parser under inspection is not a binary type parser the compilation -// will fail. -// -/////////////////////////////////////////////////////////////////////////////// -template -struct binary_left_subject { - - BOOST_STATIC_ASSERT(::BOOST_SPIRIT_CLASSIC_NS::is_binary_composite::value); - typedef typename BinaryT::left_t type; -}; - -template -struct binary_right_subject { - - BOOST_STATIC_ASSERT(::BOOST_SPIRIT_CLASSIC_NS::is_binary_composite::value); - typedef typename BinaryT::right_t type; -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// The get_binary_left_subject and get_binary_right_subject template functions -// return the parser object, which is used as the left or right subject of a -// binary parser. -// If the parser under inspection is not a binary type parser the compilation -// will fail. -// -/////////////////////////////////////////////////////////////////////////////// -template -inline typename binary_left_subject::type const & -get_binary_left_subject(BinaryT const &binary_) -{ - BOOST_STATIC_ASSERT(::BOOST_SPIRIT_CLASSIC_NS::is_binary_composite::value); - return binary_.left(); -} - -template -inline typename binary_right_subject::type const & -get_binary_right_subject(BinaryT const &binary_) -{ - BOOST_STATIC_ASSERT(::BOOST_SPIRIT_CLASSIC_NS::is_binary_composite::value); - return binary_.right(); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// The action_subject template can be used to return the type of the -// parser used as the subject of an action parser. -// If the parser under inspection is not an action type parser the compilation -// will fail. -// -/////////////////////////////////////////////////////////////////////////////// -template -struct action_subject { - - BOOST_STATIC_ASSERT(::BOOST_SPIRIT_CLASSIC_NS::is_action_parser::value); - typedef typename ActionT::subject_t type; -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// The get_action_subject template function returns the parser object, which -// is used as the subject of an action parser. -// If the parser under inspection is not an action type parser the compilation -// will fail. -// -/////////////////////////////////////////////////////////////////////////////// -template -inline typename action_subject::type const & -get_action_subject(ActionT const &action_) -{ - BOOST_STATIC_ASSERT(::BOOST_SPIRIT_CLASSIC_NS::is_action_parser::value); - return action_.subject(); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// The semantic_action template can be used to return the type of the -// attached semantic action of an action parser. -// If the parser under inspection is not an action type parser the compilation -// will fail. -// -/////////////////////////////////////////////////////////////////////////////// -template -struct semantic_action { - - BOOST_STATIC_ASSERT(::BOOST_SPIRIT_CLASSIC_NS::is_action_parser::value); - typedef typename ActionT::predicate_t type; -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// The get_semantic_action template function returns the attached semantic -// action of an action parser. -// If the parser under inspection is not an action type parser the compilation -// will fail. -// -/////////////////////////////////////////////////////////////////////////////// -template -inline typename semantic_action::type const & -get_semantic_action(ActionT const &action_) -{ - BOOST_STATIC_ASSERT(::BOOST_SPIRIT_CLASSIC_NS::is_action_parser::value); - return action_.predicate(); -} - -/////////////////////////////////////////////////////////////////////////////// -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif // !defined(BOOST_SPIRIT_PARSER_TRAITS_HPP) diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/meta/refactoring.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/meta/refactoring.hpp deleted file mode 100644 index fa45b01548cc..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/meta/refactoring.hpp +++ /dev/null @@ -1,287 +0,0 @@ -/*============================================================================= - Copyright (c) 2002-2003 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_REFACTORING_HPP -#define BOOST_SPIRIT_REFACTORING_HPP - -/////////////////////////////////////////////////////////////////////////////// -#include -#include -#include -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -#pragma warning(push) -#pragma warning(disable:4512) //assignment operator could not be generated -#endif - -/////////////////////////////////////////////////////////////////////////////// -// -// refactor_unary_parser class -// -// This helper template allows to attach an unary operation to a newly -// constructed parser, which combines the subject of the left operand of -// the original given parser (BinaryT) with the right operand of the -// original binary parser through the original binary operation and -// rewraps the resulting parser with the original unary operator. -// -// For instance given the parser: -// *some_parser - another_parser -// -// will be refactored to: -// *(some_parser - another_parser) -// -// If the parser to refactor is not a unary parser, no refactoring is done -// at all. -// -// The original parser should be a binary_parser_category parser, -// else the compilation will fail -// -/////////////////////////////////////////////////////////////////////////////// - -template -class refactor_unary_gen; - -template -class refactor_unary_parser : - public parser > { - -public: - // the parser to refactor has to be at least a binary_parser_category - // parser - BOOST_STATIC_ASSERT(( - boost::is_convertible::value - )); - - refactor_unary_parser(BinaryT const& binary_, NestedT const& nested_) - : binary(binary_), nested(nested_) {} - - typedef refactor_unary_parser self_t; - typedef refactor_unary_gen parser_generator_t; - typedef typename BinaryT::left_t::parser_category_t parser_category_t; - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - return impl::refactor_unary_type:: - parse(*this, scan, binary, nested); - } - -private: - typename as_parser::type::embed_t binary; - typename NestedT::embed_t nested; -}; - -////////////////////////////////// -template -class refactor_unary_gen { - -public: - typedef refactor_unary_gen embed_t; - - refactor_unary_gen(NestedT const& nested_ = non_nested_refactoring()) - : nested(nested_) {} - - template - refactor_unary_parser - operator[](parser const& subject) const - { - return refactor_unary_parser - (subject.derived(), nested); - } - -private: - typename NestedT::embed_t nested; -}; - -const refactor_unary_gen<> refactor_unary_d = refactor_unary_gen<>(); - -/////////////////////////////////////////////////////////////////////////////// -// -// refactor_action_parser class -// -// This helper template allows to attach an action taken from the left -// operand of the given binary parser to a newly constructed parser, -// which combines the subject of the left operand of the original binary -// parser with the right operand of the original binary parser by means of -// the original binary operator parser. -// -// For instance the parser: -// some_parser[some_attached_functor] - another_parser -// -// will be refactored to: -// (some_parser - another_parser)[some_attached_functor] -// -// If the left operand to refactor is not an action parser, no refactoring -// is done at all. -// -// The original parser should be a binary_parser_category parser, -// else the compilation will fail -// -/////////////////////////////////////////////////////////////////////////////// - -template -class refactor_action_gen; - -template -class refactor_action_parser : - public parser > { - -public: - // the parser to refactor has to be at least a binary_parser_category - // parser - BOOST_STATIC_ASSERT(( - boost::is_convertible::value - )); - - refactor_action_parser(BinaryT const& binary_, NestedT const& nested_) - : binary(binary_), nested(nested_) {} - - typedef refactor_action_parser self_t; - typedef refactor_action_gen parser_generator_t; - typedef typename BinaryT::left_t::parser_category_t parser_category_t; - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - return impl::refactor_action_type:: - parse(*this, scan, binary, nested); - } - -private: - typename as_parser::type::embed_t binary; - typename NestedT::embed_t nested; -}; - -////////////////////////////////// -template -class refactor_action_gen { - -public: - typedef refactor_action_gen embed_t; - - refactor_action_gen(NestedT const& nested_ = non_nested_refactoring()) - : nested(nested_) {} - - template - refactor_action_parser - operator[](parser const& subject) const - { - return refactor_action_parser - (subject.derived(), nested); - } - -private: - typename NestedT::embed_t nested; -}; - -const refactor_action_gen<> refactor_action_d = refactor_action_gen<>(); - -/////////////////////////////////////////////////////////////////////////////// -// -// attach_action_parser class -// -// This helper template allows to attach an action given separately -// to all parsers, out of which the given parser is constructed and -// reconstructs a new parser having the same structure. -// -// For instance the parser: -// (some_parser >> another_parser)[some_attached_functor] -// -// will be refactored to: -// some_parser[some_attached_functor] -// >> another_parser[some_attached_functor] -// -// The original parser should be a action_parser_category parser, -// else the compilation will fail. -// -// If the parser, to which the action is attached is not an binary parser, -// no refactoring is done at all. -// -/////////////////////////////////////////////////////////////////////////////// - -template -class attach_action_gen; - -template -class attach_action_parser : - public parser > { - -public: - // the parser to refactor has to be at least a action_parser_category - // parser - BOOST_STATIC_ASSERT(( - boost::is_convertible::value - )); - - attach_action_parser(ActionT const& actor_, NestedT const& nested_) - : actor(actor_), nested(nested_) {} - - typedef attach_action_parser self_t; - typedef attach_action_gen parser_generator_t; - typedef typename ActionT::parser_category_t parser_category_t; - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - return impl::attach_action_type:: - parse(*this, scan, actor, nested); - } - -private: - typename as_parser::type::embed_t actor; - typename NestedT::embed_t nested; -}; - -////////////////////////////////// -template -class attach_action_gen { - -public: - typedef attach_action_gen embed_t; - - attach_action_gen(NestedT const& nested_ = non_nested_refactoring()) - : nested(nested_) {} - - template - attach_action_parser, NestedT> - operator[](action const& actor) const - { - return attach_action_parser, NestedT> - (actor, nested); - } - -private: - typename NestedT::embed_t nested; -}; - -const attach_action_gen<> attach_action_d = attach_action_gen<>(); - -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -#pragma warning(pop) -#endif - -/////////////////////////////////////////////////////////////////////////////// -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif // BOOST_SPIRIT_REFACTORING_HPP - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/meta/traverse.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/meta/traverse.hpp deleted file mode 100644 index d2d14619dde0..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/meta/traverse.hpp +++ /dev/null @@ -1,222 +0,0 @@ -/*============================================================================= - Copyright (c) 2002-2003 Joel de Guzman - Copyright (c) 2002-2003 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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_TRAVERSE_HPP) -#define BOOST_SPIRIT_TRAVERSE_HPP - -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // - // Post-order traversal of auxiliary parsers. - // - /////////////////////////////////////////////////////////////////////////// - struct post_order - { - // Return the parser type, which is generated as the result of the - // traverse function below. - - template - struct result - { - typedef typename - traverse_post_order_return< - MetaT - , ParserT - , traverse_post_order_env<0, 0, 0, 0> - >::type - type; - }; - - // Traverse a given parser and refactor it with the help of the given - // MetaT metafunction template. - - template - static typename result::type - traverse(MetaT const &meta_, ParserT const &parser_) - { - typedef typename ParserT::parser_category_t parser_category_t; - return impl::traverse_post_order::generate( - meta_, parser_, traverse_post_order_env<0, 0, 0, 0>()); - } - }; - - /////////////////////////////////////////////////////////////////////////// - // - // Transform policies - // - // The following policy classes could be used to assemble some new - // transformation metafunction which uses identity transformations - // for some parser_category type parsers. - // - /////////////////////////////////////////////////////////////////////////// - - /////////////////////////////////////////////////////////////////////////// - // transform plain parsers - template - struct plain_identity_policy - { - template - struct plain_result - { - // plain parsers should be embedded and returned correctly - typedef typename ParserT::embed_t type; - }; - - template - typename parser_traversal_plain_result::type - generate_plain(ParserT const &parser_, EnvT const& /*env*/) const - { - return parser_; - } - }; - - ////////////////////////////////// - // transform unary parsers - template - struct unary_identity_policy_return - { - typedef typename UnaryT::parser_generator_t parser_generator_t; - typedef typename parser_generator_t - ::template result::type type; - }; - - template - struct unary_identity_policy - { - template - struct unary_result - { - typedef - typename unary_identity_policy_return::type - type; - }; - - template - typename parser_traversal_unary_result< - TransformT, UnaryT, SubjectT, EnvT>::type - generate_unary( - UnaryT const &, SubjectT const &subject_, EnvT const& /*env*/) const - { - typedef typename UnaryT::parser_generator_t parser_generator_t; - return parser_generator_t::template generate(subject_); - } - }; - - ////////////////////////////////// - // transform action parsers - template - struct action_identity_policy - { - template - struct action_result - { - typedef action type; - }; - - template - typename parser_traversal_action_result< - TransformT, ActionT, SubjectT, EnvT - >::type - generate_action(ActionT const &action_, SubjectT const &subject_, - EnvT const& /*env*/) const - { - return subject_[action_.predicate()]; - } - }; - - ////////////////////////////////// - // transform binary parsers - template - struct binary_identity_policy_return - { - typedef typename BinaryT::parser_generator_t parser_generator_t; - typedef typename parser_generator_t - ::template result::type type; - }; - - template - struct binary_identity_policy - { - template - struct binary_result { - - typedef typename - binary_identity_policy_return::type - type; - }; - - template - typename parser_traversal_binary_result< - TransformT, BinaryT, LeftT, RightT, EnvT - >::type - generate_binary( - BinaryT const &, LeftT const& left_ - , RightT const& right_, EnvT const& /*env*/) const - { - typedef typename BinaryT::parser_generator_t parser_generator_t; - return parser_generator_t:: - template generate(left_, right_); - } - }; - - /////////////////////////////////////////////////////////////////////////// - // - // transform_policies template - // - // The transform_policies template metafunction could serve as a - // base class for new metafunctions to be passed to the traverse meta - // template (see above), where only minimal parts have to be - // overwritten. - // - /////////////////////////////////////////////////////////////////////////// - - template < - typename TransformT, - typename PlainPolicyT = plain_identity_policy, - typename UnaryPolicyT = unary_identity_policy, - typename ActionPolicyT = action_identity_policy, - typename BinaryPolicyT = binary_identity_policy - > - struct transform_policies : - public PlainPolicyT, - public UnaryPolicyT, - public ActionPolicyT, - public BinaryPolicyT - { - }; - - /////////////////////////////////////////////////////////////////////////// - // - // Identity transformation - // - // The identity_transform metafunction supplied to the traverse - // template will generate a new parser, which will be exactly - // identical to the parser given as the parameter to the traverse - // metafunction. I.e. the following conceptual 'equation' will be - // always true: - // - // some_parser == - // post_order::traverse(identity_transform(), some_parser) - // - /////////////////////////////////////////////////////////////////////////// - - struct identity_transform : transform_policies {}; - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif // !defined(BOOST_SPIRIT_TRAVERSE_HPP) diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/namespace.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/namespace.hpp deleted file mode 100644 index 5f1010eb71fe..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/namespace.hpp +++ /dev/null @@ -1,35 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2008 Joel de Guzman - Copyright (c) 2001-2008 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_CLASSIC_NAMESPACE_HPP -#define BOOST_SPIRIT_CLASSIC_NAMESPACE_HPP - -#if defined(BOOST_SPIRIT_USE_OLD_NAMESPACE) - -// Use the old namespace for Spirit.Classic, everything is located in the -// namespace boost::spirit. -// This is in place for backwards compatibility with Spirit V1.8.x. Don't use -// it when combining Spirit.Classic with other parts of the library - -#define BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN /*namespace classic {*/ -#define BOOST_SPIRIT_CLASSIC_NS boost::spirit/*::classic*/ -#define BOOST_SPIRIT_CLASSIC_NAMESPACE_END /*}*/ - -#else - -// This is the normal (and suggested) mode of operation when using -// Spirit.Classic. Everything will be located in the namespace -// boost::spirit::classic, avoiding name clashes with other parts of Spirit. - -#define BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN namespace classic { -#define BOOST_SPIRIT_CLASSIC_NS boost::spirit::classic -#define BOOST_SPIRIT_CLASSIC_NAMESPACE_END } - -#endif - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/phoenix.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/phoenix.hpp deleted file mode 100644 index c0aadd1743e8..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/phoenix.hpp +++ /dev/null @@ -1,25 +0,0 @@ -/*============================================================================= - Phoenix V1.2.1 - Copyright (c) 2001-2002 Joel de Guzman - - 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_PHOENIX_HPP) -#define BOOST_SPIRIT_PHOENIX_HPP - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#endif // !defined(BOOST_SPIRIT_PHOENIX_HPP) diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/phoenix/actor.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/phoenix/actor.hpp deleted file mode 100644 index 340159b1878a..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/phoenix/actor.hpp +++ /dev/null @@ -1,605 +0,0 @@ -/*============================================================================= - Phoenix v1.2 - Copyright (c) 2001-2002 Joel de Guzman - - 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) -==============================================================================*/ -#ifndef BOOST_SPIRIT_CLASSIC_PHOENIX_ACTOR_HPP -#define BOOST_SPIRIT_CLASSIC_PHOENIX_ACTOR_HPP - -/////////////////////////////////////////////////////////////////////////////// -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace phoenix { - -// These are forward declared here because we cannot include impl.hpp -// or operators.hpp yet but the actor's assignment operator and index -// operator are required to be members. - -////////////////////////////////// -struct assign_op; -struct index_op; - -////////////////////////////////// -namespace impl { - - template - struct make_binary1; -} - -/////////////////////////////////////////////////////////////////////////////// -// -// unpack_tuple class -// -// This class is used to unpack a supplied tuple such, that the members of -// this tuple will be handled as if they would be supplied separately. -// -/////////////////////////////////////////////////////////////////////////////// -template -struct unpack_tuple : public TupleT { - - typedef TupleT tuple_t; - - unpack_tuple() {} - unpack_tuple(tuple_t const &tuple_) : TupleT(tuple_) {} -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// actor class -// -// This class is a protocol class for all actors. This class is -// essentially an interface contract. The actor class does not -// really know how how to act on anything but instead relies on the -// template parameter BaseT (from which the actor will derive from) -// to do the actual action. -// -// An actor is a functor that is capable of accepting arguments up -// to a predefined maximum. It is up to the base class to do the -// actual processing or possibly to limit the arity (no. of -// arguments) passed in. Upon invocation of the functor through a -// supplied operator(), the actor funnels the arguments passed in -// by the client into a tuple and calls the base eval member -// function. -// -// Schematically: -// -// arg0 ---------| -// arg1 ---------| -// arg2 ---------|---> tupled_args ---> base.eval -// ... | -// argN ---------| -// -// actor::operator()(arg0, arg1... argN) -// ---> BaseT::eval(tupled_args); -// -// Actor base classes from which this class inherits from are -// expected to have a corresponding member function eval compatible -// with the conceptual Interface: -// -// template -// actor_return_type -// eval(TupleT const& args) const; -// -// where args are the actual arguments passed in by the client -// funneled into a tuple (see tuple.hpp for details). -// -// The actor_return_type can be anything. Base classes are free to -// return any type, even argument dependent types (types that are -// deduced from the types of the arguments). After evaluating the -// parameters and doing some computations or actions, the eval -// member function concludes by returning something back to the -// client. To do this, the forwarding function (the actor's -// operator()) needs to know the return type of the eval member -// function that it is calling. For this purpose, actor base -// classes are required to provide a nested template class: -// -// template -// struct result; -// -// This auxiliary class provides the result type information -// returned by the eval member function of a base actor class. The -// nested template class result should have a typedef 'type' that -// reflects the return type of its member function eval. It is -// basically a type computer that answers the question "given -// arguments packed into a TupleT type, what will be the result -// type of the eval member function of ActorT?". The template class -// actor_result queries this to extract the return type of an -// actor. Example: -// -// typedef typename actor_result::type -// actor_return_type; -// -// where actor_return_type is the actual type returned by ActorT's -// eval member function given some arguments in a TupleT. -// -/////////////////////////////////////////////////////////////////////////////// -template -struct actor_result { - - typedef typename ActorT::template result::type type; - typedef typename boost::remove_reference::type plain_type; -}; - -////////////////////////////////// -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -#pragma warning(push) -#pragma warning(disable:4512) //assignment operator could not be generated -#endif - -template -struct actor : public BaseT { - - actor(); - actor(BaseT const& base); - - typename actor_result >::type - operator()() const; - - template - typename actor_result >::type - operator()(A& a) const; - - template - typename actor_result >::type - operator()(A& a, B& b) const; - - template - typename actor_result >::type - operator()(A& a, B& b, C& c) const; - -#if PHOENIX_LIMIT > 3 - template - typename actor_result >::type - operator()(A& a, B& b, C& c, D& d) const; - - template - typename actor_result >::type - operator()(A& a, B& b, C& c, D& d, E& e) const; - - template < - typename A, typename B, typename C, typename D, typename E, - typename F> - typename actor_result >::type - operator()(A& a, B& b, C& c, D& d, E& e, F& f) const; - -#if PHOENIX_LIMIT > 6 - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G> - typename actor_result >::type - operator()(A& a, B& b, C& c, D& d, E& e, F& f, G& g) const; - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H> - typename actor_result - >::type - operator()(A& a, B& b, C& c, D& d, E& e, F& f, G& g, H& h) const; - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I> - typename actor_result - >::type - operator()(A& a, B& b, C& c, D& d, E& e, F& f, G& g, H& h, I& i) const; - -#if PHOENIX_LIMIT > 9 - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J> - typename actor_result - >::type - operator()( - A& a, B& b, C& c, D& d, E& e, F& f, G& g, H& h, I& i, J& j) const; - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, - typename K> - typename actor_result - >::type - operator()( - A& a, B& b, C& c, D& d, E& e, F& f, G& g, H& h, I& i, J& j, - K& k) const; - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, - typename K, typename L> - typename actor_result - >::type - operator()( - A& a, B& b, C& c, D& d, E& e, F& f, G& g, H& h, I& i, J& j, - K& k, L& l) const; - -#if PHOENIX_LIMIT > 12 - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, - typename K, typename L, typename M> - typename actor_result - >::type - operator()( - A& a, B& b, C& c, D& d, E& e, F& f, G& g, H& h, I& i, J& j, - K& k, L& l, M& m) const; - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, - typename K, typename L, typename M, typename N> - typename actor_result - >::type - operator()( - A& a, B& b, C& c, D& d, E& e, F& f, G& g, H& h, I& i, J& j, - K& k, L& l, M& m, N& n) const; - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, - typename K, typename L, typename M, typename N, typename O> - typename actor_result - >::type - operator()( - A& a, B& b, C& c, D& d, E& e, F& f, G& g, H& h, I& i, J& j, - K& k, L& l, M& m, N& n, O& o) const; - -#endif -#endif -#endif -#endif - - template - typename actor_result >::type - operator()(unpack_tuple const &t) const; - - template - typename impl::make_binary1::type - operator=(B const& b) const; - - template - typename impl::make_binary1::type - operator[](B const& b) const; -}; - -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -#pragma warning(pop) -#endif - -/////////////////////////////////////////////////////////////////////////// -// -// as_actor -// -// as_actor is a meta-program that converts an arbitrary type into -// an actor. All participants in the framework must be first-class -// actors. This meta-program is used all throughout the framework -// whenever an unknown type needs to be converted to an actor. -// as_actor specializations are expected to have a typedef 'type'. -// This is the destination actor type. A static member function -// 'convert' converts an object to this target type. -// -// The meta-program does no conversion if the object to be -// converted is already an actor. -// -/////////////////////////////////////////////////////////////////////////// -template -struct as_actor; - -////////////////////////////////// -template -struct as_actor > { - - typedef actor type; - static type convert(actor const& x) { return x; } -}; - -////////////////////////////////// -template <> -struct as_actor { - - typedef nil_t type; - static nil_t convert(nil_t /*x*/) - { return nil_t(); } -}; - -////////////////////////////////// -template <> -struct as_actor { - - typedef void type; - // ERROR!!! -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// actor class implementation -// -/////////////////////////////////////////////////////////////////////////////// -template -actor::actor() -: BaseT() {} - -////////////////////////////////// -template -actor::actor(BaseT const& base) -: BaseT(base) {} - -////////////////////////////////// -template -inline typename actor_result >::type -actor::operator()() const -{ - return BaseT::eval(tuple<>()); -} - -////////////////////////////////// -template -template -inline typename actor_result >::type -actor::operator()(A& a_) const -{ - return BaseT::eval(tuple(a_)); -} - -////////////////////////////////// -template -template -inline typename actor_result >::type -actor::operator()(A& a_, B& b_) const -{ - return BaseT::eval(tuple(a_, b_)); -} - -////////////////////////////////// -template -template -inline typename actor_result >::type -actor::operator()(A& a_, B& b_, C& c_) const -{ - return BaseT::eval(tuple(a_, b_, c_)); -} - -#if PHOENIX_LIMIT > 3 -////////////////////////////////// -template -template -inline typename actor_result >::type -actor::operator()(A& a_, B& b_, C& c_, D& d_) const -{ - return BaseT::eval(tuple(a_, b_, c_, d_)); -} - -////////////////////////////////// -template -template -inline typename actor_result >::type -actor::operator()(A& a_, B& b_, C& c_, D& d_, E& e_) const -{ - return BaseT::eval(tuple(a_, b_, c_, d_, e_)); -} - -////////////////////////////////// -template -template < - typename A, typename B, typename C, typename D, typename E, - typename F> -inline typename actor_result ->::type -actor::operator()( - A& a_, B& b_, C& c_, D& d_, E& e_, F& f_ -) const -{ - return BaseT::eval( - tuple - (a_, b_, c_, d_, e_, f_) - ); -} - -#if PHOENIX_LIMIT > 6 -////////////////////////////////// -template -template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G> -inline typename actor_result ->::type -actor::operator()( - A& a_, B& b_, C& c_, D& d_, E& e_, F& f_, G& g_ -) const -{ - return BaseT::eval( - tuple - (a_, b_, c_, d_, e_, f_, g_) - ); -} - -////////////////////////////////// -template -template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H> -inline typename actor_result ->::type -actor::operator()( - A& a_, B& b_, C& c_, D& d_, E& e_, F& f_, G& g_, H& h_ -) const -{ - return BaseT::eval( - tuple - (a_, b_, c_, d_, e_, f_, g_, h_) - ); -} - -////////////////////////////////// -template -template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I> -inline typename actor_result ->::type -actor::operator()( - A& a_, B& b_, C& c_, D& d_, E& e_, F& f_, G& g_, H& h_, I& i_ -) const -{ - return BaseT::eval( - tuple - (a_, b_, c_, d_, e_, f_, g_, h_, i_) - ); -} - -#if PHOENIX_LIMIT > 9 -////////////////////////////////// -template -template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J> -inline typename actor_result ->::type -actor::operator()( - A& a_, B& b_, C& c_, D& d_, E& e_, F& f_, G& g_, H& h_, I& i_, J& j_ -) const -{ - return BaseT::eval( - tuple - (a_, b_, c_, d_, e_, f_, g_, h_, i_, j_) - ); -} - -////////////////////////////////// -template -template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, - typename K> -inline typename actor_result ->::type -actor::operator()( - A& a_, B& b_, C& c_, D& d_, E& e_, F& f_, G& g_, H& h_, I& i_, J& j_, - K& k_ -) const -{ - return BaseT::eval( - tuple - (a_, b_, c_, d_, e_, f_, g_, h_, i_, j_, k_) - ); -} - -////////////////////////////////// -template -template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, - typename K, typename L> -inline typename actor_result ->::type -actor::operator()( - A& a_, B& b_, C& c_, D& d_, E& e_, F& f_, G& g_, H& h_, I& i_, J& j_, - K& k_, L& l_ -) const -{ - return BaseT::eval( - tuple - (a_, b_, c_, d_, e_, f_, g_, h_, i_, j_, k_, l_) - ); -} - -#if PHOENIX_LIMIT > 12 -////////////////////////////////// -template -template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, - typename K, typename L, typename M> -inline typename actor_result ->::type -actor::operator()( - A& a_, B& b_, C& c_, D& d_, E& e_, F& f_, G& g_, H& h_, I& i_, J& j_, - K& k_, L& l_, M& m_ -) const -{ - return BaseT::eval( - tuple - (a_, b_, c_, d_, e_, f_, g_, h_, i_, j_, k_, l_, m_) - ); -} - -////////////////////////////////// -template -template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, - typename K, typename L, typename M, typename N> -inline typename actor_result ->::type -actor::operator()( - A& a_, B& b_, C& c_, D& d_, E& e_, F& f_, G& g_, H& h_, I& i_, J& j_, - K& k_, L& l_, M& m_, N& n_ -) const -{ - return BaseT::eval( - tuple - (a_, b_, c_, d_, e_, f_, g_, h_, i_, j_, k_, l_, m_, n_) - ); -} - -////////////////////////////////// -template -template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, - typename K, typename L, typename M, typename N, typename O> -inline typename actor_result ->::type -actor::operator()( - A& a_, B& b_, C& c_, D& d_, E& e_, F& f_, G& g_, H& h_, I& i_, J& j_, - K& k_, L& l_, M& m_, N& n_, O& o_ -) const -{ - return BaseT::eval( - tuple - (a_, b_, c_, d_, e_, f_, g_, h_, i_, j_, k_, l_, m_, n_, o_) - ); -} - -#endif -#endif -#endif -#endif - -////////////////////////////////// -template -template -typename actor_result >::type -actor::operator()(unpack_tuple const &t) const -{ - return BaseT::eval(t); -} - -/////////////////////////////////////////////////////////////////////////////// -} // namespace phoenix - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/phoenix/binders.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/phoenix/binders.hpp deleted file mode 100644 index e75dafb96902..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/phoenix/binders.hpp +++ /dev/null @@ -1,4066 +0,0 @@ -/*============================================================================= - Phoenix v1.2 - Copyright (c) 2001-2002 Joel de Guzman - - 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) -==============================================================================*/ -#ifndef BOOST_SPIRIT_CLASSIC_PHOENIX_BINDERS_HPP -#define BOOST_SPIRIT_CLASSIC_PHOENIX_BINDERS_HPP - -/////////////////////////////////////////////////////////////////////////////// -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace phoenix { - -/////////////////////////////////////////////////////////////////////////////// -// -// Binders -// -// There are times when it is desirable to bind a simple functor, -// function, member function or member variable for deferred -// evaluation. This can be done through the binding facilities -// provided below. There are template classes: -// -// 1) function_ptr ( function pointer binder ) -// 2) functor ( functor pointer binder ) -// 3) member_function_ptr ( member function pointer binder ) -// 4) member_var_ptr ( member variable pointer binder ) -// -// These template classes are specialized lazy function classes for -// functors, function pointers, member function pointers and member -// variable pointers, respectively. These are subclasses of the -// lazy-function class (see functions.hpp). Each of these has a -// corresponding overloaded bind(x) function. Each bind(x) function -// generates a suitable binder object. -// -// Example, given a function foo: -// -// void foo_(int n) { std::cout << n << std::endl; } -// -// Here's how the function foo is bound: -// -// bind(&foo_) -// -// This bind expression results to a lazy-function (see -// functions.hpp) that is lazily evaluated. This bind expression is -// also equivalent to: -// -// function_ptr foo = &foo_; -// -// The template parameter of the function_ptr is the return and -// argument types of actual signature of the function to be bound -// read from left to right: -// -// void foo_(int); ---> function_ptr -// -// Either bind(&foo_) and its equivalent foo can now be used in the -// same way a lazy function (see functions.hpp) is used: -// -// bind(&foo_)(arg1) -// -// or -// -// foo(arg1) -// -// The latter, of course, being much easier to understand. This is -// now a full-fledged lazy function that can finally be evaluated -// by another function call invocation. A second function call will -// invoke the actual foo function: -// -// int i = 4; -// foo(arg1)(i); -// -// will print out "4". -// -// Binding functors and member functions can be done similarly. -// Here's how to bind a functor (e.g. std::plus): -// -// bind(std::plus()) -// -// or -// -// functor > plus; -// -// Again, these are full-fledged lazy functions. In this case, -// unlike the first example, expect 2 arguments (std::plus -// needs two arguments lhs and rhs). Either or both of which can be -// lazily bound: -// -// plus(arg1, arg2) // arg1 + arg2 -// plus(100, arg1) // 100 + arg1 -// plus(100, 200) // 300 -// -// A bound member function takes in a pointer or reference to an -// object as the first argument. For instance, given: -// -// struct xyz { void foo(int) const; }; -// -// xyz's foo member function can be bound as: -// -// bind(&xyz::foo) -// -// or -// -// member_function_ptr xyz_foo = &xyz::foo; -// -// The template parameter of the member_function_ptr is the return, -// class and argument types of actual signature of the function to -// be bound read from left to right: -// -// void xyz::foo_(int); ---> member_function_ptr -// -// Take note that a member_function_ptr lazy-function expects the -// first argument to be a pointer or reference to an object. Both -// the object (reference or pointer) and the arguments can be -// lazily bound. Examples: -// -// xyz obj; -// xyz_foo(arg1, arg2) // arg1.foo(arg2) -// xyz_foo(obj, arg1) // obj.foo(arg1) -// xyz_foo(obj, 100) // obj.foo(100) -// -// Be reminded that var(obj) must be used to call non-const member -// functions. For example, if xyz was declared as: -// -// struct xyz { void foo(int); }; -// -// the pointer or reference to the object must also be non-const. -// Lazily bound arguments are stored as const value by default (see -// variable class in primitives.hpp). -// -// xyz_foo(var(obj), 100) // obj.foo(100) -// -// Finally, member variables can be bound much like member -// functions. For instance, given: -// -// struct xyz { int v; }; -// -// xyz::v can be bound as: -// -// bind(&xyz::v) -// or -// -// member_var_ptr xyz_v = &xyz::v; -// -// The template parameter of the member_var_ptr is the type of the -// variable followed by the class: -// -// int xyz::v; ---> member_var_ptr -// -// Just like the member_function_ptr, member_var_ptr also expects -// the first argument to be a pointer or reference to an object. -// Both the object (reference or pointer) and the arguments can be -// lazily bound. Examples: -// -// xyz obj; -// xyz_v(arg1) // arg1.v -// xyz_v(obj) // obj.v -// -/////////////////////////////////////////////////////////////////////////////// - -/////////////////////////////////////////////////////////////////////////////// -// -// Functor binder -// -/////////////////////////////////////////////////////////////////////////////// -template -struct functor_action : public FuncT { - -#if !defined(BOOST_BORLANDC) && (!defined(__MWERKS__) || (__MWERKS__ > 0x3002)) - - template < - typename A = nil_t - , typename B = nil_t - , typename C = nil_t - -#if PHOENIX_LIMIT > 3 - , typename D = nil_t - , typename E = nil_t - , typename F = nil_t - -#if PHOENIX_LIMIT > 6 - , typename G = nil_t - , typename H = nil_t - , typename I = nil_t - -#if PHOENIX_LIMIT > 9 - , typename J = nil_t - , typename K = nil_t - , typename L = nil_t - -#if PHOENIX_LIMIT > 12 - , typename M = nil_t - , typename N = nil_t - , typename O = nil_t - -#endif -#endif -#endif -#endif - > - struct result { typedef typename FuncT::result_type type; }; -#endif - - functor_action(FuncT fptr_ = FuncT()) - : FuncT(fptr_) {} -}; - -#if defined(BOOST_BORLANDC) || (defined(__MWERKS__) && (__MWERKS__ <= 0x3002)) - -/////////////////////////////////////////////////////////////////////////////// -// -// The following specializations are needed because Borland and CodeWarrior -// does not accept default template arguments in nested template classes in -// classes (i.e functor_action::result) -// -/////////////////////////////////////////////////////////////////////////////// -template -struct composite0_result, TupleT> { - - typedef typename FuncT::result_type type; -}; - -////////////////////////////////// -template -struct composite1_result, TupleT, A> { - - typedef typename FuncT::result_type type; -}; - -////////////////////////////////// -template -struct composite2_result, TupleT, A, B> { - - typedef typename FuncT::result_type type; -}; - -////////////////////////////////// -template -struct composite3_result, TupleT, A, B, C> { - - typedef typename FuncT::result_type type; -}; - -#if PHOENIX_LIMIT > 3 -////////////////////////////////// -template -struct composite4_result, TupleT, - A, B, C, D> { - - typedef typename FuncT::result_type type; -}; - -////////////////////////////////// -template -struct composite5_result, TupleT, - A, B, C, D, E> { - - typedef typename FuncT::result_type type; -}; - -////////////////////////////////// -template -struct composite6_result, TupleT, - A, B, C, D, E, F> { - - typedef typename FuncT::result_type type; -}; - -#if PHOENIX_LIMIT > 6 -////////////////////////////////// -template -struct composite7_result, TupleT, - A, B, C, D, E, F, G> { - - typedef typename FuncT::result_type type; -}; - -////////////////////////////////// -template -struct composite8_result, TupleT, - A, B, C, D, E, F, G, H> { - - typedef typename FuncT::result_type type; -}; - -////////////////////////////////// -template -struct composite9_result, TupleT, - A, B, C, D, E, F, G, H, I> { - - typedef typename FuncT::result_type type; -}; - -#if PHOENIX_LIMIT > 9 -////////////////////////////////// -template -struct composite10_result, TupleT, - A, B, C, D, E, F, G, H, I, J> { - - typedef typename FuncT::result_type type; -}; - -////////////////////////////////// -template -struct composite11_result, TupleT, - A, B, C, D, E, F, G, H, I, J, K> { - - typedef typename FuncT::result_type type; -}; - -////////////////////////////////// -template -struct composite12_result, TupleT, - A, B, C, D, E, F, G, H, I, J, K, L> { - - typedef typename FuncT::result_type type; -}; - -#if PHOENIX_LIMIT > 12 -////////////////////////////////// -template -struct composite13_result, TupleT, - A, B, C, D, E, F, G, H, I, J, K, L, M> { - - typedef typename FuncT::result_type type; -}; - -////////////////////////////////// -template -struct composite14_result, TupleT, - A, B, C, D, E, F, G, H, I, J, K, L, M, N> { - - typedef typename FuncT::result_type type; -}; - -////////////////////////////////// -template -struct composite15_result, TupleT, - A, B, C, D, E, F, G, H, I, J, K, L, M, N, O> { - - typedef typename FuncT::result_type type; -}; - -#endif -#endif -#endif -#endif -#endif - -////////////////////////////////// -template -struct functor : public function > { - - functor(FuncT func) - : function >(functor_action(func)) {}; -}; - -////////////////////////////////// -template -inline functor -bind(FuncT func) -{ - return functor(func); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// Member variable pointer binder -// -/////////////////////////////////////////////////////////////////////////////// -namespace impl { - - ////////////////////////////////// - template - struct as_ptr { - - typedef T* pointer_type; - - static T* get(T& ref) - { return &ref; } - }; - - ////////////////////////////////// - template - struct as_ptr { - - typedef T* pointer_type; - - static T* get(T* ptr) - { return ptr; } - }; -} - -////////////////////////////////// -template -struct member_var_ptr_action_result { - - typedef typename ActionT::template result::type type; -}; - -////////////////////////////////// -template -struct member_var_ptr_action { - - typedef member_var_ptr_action self_t; - - template - struct result { - typedef typename boost::mpl::if_, T const&, T& - >::type type; - }; - - typedef T ClassT::*mem_var_ptr_t; - - member_var_ptr_action(mem_var_ptr_t ptr_) - : ptr(ptr_) {} - - template - typename member_var_ptr_action_result::type - operator()(CT& obj) const - { return impl::as_ptr::get(obj)->*ptr; } - - mem_var_ptr_t ptr; -}; - -////////////////////////////////// -template -struct member_var_ptr -: public function > { - - member_var_ptr(T ClassT::*mp) - : function > - (member_var_ptr_action(mp)) {} -}; - -////////////////////////////////// -template -inline member_var_ptr -bind(T ClassT::*mp) -{ - return member_var_ptr(mp); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// Function pointer binder (main class) -// -/////////////////////////////////////////////////////////////////////////////// -template < - typename RT - , typename A = nil_t - , typename B = nil_t - , typename C = nil_t - -#if PHOENIX_LIMIT > 3 - , typename D = nil_t - , typename E = nil_t - , typename F = nil_t - -#if PHOENIX_LIMIT > 6 - , typename G = nil_t - , typename H = nil_t - , typename I = nil_t - -#if PHOENIX_LIMIT > 9 - , typename J = nil_t - , typename K = nil_t - , typename L = nil_t - -#if PHOENIX_LIMIT > 12 - , typename M = nil_t - , typename N = nil_t - , typename O = nil_t - -#endif -#endif -#endif -#endif - - , typename NU = nil_t // Not used -> -struct function_ptr_action; - -////////////////////////////////// -template < - typename RT - , typename A = nil_t - , typename B = nil_t - , typename C = nil_t - -#if PHOENIX_LIMIT > 3 - , typename D = nil_t - , typename E = nil_t - , typename F = nil_t - -#if PHOENIX_LIMIT > 6 - , typename G = nil_t - , typename H = nil_t - , typename I = nil_t - -#if PHOENIX_LIMIT > 9 - , typename J = nil_t - , typename K = nil_t - , typename L = nil_t - -#if PHOENIX_LIMIT > 12 - , typename M = nil_t - , typename N = nil_t - , typename O = nil_t - -#endif -#endif -#endif -#endif -> -struct function_ptr -: public function 3 - , D, E, F -#if PHOENIX_LIMIT > 6 - , G, H, I -#if PHOENIX_LIMIT > 9 - , J, K, L -#if PHOENIX_LIMIT > 12 - , M, N, O -#endif -#endif -#endif -#endif - > > { - - typedef function_ptr_action 3 - , D, E, F -#if PHOENIX_LIMIT > 6 - , G, H, I -#if PHOENIX_LIMIT > 9 - , J, K, L -#if PHOENIX_LIMIT > 12 - , M, N, O -#endif -#endif -#endif -#endif - > action_t; - - template - function_ptr(FPT fp) - : function(action_t(fp)) {} -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// Function pointer binder (specialization for 0 arg) -// -/////////////////////////////////////////////////////////////////////////////// -template -struct function_ptr_action 3 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 6 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 9 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 12 - nil_t, nil_t, nil_t, -#endif -#endif -#endif -#endif - nil_t // Unused -> { - - typedef RT result_type; - typedef RT(*func_ptr_t)(); - - function_ptr_action(func_ptr_t fptr_) - : fptr(fptr_) {} - - result_type operator()() const - { return fptr(); } - - func_ptr_t fptr; -}; - -////////////////////////////////// -template -inline function_ptr -bind(RT(*fptr)()) -{ - return function_ptr(fptr); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// Function pointer binder (specialization for 1 arg) -// -/////////////////////////////////////////////////////////////////////////////// -template -struct function_ptr_action 3 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 6 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 9 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 12 - nil_t, nil_t, nil_t, -#endif -#endif -#endif -#endif - nil_t // Unused -> { - - typedef RT result_type; - typedef RT(*func_ptr_t)(A); - - template - struct result { typedef result_type type; }; - - function_ptr_action(func_ptr_t fptr_) - : fptr(fptr_) {} - - result_type operator()(A a) const - { return fptr(a); } - - func_ptr_t fptr; -}; - -////////////////////////////////// -template -inline function_ptr -bind(RT(*fptr)(A)) -{ - return function_ptr(fptr); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// Function pointer binder (specialization for 2 args) -// -/////////////////////////////////////////////////////////////////////////////// -template -struct function_ptr_action 3 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 6 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 9 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 12 - nil_t, nil_t, nil_t, -#endif -#endif -#endif -#endif - nil_t // Unused -> { - - typedef RT result_type; - typedef RT(*func_ptr_t)(A, B); - - template - struct result { typedef result_type type; }; - - function_ptr_action(func_ptr_t fptr_) - : fptr(fptr_) {} - - result_type operator()(A a, B b) const - { return fptr(a, b); } - - func_ptr_t fptr; -}; - -////////////////////////////////// -template -inline function_ptr -bind(RT(*fptr)(A, B)) -{ - return function_ptr(fptr); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// Function pointer binder (specialization for 3 args) -// -/////////////////////////////////////////////////////////////////////////////// -template -struct function_ptr_action 3 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 6 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 9 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 12 - nil_t, nil_t, nil_t, -#endif -#endif -#endif -#endif - nil_t // Unused -> { - - typedef RT result_type; - typedef RT(*func_ptr_t)(A, B, C); - - template - struct result { typedef result_type type; }; - - function_ptr_action(func_ptr_t fptr_) - : fptr(fptr_) {} - - result_type operator()(A a, B b, C c) const - { return fptr(a, b, c); } - - func_ptr_t fptr; -}; - -////////////////////////////////// -template -inline function_ptr -bind(RT(*fptr)(A, B, C)) -{ - return function_ptr(fptr); -} - -#if PHOENIX_LIMIT > 3 -/////////////////////////////////////////////////////////////////////////////// -// -// Function pointer binder (specialization for 4 args) -// -/////////////////////////////////////////////////////////////////////////////// -template -struct function_ptr_action 6 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 9 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 12 - nil_t, nil_t, nil_t, -#endif -#endif -#endif - nil_t // Unused -> { - - typedef RT result_type; - typedef RT(*func_ptr_t)(A, B, C, D); - - template - struct result { typedef result_type type; }; - - function_ptr_action(func_ptr_t fptr_) - : fptr(fptr_) {} - - result_type operator()(A a, B b, C c, D d) const - { return fptr(a, b, c, d); } - - func_ptr_t fptr; -}; - -////////////////////////////////// -template -inline function_ptr -bind(RT(*fptr)(A, B, C, D)) -{ - return function_ptr(fptr); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// Function pointer binder (specialization for 5 args) -// -/////////////////////////////////////////////////////////////////////////////// -template -struct function_ptr_action 6 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 9 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 12 - nil_t, nil_t, nil_t, -#endif -#endif -#endif - nil_t // Unused -> { - - typedef RT result_type; - typedef RT(*func_ptr_t)(A, B, C, D, E); - - template < - typename A_, typename B_, typename C_, typename D_, typename E_ - > - struct result { typedef result_type type; }; - - function_ptr_action(func_ptr_t fptr_) - : fptr(fptr_) {} - - result_type operator()( - A a, B b, C c, D d, E e - ) const - { return fptr(a, b, c, d, e); } - - func_ptr_t fptr; -}; - -////////////////////////////////// -template -inline function_ptr -bind(RT(*fptr)(A, B, C, D, E)) -{ - return function_ptr(fptr); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// Function pointer binder (specialization for 6 args) -// -/////////////////////////////////////////////////////////////////////////////// -template -struct function_ptr_action 6 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 9 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 12 - nil_t, nil_t, nil_t, -#endif -#endif -#endif - nil_t // Unused -> { - - typedef RT result_type; - typedef RT(*func_ptr_t)(A, B, C, D, E, F); - - template < - typename A_, typename B_, typename C_, typename D_, typename E_, - typename F_ - > - struct result { typedef result_type type; }; - - function_ptr_action(func_ptr_t fptr_) - : fptr(fptr_) {} - - result_type operator()( - A a, B b, C c, D d, E e, - F f - ) const - { return fptr(a, b, c, d, e, f); } - - func_ptr_t fptr; -}; - -////////////////////////////////// -template -inline function_ptr -bind(RT(*fptr)(A, B, C, D, E, F)) -{ - return function_ptr(fptr); -} - -#if PHOENIX_LIMIT > 6 -/////////////////////////////////////////////////////////////////////////////// -// -// Function pointer binder (specialization for 7 args) -// -/////////////////////////////////////////////////////////////////////////////// -template -struct function_ptr_action 9 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 12 - nil_t, nil_t, nil_t, -#endif -#endif - nil_t // Unused -> { - - typedef RT result_type; - typedef RT(*func_ptr_t)(A, B, C, D, E, F, G); - - template < - typename A_, typename B_, typename C_, typename D_, typename E_, - typename F_, typename G_ - > - struct result { typedef result_type type; }; - - function_ptr_action(func_ptr_t fptr_) - : fptr(fptr_) {} - - result_type operator()( - A a, B b, C c, D d, E e, - F f, G g - ) const - { return fptr(a, b, c, d, e, f, g); } - - func_ptr_t fptr; -}; - -////////////////////////////////// -template -inline function_ptr -bind(RT(*fptr)(A, B, C, D, E, F, G)) -{ - return function_ptr(fptr); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// Function pointer binder (specialization for 8 args) -// -/////////////////////////////////////////////////////////////////////////////// -template -struct function_ptr_action 9 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 12 - nil_t, nil_t, nil_t, -#endif -#endif - nil_t // Unused -> { - - typedef RT result_type; - typedef RT(*func_ptr_t)(A, B, C, D, E, F, G, H); - - template < - typename A_, typename B_, typename C_, typename D_, typename E_, - typename F_, typename G_, typename H_ - > - struct result { typedef result_type type; }; - - function_ptr_action(func_ptr_t fptr_) - : fptr(fptr_) {} - - result_type operator()( - A a, B b, C c, D d, E e, - F f, G g, H h - ) const - { return fptr(a, b, c, d, e, f, g, h); } - - func_ptr_t fptr; -}; - -////////////////////////////////// -template -inline function_ptr -bind(RT(*fptr)(A, B, C, D, E, F, G, H)) -{ - return function_ptr(fptr); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// Function pointer binder (specialization for 9 args) -// -/////////////////////////////////////////////////////////////////////////////// -template -struct function_ptr_action 9 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 12 - nil_t, nil_t, nil_t, -#endif -#endif - nil_t // Unused -> { - - typedef RT result_type; - typedef RT(*func_ptr_t)(A, B, C, D, E, F, G, H, I); - - template < - typename A_, typename B_, typename C_, typename D_, typename E_, - typename F_, typename G_, typename H_, typename I_ - > - struct result { typedef result_type type; }; - - function_ptr_action(func_ptr_t fptr_) - : fptr(fptr_) {} - - result_type operator()( - A a, B b, C c, D d, E e, - F f, G g, H h, I i - ) const - { return fptr(a, b, c, d, e, f, g, h, i); } - - func_ptr_t fptr; -}; - -////////////////////////////////// -template -inline function_ptr -bind(RT(*fptr)(A, B, C, D, E, F, G, H, I)) -{ - return function_ptr(fptr); -} - -#if PHOENIX_LIMIT > 9 -/////////////////////////////////////////////////////////////////////////////// -// -// Function pointer binder (specialization for 10 args) -// -/////////////////////////////////////////////////////////////////////////////// -template -struct function_ptr_action 12 - nil_t, nil_t, nil_t, -#endif - nil_t // Unused -> { - - typedef RT result_type; - typedef RT(*func_ptr_t)(A, B, C, D, E, F, G, H, I, J); - - template < - typename A_, typename B_, typename C_, typename D_, typename E_, - typename F_, typename G_, typename H_, typename I_, typename J_ - > - struct result { typedef result_type type; }; - - function_ptr_action(func_ptr_t fptr_) - : fptr(fptr_) {} - - result_type operator()( - A a, B b, C c, D d, E e, - F f, G g, H h, I i, J j - ) const - { return fptr(a, b, c, d, e, f, g, h, i, j); } - - func_ptr_t fptr; -}; - -////////////////////////////////// -template -inline function_ptr -bind(RT(*fptr)(A, B, C, D, E, F, G, H, I, J)) -{ - return function_ptr(fptr); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// Function pointer binder (specialization for 11 args) -// -/////////////////////////////////////////////////////////////////////////////// -template -struct function_ptr_action 12 - nil_t, nil_t, nil_t, -#endif - nil_t // Unused -> { - - typedef RT result_type; - typedef RT(*func_ptr_t)(A, B, C, D, E, F, G, H, I, J, K); - - template < - typename A_, typename B_, typename C_, typename D_, typename E_, - typename F_, typename G_, typename H_, typename I_, typename J_, - typename K_ - > - struct result { typedef result_type type; }; - - function_ptr_action(func_ptr_t fptr_) - : fptr(fptr_) {} - - result_type operator()( - A a, B b, C c, D d, E e, - F f, G g, H h, I i, J j, - K k - ) const - { return fptr(a, b, c, d, e, f, g, h, i, j, k); } - - func_ptr_t fptr; -}; - -////////////////////////////////// -template -inline function_ptr -bind(RT(*fptr)(A, B, C, D, E, F, G, H, I, J, K)) -{ - return function_ptr(fptr); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// Function pointer binder (specialization for 12 args) -// -/////////////////////////////////////////////////////////////////////////////// -template -struct function_ptr_action 12 - nil_t, nil_t, nil_t, -#endif - nil_t // Unused -> { - - typedef RT result_type; - typedef RT(*func_ptr_t)(A, B, C, D, E, F, G, H, I, J, K, L); - - template < - typename A_, typename B_, typename C_, typename D_, typename E_, - typename F_, typename G_, typename H_, typename I_, typename J_, - typename K_, typename L_ - > - struct result { typedef result_type type; }; - - function_ptr_action(func_ptr_t fptr_) - : fptr(fptr_) {} - - result_type operator()( - A a, B b, C c, D d, E e, - F f, G g, H h, I i, J j, - K k, L l - ) const - { return fptr(a, b, c, d, e, f, g, h, i, j, k, l); } - - func_ptr_t fptr; -}; - -////////////////////////////////// -template -inline function_ptr -bind(RT(*fptr)(A, B, C, D, E, F, G, H, I, J, K, L)) -{ - return function_ptr(fptr); -} - -#if PHOENIX_LIMIT > 12 -/////////////////////////////////////////////////////////////////////////////// -// -// Function pointer binder (specialization for 13 args) -// -/////////////////////////////////////////////////////////////////////////////// -template -struct function_ptr_action { - - typedef RT result_type; - typedef RT(*func_ptr_t)(A, B, C, D, E, F, G, H, I, J, K, L, M); - - template < - typename A_, typename B_, typename C_, typename D_, typename E_, - typename F_, typename G_, typename H_, typename I_, typename J_, - typename K_, typename L_, typename M_ - > - struct result { typedef result_type type; }; - - function_ptr_action(func_ptr_t fptr_) - : fptr(fptr_) {} - - result_type operator()( - A a, B b, C c, D d, E e, - F f, G g, H h, I i, J j, - K k, L l, M m - ) const - { return fptr(a, b, c, d, e, f, g, h, i, j, k, l, m); } - - func_ptr_t fptr; -}; - -////////////////////////////////// -template -inline function_ptr -bind(RT(*fptr)(A, B, C, D, E, F, G, H, I, J, K, L, M)) -{ - return function_ptr(fptr); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// Function pointer binder (specialization for 14 args) -// -/////////////////////////////////////////////////////////////////////////////// -template -struct function_ptr_action { - - typedef RT result_type; - typedef RT(*func_ptr_t)(A, B, C, D, E, F, G, H, I, J, K, L, M, N); - - template < - typename A_, typename B_, typename C_, typename D_, typename E_, - typename F_, typename G_, typename H_, typename I_, typename J_, - typename K_, typename L_, typename M_, typename N_ - > - struct result { typedef result_type type; }; - - function_ptr_action(func_ptr_t fptr_) - : fptr(fptr_) {} - - result_type operator()( - A a, B b, C c, D d, E e, - F f, G g, H h, I i, J j, - K k, L l, M m, N n - ) const - { return fptr(a, b, c, d, e, f, g, h, i, j, k, l, m, n); } - - func_ptr_t fptr; -}; - -////////////////////////////////// -template -inline function_ptr -bind(RT(*fptr)(A, B, C, D, E, F, G, H, I, J, K, L, M, N)) -{ - return function_ptr(fptr); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// Function pointer binder (specialization for 15 args) -// -/////////////////////////////////////////////////////////////////////////////// -template -struct function_ptr_action { - - typedef RT result_type; - typedef RT(*func_ptr_t)(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O); - - template < - typename A_, typename B_, typename C_, typename D_, typename E_, - typename F_, typename G_, typename H_, typename I_, typename J_, - typename K_, typename L_, typename M_, typename N_, typename O_ - > - struct result { typedef result_type type; }; - - function_ptr_action(func_ptr_t fptr_) - : fptr(fptr_) {} - - result_type operator()( - A a, B b, C c, D d, E e, - F f, G g, H h, I i, J j, - K k, L l, M m, N n, O o - ) const - { return fptr(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o); } - - func_ptr_t fptr; -}; - -////////////////////////////////// -template -inline function_ptr -bind(RT(*fptr)(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O)) -{ - return function_ptr(fptr); -} - -#endif -#endif -#endif -#endif -/////////////////////////////////////////////////////////////////////////////// -// -// Member function pointer binder (main class) -// -/////////////////////////////////////////////////////////////////////////////// -template < - typename RT, - typename ClassT - , typename A = nil_t - , typename B = nil_t - , typename C = nil_t - -#if PHOENIX_LIMIT > 3 - , typename D = nil_t - , typename E = nil_t - , typename F = nil_t - -#if PHOENIX_LIMIT > 6 - , typename G = nil_t - , typename H = nil_t - , typename I = nil_t - -#if PHOENIX_LIMIT > 9 - , typename J = nil_t - , typename K = nil_t - , typename L = nil_t - -#if PHOENIX_LIMIT > 12 - , typename M = nil_t - , typename N = nil_t - , typename O = nil_t - -#endif -#endif -#endif -#endif - - , typename NU = nil_t // Not used -> -struct member_function_ptr_action; - -////////////////////////////////// -template < - typename RT, - typename ClassT - , typename A = nil_t - , typename B = nil_t - , typename C = nil_t - -#if PHOENIX_LIMIT > 3 - , typename D = nil_t - , typename E = nil_t - , typename F = nil_t - -#if PHOENIX_LIMIT > 6 - , typename G = nil_t - , typename H = nil_t - , typename I = nil_t - -#if PHOENIX_LIMIT > 9 - , typename J = nil_t - , typename K = nil_t - , typename L = nil_t - -#if PHOENIX_LIMIT > 12 - , typename M = nil_t - , typename N = nil_t - , typename O = nil_t - -#endif -#endif -#endif -#endif -> -struct member_function_ptr -: public function 3 - , D, E, F -#if PHOENIX_LIMIT > 6 - , G, H, I -#if PHOENIX_LIMIT > 9 - , J, K, L -#if PHOENIX_LIMIT > 12 - , M, N, O -#endif -#endif -#endif -#endif - > > { - - typedef member_function_ptr_action 3 - , D, E, F -#if PHOENIX_LIMIT > 6 - , G, H, I -#if PHOENIX_LIMIT > 9 - , J, K, L -#if PHOENIX_LIMIT > 12 - , M, N, O -#endif -#endif -#endif -#endif - > action_t; - - template - member_function_ptr(FPT fp) - : function(action_t(fp)) {} -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// Member function pointer binder (specialization for 0 arg) -// -/////////////////////////////////////////////////////////////////////////////// -template -struct member_function_ptr_action 3 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 6 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 9 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 12 - nil_t, nil_t, nil_t, -#endif -#endif -#endif -#endif - nil_t // Unused -> { - - typedef RT result_type; - typedef RT(ClassT::*mf)(); - typedef RT(ClassT::*cmf)() const; - typedef typename boost::mpl::if_, cmf, mf>::type - mem_func_ptr_t; - - template - struct result { typedef result_type type; }; - - member_function_ptr_action(mem_func_ptr_t fptr_) - : fptr(fptr_) {} - - template - result_type operator()(CT& obj) const - { return (impl::as_ptr::get(obj)->*fptr)(); } - - mem_func_ptr_t fptr; -}; - -////////////////////////////////// -template -inline member_function_ptr -bind(RT(ClassT::*fptr)()) -{ - return member_function_ptr(fptr); -} - -template -inline member_function_ptr -bind(RT(ClassT::*fptr)() const) -{ - return member_function_ptr(fptr); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// Member function pointer binder (specialization for 1 arg) -// -/////////////////////////////////////////////////////////////////////////////// -template -struct member_function_ptr_action 3 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 6 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 9 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 12 - nil_t, nil_t, nil_t, -#endif -#endif -#endif -#endif - nil_t // Unused -> { - - typedef RT result_type; - typedef RT(ClassT::*mf)(A); - typedef RT(ClassT::*cmf)(A) const; - typedef typename boost::mpl::if_, cmf, mf>::type - mem_func_ptr_t; - - template - struct result { typedef result_type type; }; - - member_function_ptr_action(mem_func_ptr_t fptr_) - : fptr(fptr_) {} - - template - result_type operator()(CT& obj, A a) const - { return (impl::as_ptr::get(obj)->*fptr)(a); } - - mem_func_ptr_t fptr; -}; - -////////////////////////////////// -template -inline member_function_ptr -bind(RT(ClassT::*fptr)(A)) -{ - return member_function_ptr(fptr); -} - -////////////////////////////////// -template -inline member_function_ptr -bind(RT(ClassT::*fptr)(A) const) -{ - return member_function_ptr(fptr); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// Member function pointer binder (specialization for 2 args) -// -/////////////////////////////////////////////////////////////////////////////// -template -struct member_function_ptr_action 3 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 6 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 9 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 12 - nil_t, nil_t, nil_t, -#endif -#endif -#endif -#endif - nil_t // Unused -> { - - typedef RT result_type; - typedef RT(ClassT::*mf)(A, B); - typedef RT(ClassT::*cmf)(A, B) const; - typedef typename boost::mpl::if_, cmf, mf>::type - mem_func_ptr_t; - - template - struct result { typedef result_type type; }; - - member_function_ptr_action(mem_func_ptr_t fptr_) - : fptr(fptr_) {} - - template - result_type operator()(CT& obj, A a, B b) const - { return (impl::as_ptr::get(obj)->*fptr)(a, b); } - - mem_func_ptr_t fptr; -}; - -////////////////////////////////// -template -inline member_function_ptr -bind(RT(ClassT::*fptr)(A, B)) -{ - return member_function_ptr(fptr); -} - -////////////////////////////////// -template -inline member_function_ptr -bind(RT(ClassT::*fptr)(A, B) const) -{ - return member_function_ptr(fptr); -} - -#if PHOENIX_LIMIT > 3 -/////////////////////////////////////////////////////////////////////////////// -// -// Member function pointer binder (specialization for 3 args) -// -/////////////////////////////////////////////////////////////////////////////// -template -struct member_function_ptr_action 6 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 9 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 12 - nil_t, nil_t, nil_t, -#endif -#endif -#endif - nil_t // Unused -> { - - typedef RT result_type; - typedef RT(ClassT::*mf)(A, B, C); - typedef RT(ClassT::*cmf)(A, B, C) const; - typedef typename boost::mpl::if_, cmf, mf>::type - mem_func_ptr_t; - - template - struct result { typedef result_type type; }; - - member_function_ptr_action(mem_func_ptr_t fptr_) - : fptr(fptr_) {} - - template - result_type operator()(CT& obj, A a, B b, C c) const - { return (impl::as_ptr::get(obj)->*fptr)(a, b, c); } - - mem_func_ptr_t fptr; -}; - -////////////////////////////////// -template -inline member_function_ptr -bind(RT(ClassT::*fptr)(A, B, C)) -{ - return member_function_ptr(fptr); -} - -////////////////////////////////// -template -inline member_function_ptr -bind(RT(ClassT::*fptr)(A, B, C) const) -{ - return member_function_ptr(fptr); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// Member function pointer binder (specialization for 4 args) -// -/////////////////////////////////////////////////////////////////////////////// -template -struct member_function_ptr_action 6 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 9 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 12 - nil_t, nil_t, nil_t, -#endif -#endif -#endif - nil_t // Unused -> { - - typedef RT result_type; - typedef RT(ClassT::*mf)(A, B, C, D); - typedef RT(ClassT::*cmf)(A, B, C, D) const; - typedef typename boost::mpl::if_, cmf, mf>::type - mem_func_ptr_t; - - template - struct result { typedef result_type type; }; - - member_function_ptr_action(mem_func_ptr_t fptr_) - : fptr(fptr_) {} - - template - result_type operator()(CT& obj, - A a, B b, C c, D d - ) const - { return (impl::as_ptr::get(obj)->*fptr)(a, b, c, d); } - - mem_func_ptr_t fptr; -}; - -////////////////////////////////// -template -inline member_function_ptr -bind(RT(ClassT::*fptr)(A, B, C, D)) -{ - return member_function_ptr< - RT, ClassT, A, B, C, D>(fptr); -} - -////////////////////////////////// -template -inline member_function_ptr -bind(RT(ClassT::*fptr)(A, B, C, D) const) -{ - return member_function_ptr< - RT, ClassT const, A, B, C, D>(fptr); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// Member function pointer binder (specialization for 5 args) -// -/////////////////////////////////////////////////////////////////////////////// -template -struct member_function_ptr_action 6 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 9 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 12 - nil_t, nil_t, nil_t, -#endif -#endif -#endif - nil_t // Unused -> { - - typedef RT result_type; - typedef RT(ClassT::*mf)(A, B, C, D, E); - typedef RT(ClassT::*cmf)(A, B, C, D, E) const; - typedef typename boost::mpl::if_, cmf, mf>::type - mem_func_ptr_t; - - template - struct result { typedef result_type type; }; - - member_function_ptr_action(mem_func_ptr_t fptr_) - : fptr(fptr_) {} - - template - result_type operator()(CT& obj, - A a, B b, C c, D d, E e - ) const - { return (impl::as_ptr::get(obj)->*fptr)(a, b, c, d, e); } - - mem_func_ptr_t fptr; -}; - -////////////////////////////////// -template -inline member_function_ptr -bind(RT(ClassT::*fptr)(A, B, C, D, E)) -{ - return member_function_ptr< - RT, ClassT, A, B, C, D, E>(fptr); -} - -////////////////////////////////// -template -inline member_function_ptr -bind(RT(ClassT::*fptr)(A, B, C, D, E) const) -{ - return member_function_ptr< - RT, ClassT const, A, B, C, D, E>(fptr); -} - -#if PHOENIX_LIMIT > 6 -/////////////////////////////////////////////////////////////////////////////// -// -// Member function pointer binder (specialization for 6 args) -// -/////////////////////////////////////////////////////////////////////////////// -template -struct member_function_ptr_action 9 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 12 - nil_t, nil_t, nil_t, -#endif -#endif - nil_t // Unused -> { - - typedef RT result_type; - typedef RT(ClassT::*mf)(A, B, C, D, E, F); - typedef RT(ClassT::*cmf)(A, B, C, D, E, F) const; - typedef typename boost::mpl::if_, cmf, mf>::type - mem_func_ptr_t; - - template - struct result { typedef result_type type; }; - - member_function_ptr_action(mem_func_ptr_t fptr_) - : fptr(fptr_) {} - - template - result_type operator()(CT& obj, - A a, B b, C c, D d, E e, F f - ) const - { return (impl::as_ptr::get(obj)->*fptr)(a, b, c, d, e, f); } - - mem_func_ptr_t fptr; -}; - -////////////////////////////////// -template -inline member_function_ptr -bind(RT(ClassT::*fptr)(A, B, C, D, E, F)) -{ - return member_function_ptr< - RT, ClassT, A, B, C, D, E, F>(fptr); -} - -////////////////////////////////// -template -inline member_function_ptr -bind(RT(ClassT::*fptr)(A, B, C, D, E, F) const) -{ - return member_function_ptr< - RT, ClassT const, A, B, C, D, E, F>(fptr); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// Member function pointer binder (specialization for 7 args) -// -/////////////////////////////////////////////////////////////////////////////// -template -struct member_function_ptr_action 9 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 12 - nil_t, nil_t, nil_t, -#endif -#endif - nil_t // Unused -> { - - typedef RT result_type; - typedef RT(ClassT::*mf)(A, B, C, D, E, F, G); - typedef RT(ClassT::*cmf)(A, B, C, D, E, F, G) const; - typedef typename boost::mpl::if_, cmf, mf>::type - mem_func_ptr_t; - - template - struct result { typedef result_type type; }; - - member_function_ptr_action(mem_func_ptr_t fptr_) - : fptr(fptr_) {} - - template - result_type operator()(CT& obj, - A a, B b, C c, D d, E e, F f, G g - ) const - { return (impl::as_ptr::get(obj)->*fptr)(a, b, c, d, e, f, g); } - - mem_func_ptr_t fptr; -}; - -////////////////////////////////// -template -inline member_function_ptr -bind(RT(ClassT::*fptr)(A, B, C, D, E, F, G)) -{ - return member_function_ptr< - RT, ClassT, A, B, C, D, E, F, G>(fptr); -} - -////////////////////////////////// -template -inline member_function_ptr -bind(RT(ClassT::*fptr)(A, B, C, D, E, F, G) const) -{ - return member_function_ptr< - RT, ClassT const, A, B, C, D, E, F, G>(fptr); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// Member function pointer binder (specialization for 8 args) -// -/////////////////////////////////////////////////////////////////////////////// -template -struct member_function_ptr_action 9 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 12 - nil_t, nil_t, nil_t, -#endif -#endif - nil_t // Unused -> { - - typedef RT result_type; - typedef RT(ClassT::*mf)(A, B, C, D, E, F, G, H); - typedef RT(ClassT::*cmf)(A, B, C, D, E, F, G, H) const; - typedef typename boost::mpl::if_, cmf, mf>::type - mem_func_ptr_t; - - template - struct result { typedef result_type type; }; - - member_function_ptr_action(mem_func_ptr_t fptr_) - : fptr(fptr_) {} - - template - result_type operator()(CT& obj, - A a, B b, C c, D d, E e, F f, G g, H h - ) const - { return (impl::as_ptr::get(obj)->*fptr)(a, b, c, d, e, f, g, h); } - - mem_func_ptr_t fptr; -}; - -////////////////////////////////// -template -inline member_function_ptr -bind(RT(ClassT::*fptr)(A, B, C, D, E, F, G, H)) -{ - return member_function_ptr< - RT, ClassT, A, B, C, D, E, F, G, H>(fptr); -} - -////////////////////////////////// -template -inline member_function_ptr -bind(RT(ClassT::*fptr)(A, B, C, D, E, F, G, H) const) -{ - return member_function_ptr< - RT, ClassT const, A, B, C, D, E, F, G, H>(fptr); -} - -#if PHOENIX_LIMIT > 9 -/////////////////////////////////////////////////////////////////////////////// -// -// Member function pointer binder (specialization for 9 args) -// -/////////////////////////////////////////////////////////////////////////////// -template -struct member_function_ptr_action 12 - nil_t, nil_t, nil_t, -#endif - nil_t // Unused -> { - - typedef RT result_type; - typedef RT(ClassT::*mf)(A, B, C, D, E, F, G, H, I); - typedef RT(ClassT::*cmf)(A, B, C, D, E, F, G, H, I) const; - typedef typename boost::mpl::if_, cmf, mf>::type - mem_func_ptr_t; - - template - struct result { typedef result_type type; }; - - member_function_ptr_action(mem_func_ptr_t fptr_) - : fptr(fptr_) {} - - template - result_type operator()(CT& obj, - A a, B b, C c, D d, E e, F f, G g, H h, I i - ) const - { return (impl::as_ptr::get(obj)->*fptr)(a, b, c, d, e, f, g, h, i); } - - mem_func_ptr_t fptr; -}; - -////////////////////////////////// -template -inline member_function_ptr -bind(RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I)) -{ - return member_function_ptr< - RT, ClassT, A, B, C, D, E, F, G, H, I>(fptr); -} - -////////////////////////////////// -template -inline member_function_ptr -bind(RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I) const) -{ - return member_function_ptr< - RT, ClassT const, A, B, C, D, E, F, G, H, I>(fptr); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// Member function pointer binder (specialization for 10 args) -// -/////////////////////////////////////////////////////////////////////////////// -template -struct member_function_ptr_action 12 - nil_t, nil_t, nil_t, -#endif - nil_t // Unused -> { - - typedef RT result_type; - typedef RT(ClassT::*mf)(A, B, C, D, E, F, G, H, I, J); - typedef RT(ClassT::*cmf)(A, B, C, D, E, F, G, H, I, J) const; - typedef typename boost::mpl::if_, cmf, mf>::type - mem_func_ptr_t; - - template - struct result { typedef result_type type; }; - - member_function_ptr_action(mem_func_ptr_t fptr_) - : fptr(fptr_) {} - - template - result_type operator()(CT& obj, - A a, B b, C c, D d, E e, F f, G g, H h, I i, J j - ) const - { - return (impl::as_ptr::get(obj)->*fptr) - (a, b, c, d, e, f, g, h, i, j); - } - - mem_func_ptr_t fptr; -}; - -////////////////////////////////// -template -inline member_function_ptr -bind(RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J)) -{ - return member_function_ptr< - RT, ClassT, A, B, C, D, E, F, G, H, I, J>(fptr); -} - -////////////////////////////////// -template -inline member_function_ptr -bind(RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J) const) -{ - return member_function_ptr< - RT, ClassT const, A, B, C, D, E, F, G, H, I, J>(fptr); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// Member function pointer binder (specialization for 11 args) -// -/////////////////////////////////////////////////////////////////////////////// -template -struct member_function_ptr_action 12 - nil_t, nil_t, nil_t, -#endif - nil_t // Unused -> { - - typedef RT result_type; - typedef RT(ClassT::*mf)(A, B, C, D, E, F, G, H, I, J, K); - typedef RT(ClassT::*cmf)(A, B, C, D, E, F, G, H, I, J, K) const; - typedef typename boost::mpl::if_, cmf, mf>::type - mem_func_ptr_t; - - template - struct result { typedef result_type type; }; - - member_function_ptr_action(mem_func_ptr_t fptr_) - : fptr(fptr_) {} - - template - result_type operator()(CT& obj, - A a, B b, C c, D d, E e, F f, G g, H h, I i, J j, K k - ) const - { - return (impl::as_ptr::get(obj)->*fptr) - (a, b, c, d, e, f, g, h, i, j, k); - } - - mem_func_ptr_t fptr; -}; - -////////////////////////////////// -template -inline member_function_ptr -bind(RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K)) -{ - return member_function_ptr< - RT, ClassT, A, B, C, D, E, F, G, H, I, J, K>(fptr); -} - -////////////////////////////////// -template -inline member_function_ptr -bind(RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K) const) -{ - return member_function_ptr< - RT, ClassT const, A, B, C, D, E, F, G, H, I, J, K>(fptr); -} - -#if PHOENIX_LIMIT > 12 -/////////////////////////////////////////////////////////////////////////////// -// -// Member function pointer binder (specialization for 12 args) -// -/////////////////////////////////////////////////////////////////////////////// -template -struct member_function_ptr_action { - - typedef RT result_type; - typedef RT(ClassT::*mf)(A, B, C, D, E, F, G, H, I, J, K, L); - typedef RT(ClassT::*cmf)(A, B, C, D, E, F, G, H, I, J, K, L) const; - typedef typename boost::mpl::if_, cmf, mf>::type - mem_func_ptr_t; - - template - struct result { typedef result_type type; }; - - member_function_ptr_action(mem_func_ptr_t fptr_) - : fptr(fptr_) {} - - template - result_type operator()(CT& obj, - A a, B b, C c, D d, E e, F f, G g, H h, I i, J j, K k, L l - ) const - { - return (impl::as_ptr::get(obj)->*fptr) - (a, b, c, d, e, f, g, h, i, j, k, l); - } - - mem_func_ptr_t fptr; -}; - -////////////////////////////////// -template -inline member_function_ptr -bind(RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K, L)) -{ - return member_function_ptr< - RT, ClassT, A, B, C, D, E, F, G, H, I, J, K, L>(fptr); -} - -////////////////////////////////// -template -inline member_function_ptr -bind(RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K, L) const) -{ - return member_function_ptr< - RT, ClassT const, A, B, C, D, E, F, G, H, I, J, K, L>(fptr); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// Member function pointer binder (specialization for 13 args) -// -/////////////////////////////////////////////////////////////////////////////// -template -struct member_function_ptr_action { - - typedef RT result_type; - typedef RT(ClassT::*mf)(A, B, C, D, E, F, G, H, I, J, K, L, M); - typedef RT(ClassT::*cmf)(A, B, C, D, E, F, G, H, I, J, K, L, M) const; - typedef typename boost::mpl::if_, cmf, mf>::type - mem_func_ptr_t; - - template - struct result { typedef result_type type; }; - - member_function_ptr_action(mem_func_ptr_t fptr_) - : fptr(fptr_) {} - - template - result_type operator()(CT& obj, - A a, B b, C c, D d, E e, F f, G g, H h, I i, J j, K k, L l, M m - ) const - { - return (impl::as_ptr::get(obj)->*fptr) - (a, b, c, d, e, f, g, h, i, j, k, l, m); - } - - mem_func_ptr_t fptr; -}; - -////////////////////////////////// -template -inline member_function_ptr -bind(RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K, L, M)) -{ - return member_function_ptr< - RT, ClassT, A, B, C, D, E, F, G, H, I, J, K, L, M>(fptr); -} - -////////////////////////////////// -template -inline member_function_ptr -bind(RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K, L, M) const) -{ - return member_function_ptr< - RT, ClassT const, A, B, C, D, E, F, G, H, I, J, K, L, M>(fptr); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// Member function pointer binder (specialization for 14 args) -// -/////////////////////////////////////////////////////////////////////////////// -template -struct member_function_ptr_action { - - typedef RT result_type; - typedef RT(ClassT::*mf)(A, B, C, D, E, F, G, H, I, J, K, L, M, N); - typedef RT(ClassT::*cmf)(A, B, C, D, E, F, G, H, I, J, K, L, M, N) const; - typedef typename boost::mpl::if_, cmf, mf>::type - mem_func_ptr_t; - - template - struct result { typedef result_type type; }; - - member_function_ptr_action(mem_func_ptr_t fptr_) - : fptr(fptr_) {} - - template - result_type operator()(CT& obj, - A a, B b, C c, D d, E e, F f, G g, H h, I i, J j, K k, L l, M m, N n - ) const - { - return (impl::as_ptr::get(obj)->*fptr) - (a, b, c, d, e, f, g, h, i, j, k, l, m, n); - } - - mem_func_ptr_t fptr; -}; - -////////////////////////////////// -template -inline member_function_ptr -bind(RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K, L, M, N)) -{ - return member_function_ptr< - RT, ClassT, A, B, C, D, E, F, G, H, I, J, K, L, M, N>(fptr); -} - -////////////////////////////////// -template -inline member_function_ptr -bind(RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K, L, M, N) const) -{ - return member_function_ptr< - RT, ClassT const, A, B, C, D, E, F, G, H, I, J, K, L, M, N>(fptr); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// Member function pointer binder (specialization for 15 args) -// -/////////////////////////////////////////////////////////////////////////////// -template -struct member_function_ptr_action { - - typedef RT result_type; - typedef RT(ClassT::*mf)(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O); - typedef RT(ClassT::*cmf)(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O) const; - typedef typename boost::mpl::if_, cmf, mf>::type - mem_func_ptr_t; - - template - struct result { typedef result_type type; }; - - member_function_ptr_action(mem_func_ptr_t fptr_) - : fptr(fptr_) {} - - template - result_type operator()(CT& obj, - A a, B b, C c, D d, E e, F f, G g, H h, I i, J j, K k, L l, M m, N n, O o - ) const - { - return (impl::as_ptr::get(obj)->*fptr) - (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o); - } - - mem_func_ptr_t fptr; -}; - -////////////////////////////////// -template -inline member_function_ptr -bind(RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O)) -{ - return member_function_ptr< - RT, ClassT, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O>(fptr); -} - -////////////////////////////////// -template -inline member_function_ptr -bind(RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O) const) -{ - return member_function_ptr< - RT, ClassT const, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O>(fptr); -} - -#endif -#endif -#endif -#endif - -/////////////////////////////////////////////////////////////////////////////// -// -// Bound member function binder (main class) -// -/////////////////////////////////////////////////////////////////////////////// -template < - typename RT, - typename ClassT - , typename A = nil_t - , typename B = nil_t - , typename C = nil_t - -#if PHOENIX_LIMIT > 3 - , typename D = nil_t - , typename E = nil_t - , typename F = nil_t - -#if PHOENIX_LIMIT > 6 - , typename G = nil_t - , typename H = nil_t - , typename I = nil_t - -#if PHOENIX_LIMIT > 9 - , typename J = nil_t - , typename K = nil_t - , typename L = nil_t - -#if PHOENIX_LIMIT > 12 - , typename M = nil_t - , typename N = nil_t - , typename O = nil_t - -#endif -#endif -#endif -#endif - - , typename NU = nil_t // Not used -> -struct bound_member_action; - -////////////////////////////////// -template < - typename RT, - typename ClassT - , typename A = nil_t - , typename B = nil_t - , typename C = nil_t - -#if PHOENIX_LIMIT > 3 - , typename D = nil_t - , typename E = nil_t - , typename F = nil_t - -#if PHOENIX_LIMIT > 6 - , typename G = nil_t - , typename H = nil_t - , typename I = nil_t - -#if PHOENIX_LIMIT > 9 - , typename J = nil_t - , typename K = nil_t - , typename L = nil_t - -#if PHOENIX_LIMIT > 12 - , typename M = nil_t - , typename N = nil_t - , typename O = nil_t - -#endif -#endif -#endif -#endif -> -struct bound_member -: public function 3 - , D, E, F -#if PHOENIX_LIMIT > 6 - , G, H, I -#if PHOENIX_LIMIT > 9 - , J, K, L -#if PHOENIX_LIMIT > 12 - , M, N, O -#endif -#endif -#endif -#endif - > > { - - typedef bound_member_action 3 - , D, E, F -#if PHOENIX_LIMIT > 6 - , G, H, I -#if PHOENIX_LIMIT > 9 - , J, K, L -#if PHOENIX_LIMIT > 12 - , M, N, O -#endif -#endif -#endif -#endif - > action_t; - - template - bound_member(CT & c, FPT fp) - : function(action_t(c,fp)) {} - -#if !defined(BOOST_BORLANDC) - template - bound_member(CT * c, FPT fp) - : function(action_t(c,fp)) {} -#endif -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// Bound member function binder (specialization for 0 arg) -// -/////////////////////////////////////////////////////////////////////////////// - -template -struct bound_member_action 3 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 6 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 9 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 12 - nil_t, nil_t, nil_t, -#endif -#endif -#endif -#endif - nil_t // Unused -> { - - typedef RT result_type; - typedef RT(ClassT::*mf)(); - typedef RT(ClassT::*cmf)() const; - typedef typename boost::mpl::if_, cmf, mf>::type - mem_func_ptr_t; - - template - struct result { typedef result_type type; }; - - template - bound_member_action(CT & obj_, mem_func_ptr_t fptr_) - : obj(impl::as_ptr::get(obj_)), fptr(fptr_) {} - - result_type operator()() const - { return (obj->*fptr)(); } - - typename impl::as_ptr::pointer_type obj; - mem_func_ptr_t fptr; -}; - -////////////////////////////////// - -template -inline bound_member -bind(ClassT & obj, RT(ClassT::*fptr)()) -{ - return bound_member(obj, fptr); -} - -template -inline bound_member -bind(ClassT * obj, RT(ClassT::*fptr)()) -{ -#if defined(__MWERKS__) && (__MWERKS__ < 0x3003) - return bound_member(*obj, fptr); -#else - return bound_member(obj, fptr); -#endif -} - -template -inline bound_member -bind(ClassT const& obj, RT(ClassT::*fptr)()) -{ - return bound_member(obj, fptr); -} - -template -inline bound_member -bind(ClassT const* obj, RT(ClassT::*fptr)() const) -{ -#if defined(__MWERKS__) && (__MWERKS__ < 0x3003) - return bound_member(*obj, fptr); -#else - return bound_member(obj, fptr); -#endif -} - -/////////////////////////////////////////////////////////////////////////////// -// -// Bound member function binder (specialization for 1 arg) -// -/////////////////////////////////////////////////////////////////////////////// -template -struct bound_member_action 3 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 6 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 9 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 12 - nil_t, nil_t, nil_t, -#endif -#endif -#endif -#endif - nil_t // Unused -> { - - typedef RT result_type; - typedef RT(ClassT::*mf)(A); - typedef RT(ClassT::*cmf)(A) const; - typedef typename boost::mpl::if_, cmf, mf>::type - mem_func_ptr_t; - - template - struct result { typedef result_type type; }; - - template - bound_member_action(CT & obj_, mem_func_ptr_t fptr_) - : obj(impl::as_ptr::get(obj_)), fptr(fptr_) {} - - result_type operator()(A a) const - { return (obj->*fptr)(a); } - - typename impl::as_ptr::pointer_type obj; - mem_func_ptr_t fptr; -}; - -////////////////////////////////// -template -inline bound_member -bind(ClassT & obj, RT(ClassT::*fptr)(A)) -{ - return bound_member(obj,fptr); -} - -template -inline bound_member -bind(ClassT * obj, RT(ClassT::*fptr)(A)) -{ - return bound_member(obj,fptr); -} - -////////////////////////////////// -template -inline bound_member -bind(ClassT const& obj, RT(ClassT::*fptr)(A) const) -{ - return bound_member(obj,fptr); -} - -template -inline bound_member -bind(ClassT const* obj, RT(ClassT::*fptr)(A) const) -{ - return bound_member(obj,fptr); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// Bound member function binder (specialization for 2 args) -// -/////////////////////////////////////////////////////////////////////////////// -template -struct bound_member_action 3 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 6 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 9 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 12 - nil_t, nil_t, nil_t, -#endif -#endif -#endif -#endif - nil_t // Unused -> { - - typedef RT result_type; - typedef RT(ClassT::*mf)(A, B); - typedef RT(ClassT::*cmf)(A, B) const; - typedef typename boost::mpl::if_, cmf, mf>::type - mem_func_ptr_t; - - template - struct result { typedef result_type type; }; - - template - bound_member_action(CT & obj_, mem_func_ptr_t fptr_) - : obj(impl::as_ptr::get(obj_)), fptr(fptr_) {} - - result_type operator()(A a, B b) const - { return (obj->*fptr)(a, b); } - - typename impl::as_ptr::pointer_type obj; - mem_func_ptr_t fptr; -}; - -////////////////////////////////// -template -inline bound_member -bind(ClassT & obj,RT(ClassT::*fptr)(A, B)) -{ - return bound_member(obj,fptr); -} - -template -inline bound_member -bind(ClassT * obj,RT(ClassT::*fptr)(A, B)) -{ - return bound_member(obj,fptr); -} - -template -inline bound_member -bind(ClassT const& obj,RT(ClassT::*fptr)(A, B) const) -{ - return bound_member(obj,fptr); -} - -template -inline bound_member -bind(ClassT const* obj,RT(ClassT::*fptr)(A, B) const) -{ - return bound_member(obj,fptr); -} - -#if PHOENIX_LIMIT > 3 -/////////////////////////////////////////////////////////////////////////////// -// -// Bound member function binder (specialization for 3 args) -// -/////////////////////////////////////////////////////////////////////////////// -template -struct bound_member_action 6 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 9 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 12 - nil_t, nil_t, nil_t, -#endif -#endif -#endif - nil_t // Unused -> { - - typedef RT result_type; - typedef RT(ClassT::*mf)(A, B, C); - typedef RT(ClassT::*cmf)(A, B, C) const; - typedef typename boost::mpl::if_, cmf, mf>::type - mem_func_ptr_t; - - template - struct result { typedef result_type type; }; - - template - bound_member_action(CT & obj_, mem_func_ptr_t fptr_) - : obj(impl::as_ptr::get(obj_)), fptr(fptr_) {} - - result_type operator()(A a, B b, C c) const - { return (obj->*fptr)(a, b, c); } - - typename impl::as_ptr::pointer_type obj; - mem_func_ptr_t fptr; -}; - -////////////////////////////////// -template -inline bound_member -bind(ClassT & obj,RT(ClassT::*fptr)(A, B, C)) -{ - return bound_member(obj,fptr); -} - -template -inline bound_member -bind(ClassT * obj,RT(ClassT::*fptr)(A, B, C)) -{ - return bound_member(obj,fptr); -} - -template -inline bound_member -bind(ClassT const& obj,RT(ClassT::*fptr)(A, B, C) const) -{ - return bound_member(obj,fptr); -} - -template -inline bound_member -bind(ClassT const* obj,RT(ClassT::*fptr)(A, B, C) const) -{ - return bound_member(obj,fptr); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// Bound member function binder (specialization for 4 args) -// -/////////////////////////////////////////////////////////////////////////////// -template -struct bound_member_action 6 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 9 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 12 - nil_t, nil_t, nil_t, -#endif -#endif -#endif - nil_t // Unused -> { - - typedef RT result_type; - typedef RT(ClassT::*mf)(A, B, C, D); - typedef RT(ClassT::*cmf)(A, B, C, D) const; - typedef typename boost::mpl::if_, cmf, mf>::type - mem_func_ptr_t; - - template - struct result { typedef result_type type; }; - - template - bound_member_action(CT & obj_, mem_func_ptr_t fptr_) - : obj(impl::as_ptr::get(obj_)), fptr(fptr_) {} - - result_type operator()(A a, B b, C c, D d) const - { return (obj->*fptr)(a, b, c, d); } - - typename impl::as_ptr::pointer_type obj; - mem_func_ptr_t fptr; -}; - -////////////////////////////////// -template -inline bound_member -bind(ClassT & obj,RT(ClassT::*fptr)(A, B, C, D)) -{ - return bound_member< - RT, ClassT, A, B, C, D>(obj,fptr); -} - -template -inline bound_member -bind(ClassT * obj,RT(ClassT::*fptr)(A, B, C, D)) -{ - return bound_member< - RT, ClassT, A, B, C, D>(obj,fptr); -} - -template -inline bound_member -bind(ClassT const& obj,RT(ClassT::*fptr)(A, B, C, D) const) -{ - return bound_member< - RT, ClassT const, A, B, C, D>(obj,fptr); -} - -template -inline bound_member -bind(ClassT const* obj,RT(ClassT::*fptr)(A, B, C, D) const) -{ - return bound_member< - RT, ClassT const, A, B, C, D>(obj,fptr); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// Bound member function binder (specialization for 5 args) -// -/////////////////////////////////////////////////////////////////////////////// -template -struct bound_member_action 6 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 9 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 12 - nil_t, nil_t, nil_t, -#endif -#endif -#endif - nil_t // Unused -> { - - typedef RT result_type; - typedef RT(ClassT::*mf)(A, B, C, D, E); - typedef RT(ClassT::*cmf)(A, B, C, D, E) const; - typedef typename boost::mpl::if_, cmf, mf>::type - mem_func_ptr_t; - - template - struct result { typedef result_type type; }; - - template - bound_member_action(CT & obj_, mem_func_ptr_t fptr_) - : obj(impl::as_ptr::get(obj_)), fptr(fptr_) {} - - result_type operator()( - A a, B b, C c, D d, E e - ) const - { return (obj->*fptr)(a, b, c, d, e); } - - typename impl::as_ptr::pointer_type obj; - mem_func_ptr_t fptr; -}; - -////////////////////////////////// -template -inline bound_member -bind(ClassT & obj,RT(ClassT::*fptr)(A, B, C, D, E)) -{ - return bound_member< - RT, ClassT, A, B, C, D, E>(obj,fptr); -} - -template -inline bound_member -bind(ClassT * obj,RT(ClassT::*fptr)(A, B, C, D, E)) -{ - return bound_member< - RT, ClassT, A, B, C, D, E>(obj,fptr); -} - -template -inline bound_member -bind(ClassT const& obj,RT(ClassT::*fptr)(A, B, C, D, E) const) -{ - return bound_member< - RT, ClassT const, A, B, C, D, E>(obj,fptr); -} - -template -inline bound_member -bind(ClassT const* obj,RT(ClassT::*fptr)(A, B, C, D, E) const) -{ - return bound_member< - RT, ClassT const, A, B, C, D, E>(obj,fptr); -} - -#if PHOENIX_LIMIT > 6 -/////////////////////////////////////////////////////////////////////////////// -// -// Bound member function binder (specialization for 6 args) -// -/////////////////////////////////////////////////////////////////////////////// -template -struct bound_member_action 9 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 12 - nil_t, nil_t, nil_t, -#endif -#endif - nil_t // Unused -> { - - typedef RT result_type; - typedef RT(ClassT::*mf)(A, B, C, D, E, F); - typedef RT(ClassT::*cmf)(A, B, C, D, E, F) const; - typedef typename boost::mpl::if_, cmf, mf>::type - mem_func_ptr_t; - - template < - typename A_, typename B_, typename C_, typename D_, - typename E_, typename F_ - > - struct result { typedef result_type type; }; - - template - bound_member_action(CT & obj_, mem_func_ptr_t fptr_) - : obj(impl::as_ptr::get(obj_)), fptr(fptr_) {} - - result_type operator()( - A a, B b, C c, D d, E e, F f - ) const - { return (obj->*fptr)(a, b, c, d, e, f); } - - typename impl::as_ptr::pointer_type obj; - mem_func_ptr_t fptr; -}; - -////////////////////////////////// -template -inline bound_member -bind(ClassT & obj,RT(ClassT::*fptr)(A, B, C, D, E, F)) -{ - return bound_member< - RT, ClassT, A, B, C, D, E, F>(obj,fptr); -} - -template -inline bound_member -bind(ClassT * obj,RT(ClassT::*fptr)(A, B, C, D, E, F)) -{ - return bound_member< - RT, ClassT, A, B, C, D, E, F>(obj,fptr); -} - -template -inline bound_member -bind(ClassT const& obj,RT(ClassT::*fptr)(A, B, C, D, E, F) const) -{ - return bound_member< - RT, ClassT const, A, B, C, D, E, F>(obj,fptr); -} - -template -inline bound_member -bind(ClassT const* obj,RT(ClassT::*fptr)(A, B, C, D, E, F) const) -{ - return bound_member< - RT, ClassT const, A, B, C, D, E, F>(obj,fptr); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// Bound member function binder (specialization for 7 args) -// -/////////////////////////////////////////////////////////////////////////////// -template -struct bound_member_action 9 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 12 - nil_t, nil_t, nil_t, -#endif -#endif - nil_t // Unused -> { - - typedef RT result_type; - typedef RT(ClassT::*mf)(A, B, C, D, E, F, G); - typedef RT(ClassT::*cmf)(A, B, C, D, E, F, G) const; - typedef typename boost::mpl::if_, cmf, mf>::type - mem_func_ptr_t; - - template < - typename A_, typename B_, typename C_, typename D_, - typename E_, typename F_, typename G_ - > - struct result { typedef result_type type; }; - - template - bound_member_action(CT & obj_, mem_func_ptr_t fptr_) - : obj(impl::as_ptr::get(obj_)), fptr(fptr_) {} - - result_type operator()( - A a, B b, C c, D d, E e, F f, G g - ) const - { return (obj->*fptr)(a, b, c, d, e, f, g); } - - typename impl::as_ptr::pointer_type obj; - mem_func_ptr_t fptr; -}; - -////////////////////////////////// -template -inline bound_member -bind(ClassT & obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G)) -{ - return bound_member< - RT, ClassT, A, B, C, D, E, F, G>(obj,fptr); -} - -template -inline bound_member -bind(ClassT * obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G)) -{ - return bound_member< - RT, ClassT, A, B, C, D, E, F, G>(obj,fptr); -} - -template -inline bound_member -bind(ClassT const& obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G) const) -{ - return bound_member< - RT, ClassT const, A, B, C, D, E, F, G>(obj,fptr); -} - -template -inline bound_member -bind(ClassT const* obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G) const) -{ - return bound_member< - RT, ClassT const, A, B, C, D, E, F, G>(obj,fptr); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// Bound member function binder (specialization for 8 args) -// -/////////////////////////////////////////////////////////////////////////////// -template -struct bound_member_action 9 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 12 - nil_t, nil_t, nil_t, -#endif -#endif - nil_t // Unused -> { - - typedef RT result_type; - typedef RT(ClassT::*mf)(A, B, C, D, E, F, G, H); - typedef RT(ClassT::*cmf)(A, B, C, D, E, F, G, H) const; - typedef typename boost::mpl::if_, cmf, mf>::type - mem_func_ptr_t; - - template < - typename A_, typename B_, typename C_, typename D_, - typename E_, typename F_, typename G_, typename H_ - > - struct result { typedef result_type type; }; - - template - bound_member_action(CT & obj_, mem_func_ptr_t fptr_) - : obj(impl::as_ptr::get(obj_)), fptr(fptr_) {} - - result_type operator()( - A a, B b, C c, D d, E e, F f, G g, H h - ) const - { return (obj->*fptr)(a, b, c, d, e, f, g, h); } - - typename impl::as_ptr::pointer_type obj; - mem_func_ptr_t fptr; -}; - -////////////////////////////////// -template -inline bound_member -bind(ClassT & obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H)) -{ - return bound_member< - RT, ClassT, A, B, C, D, E, F, G, H>(obj,fptr); -} - -template -inline bound_member -bind(ClassT * obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H)) -{ - return bound_member< - RT, ClassT, A, B, C, D, E, F, G, H>(obj,fptr); -} - -template -inline bound_member -bind(ClassT const& obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H) const) -{ - return bound_member< - RT, ClassT const, A, B, C, D, E, F, G, H>(obj,fptr); -} - -template -inline bound_member -bind(ClassT const* obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H) const) -{ - return bound_member< - RT, ClassT const, A, B, C, D, E, F, G, H>(obj,fptr); -} - -#if PHOENIX_LIMIT > 9 -/////////////////////////////////////////////////////////////////////////////// -// -// Bound member function binder (specialization for 9 args) -// -/////////////////////////////////////////////////////////////////////////////// -template -struct bound_member_action 12 - nil_t, nil_t, nil_t, -#endif - nil_t // Unused -> { - - typedef RT result_type; - typedef RT(ClassT::*mf)(A, B, C, D, E, F, G, H, I); - typedef RT(ClassT::*cmf)(A, B, C, D, E, F, G, H, I) const; - typedef typename boost::mpl::if_, cmf, mf>::type - mem_func_ptr_t; - - template < - typename A_, typename B_, typename C_, typename D_, - typename E_, typename F_, typename G_, typename H_, typename I_ - > - struct result { typedef result_type type; }; - - template - bound_member_action(CT & obj_, mem_func_ptr_t fptr_) - : obj(impl::as_ptr::get(obj_)), fptr(fptr_) {} - - result_type operator()( - A a, B b, C c, D d, E e, F f, G g, H h, I i - ) const - { return (obj->*fptr)(a, b, c, d, e, f, g, h, i); } - - typename impl::as_ptr::pointer_type obj; - mem_func_ptr_t fptr; -}; - -////////////////////////////////// -template -inline bound_member -bind(ClassT & obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I)) -{ - return bound_member< - RT, ClassT, A, B, C, D, E, F, G, H, I>(obj,fptr); -} - -template -inline bound_member -bind(ClassT * obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I)) -{ - return bound_member< - RT, ClassT, A, B, C, D, E, F, G, H, I>(obj,fptr); -} - -template -inline bound_member -bind(ClassT const& obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I) const) -{ - return bound_member< - RT, ClassT const, A, B, C, D, E, F, G, H, I>(obj,fptr); -} - -template -inline bound_member -bind(ClassT const* obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I) const) -{ - return bound_member< - RT, ClassT const, A, B, C, D, E, F, G, H, I>(obj,fptr); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// Bound member function binder (specialization for 10 args) -// -/////////////////////////////////////////////////////////////////////////////// -template -struct bound_member_action 12 - nil_t, nil_t, nil_t, -#endif - nil_t // Unused -> { - - typedef RT result_type; - typedef RT(ClassT::*mf)(A, B, C, D, E, F, G, H, I, J); - typedef RT(ClassT::*cmf)(A, B, C, D, E, F, G, H, I, J) const; - typedef typename boost::mpl::if_, cmf, mf>::type - mem_func_ptr_t; - - template < - typename A_, typename B_, typename C_, typename D_, - typename E_, typename F_, typename G_, typename H_, typename I_, - typename J_ - > - struct result { typedef result_type type; }; - - template - bound_member_action(CT & obj_, mem_func_ptr_t fptr_) - : obj(impl::as_ptr::get(obj_)), fptr(fptr_) {} - - result_type operator()( - A a, B b, C c, D d, E e, F f, G g, H h, I i, J j - ) const - { - return (obj->*fptr)(a, b, c, d, e, f, g, h, i, j); - } - - typename impl::as_ptr::pointer_type obj; - mem_func_ptr_t fptr; -}; - -////////////////////////////////// -template -inline bound_member -bind(ClassT & obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J)) -{ - return bound_member< - RT, ClassT, A, B, C, D, E, F, G, H, I, J>(obj,fptr); -} - -template -inline bound_member -bind(ClassT * obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J)) -{ - return bound_member< - RT, ClassT, A, B, C, D, E, F, G, H, I, J>(obj,fptr); -} - -template -inline bound_member -bind(ClassT const& obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J) const) -{ - return bound_member< - RT, ClassT const, A, B, C, D, E, F, G, H, I, J>(obj,fptr); -} - -template -inline bound_member -bind(ClassT const* obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J) const) -{ - return bound_member< - RT, ClassT const, A, B, C, D, E, F, G, H, I, J>(obj,fptr); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// Bound member function binder (specialization for 11 args) -// -/////////////////////////////////////////////////////////////////////////////// -template -struct bound_member_action 12 - nil_t, nil_t, nil_t, -#endif - nil_t // Unused -> { - - typedef RT result_type; - typedef RT(ClassT::*mf)(A, B, C, D, E, F, G, H, I, J, K); - typedef RT(ClassT::*cmf)(A, B, C, D, E, F, G, H, I, J, K) const; - typedef typename boost::mpl::if_, cmf, mf>::type - mem_func_ptr_t; - - template < - typename A_, typename B_, typename C_, typename D_, - typename E_, typename F_, typename G_, typename H_, typename I_, - typename J_, typename K_ - > - struct result { typedef result_type type; }; - - template - bound_member_action(CT & obj_, mem_func_ptr_t fptr_) - : obj(impl::as_ptr::get(obj_)), fptr(fptr_) {} - - result_type operator()( - A a, B b, C c, D d, E e, F f, G g, H h, I i, J j, K k - ) const - { - return (obj->*fptr)(a, b, c, d, e, f, g, h, i, j, k); - } - - typename impl::as_ptr::pointer_type obj; - mem_func_ptr_t fptr; -}; - -////////////////////////////////// -template -inline bound_member -bind(ClassT & obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K)) -{ - return bound_member< - RT, ClassT, A, B, C, D, E, F, G, H, I, J, K>(obj,fptr); -} - -template -inline bound_member -bind(ClassT * obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K)) -{ - return bound_member< - RT, ClassT, A, B, C, D, E, F, G, H, I, J, K>(obj,fptr); -} - -template -inline bound_member -bind(ClassT const& obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K) const) -{ - return bound_member< - RT, ClassT const, A, B, C, D, E, F, G, H, I, J, K>(obj,fptr); -} - -template -inline bound_member -bind(ClassT const* obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K) const) -{ - return bound_member< - RT, ClassT const, A, B, C, D, E, F, G, H, I, J, K>(obj,fptr); -} - -#if PHOENIX_LIMIT > 12 -/////////////////////////////////////////////////////////////////////////////// -// -// Bound member function binder (specialization for 12 args) -// -/////////////////////////////////////////////////////////////////////////////// -template -struct bound_member_action { - - typedef RT result_type; - typedef RT(ClassT::*mf)(A, B, C, D, E, F, G, H, I, J, K, L); - typedef RT(ClassT::*cmf)(A, B, C, D, E, F, G, H, I, J, K, L) const; - typedef typename boost::mpl::if_, cmf, mf>::type - mem_func_ptr_t; - - template < - typename A_, typename B_, typename C_, typename D_, - typename E_, typename F_, typename G_, typename H_, typename I_, - typename J_, typename K_, typename L_ - > - struct result { typedef result_type type; }; - - template - bound_member_action(CT & obj_, mem_func_ptr_t fptr_) - : obj(impl::as_ptr::get(obj_)), fptr(fptr_) {} - - result_type operator()( - A a, B b, C c, D d, E e, F f, G g, H h, I i, J j, K k, L l - ) const - { - return (obj->*fptr)(a, b, c, d, e, f, g, h, i, j, k, l); - } - - typename impl::as_ptr::pointer_type obj; - mem_func_ptr_t fptr; -}; - -////////////////////////////////// -template -inline bound_member -bind(ClassT & obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K, L)) -{ - return bound_member< - RT, ClassT, A, B, C, D, E, F, G, H, I, J, K, L>(obj,fptr); -} - -template -inline bound_member -bind(ClassT * obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K, L)) -{ - return bound_member< - RT, ClassT, A, B, C, D, E, F, G, H, I, J, K, L>(obj,fptr); -} - -template -inline bound_member -bind(ClassT const& obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K, L) const) -{ - return bound_member< - RT, ClassT const, A, B, C, D, E, F, G, H, I, J, K, L>(obj,fptr); -} - -template -inline bound_member -bind(ClassT const* obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K, L) const) -{ - return bound_member< - RT, ClassT const, A, B, C, D, E, F, G, H, I, J, K, L>(obj,fptr); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// Bound member function binder (specialization for 13 args) -// -/////////////////////////////////////////////////////////////////////////////// -template -struct bound_member_action { - - typedef RT result_type; - typedef RT(ClassT::*mf)(A, B, C, D, E, F, G, H, I, J, K, L, M); - typedef RT(ClassT::*cmf)(A, B, C, D, E, F, G, H, I, J, K, L, M) const; - typedef typename boost::mpl::if_, cmf, mf>::type - mem_func_ptr_t; - - template < - typename A_, typename B_, typename C_, typename D_, - typename E_, typename F_, typename G_, typename H_, typename I_, - typename J_, typename K_, typename L_, typename M_ - > - struct result { typedef result_type type; }; - - template - bound_member_action(CT & obj_, mem_func_ptr_t fptr_) - : obj(impl::as_ptr::get(obj_)), fptr(fptr_) {} - - result_type operator()( - A a, B b, C c, D d, E e, F f, G g, H h, I i, J j, K k, L l, M m - ) const - { - return (obj->*fptr)(a, b, c, d, e, f, g, h, i, j, k, l, m); - } - - typename impl::as_ptr::pointer_type obj; - mem_func_ptr_t fptr; -}; - -////////////////////////////////// -template -inline bound_member -bind(ClassT & obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K, L, M)) -{ - return bound_member< - RT, ClassT, A, B, C, D, E, F, G, H, I, J, K, L, M>(obj,fptr); -} - -template -inline bound_member -bind(ClassT * obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K, L, M)) -{ - return bound_member< - RT, ClassT, A, B, C, D, E, F, G, H, I, J, K, L, M>(obj,fptr); -} - -template -inline bound_member -bind(ClassT const& obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K, L, M) const) -{ - return bound_member< - RT, ClassT const, A, B, C, D, E, F, G, H, I, J, K, L, M>(obj,fptr); -} - -template -inline bound_member -bind(ClassT const* obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K, L, M) const) -{ - return bound_member< - RT, ClassT const, A, B, C, D, E, F, G, H, I, J, K, L, M>(obj,fptr); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// Bound member function binder (specialization for 14 args) -// -/////////////////////////////////////////////////////////////////////////////// -template -struct bound_member_action { - - typedef RT result_type; - typedef RT(ClassT::*mf)(A, B, C, D, E, F, G, H, I, J, K, L, M, N); - typedef RT(ClassT::*cmf)(A, B, C, D, E, F, G, H, I, J, K, L, M, N) const; - typedef typename boost::mpl::if_, cmf, mf>::type - mem_func_ptr_t; - - template < - typename A_, typename B_, typename C_, typename D_, - typename E_, typename F_, typename G_, typename H_, typename I_, - typename J_, typename K_, typename L_, typename M_, typename N_ - > - struct result { typedef result_type type; }; - - template - bound_member_action(CT & obj_, mem_func_ptr_t fptr_) - : obj(impl::as_ptr::get(obj_)), fptr(fptr_) {} - - result_type operator()( - A a, B b, C c, D d, E e, F f, G g, H h, I i, J j, K k, L l, M m, N n - ) const - { - return (obj->*fptr)(a, b, c, d, e, f, g, h, i, j, k, l, m, n); - } - - typename impl::as_ptr::pointer_type obj; - mem_func_ptr_t fptr; -}; - -////////////////////////////////// -template -inline bound_member -bind(ClassT & obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K, L, M, N)) -{ - return bound_member< - RT, ClassT, A, B, C, D, E, F, G, H, I, J, K, L, M, N>(obj,fptr); -} - -template -inline bound_member -bind(ClassT * obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K, L, M, N)) -{ - return bound_member< - RT, ClassT, A, B, C, D, E, F, G, H, I, J, K, L, M, N>(obj,fptr); -} - -template -inline bound_member -bind(ClassT const& obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K, L, M, N) const) -{ - return bound_member< - RT, ClassT const, A, B, C, D, E, F, G, H, I, J, K, L, M, N>(obj,fptr); -} - -template -inline bound_member -bind(ClassT const* obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K, L, M, N) const) -{ - return bound_member< - RT, ClassT const, A, B, C, D, E, F, G, H, I, J, K, L, M, N>(obj,fptr); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// Bound member function binder (specialization for 15 args) -// -/////////////////////////////////////////////////////////////////////////////// -template -struct bound_member_action { - - typedef RT result_type; - typedef RT(ClassT::*mf)(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O); - typedef RT(ClassT::*cmf)(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O) const; - typedef typename boost::mpl::if_, cmf, mf>::type - mem_func_ptr_t; - - template < - typename A_, typename B_, typename C_, typename D_, - typename E_, typename F_, typename G_, typename H_, typename I_, - typename J_, typename K_, typename L_, typename M_, typename N_, - typename O_ - > - struct result { typedef result_type type; }; - - template - bound_member_action(CT & obj_, mem_func_ptr_t fptr_) - : obj(impl::as_ptr::get(obj_)), fptr(fptr_) {} - - result_type operator()( - A a, B b, C c, D d, E e, F f, G g, H h, I i, J j, K k, L l, M m, N n, O o - ) const - { - return (obj->*fptr)(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o); - } - - typename impl::as_ptr::pointer_type obj; - mem_func_ptr_t fptr; -}; - -////////////////////////////////// -template -inline bound_member -bind(ClassT & obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O)) -{ - return bound_member< - RT, ClassT, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O>(obj,fptr); -} - -template -inline bound_member -bind(ClassT * obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O)) -{ - return bound_member< - RT, ClassT, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O>(obj,fptr); -} - -template -inline bound_member -bind(ClassT const& obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O) const) -{ - return bound_member< - RT, ClassT const, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O>(obj,fptr); -} - -template -inline bound_member -bind(ClassT const* obj,RT(ClassT::*fptr)(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O) const) -{ - return bound_member< - RT, ClassT const, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O>(obj,fptr); -} - -#endif -#endif -#endif -#endif - -} // namespace phoenix - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/phoenix/casts.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/phoenix/casts.hpp deleted file mode 100644 index 73441801175f..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/phoenix/casts.hpp +++ /dev/null @@ -1,1470 +0,0 @@ -/*============================================================================= - Phoenix V1.2.1 - Copyright (c) 2001-2003 Joel de Guzman - Copyright (c) 2001-2003 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) -==============================================================================*/ - -#ifndef BOOST_SPIRIT_CLASSIC_PHOENIX_CASTS_HPP -#define BOOST_SPIRIT_CLASSIC_PHOENIX_CASTS_HPP - -/////////////////////////////////////////////////////////////////////////////// -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace phoenix { - -/////////////////////////////////////////////////////////////////////////////// -// -// Phoenix predefined maximum construct_ limit. This limit defines the maximum -// number of parameters supported for calles to the set of construct_ template -// functions (lazy object construction, see below). This number defaults to 3. -// The actual maximum is rounded up in multiples of 3. Thus, if this value -// is 4, the actual limit is 6. The ultimate maximum limit in this -// implementation is 15. -// PHOENIX_CONSTRUCT_LIMIT should NOT be greater than PHOENIX_LIMIT! - -#if !defined(PHOENIX_CONSTRUCT_LIMIT) -#define PHOENIX_CONSTRUCT_LIMIT PHOENIX_LIMIT -#endif - -// ensure PHOENIX_CONSTRUCT_LIMIT <= PHOENIX_LIMIT -BOOST_STATIC_ASSERT(PHOENIX_CONSTRUCT_LIMIT <= PHOENIX_LIMIT); - -// ensure PHOENIX_CONSTRUCT_LIMIT <= 15 -BOOST_STATIC_ASSERT(PHOENIX_CONSTRUCT_LIMIT <= 15); - -/////////////////////////////////////////////////////////////////////////////// -// -// Lazy C++ casts -// -// The set of lazy C++ cast template classes and functions provide a way -// of lazily casting certain type to another during parsing. -// The lazy C++ templates are (syntactically) used very much like -// the well known C++ casts: -// -// A *a = static_cast_(...actor returning a convertible type...); -// -// where the given parameter should be an actor, which eval() function -// returns a convertible type. -// -/////////////////////////////////////////////////////////////////////////////// -template -struct static_cast_l { - - template - struct result { typedef T type; }; - - static_cast_l(A const& a_) - : a(a_) {} - - template - T - eval(TupleT const& args) const - { - return static_cast(a.eval(args)); - } - - A a; -}; - -////////////////////////////////// -template -inline actor > -static_cast_(actor const& a) -{ - typedef static_cast_l cast_t; - return actor(cast_t(a)); -} - -////////////////////////////////// -template -struct dynamic_cast_l { - - template - struct result { typedef T type; }; - - dynamic_cast_l(A const& a_) - : a(a_) {} - - template - T - eval(TupleT const& args) const - { - return dynamic_cast(a.eval(args)); - } - - A a; -}; - -////////////////////////////////// -template -inline actor > -dynamic_cast_(actor const& a) -{ - typedef dynamic_cast_l cast_t; - return actor(cast_t(a)); -} - -////////////////////////////////// -template -struct reinterpret_cast_l { - - template - struct result { typedef T type; }; - - reinterpret_cast_l(A const& a_) - : a(a_) {} - - template - T - eval(TupleT const& args) const - { - return reinterpret_cast(a.eval(args)); - } - - A a; -}; - -////////////////////////////////// -template -inline actor > -reinterpret_cast_(actor const& a) -{ - typedef reinterpret_cast_l cast_t; - return actor(cast_t(a)); -} - -////////////////////////////////// -template -struct const_cast_l { - - template - struct result { typedef T type; }; - - const_cast_l(A const& a_) - : a(a_) {} - - template - T - eval(TupleT const& args) const - { - return const_cast(a.eval(args)); - } - - A a; -}; - -////////////////////////////////// -template -inline actor > -const_cast_(actor const& a) -{ - typedef const_cast_l cast_t; - return actor(cast_t(a)); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// construct_ -// -// Lazy object construction -// -// The set of construct_<> template classes and functions provide a way -// of lazily constructing certain object from a arbitrary set of -// actors during parsing. -// The construct_ templates are (syntactically) used very much like -// the well known C++ casts: -// -// A a = construct_(...arbitrary list of actors...); -// -// where the given parameters are submitted as parameters to the -// constructor of the object of type A. (This certainly implies, that -// type A has a constructor with a fitting set of parameter types -// defined.) -// -// The maximum number of needed parameters is controlled through the -// preprocessor constant PHOENIX_CONSTRUCT_LIMIT. Note though, that this -// limit should not be greater than PHOENIX_LIMIT. -// -/////////////////////////////////////////////////////////////////////////////// -template -struct construct_l_0 { - typedef T result_type; - - T operator()() const { - return T(); - } -}; - - -template -struct construct_l { - - template < - typename A - , typename B - , typename C - -#if PHOENIX_CONSTRUCT_LIMIT > 3 - , typename D - , typename E - , typename F - -#if PHOENIX_CONSTRUCT_LIMIT > 6 - , typename G - , typename H - , typename I - -#if PHOENIX_CONSTRUCT_LIMIT > 9 - , typename J - , typename K - , typename L - -#if PHOENIX_CONSTRUCT_LIMIT > 12 - , typename M - , typename N - , typename O -#endif -#endif -#endif -#endif - > - struct result { typedef T type; }; - - T operator()() const - { - return T(); - } - - template - T operator()(A const& a) const - { - T t(a); - return t; - } - - template - T operator()(A const& a, B const& b) const - { - T t(a, b); - return t; - } - - template - T operator()(A const& a, B const& b, C const& c) const - { - T t(a, b, c); - return t; - } - -#if PHOENIX_CONSTRUCT_LIMIT > 3 - template < - typename A, typename B, typename C, typename D - > - T operator()( - A const& a, B const& b, C const& c, D const& d) const - { - T t(a, b, c, d); - return t; - } - - template < - typename A, typename B, typename C, typename D, typename E - > - T operator()( - A const& a, B const& b, C const& c, D const& d, E const& e) const - { - T t(a, b, c, d, e); - return t; - } - - template < - typename A, typename B, typename C, typename D, typename E, - typename F - > - T operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f) const - { - T t(a, b, c, d, e, f); - return t; - } - -#if PHOENIX_CONSTRUCT_LIMIT > 6 - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G - > - T operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g) const - { - T t(a, b, c, d, e, f, g); - return t; - } - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H - > - T operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h) const - { - T t(a, b, c, d, e, f, g, h); - return t; - } - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I - > - T operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i) const - { - T t(a, b, c, d, e, f, g, h, i); - return t; - } - -#if PHOENIX_CONSTRUCT_LIMIT > 9 - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J - > - T operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i, J const& j) const - { - T t(a, b, c, d, e, f, g, h, i, j); - return t; - } - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, - typename K - > - T operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i, J const& j, - K const& k) const - { - T t(a, b, c, d, e, f, g, h, i, j, k); - return t; - } - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, - typename K, typename L - > - T operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i, J const& j, - K const& k, L const& l) const - { - T t(a, b, c, d, e, f, g, h, i, j, k, l); - return t; - } - -#if PHOENIX_CONSTRUCT_LIMIT > 12 - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, - typename K, typename L, typename M - > - T operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i, J const& j, - K const& k, L const& l, M const& m) const - { - T t(a, b, c, d, e, f, g, h, i, j, k, l, m); - return t; - } - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, - typename K, typename L, typename M, typename N - > - T operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i, J const& j, - K const& k, L const& l, M const& m, N const& n) const - { - T t(a, b, c, d, e, f, g, h, i, j, k, l, m, n); - return t; - } - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, - typename K, typename L, typename M, typename N, typename O - > - T operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i, J const& j, - K const& k, L const& l, M const& m, N const& n, O const& o) const - { - T t(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o); - return t; - } - -#endif -#endif -#endif -#endif -}; - - -template -struct construct_1 { - - template < - typename A - > - struct result { typedef T type; }; - - template - T operator()(A const& a) const - { - T t(a); - return t; - } - -}; - -template -struct construct_2 { - - template < - typename A - , typename B - > - struct result { typedef T type; }; - - template - T operator()(A const& a, B const& b) const - { - T t(a, b); - return t; - } - -}; - -template -struct construct_3 { - - template < - typename A - , typename B - , typename C - > - struct result { typedef T type; }; - - template - T operator()(A const& a, B const& b, C const& c) const - { - T t(a, b, c); - return t; - } -}; - -#if PHOENIX_CONSTRUCT_LIMIT > 3 -template -struct construct_4 { - - template < - typename A - , typename B - , typename C - , typename D - > - struct result { typedef T type; }; - - template < - typename A, typename B, typename C, typename D - > - T operator()( - A const& a, B const& b, C const& c, D const& d) const - { - T t(a, b, c, d); - return t; - } -}; - - -template -struct construct_5 { - - template < - typename A - , typename B - , typename C - , typename D - , typename E - > - struct result { typedef T type; }; - - template < - typename A, typename B, typename C, typename D, typename E - > - T operator()( - A const& a, B const& b, C const& c, D const& d, E const& e) const - { - T t(a, b, c, d, e); - return t; - } -}; - - -template -struct construct_6 { - - template < - typename A - , typename B - , typename C - , typename D - , typename E - , typename F - > - struct result { typedef T type; }; - - template < - typename A, typename B, typename C, typename D, typename E, - typename F - > - T operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f) const - { - T t(a, b, c, d, e, f); - return t; - } -}; -#endif - - -#if PHOENIX_CONSTRUCT_LIMIT > 6 -template -struct construct_7 { - - template < - typename A - , typename B - , typename C - , typename D - , typename E - , typename F - , typename G - > - struct result { typedef T type; }; - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G - > - T operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g) const - { - T t(a, b, c, d, e, f, g); - return t; - } -}; - -template -struct construct_8 { - - template < - typename A - , typename B - , typename C - , typename D - , typename E - , typename F - , typename G - , typename H - > - struct result { typedef T type; }; - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H - > - T operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h) const - { - T t(a, b, c, d, e, f, g, h); - return t; - } -}; - -template -struct construct_9 { - - template < - typename A - , typename B - , typename C - , typename D - , typename E - , typename F - , typename G - , typename H - , typename I - > - struct result { typedef T type; }; - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I - > - T operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i) const - { - T t(a, b, c, d, e, f, g, h, i); - return t; - } -}; -#endif - - -#if PHOENIX_CONSTRUCT_LIMIT > 9 -template -struct construct_10 { - - template < - typename A - , typename B - , typename C - , typename D - , typename E - , typename F - , typename G - , typename H - , typename I - , typename J - > - struct result { typedef T type; }; - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J - > - T operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i, J const& j) const - { - T t(a, b, c, d, e, f, g, h, i, j); - return t; - } -}; - -template -struct construct_11 { - - template < - typename A - , typename B - , typename C - , typename D - , typename E - , typename F - , typename G - , typename H - , typename I - , typename J - , typename K - > - struct result { typedef T type; }; - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, - typename K - > - T operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i, J const& j, - K const& k) const - { - T t(a, b, c, d, e, f, g, h, i, j, k); - return t; - } -}; - -template -struct construct_12 { - - template < - typename A - , typename B - , typename C - , typename D - , typename E - , typename F - , typename G - , typename H - , typename I - , typename J - , typename K - , typename L - > - struct result { typedef T type; }; - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, - typename K, typename L - > - T operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i, J const& j, - K const& k, L const& l) const - { - T t(a, b, c, d, f, e, g, h, i, j, k, l); - return t; - } -}; -#endif - -#if PHOENIX_CONSTRUCT_LIMIT > 12 -template -struct construct_13 { - - template < - typename A - , typename B - , typename C - , typename D - , typename E - , typename F - , typename G - , typename H - , typename I - , typename J - , typename K - , typename L - , typename M - > - struct result { typedef T type; }; - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, - typename K, typename L, typename M - > - T operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i, J const& j, - K const& k, L const& l, M const& m) const - { - T t(a, b, c, d, e, f, g, h, i, j, k, l, m); - return t; - } -}; - -template -struct construct_14 { - - template < - typename A - , typename B - , typename C - , typename D - , typename E - , typename F - , typename G - , typename H - , typename I - , typename J - , typename K - , typename L - , typename M - , typename N - > - struct result { typedef T type; }; - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, - typename K, typename L, typename M, typename N - > - T operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i, J const& j, - K const& k, L const& l, M const& m, N const& n) const - { - T t(a, b, c, d, e, f, g, h, i, j, k, l, m, n); - return t; - } -}; - -template -struct construct_15 { - - template < - typename A - , typename B - , typename C - , typename D - , typename E - , typename F - , typename G - , typename H - , typename I - , typename J - , typename K - , typename L - , typename M - , typename N - , typename O - > - struct result { typedef T type; }; - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, - typename K, typename L, typename M, typename N, typename O - > - T operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i, J const& j, - K const& k, L const& l, M const& m, N const& n, O const& o) const - { - T t(a, b, c, d, f, e, g, h, i, j, k, l, m, n, o); - return t; - } -}; -#endif - - -#if defined(BOOST_BORLANDC) || (defined(__MWERKS__) && (__MWERKS__ <= 0x3002)) - -/////////////////////////////////////////////////////////////////////////////// -// -// The following specializations are needed because Borland and CodeWarrior -// does not accept default template arguments in nested template classes in -// classes (i.e construct_l::result) -// -/////////////////////////////////////////////////////////////////////////////// -template -struct composite0_result, TupleT> { - - typedef T type; -}; - -////////////////////////////////// -template -struct composite1_result, TupleT, A> { - - typedef T type; -}; - -////////////////////////////////// -template -struct composite2_result, TupleT, A, B> { - - typedef T type; -}; - -////////////////////////////////// -template -struct composite3_result, TupleT, A, B, C> { - - typedef T type; -}; - -#if PHOENIX_LIMIT > 3 -////////////////////////////////// -template -struct composite4_result, TupleT, - A, B, C, D> { - - typedef T type; -}; - -////////////////////////////////// -template -struct composite5_result, TupleT, - A, B, C, D, E> { - - typedef T type; -}; - -////////////////////////////////// -template -struct composite6_result, TupleT, - A, B, C, D, E, F> { - - typedef T type; -}; - -#if PHOENIX_LIMIT > 6 -////////////////////////////////// -template -struct composite7_result, TupleT, - A, B, C, D, E, F, G> { - - typedef T type; -}; - -////////////////////////////////// -template -struct composite8_result, TupleT, - A, B, C, D, E, F, G, H> { - - typedef T type; -}; - -////////////////////////////////// -template -struct composite9_result, TupleT, - A, B, C, D, E, F, G, H, I> { - - typedef T type; -}; - -#if PHOENIX_LIMIT > 9 -////////////////////////////////// -template -struct composite10_result, TupleT, - A, B, C, D, E, F, G, H, I, J> { - - typedef T type; -}; - -////////////////////////////////// -template -struct composite11_result, TupleT, - A, B, C, D, E, F, G, H, I, J, K> { - - typedef T type; -}; - -////////////////////////////////// -template -struct composite12_result, TupleT, - A, B, C, D, E, F, G, H, I, J, K, L> { - - typedef T type; -}; - -#if PHOENIX_LIMIT > 12 -////////////////////////////////// -template -struct composite13_result, TupleT, - A, B, C, D, E, F, G, H, I, J, K, L, M> { - - typedef T type; -}; - -////////////////////////////////// -template -struct composite14_result, TupleT, - A, B, C, D, E, F, G, H, I, J, K, L, M, N> { - - typedef T type; -}; - -////////////////////////////////// -template -struct composite15_result, TupleT, - A, B, C, D, E, F, G, H, I, J, K, L, M, N, O> { - - typedef T type; -}; - -#endif -#endif -#endif -#endif -#endif - -////////////////////////////////// -template -inline typename impl::make_composite >::type -construct_() -{ - typedef impl::make_composite > make_composite_t; - typedef typename make_composite_t::type type_t; - typedef typename make_composite_t::composite_type composite_type_t; - - return type_t(composite_type_t(construct_l_0())); -} - -////////////////////////////////// -template -inline typename impl::make_composite, A>::type -construct_(A const& a) -{ - typedef impl::make_composite, A> make_composite_t; - typedef typename make_composite_t::type type_t; - typedef typename make_composite_t::composite_type composite_type_t; - - return type_t(composite_type_t(construct_1(), - as_actor::convert(a) - )); -} - -////////////////////////////////// -template -inline typename impl::make_composite, A, B>::type -construct_(A const& a, B const& b) -{ - typedef impl::make_composite, A, B> make_composite_t; - typedef typename make_composite_t::type type_t; - typedef typename make_composite_t::composite_type composite_type_t; - - return type_t(composite_type_t(construct_2(), - as_actor::convert(a), - as_actor::convert(b) - )); -} - -////////////////////////////////// -template -inline typename impl::make_composite, A, B, C>::type -construct_(A const& a, B const& b, C const& c) -{ - typedef impl::make_composite, A, B, C> make_composite_t; - typedef typename make_composite_t::type type_t; - typedef typename make_composite_t::composite_type composite_type_t; - - return type_t(composite_type_t(construct_3(), - as_actor::convert(a), - as_actor::convert(b), - as_actor::convert(c) - )); -} - -#if PHOENIX_CONSTRUCT_LIMIT > 3 -////////////////////////////////// -template < - typename T, typename A, typename B, typename C, typename D -> -inline typename impl::make_composite, A, B, C, D>::type -construct_( - A const& a, B const& b, C const& c, D const& d) -{ - typedef - impl::make_composite, A, B, C, D> - make_composite_t; - typedef typename make_composite_t::type type_t; - typedef typename make_composite_t::composite_type composite_type_t; - - return type_t(composite_type_t(construct_4(), - as_actor::convert(a), - as_actor::convert(b), - as_actor::convert(c), - as_actor::convert(d) - )); -} - -////////////////////////////////// -template < - typename T, typename A, typename B, typename C, typename D, typename E -> -inline typename impl::make_composite, A, B, C, D, E>::type -construct_( - A const& a, B const& b, C const& c, D const& d, E const& e) -{ - typedef - impl::make_composite, A, B, C, D, E> - make_composite_t; - typedef typename make_composite_t::type type_t; - typedef typename make_composite_t::composite_type composite_type_t; - - return type_t(composite_type_t(construct_5(), - as_actor::convert(a), - as_actor::convert(b), - as_actor::convert(c), - as_actor::convert(d), - as_actor::convert(e) - )); -} - -////////////////////////////////// -template < - typename T, typename A, typename B, typename C, typename D, typename E, - typename F -> -inline typename impl::make_composite, A, B, C, D, E, F>::type -construct_( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f) -{ - typedef - impl::make_composite, A, B, C, D, E, F> - make_composite_t; - typedef typename make_composite_t::type type_t; - typedef typename make_composite_t::composite_type composite_type_t; - - return type_t(composite_type_t(construct_6(), - as_actor::convert(a), - as_actor::convert(b), - as_actor::convert(c), - as_actor::convert(d), - as_actor::convert(e), - as_actor::convert(f) - )); -} - -#if PHOENIX_CONSTRUCT_LIMIT > 6 -////////////////////////////////// -template < - typename T, typename A, typename B, typename C, typename D, typename E, - typename F, typename G -> -inline typename impl::make_composite, A, B, C, D, E, F, G>::type -construct_( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g) -{ - typedef - impl::make_composite, A, B, C, D, E, F, G> - make_composite_t; - typedef typename make_composite_t::type type_t; - typedef typename make_composite_t::composite_type composite_type_t; - - return type_t(composite_type_t(construct_7(), - as_actor::convert(a), - as_actor::convert(b), - as_actor::convert(c), - as_actor::convert(d), - as_actor::convert(e), - as_actor::convert(f), - as_actor::convert(g) - )); -} - -////////////////////////////////// -template < - typename T, typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H -> -inline typename impl::make_composite, A, B, C, D, E, F, G, H>::type -construct_( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h) -{ - typedef - impl::make_composite, A, B, C, D, E, F, G, H> - make_composite_t; - typedef typename make_composite_t::type type_t; - typedef typename make_composite_t::composite_type composite_type_t; - - return type_t(composite_type_t(construct_8(), - as_actor::convert(a), - as_actor::convert(b), - as_actor::convert(c), - as_actor::convert(d), - as_actor::convert(e), - as_actor::convert(f), - as_actor::convert(g), - as_actor::convert(h) - )); -} - -////////////////////////////////// -template < - typename T, typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I -> -inline typename impl::make_composite, A, B, C, D, E, F, G, H, I>::type -construct_( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i) -{ - typedef - impl::make_composite, A, B, C, D, E, F, G, H, I> - make_composite_t; - typedef typename make_composite_t::type type_t; - typedef typename make_composite_t::composite_type composite_type_t; - - return type_t(composite_type_t(construct_9(), - as_actor::convert(a), - as_actor::convert(b), - as_actor::convert(c), - as_actor::convert(d), - as_actor::convert(e), - as_actor::convert(f), - as_actor::convert(g), - as_actor::convert(h), - as_actor::convert(i) - )); -} - -#if PHOENIX_CONSTRUCT_LIMIT > 9 -////////////////////////////////// -template < - typename T, typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J -> -inline typename impl::make_composite< - construct_10, A, B, C, D, E, F, G, H, I, J>::type -construct_( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i, J const& j) -{ - typedef - impl::make_composite< - construct_10, A, B, C, D, E, F, G, H, I, J - > - make_composite_t; - typedef typename make_composite_t::type type_t; - typedef typename make_composite_t::composite_type composite_type_t; - - return type_t(composite_type_t(construct_10(), - as_actor::convert(a), - as_actor::convert(b), - as_actor::convert(c), - as_actor::convert(d), - as_actor::convert(e), - as_actor::convert(f), - as_actor::convert(g), - as_actor::convert(h), - as_actor::convert(i), - as_actor::convert(j) - )); -} - -////////////////////////////////// -template < - typename T, typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, typename K -> -inline typename impl::make_composite< - construct_11, A, B, C, D, E, F, G, H, I, J, K>::type -construct_( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i, J const& j, - K const& k) -{ - typedef - impl::make_composite< - construct_11, A, B, C, D, E, F, G, H, I, J, K - > - make_composite_t; - typedef typename make_composite_t::type type_t; - typedef typename make_composite_t::composite_type composite_type_t; - - return type_t(composite_type_t(construct_11(), - as_actor::convert(a), - as_actor::convert(b), - as_actor::convert(c), - as_actor::convert(d), - as_actor::convert(e), - as_actor::convert(f), - as_actor::convert(g), - as_actor::convert(h), - as_actor::convert(i), - as_actor::convert(j), - as_actor::convert(k) - )); -} - -////////////////////////////////// -template < - typename T, typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, typename K, - typename L -> -inline typename impl::make_composite< - construct_12, A, B, C, D, E, F, G, H, I, J, K, L>::type -construct_( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i, J const& j, - K const& k, L const& l) -{ - typedef - impl::make_composite< - construct_12, A, B, C, D, E, F, G, H, I, J, K, L - > - make_composite_t; - typedef typename make_composite_t::type type_t; - typedef typename make_composite_t::composite_type composite_type_t; - - return type_t(composite_type_t(construct_12(), - as_actor::convert(a), - as_actor::convert(b), - as_actor::convert(c), - as_actor::convert(d), - as_actor::convert(e), - as_actor::convert(f), - as_actor::convert(g), - as_actor::convert(h), - as_actor::convert(i), - as_actor::convert(j), - as_actor::convert(k), - as_actor::convert(l) - )); -} - -#if PHOENIX_CONSTRUCT_LIMIT > 12 -////////////////////////////////// -template < - typename T, typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, typename K, - typename L, typename M -> -inline typename impl::make_composite< - construct_13, A, B, C, D, E, F, G, H, I, J, K, L, M>::type -construct_( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i, J const& j, - K const& k, L const& l, M const& m) -{ - typedef - impl::make_composite< - construct_13, A, B, C, D, E, F, G, H, I, J, K, L, M - > - make_composite_t; - typedef typename make_composite_t::type type_t; - typedef typename make_composite_t::composite_type composite_type_t; - - return type_t(composite_type_t(construct_13(), - as_actor::convert(a), - as_actor::convert(b), - as_actor::convert(c), - as_actor::convert(d), - as_actor::convert(e), - as_actor::convert(f), - as_actor::convert(g), - as_actor::convert(h), - as_actor::convert(i), - as_actor::convert(j), - as_actor::convert(k), - as_actor::convert(l), - as_actor::convert(m) - )); -} - -////////////////////////////////// -template < - typename T, typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, typename K, - typename L, typename M, typename N -> -inline typename impl::make_composite< - construct_14, A, B, C, D, E, F, G, H, I, J, K, L, M>::type -construct_( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i, J const& j, - K const& k, L const& l, M const& m, N const& n) -{ - typedef - impl::make_composite< - construct_14, A, B, C, D, E, F, G, H, I, J, K, L, M, N - > - make_composite_t; - typedef typename make_composite_t::type type_t; - typedef typename make_composite_t::composite_type composite_type_t; - - return type_t(composite_type_t(construct_14(), - as_actor::convert(a), - as_actor::convert(b), - as_actor::convert(c), - as_actor::convert(d), - as_actor::convert(e), - as_actor::convert(f), - as_actor::convert(g), - as_actor::convert(h), - as_actor::convert(i), - as_actor::convert(j), - as_actor::convert(k), - as_actor::convert(l), - as_actor::convert(m), - as_actor::convert(n) - )); -} - -////////////////////////////////// -template < - typename T, typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, typename K, - typename L, typename M, typename N, typename O -> -inline typename impl::make_composite< - construct_15, A, B, C, D, E, F, G, H, I, J, K, L, M, O>::type -construct_( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i, J const& j, - K const& k, L const& l, M const& m, N const& n, O const& o) -{ - typedef - impl::make_composite< - construct_15, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O - > - make_composite_t; - typedef typename make_composite_t::type type_t; - typedef typename make_composite_t::composite_type composite_type_t; - - return type_t(composite_type_t(construct_15(), - as_actor::convert(a), - as_actor::convert(b), - as_actor::convert(c), - as_actor::convert(d), - as_actor::convert(e), - as_actor::convert(f), - as_actor::convert(g), - as_actor::convert(h), - as_actor::convert(i), - as_actor::convert(j), - as_actor::convert(k), - as_actor::convert(l), - as_actor::convert(m), - as_actor::convert(n), - as_actor::convert(o) - )); -} - -#endif -#endif -#endif -#endif - -/////////////////////////////////////////////////////////////////////////////// -} // namespace phoenix - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/phoenix/closures.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/phoenix/closures.hpp deleted file mode 100644 index 9499e52e81d0..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/phoenix/closures.hpp +++ /dev/null @@ -1,451 +0,0 @@ -/*============================================================================= - Phoenix V1.2.1 - Copyright (c) 2001-2002 Joel de Guzman - MT code Copyright (c) 2002-2003 Martin Wille - - 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) -==============================================================================*/ -#ifndef BOOST_SPIRIT_CLASSIC_PHOENIX_CLOSURES_HPP -#define BOOST_SPIRIT_CLASSIC_PHOENIX_CLOSURES_HPP - -/////////////////////////////////////////////////////////////////////////////// -#include -#include - -#ifdef PHOENIX_THREADSAFE -#include -#include -#endif - -/////////////////////////////////////////////////////////////////////////////// -namespace phoenix { - -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -#pragma warning(push) -#pragma warning(disable:4512) //assignment operator could not be generated -#endif - -/////////////////////////////////////////////////////////////////////////////// -// -// Adaptable closures -// -// The framework will not be complete without some form of closures -// support. Closures encapsulate a stack frame where local -// variables are created upon entering a function and destructed -// upon exiting. Closures provide an environment for local -// variables to reside. Closures can hold heterogeneous types. -// -// Phoenix closures are true hardware stack based closures. At the -// very least, closures enable true reentrancy in lambda functions. -// A closure provides access to a function stack frame where local -// variables reside. Modeled after Pascal nested stack frames, -// closures can be nested just like nested functions where code in -// inner closures may access local variables from in-scope outer -// closures (accessing inner scopes from outer scopes is an error -// and will cause a run-time assertion failure). -// -// There are three (3) interacting classes: -// -// 1) closure: -// -// At the point of declaration, a closure does not yet create a -// stack frame nor instantiate any variables. A closure declaration -// declares the types and names[note] of the local variables. The -// closure class is meant to be subclassed. It is the -// responsibility of a closure subclass to supply the names for -// each of the local variable in the closure. Example: -// -// struct my_closure : closure { -// -// member1 num; // names the 1st (int) local variable -// member2 message; // names the 2nd (string) local variable -// member3 real; // names the 3rd (double) local variable -// }; -// -// my_closure clos; -// -// Now that we have a closure 'clos', its local variables can be -// accessed lazily using the dot notation. Each qualified local -// variable can be used just like any primitive actor (see -// primitives.hpp). Examples: -// -// clos.num = 30 -// clos.message = arg1 -// clos.real = clos.num * 1e6 -// -// The examples above are lazily evaluated. As usual, these -// expressions return composite actors that will be evaluated -// through a second function call invocation (see operators.hpp). -// Each of the members (clos.xxx) is an actor. As such, applying -// the operator() will reveal its identity: -// -// clos.num() // will return the current value of clos.num -// -// *** [note] Acknowledgement: Juan Carlos Arevalo-Baeza (JCAB) -// introduced and initilally implemented the closure member names -// that uses the dot notation. -// -// 2) closure_member -// -// The named local variables of closure 'clos' above are actually -// closure members. The closure_member class is an actor and -// conforms to its conceptual interface. member1..memberN are -// predefined typedefs that correspond to each of the listed types -// in the closure template parameters. -// -// 3) closure_frame -// -// When a closure member is finally evaluated, it should refer to -// an actual instance of the variable in the hardware stack. -// Without doing so, the process is not complete and the evaluated -// member will result to an assertion failure. Remember that the -// closure is just a declaration. The local variables that a -// closure refers to must still be instantiated. -// -// The closure_frame class does the actual instantiation of the -// local variables and links these variables with the closure and -// all its members. There can be multiple instances of -// closure_frames typically situated in the stack inside a -// function. Each closure_frame instance initiates a stack frame -// with a new set of closure local variables. Example: -// -// void foo() -// { -// closure_frame frame(clos); -// /* do something */ -// } -// -// where 'clos' is an instance of our closure 'my_closure' above. -// Take note that the usage above precludes locally declared -// classes. If my_closure is a locally declared type, we can still -// use its self_type as a parameter to closure_frame: -// -// closure_frame frame(clos); -// -// Upon instantiation, the closure_frame links the local variables -// to the closure. The previous link to another closure_frame -// instance created before is saved. Upon destruction, the -// closure_frame unlinks itself from the closure and relinks the -// preceding closure_frame prior to this instance. -// -// The local variables in the closure 'clos' above is default -// constructed in the stack inside function 'foo'. Once 'foo' is -// exited, all of these local variables are destructed. In some -// cases, default construction is not desirable and we need to -// initialize the local closure variables with some values. This -// can be done by passing in the initializers in a compatible -// tuple. A compatible tuple is one with the same number of -// elements as the destination and where each element from the -// destination can be constructed from each corresponding element -// in the source. Example: -// -// tuple init(123, "Hello", 1000); -// closure_frame frame(clos, init); -// -// Here now, our closure_frame's variables are initialized with -// int: 123, char const*: "Hello" and int: 1000. -// -/////////////////////////////////////////////////////////////////////////////// - -namespace impl -{ - /////////////////////////////////////////////////////////////////////// - // closure_frame_holder is a simple class that encapsulates the - // storage for a frame pointer. It uses thread specific data in - // case when multithreading is enabled, an ordinary pointer otherwise - // - // it has get() and set() member functions. set() has to be used - // _after_ get(). get() contains intialisation code in the multi - // threading case - // - // closure_frame_holder is used by the closure<> class to store - // the pointer to the current frame. - // -#ifndef PHOENIX_THREADSAFE - template - struct closure_frame_holder - { - typedef FrameT frame_t; - typedef frame_t *frame_ptr; - - closure_frame_holder() : frame(0) {} - - frame_ptr &get() { return frame; } - void set(frame_t *f) { frame = f; } - - private: - frame_ptr frame; - - // no copies, no assignments - closure_frame_holder(closure_frame_holder const &); - closure_frame_holder &operator=(closure_frame_holder const &); - }; -#else - template - struct closure_frame_holder - { - typedef FrameT frame_t; - typedef frame_t *frame_ptr; - - closure_frame_holder() : tsp_frame() {} - - frame_ptr &get() - { - if (!tsp_frame.get()) - tsp_frame.reset(new frame_ptr(0)); - return *tsp_frame; - } - void set(frame_ptr f) - { - *tsp_frame = f; - } - - private: - boost::thread_specific_ptr tsp_frame; - - // no copies, no assignments - closure_frame_holder(closure_frame_holder const &); - closure_frame_holder &operator=(closure_frame_holder const &); - }; -#endif -} // namespace phoenix::impl - -/////////////////////////////////////////////////////////////////////////////// -// -// closure_frame class -// -/////////////////////////////////////////////////////////////////////////////// -template -class closure_frame : public ClosureT::tuple_t { - -public: - - closure_frame(ClosureT const& clos) - : ClosureT::tuple_t(), save(clos.frame.get()), frame(clos.frame) - { clos.frame.set(this); } - - template - closure_frame(ClosureT const& clos, TupleT const& init) - : ClosureT::tuple_t(init), save(clos.frame.get()), frame(clos.frame) - { clos.frame.set(this); } - - ~closure_frame() - { frame.set(save); } - -private: - - closure_frame(closure_frame const&); // no copy - closure_frame& operator=(closure_frame const&); // no assign - - closure_frame* save; - impl::closure_frame_holder& frame; -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// closure_member class -// -/////////////////////////////////////////////////////////////////////////////// -template -class closure_member { - -public: - - typedef typename ClosureT::tuple_t tuple_t; - - closure_member() - : frame(ClosureT::closure_frame_holder_ref()) {} - - template - struct result { - - typedef typename tuple_element< - N, typename ClosureT::tuple_t - >::rtype type; - }; - - template - typename tuple_element::rtype - eval(TupleT const& /*args*/) const - { - using namespace std; - BOOST_ASSERT(frame.get() != 0); - tuple_index const idx; - return (*frame.get())[idx]; - } - -private: - impl::closure_frame_holder &frame; -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// closure class -// -/////////////////////////////////////////////////////////////////////////////// -template < - typename T0 = nil_t - , typename T1 = nil_t - , typename T2 = nil_t - -#if PHOENIX_LIMIT > 3 - , typename T3 = nil_t - , typename T4 = nil_t - , typename T5 = nil_t - -#if PHOENIX_LIMIT > 6 - , typename T6 = nil_t - , typename T7 = nil_t - , typename T8 = nil_t - -#if PHOENIX_LIMIT > 9 - , typename T9 = nil_t - , typename T10 = nil_t - , typename T11 = nil_t - -#if PHOENIX_LIMIT > 12 - , typename T12 = nil_t - , typename T13 = nil_t - , typename T14 = nil_t - -#endif -#endif -#endif -#endif -> -class closure { - -public: - - typedef tuple< - T0, T1, T2 -#if PHOENIX_LIMIT > 3 - , T3, T4, T5 -#if PHOENIX_LIMIT > 6 - , T6, T7, T8 -#if PHOENIX_LIMIT > 9 - , T9, T10, T11 -#if PHOENIX_LIMIT > 12 - , T12, T13, T14 -#endif -#endif -#endif -#endif - > tuple_t; - - typedef closure< - T0, T1, T2 -#if PHOENIX_LIMIT > 3 - , T3, T4, T5 -#if PHOENIX_LIMIT > 6 - , T6, T7, T8 -#if PHOENIX_LIMIT > 9 - , T9, T10, T11 -#if PHOENIX_LIMIT > 12 - , T12, T13, T14 -#endif -#endif -#endif -#endif - > self_t; - - typedef closure_frame closure_frame_t; - - closure() - : frame() { closure_frame_holder_ref(&frame); } - - typedef actor > member1; - typedef actor > member2; - typedef actor > member3; - -#if PHOENIX_LIMIT > 3 - typedef actor > member4; - typedef actor > member5; - typedef actor > member6; - -#if PHOENIX_LIMIT > 6 - typedef actor > member7; - typedef actor > member8; - typedef actor > member9; - -#if PHOENIX_LIMIT > 9 - typedef actor > member10; - typedef actor > member11; - typedef actor > member12; - -#if PHOENIX_LIMIT > 12 - typedef actor > member13; - typedef actor > member14; - typedef actor > member15; - -#endif -#endif -#endif -#endif - -#if !defined(__MWERKS__) || (__MWERKS__ > 0x3002) -private: -#endif - - closure(closure const&); // no copy - closure& operator=(closure const&); // no assign - -#if !defined(__MWERKS__) || (__MWERKS__ > 0x3002) - template - friend class closure_member; - - template - friend class closure_frame; -#endif - - typedef impl::closure_frame_holder holder_t; - -#ifdef PHOENIX_THREADSAFE - static boost::thread_specific_ptr & - tsp_frame_instance() - { - static boost::thread_specific_ptr the_instance; - return the_instance; - } - - static void - tsp_frame_instance_init() - { - tsp_frame_instance(); - } -#endif - - static holder_t & - closure_frame_holder_ref(holder_t* holder_ = 0) - { -#ifdef PHOENIX_THREADSAFE -#ifndef BOOST_THREAD_PROVIDES_ONCE_CXX11 - static boost::once_flag been_here = BOOST_ONCE_INIT; -#else - static boost::once_flag been_here; -#endif - boost::call_once(been_here, tsp_frame_instance_init); - boost::thread_specific_ptr &tsp_frame = tsp_frame_instance(); - if (!tsp_frame.get()) - tsp_frame.reset(new holder_t *(0)); - holder_t *& holder = *tsp_frame; -#else - static holder_t* holder = 0; -#endif - if (holder_ != 0) - holder = holder_; - return *holder; - } - - mutable holder_t frame; -}; - -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -#pragma warning(pop) -#endif - -} - // namespace phoenix - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/phoenix/composite.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/phoenix/composite.hpp deleted file mode 100644 index ed9c3d0c4099..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/phoenix/composite.hpp +++ /dev/null @@ -1,1431 +0,0 @@ -/*============================================================================= - Phoenix V1.2.1 - Copyright (c) 2001-2002 Joel de Guzman - - 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) -==============================================================================*/ -#ifndef BOOST_SPIRIT_CLASSIC_PHOENIX_COMPOSITE_HPP -#define BOOST_SPIRIT_CLASSIC_PHOENIX_COMPOSITE_HPP - -/////////////////////////////////////////////////////////////////////////////// -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace phoenix { - -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -#pragma warning(push) -#pragma warning(disable:4512) //assignment operator could not be generated -#endif - -/////////////////////////////////////////////////////////////////////////////// -// -// composite class -// -// A composite is an actor base class composed of zero or more -// actors (see actor.hpp) and an operation. A composite is itself -// an actor superclass and conforms to its conceptual interface. -// Its eval member function un-funnels the tupled actual arguments -// from the tuple by invoking each of the actors' eval member -// function. The results of each are then passed on as arguments to -// the operation. Specializations are provided to handle different -// numbers of actors. -// -// Schematically: -// -// actor0.eval(tupled_args) --> arg0 --> | -// actor1.eval(tupled_args) --> arg1 --> | -// actor2.eval(tupled_args) --> arg3 --> | --> operation(arg0...argN) -// ... | -// actorN.eval(tupled_args) --> argN --> | -// -// The operation can be any suitable functor that can accept the -// arguments passed in by the composite. The operation is expected -// to have a member operator() that carries out the actual -// operation. There should be a one to one correspondence between -// actors of the composite and the arguments of the operation's -// member operator(). -// -// The operation is also expected to have a nested template class -// result. The nested template class result should have a -// typedef 'type' that reflects the return type of its member -// operator(). This is essentially a type computer that answers the -// metaprogramming question "Given arguments of type T0...TN, what -// will be its operator()'s return type?". -// -// There is a special case for operations that accept no arguments. -// Such nullary operations are only required to define a typedef -// result_type that reflects the return type of its operator(). -// -// Here's an example of a simple operation that squares a number: -// -// struct square { -// -// template -// struct result { typedef ArgT type; }; -// -// template -// ArgT operator()(ArgT n) const { return n * n; } -// }; -// -// As can be seen, operations can be polymorphic. Its arguments and -// return type are not fixed to a particular type. The example -// above for example, can handle any ArgT type as long as it has a -// multiplication operator. -// -// Composites are not created directly. Instead, there are meta- -// programs provided that indirectly create composites. See -// operators.hpp, binders.hpp and functions.hpp for examples. -// -/////////////////////////////////////////////////////////////////////////////// -template < - typename OperationT - , typename A = nil_t - , typename B = nil_t - , typename C = nil_t - -#if PHOENIX_LIMIT > 3 - , typename D = nil_t - , typename E = nil_t - , typename F = nil_t - -#if PHOENIX_LIMIT > 6 - , typename G = nil_t - , typename H = nil_t - , typename I = nil_t - -#if PHOENIX_LIMIT > 9 - , typename J = nil_t - , typename K = nil_t - , typename L = nil_t - -#if PHOENIX_LIMIT > 12 - , typename M = nil_t - , typename N = nil_t - , typename O = nil_t - -#endif -#endif -#endif -#endif - - , typename NU = nil_t // Not used -> -struct composite; - -/////////////////////////////////////////////////////////////////////////////// -// -// composite <0 actor> class -// -/////////////////////////////////////////////////////////////////////////////// -template -struct composite0_result { - - typedef typename OperationT::result_type type; -}; - -////////////////////////////////// -template -struct composite 3 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 6 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 9 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 12 - nil_t, nil_t, nil_t, -#endif -#endif -#endif -#endif - nil_t // Unused -> { - - typedef composite self_t; - - template - struct result { - - typedef typename composite0_result< - OperationT, TupleT - >::type type; - }; - - composite(OperationT const& op_) - : op(op_) {} - - template - typename OperationT::result_type - eval(TupleT const& /*args*/) const - { - return op(); - } - - mutable OperationT op; // operation -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// composite <1 actor> class -// -/////////////////////////////////////////////////////////////////////////////// -template -struct composite1_result { - - typedef typename OperationT::template result< - typename actor_result::plain_type - >::type type; -}; - -////////////////////////////////// -template -struct composite 3 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 6 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 9 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 12 - nil_t, nil_t, nil_t, -#endif -#endif -#endif -#endif - nil_t // Unused -> { - - typedef composite self_t; - - template - struct result { - - typedef typename composite1_result< - OperationT, TupleT, A - >::type type; - }; - - composite(OperationT const& op_, - A const& a_) - : op(op_), a(a_) {} - - template - typename actor_result::type - eval(TupleT const& args) const - { - typename actor_result::type ra = a.eval(args); - return op(ra); - } - - mutable OperationT op; // operation - A a; // actors -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// composite <2 actors> class -// -/////////////////////////////////////////////////////////////////////////////// -template -struct composite2_result { - - typedef typename OperationT::template result< - typename actor_result::plain_type, - typename actor_result::plain_type - >::type type; -}; - -////////////////////////////////// -template -struct composite 3 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 6 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 9 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 12 - nil_t, nil_t, nil_t, -#endif -#endif -#endif -#endif - nil_t // Unused -> { - - typedef composite self_t; - - template - struct result { - - typedef typename composite2_result< - OperationT, TupleT, A, B - >::type type; - }; - - composite(OperationT const& op_, - A const& a_, B const& b_) - : op(op_), a(a_), b(b_) {} - - template - typename actor_result::type - eval(TupleT const& args) const - { - typename actor_result::type ra = a.eval(args); - typename actor_result::type rb = b.eval(args); - return op(ra, rb); - } - - mutable OperationT op; // operation - A a; B b; // actors -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// composite <3 actors> class -// -/////////////////////////////////////////////////////////////////////////////// -template -struct composite3_result { - - typedef typename OperationT::template result< - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type - >::type type; -}; - -////////////////////////////////// -template -struct composite 3 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 6 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 9 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 12 - nil_t, nil_t, nil_t, -#endif -#endif -#endif -#endif - nil_t // Unused -> { - - typedef composite self_t; - - template - struct result { - - typedef typename composite3_result< - OperationT, TupleT, A, B, C - >::type type; - }; - - composite(OperationT const& op_, - A const& a_, B const& b_, C const& c_) - : op(op_), a(a_), b(b_), c(c_) {} - - template - typename actor_result::type - eval(TupleT const& args) const - { - typename actor_result::type ra = a.eval(args); - typename actor_result::type rb = b.eval(args); - typename actor_result::type rc = c.eval(args); - return op(ra, rb, rc); - } - - mutable OperationT op; // operation - A a; B b; C c; // actors -}; - -#if PHOENIX_LIMIT > 3 -/////////////////////////////////////////////////////////////////////////////// -// -// composite <4 actors> class -// -/////////////////////////////////////////////////////////////////////////////// -template -struct composite4_result { - - typedef typename OperationT::template result< - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type - >::type type; -}; - -////////////////////////////////// -template -struct composite 6 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 9 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 12 - nil_t, nil_t, nil_t, -#endif -#endif -#endif - nil_t // Unused -> { - - typedef composite self_t; - - template - struct result { - - typedef typename composite4_result< - OperationT, TupleT, A, B, C, D - >::type type; - }; - - composite(OperationT const& op_, - A const& a_, B const& b_, C const& c_, D const& d_) - : op(op_), a(a_), b(b_), c(c_), d(d_) {} - - template - typename actor_result::type - eval(TupleT const& args) const - { - typename actor_result::type ra = a.eval(args); - typename actor_result::type rb = b.eval(args); - typename actor_result::type rc = c.eval(args); - typename actor_result::type rd = d.eval(args); - return op(ra, rb, rc, rd); - } - - mutable OperationT op; // operation - A a; B b; C c; D d; // actors -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// composite <5 actors> class -// -/////////////////////////////////////////////////////////////////////////////// -template -struct composite5_result { - - typedef typename OperationT::template result< - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type - >::type type; -}; - -////////////////////////////////// -template -struct composite 6 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 9 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 12 - nil_t, nil_t, nil_t, -#endif -#endif -#endif - nil_t // Unused -> { - - typedef composite self_t; - - template - struct result { - - typedef typename composite5_result< - OperationT, TupleT, A, B, C, D, E - >::type type; - }; - - composite(OperationT const& op_, - A const& a_, B const& b_, C const& c_, D const& d_, E const& e_) - : op(op_), a(a_), b(b_), c(c_), d(d_), e(e_) {} - - template - typename actor_result::type - eval(TupleT const& args) const - { - typename actor_result::type ra = a.eval(args); - typename actor_result::type rb = b.eval(args); - typename actor_result::type rc = c.eval(args); - typename actor_result::type rd = d.eval(args); - typename actor_result::type re = e.eval(args); - return op(ra, rb, rc, rd, re); - } - - mutable OperationT op; // operation - A a; B b; C c; D d; E e; // actors -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// composite <6 actors> class -// -/////////////////////////////////////////////////////////////////////////////// -template -struct composite6_result { - - typedef typename OperationT::template result< - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type - >::type type; -}; - -////////////////////////////////// -template -struct composite 6 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 9 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 12 - nil_t, nil_t, nil_t, -#endif -#endif -#endif - nil_t // Unused -> { - - typedef composite self_t; - - template - struct result { - - typedef typename composite6_result< - OperationT, TupleT, A, B, C, D, E, F - >::type type; - }; - - composite(OperationT const& op_, - A const& a_, B const& b_, C const& c_, D const& d_, E const& e_, - F const& f_) - : op(op_), a(a_), b(b_), c(c_), d(d_), e(e_), - f(f_) {} - - template - typename actor_result::type - eval(TupleT const& args) const - { - typename actor_result::type ra = a.eval(args); - typename actor_result::type rb = b.eval(args); - typename actor_result::type rc = c.eval(args); - typename actor_result::type rd = d.eval(args); - typename actor_result::type re = e.eval(args); - typename actor_result::type rf = f.eval(args); - return op(ra, rb, rc, rd, re, rf); - } - - mutable OperationT op; // operation - A a; B b; C c; D d; E e; F f; // actors -}; - -#if PHOENIX_LIMIT > 6 -/////////////////////////////////////////////////////////////////////////////// -// -// composite <7 actors> class -// -/////////////////////////////////////////////////////////////////////////////// -template -struct composite7_result { - - typedef typename OperationT::template result< - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type - >::type type; -}; - -////////////////////////////////// -template -struct composite 9 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 12 - nil_t, nil_t, nil_t, -#endif -#endif - nil_t // Unused -> { - - typedef composite self_t; - - template - struct result { - - typedef typename composite7_result< - OperationT, TupleT, A, B, C, D, E, F, G - >::type type; - }; - - composite(OperationT const& op_, - A const& a_, B const& b_, C const& c_, D const& d_, E const& e_, - F const& f_, G const& g_) - : op(op_), a(a_), b(b_), c(c_), d(d_), e(e_), - f(f_), g(g_) {} - - template - typename actor_result::type - eval(TupleT const& args) const - { - typename actor_result::type ra = a.eval(args); - typename actor_result::type rb = b.eval(args); - typename actor_result::type rc = c.eval(args); - typename actor_result::type rd = d.eval(args); - typename actor_result::type re = e.eval(args); - typename actor_result::type rf = f.eval(args); - typename actor_result::type rg = g.eval(args); - return op(ra, rb, rc, rd, re, rf, rg); - } - - mutable OperationT op; // operation - A a; B b; C c; D d; E e; F f; G g; // actors -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// composite <8 actors> class -// -/////////////////////////////////////////////////////////////////////////////// -template -struct composite8_result { - - typedef typename OperationT::template result< - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type - >::type type; -}; - -////////////////////////////////// -template -struct composite 9 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 12 - nil_t, nil_t, nil_t, -#endif -#endif - nil_t // Unused -> { - - typedef composite self_t; - - template - struct result { - - typedef typename composite8_result< - OperationT, TupleT, A, B, C, D, E, F, G, H - >::type type; - }; - - composite(OperationT const& op_, - A const& a_, B const& b_, C const& c_, D const& d_, E const& e_, - F const& f_, G const& g_, H const& h_) - : op(op_), a(a_), b(b_), c(c_), d(d_), e(e_), - f(f_), g(g_), h(h_) {} - - template - typename actor_result::type - eval(TupleT const& args) const - { - typename actor_result::type ra = a.eval(args); - typename actor_result::type rb = b.eval(args); - typename actor_result::type rc = c.eval(args); - typename actor_result::type rd = d.eval(args); - typename actor_result::type re = e.eval(args); - typename actor_result::type rf = f.eval(args); - typename actor_result::type rg = g.eval(args); - typename actor_result::type rh = h.eval(args); - return op(ra, rb, rc, rd, re, rf, rg, rh); - } - - mutable OperationT op; // operation - A a; B b; C c; D d; E e; F f; G g; H h; // actors -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// composite <9 actors> class -// -/////////////////////////////////////////////////////////////////////////////// -template -struct composite9_result { - - typedef typename OperationT::template result< - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type - >::type type; -}; - -////////////////////////////////// -template -struct composite 9 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 12 - nil_t, nil_t, nil_t, -#endif -#endif - nil_t // Unused -> { - - typedef composite self_t; - - template - struct result { - - typedef typename composite9_result< - OperationT, TupleT, A, B, C, D, E, F, G, H, I - >::type type; - }; - - composite(OperationT const& op_, - A const& a_, B const& b_, C const& c_, D const& d_, E const& e_, - F const& f_, G const& g_, H const& h_, I const& i_) - : op(op_), a(a_), b(b_), c(c_), d(d_), e(e_), - f(f_), g(g_), h(h_), i(i_) {} - - template - typename actor_result::type - eval(TupleT const& args) const - { - typename actor_result::type ra = a.eval(args); - typename actor_result::type rb = b.eval(args); - typename actor_result::type rc = c.eval(args); - typename actor_result::type rd = d.eval(args); - typename actor_result::type re = e.eval(args); - typename actor_result::type rf = f.eval(args); - typename actor_result::type rg = g.eval(args); - typename actor_result::type rh = h.eval(args); - typename actor_result::type ri = i.eval(args); - return op(ra, rb, rc, rd, re, rf, rg, rh, ri); - } - - mutable OperationT op; // operation - A a; B b; C c; D d; E e; F f; G g; H h; I i; // actors -}; - -#if PHOENIX_LIMIT > 9 -/////////////////////////////////////////////////////////////////////////////// -// -// composite <10 actors> class -// -/////////////////////////////////////////////////////////////////////////////// -template -struct composite10_result { - - typedef typename OperationT::template result< - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type - >::type type; -}; - -////////////////////////////////// -template -struct composite 12 - nil_t, nil_t, nil_t, -#endif - nil_t // Unused -> { - - typedef composite self_t; - - template - struct result { - - typedef typename composite10_result< - OperationT, TupleT, A, B, C, D, E, F, G, H, I, J - >::type type; - }; - - composite(OperationT const& op_, - A const& a_, B const& b_, C const& c_, D const& d_, E const& e_, - F const& f_, G const& g_, H const& h_, I const& i_, J const& j_) - : op(op_), a(a_), b(b_), c(c_), d(d_), e(e_), - f(f_), g(g_), h(h_), i(i_), j(j_) {} - - template - typename actor_result::type - eval(TupleT const& args) const - { - typename actor_result::type ra = a.eval(args); - typename actor_result::type rb = b.eval(args); - typename actor_result::type rc = c.eval(args); - typename actor_result::type rd = d.eval(args); - typename actor_result::type re = e.eval(args); - typename actor_result::type rf = f.eval(args); - typename actor_result::type rg = g.eval(args); - typename actor_result::type rh = h.eval(args); - typename actor_result::type ri = i.eval(args); - typename actor_result::type rj = j.eval(args); - return op(ra, rb, rc, rd, re, rf, rg, rh, ri, rj); - } - - mutable OperationT op; // operation - A a; B b; C c; D d; E e; F f; G g; H h; I i; J j; // actors -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// composite <11 actors> class -// -/////////////////////////////////////////////////////////////////////////////// -template -struct composite11_result { - - typedef typename OperationT::template result< - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type - >::type type; -}; - -////////////////////////////////// -template -struct composite 12 - nil_t, nil_t, nil_t, -#endif - nil_t // Unused -> { - - typedef composite self_t; - - template - struct result { - - typedef typename composite11_result< - OperationT, TupleT, A, B, C, D, E, F, G, H, I, J, K - >::type type; - }; - - composite(OperationT const& op_, - A const& a_, B const& b_, C const& c_, D const& d_, E const& e_, - F const& f_, G const& g_, H const& h_, I const& i_, J const& j_, - K const& k_) - : op(op_), a(a_), b(b_), c(c_), d(d_), e(e_), - f(f_), g(g_), h(h_), i(i_), j(j_), - k(k_) {} - - template - typename actor_result::type - eval(TupleT const& args) const - { - typename actor_result::type ra = a.eval(args); - typename actor_result::type rb = b.eval(args); - typename actor_result::type rc = c.eval(args); - typename actor_result::type rd = d.eval(args); - typename actor_result::type re = e.eval(args); - typename actor_result::type rf = f.eval(args); - typename actor_result::type rg = g.eval(args); - typename actor_result::type rh = h.eval(args); - typename actor_result::type ri = i.eval(args); - typename actor_result::type rj = j.eval(args); - typename actor_result::type rk = k.eval(args); - return op(ra, rb, rc, rd, re, rf, rg, rh, ri, rj, rk); - } - - mutable OperationT op; // operation - A a; B b; C c; D d; E e; F f; G g; H h; I i; J j; - K k;// actors -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// composite <12 actors> class -// -/////////////////////////////////////////////////////////////////////////////// -template -struct composite12_result { - - typedef typename OperationT::template result< - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type - >::type type; -}; - -////////////////////////////////// -template -struct composite 12 - nil_t, nil_t, nil_t, -#endif - nil_t // Unused -> { - - typedef composite self_t; - - template - struct result { - - typedef typename composite12_result< - OperationT, TupleT, A, B, C, D, E, F, G, H, I, J, K, L - >::type type; - }; - - composite(OperationT const& op_, - A const& a_, B const& b_, C const& c_, D const& d_, E const& e_, - F const& f_, G const& g_, H const& h_, I const& i_, J const& j_, - K const& k_, L const& l_) - : op(op_), a(a_), b(b_), c(c_), d(d_), e(e_), - f(f_), g(g_), h(h_), i(i_), j(j_), - k(k_), l(l_) {} - - template - typename actor_result::type - eval(TupleT const& args) const - { - typename actor_result::type ra = a.eval(args); - typename actor_result::type rb = b.eval(args); - typename actor_result::type rc = c.eval(args); - typename actor_result::type rd = d.eval(args); - typename actor_result::type re = e.eval(args); - typename actor_result::type rf = f.eval(args); - typename actor_result::type rg = g.eval(args); - typename actor_result::type rh = h.eval(args); - typename actor_result::type ri = i.eval(args); - typename actor_result::type rj = j.eval(args); - typename actor_result::type rk = k.eval(args); - typename actor_result::type rl = l.eval(args); - return op(ra, rb, rc, rd, re, rf, rg, rh, ri, rj, rk, rl); - } - - mutable OperationT op; // operation - A a; B b; C c; D d; E e; F f; G g; H h; I i; J j; - K k; L l;// actors -}; - -#if PHOENIX_LIMIT > 12 -/////////////////////////////////////////////////////////////////////////////// -// -// composite <13 actors> class -// -/////////////////////////////////////////////////////////////////////////////// -template -struct composite13_result { - - typedef typename OperationT::template result< - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type - >::type type; -}; - -////////////////////////////////// -template -struct composite { - - typedef composite self_t; - - template - struct result { - - typedef typename composite13_result< - OperationT, TupleT, A, B, C, D, E, F, G, H, I, J, K, L, M - >::type type; - }; - - composite(OperationT const& op_, - A const& a_, B const& b_, C const& c_, D const& d_, E const& e_, - F const& f_, G const& g_, H const& h_, I const& i_, J const& j_, - K const& k_, L const& l_, M const& m_) - : op(op_), a(a_), b(b_), c(c_), d(d_), e(e_), - f(f_), g(g_), h(h_), i(i_), j(j_), - k(k_), l(l_), m(m_) {} - - template - typename actor_result::type - eval(TupleT const& args) const - { - typename actor_result::type ra = a.eval(args); - typename actor_result::type rb = b.eval(args); - typename actor_result::type rc = c.eval(args); - typename actor_result::type rd = d.eval(args); - typename actor_result::type re = e.eval(args); - typename actor_result::type rf = f.eval(args); - typename actor_result::type rg = g.eval(args); - typename actor_result::type rh = h.eval(args); - typename actor_result::type ri = i.eval(args); - typename actor_result::type rj = j.eval(args); - typename actor_result::type rk = k.eval(args); - typename actor_result::type rl = l.eval(args); - typename actor_result::type rm = m.eval(args); - return op(ra, rb, rc, rd, re, rf, rg, rh, ri, rj, rk, rl, rm); - } - - mutable OperationT op; // operation - A a; B b; C c; D d; E e; F f; G g; H h; I i; J j; - K k; L l; M m; // actors -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// composite <14 actors> class -// -/////////////////////////////////////////////////////////////////////////////// -template -struct composite14_result { - - typedef typename OperationT::template result< - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type - >::type type; -}; - -////////////////////////////////// -template -struct composite { - - typedef composite self_t; - - template - struct result { - - typedef typename composite14_result< - OperationT, TupleT, A, B, C, D, E, F, G, H, I, J, K, L, M, N - >::type type; - }; - - composite(OperationT const& op_, - A const& a_, B const& b_, C const& c_, D const& d_, E const& e_, - F const& f_, G const& g_, H const& h_, I const& i_, J const& j_, - K const& k_, L const& l_, M const& m_, N const& n_) - : op(op_), a(a_), b(b_), c(c_), d(d_), e(e_), - f(f_), g(g_), h(h_), i(i_), j(j_), - k(k_), l(l_), m(m_), n(n_) {} - - template - typename actor_result::type - eval(TupleT const& args) const - { - typename actor_result::type ra = a.eval(args); - typename actor_result::type rb = b.eval(args); - typename actor_result::type rc = c.eval(args); - typename actor_result::type rd = d.eval(args); - typename actor_result::type re = e.eval(args); - typename actor_result::type rf = f.eval(args); - typename actor_result::type rg = g.eval(args); - typename actor_result::type rh = h.eval(args); - typename actor_result::type ri = i.eval(args); - typename actor_result::type rj = j.eval(args); - typename actor_result::type rk = k.eval(args); - typename actor_result::type rl = l.eval(args); - typename actor_result::type rm = m.eval(args); - typename actor_result::type rn = n.eval(args); - return op(ra, rb, rc, rd, re, rf, rg, rh, ri, rj, rk, rl, rm, rn); - } - - mutable OperationT op; // operation - A a; B b; C c; D d; E e; F f; G g; H h; I i; J j; - K k; L l; M m; N n; // actors -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// composite <15 actors> class -// -/////////////////////////////////////////////////////////////////////////////// -template -struct composite15_result { - - typedef typename OperationT::template result< - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type, - typename actor_result::plain_type - >::type type; -}; - -////////////////////////////////// -template -struct composite { - - typedef composite self_t; - - template - struct result { - - typedef typename composite15_result< - OperationT, TupleT, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O - >::type type; - }; - - composite(OperationT const& op_, - A const& a_, B const& b_, C const& c_, D const& d_, E const& e_, - F const& f_, G const& g_, H const& h_, I const& i_, J const& j_, - K const& k_, L const& l_, M const& m_, N const& n_, O const& o_) - : op(op_), a(a_), b(b_), c(c_), d(d_), e(e_), - f(f_), g(g_), h(h_), i(i_), j(j_), - k(k_), l(l_), m(m_), n(n_), o(o_) {} - - template - typename actor_result::type - eval(TupleT const& args) const - { - typename actor_result::type ra = a.eval(args); - typename actor_result::type rb = b.eval(args); - typename actor_result::type rc = c.eval(args); - typename actor_result::type rd = d.eval(args); - typename actor_result::type re = e.eval(args); - typename actor_result::type rf = f.eval(args); - typename actor_result::type rg = g.eval(args); - typename actor_result::type rh = h.eval(args); - typename actor_result::type ri = i.eval(args); - typename actor_result::type rj = j.eval(args); - typename actor_result::type rk = k.eval(args); - typename actor_result::type rl = l.eval(args); - typename actor_result::type rm = m.eval(args); - typename actor_result::type rn = n.eval(args); - typename actor_result::type ro = o.eval(args); - return op(ra, rb, rc, rd, re, rf, rg, rh, ri, rj, rk, rl, rm, rn, ro); - } - - mutable OperationT op; // operation - A a; B b; C c; D d; E e; F f; G g; H h; I i; J j; - K k; L l; M m; N n; O o; // actors -}; - -#endif -#endif -#endif -#endif - -namespace impl { - - /////////////////////////////////////////////////////////////////////////// - // - // make_composite is basically a type computer that answers the - // question "Given types T0..TN, what composite type should I - // create and if I were to generate an actual - // composite, what type should I return?" - // - /////////////////////////////////////////////////////////////////////////// - template < - typename OperationT - , typename A = nil_t - , typename B = nil_t - , typename C = nil_t - -#if PHOENIX_LIMIT > 3 - , typename D = nil_t - , typename E = nil_t - , typename F = nil_t - -#if PHOENIX_LIMIT > 6 - , typename G = nil_t - , typename H = nil_t - , typename I = nil_t - -#if PHOENIX_LIMIT > 9 - , typename J = nil_t - , typename K = nil_t - , typename L = nil_t - -#if PHOENIX_LIMIT > 12 - , typename M = nil_t - , typename N = nil_t - , typename O = nil_t - -#endif -#endif -#endif -#endif - > - struct make_composite { - - typedef composite::type - , typename as_actor::type - , typename as_actor::type - -#if PHOENIX_LIMIT > 3 - , typename as_actor::type - , typename as_actor::type - , typename as_actor::type - -#if PHOENIX_LIMIT > 6 - , typename as_actor::type - , typename as_actor::type - , typename as_actor::type - -#if PHOENIX_LIMIT > 9 - , typename as_actor::type - , typename as_actor::type - , typename as_actor::type - -#if PHOENIX_LIMIT > 12 - , typename as_actor::type - , typename as_actor::type - , typename as_actor::type - -#endif -#endif -#endif -#endif - > composite_type; - - typedef actor type; - }; - - /////////////////////////////////////////////////////////////////////////// - // - // make_unary, make_binary, make_binary1, make_binary2 and - // make_binary3 utilities are provided here for easy creation of - // unary and binary composites. - // - /////////////////////////////////////////////////////////////////////////// - - ////////////////////////////////// input is an actor - template - struct make_unary { - - typedef typename make_composite - >::type type; - - static type - construct(actor const& _0) - { - typedef typename make_composite - >::composite_type - ret_t; - - return ret_t(OperationT(), _0); - } - }; - - ////////////////////////////////// LHS is an actor, RHS is unknown - template - struct make_binary1 { - - typedef typename make_composite - , B>::type type; - - static type - construct(actor const& _0_, B const& _1_) - { - typedef typename make_composite - , B>::composite_type - ret_t; - - return ret_t(OperationT(), _0_, as_actor::convert(_1_)); - } - }; - - ////////////////////////////////// LHS is unknown, RHS is an actor - template - struct make_binary2 { - - typedef typename make_composite - >::type type; - - static type - construct(A const& _0_, actor const& _1_) - { - typedef typename make_composite - >::composite_type - ret_t; - - return ret_t(OperationT(), as_actor::convert(_0_), _1_); - } - }; - - ////////////////////////////////// Both LHS and RHS are actors - template - struct make_binary3 { - - typedef typename make_composite - , actor >::type type; - - static type - construct(actor const& _0_, actor const& _1_) - { - typedef typename make_composite - , actor >::composite_type - ret_t; - - return ret_t(OperationT(), _0_, _1_); - } - }; - -} // namespace impl - -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -#pragma warning(pop) -#endif - -} // namespace phoenix - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/phoenix/functions.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/phoenix/functions.hpp deleted file mode 100644 index 607a77bd5f98..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/phoenix/functions.hpp +++ /dev/null @@ -1,760 +0,0 @@ -/*============================================================================= - Phoenix V1.2.1 - Copyright (c) 2001-2002 Joel de Guzman - - 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) -==============================================================================*/ -#ifndef BOOST_SPIRIT_CLASSIC_PHOENIX_FUNCTIONS_HPP -#define BOOST_SPIRIT_CLASSIC_PHOENIX_FUNCTIONS_HPP - -/////////////////////////////////////////////////////////////////////////////// -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace phoenix { - -/////////////////////////////////////////////////////////////////////////////// -// -// function class -// -// Lazy functions -// -// This class provides a mechanism for lazily evaluating functions. -// Syntactically, a lazy function looks like an ordinary C/C++ -// function. The function call looks the same. However, unlike -// ordinary functions, the actual function execution is deferred. -// (see actor.hpp, primitives.hpp and composite.hpp for an -// overview). For example here are sample factorial function calls: -// -// factorial(4) -// factorial(arg1) -// factorial(arg1 * 6) -// -// These functions are automatically lazily bound unlike ordinary -// function pointers or functor objects that need to be explicitly -// bound through the bind function (see binders.hpp). -// -// A lazy function works in conjunction with a user defined functor -// (as usual with a member operator()). Only special forms of -// functor objects are allowed. This is required to enable true -// polymorphism (STL style monomorphic functors and function -// pointers can still be used through the bind facility in -// binders.hpp). -// -// This special functor is expected to have a nested template class -// result (where N is the number of arguments of its -// member operator()). The nested template class result should have -// a typedef 'type' that reflects the return type of its member -// operator(). This is essentially a type computer that answers the -// metaprogramming question "Given arguments of type A...TN, what -// will be the operator()'s return type?". -// -// There is a special case for functors that accept no arguments. -// Such nullary functors are only required to define a typedef -// result_type that reflects the return type of its operator(). -// -// Here's an example of a simple functor that computes the -// factorial of a number: -// -// struct factorial_impl { -// -// template -// struct result { typedef Arg type; }; -// -// template -// Arg operator()(Arg n) const -// { return (n <= 0) ? 1 : n * this->operator()(n-1); } -// }; -// -// As can be seen, the functor can be polymorphic. Its arguments -// and return type are not fixed to a particular type. The example -// above for example, can handle any type as long as it can carry -// out the required operations (i.e. <=, * and -). -// -// We can now declare and instantiate a lazy 'factorial' function: -// -// function factorial; -// -// Invoking a lazy function 'factorial' does not immediately -// execute the functor factorial_impl. Instead, a composite (see -// composite.hpp) object is created and returned to the caller. -// Example: -// -// factorial(arg1) -// -// does nothing more than return a composite. A second function -// call will invoke the actual factorial function. Example: -// -// int i = 4; -// cout << factorial(arg1)(i); -// -// will print out "24". -// -// Take note that in certain cases (e.g. for functors with state), -// an instance may be passed on to the constructor. Example: -// -// function factorial(ftor); -// -// where ftor is an instance of factorial_impl (this is not -// necessary in this case since factorial is a simple stateless -// functor). Take care though when using functors with state -// because the functors are taken in by value. It is best to keep -// the data manipulated by a functor outside the functor itself and -// keep a reference to this data inside the functor. Also, it is -// best to keep functors as small as possible. -// -/////////////////////////////////////////////////////////////////////////////// -template -struct function { - - function() : op() {} - function(OperationT const& op_) : op(op_) {} - - actor > - operator()() const; - - template - typename impl::make_composite::type - operator()(A const& a) const; - - template - typename impl::make_composite::type - operator()(A const& a, B const& b) const; - - template - typename impl::make_composite::type - operator()(A const& a, B const& b, C const& c) const; - -#if PHOENIX_LIMIT > 3 - - template - typename impl::make_composite::type - operator()(A const& a, B const& b, C const& c, D const& d) const; - - template - typename impl::make_composite< - OperationT, A, B, C, D, E - >::type - operator()( - A const& a, B const& b, C const& c, D const& d, E const& e - ) const; - - template < - typename A, typename B, typename C, typename D, typename E, - typename F - > - typename impl::make_composite< - OperationT, A, B, C, D, E, F - >::type - operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f - ) const; - -#if PHOENIX_LIMIT > 6 - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G - > - typename impl::make_composite< - OperationT, A, B, C, D, E, F, G - >::type - operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g - ) const; - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H - > - typename impl::make_composite< - OperationT, A, B, C, D, E, F, G, H - >::type - operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h - ) const; - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I - > - typename impl::make_composite< - OperationT, A, B, C, D, E, F, G, H, I - >::type - operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i - ) const; - -#if PHOENIX_LIMIT > 9 - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J - > - typename impl::make_composite< - OperationT, A, B, C, D, E, F, G, H, I, J - >::type - operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i, J const& j - ) const; - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, - typename K - > - typename impl::make_composite< - OperationT, A, B, C, D, E, F, G, H, I, J, K - >::type - operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i, J const& j, - K const& k - ) const; - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, - typename K, typename L - > - typename impl::make_composite< - OperationT, A, B, C, D, E, F, G, H, I, J, K, L - >::type - operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i, J const& j, - K const& k, L const& l - ) const; - -#if PHOENIX_LIMIT > 12 - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, - typename K, typename L, typename M - > - typename impl::make_composite< - OperationT, A, B, C, D, E, F, G, H, I, J, K, L, M - >::type - operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i, J const& j, - K const& k, L const& l, M const& m - ) const; - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, - typename K, typename L, typename M, typename N - > - typename impl::make_composite< - OperationT, A, B, C, D, E, F, G, H, I, J, K, L, M, N - >::type - operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i, J const& j, - K const& k, L const& l, M const& m, N const& n - ) const; - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, - typename K, typename L, typename M, typename N, typename O - > - typename impl::make_composite< - OperationT, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O - >::type - operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i, J const& j, - K const& k, L const& l, M const& m, N const& n, O const& o - ) const; - -#endif -#endif -#endif -#endif - - OperationT op; -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// function class implementation -// -/////////////////////////////////////////////////////////////////////////////// -template -inline actor > -function::operator()() const -{ - return actor >(op); -} - -////////////////////////////////// -template -template -inline typename impl::make_composite::type -function::operator()(A const& a) const -{ - typedef typename impl::make_composite::composite_type ret_t; - return ret_t - ( - op, - as_actor::convert(a) - ); -} - -////////////////////////////////// -template -template -inline typename impl::make_composite::type -function::operator()(A const& a, B const& b) const -{ - typedef - typename impl::make_composite::composite_type - ret_t; - - return ret_t( - op, - as_actor::convert(a), - as_actor::convert(b) - ); -} - -////////////////////////////////// -template -template -inline typename impl::make_composite::type -function::operator()(A const& a, B const& b, C const& c) const -{ - typedef - typename impl::make_composite::composite_type - ret_t; - - return ret_t( - op, - as_actor::convert(a), - as_actor::convert(b), - as_actor::convert(c) - ); -} - -#if PHOENIX_LIMIT > 3 -////////////////////////////////// -template -template < - typename A, typename B, typename C, typename D -> -inline typename impl::make_composite< - OperationT, A, B, C, D ->::type -function::operator()( - A const& a, B const& b, C const& c, D const& d -) const -{ - typedef typename impl::make_composite< - OperationT, A, B, C, D - >::composite_type ret_t; - - return ret_t( - op, - as_actor::convert(a), - as_actor::convert(b), - as_actor::convert(c), - as_actor::convert(d) - ); -} - -////////////////////////////////// -template -template < - typename A, typename B, typename C, typename D, typename E -> -inline typename impl::make_composite< - OperationT, A, B, C, D, E ->::type -function::operator()( - A const& a, B const& b, C const& c, D const& d, E const& e -) const -{ - typedef typename impl::make_composite< - OperationT, A, B, C, D, E - >::composite_type ret_t; - - return ret_t( - op, - as_actor::convert(a), - as_actor::convert(b), - as_actor::convert(c), - as_actor::convert(d), - as_actor::convert(e) - ); -} - -////////////////////////////////// -template -template < - typename A, typename B, typename C, typename D, typename E, - typename F -> -inline typename impl::make_composite< - OperationT, A, B, C, D, E, F ->::type -function::operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f -) const -{ - typedef typename impl::make_composite< - OperationT, A, B, C, D, E, F - >::composite_type ret_t; - - return ret_t( - op, - as_actor::convert(a), - as_actor::convert(b), - as_actor::convert(c), - as_actor::convert(d), - as_actor::convert(e), - as_actor::convert(f) - ); -} - -#if PHOENIX_LIMIT > 6 - -////////////////////////////////// -template -template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G -> -inline typename impl::make_composite< - OperationT, A, B, C, D, E, F, G ->::type -function::operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g -) const -{ - typedef typename impl::make_composite< - OperationT, A, B, C, D, E, F, G - >::composite_type ret_t; - - return ret_t( - op, - as_actor::convert(a), - as_actor::convert(b), - as_actor::convert(c), - as_actor::convert(d), - as_actor::convert(e), - as_actor::convert(f), - as_actor::convert(g) - ); -} - -////////////////////////////////// -template -template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H -> -inline typename impl::make_composite< - OperationT, A, B, C, D, E, F, G, H ->::type -function::operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h -) const -{ - typedef typename impl::make_composite< - OperationT, A, B, C, D, E, F, G, H - >::composite_type ret_t; - - return ret_t( - op, - as_actor::convert(a), - as_actor::convert(b), - as_actor::convert(c), - as_actor::convert(d), - as_actor::convert(e), - as_actor::convert(f), - as_actor::convert(g), - as_actor::convert(h) - ); -} - -////////////////////////////////// -template -template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I -> -inline typename impl::make_composite< - OperationT, A, B, C, D, E, F, G, H, I ->::type -function::operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i -) const -{ - typedef typename impl::make_composite< - OperationT, A, B, C, D, E, F, G, H, I - >::composite_type ret_t; - - return ret_t( - op, - as_actor::convert(a), - as_actor::convert(b), - as_actor::convert(c), - as_actor::convert(d), - as_actor::convert(e), - as_actor::convert(f), - as_actor::convert(g), - as_actor::convert(h), - as_actor::convert(i) - ); -} - -#if PHOENIX_LIMIT > 9 - -////////////////////////////////// -template -template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J -> -inline typename impl::make_composite< - OperationT, A, B, C, D, E, F, G, H, I, J ->::type -function::operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i, J const& j -) const -{ - typedef typename impl::make_composite< - OperationT, A, B, C, D, E, F, G, H, I, J - >::composite_type ret_t; - - return ret_t( - op, - as_actor::convert(a), - as_actor::convert(b), - as_actor::convert(c), - as_actor::convert(d), - as_actor::convert(e), - as_actor::convert(f), - as_actor::convert(g), - as_actor::convert(h), - as_actor::convert(i), - as_actor::convert(j) - ); -} - -////////////////////////////////// -template -template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, - typename K -> -inline typename impl::make_composite< - OperationT, A, B, C, D, E, F, G, H, I, J, K ->::type -function::operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i, J const& j, - K const& k -) const -{ - typedef typename impl::make_composite< - OperationT, A, B, C, D, E, F, G, H, I, J, K - >::composite_type ret_t; - - return ret_t( - op, - as_actor::convert(a), - as_actor::convert(b), - as_actor::convert(c), - as_actor::convert(d), - as_actor::convert(e), - as_actor::convert(f), - as_actor::convert(g), - as_actor::convert(h), - as_actor::convert(i), - as_actor::convert(j), - as_actor::convert(k) - ); -} - -////////////////////////////////// -template -template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, - typename K, typename L -> -inline typename impl::make_composite< - OperationT, A, B, C, D, E, F, G, H, I, J, K, L ->::type -function::operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i, J const& j, - K const& k, L const& l -) const -{ - typedef typename impl::make_composite< - OperationT, A, B, C, D, E, F, G, H, I, J, K, L - >::composite_type ret_t; - - return ret_t( - op, - as_actor::convert(a), - as_actor::convert(b), - as_actor::convert(c), - as_actor::convert(d), - as_actor::convert(e), - as_actor::convert(f), - as_actor::convert(g), - as_actor::convert(h), - as_actor::convert(i), - as_actor::convert(j), - as_actor::convert(k), - as_actor::convert(l) - ); -} - -#if PHOENIX_LIMIT > 12 - -////////////////////////////////// -template -template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, - typename K, typename L, typename M -> -inline typename impl::make_composite< - OperationT, A, B, C, D, E, F, G, H, I, J, K, L, M ->::type -function::operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i, J const& j, - K const& k, L const& l, M const& m -) const -{ - typedef typename impl::make_composite< - OperationT, A, B, C, D, E, F, G, H, I, J, K, L, M - >::composite_type ret_t; - - return ret_t( - op, - as_actor::convert(a), - as_actor::convert(b), - as_actor::convert(c), - as_actor::convert(d), - as_actor::convert(e), - as_actor::convert(f), - as_actor::convert(g), - as_actor::convert(h), - as_actor::convert(i), - as_actor::convert(j), - as_actor::convert(k), - as_actor::convert(l), - as_actor::convert(m) - ); -} - -////////////////////////////////// -template -template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, - typename K, typename L, typename M, typename N -> -inline typename impl::make_composite< - OperationT, A, B, C, D, E, F, G, H, I, J, K, L, M, N ->::type -function::operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i, J const& j, - K const& k, L const& l, M const& m, N const& n -) const -{ - typedef typename impl::make_composite< - OperationT, A, B, C, D, E, F, G, H, I, J, K, L, M, N - >::composite_type ret_t; - - return ret_t( - op, - as_actor::convert(a), - as_actor::convert(b), - as_actor::convert(c), - as_actor::convert(d), - as_actor::convert(e), - as_actor::convert(f), - as_actor::convert(g), - as_actor::convert(h), - as_actor::convert(i), - as_actor::convert(j), - as_actor::convert(k), - as_actor::convert(l), - as_actor::convert(m), - as_actor::convert(n) - ); -} - -////////////////////////////////// -template -template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, - typename K, typename L, typename M, typename N, typename O -> -inline typename impl::make_composite< - OperationT, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O ->::type -function::operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i, J const& j, - K const& k, L const& l, M const& m, N const& n, O const& o -) const -{ - typedef typename impl::make_composite< - OperationT, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O - >::composite_type ret_t; - - return ret_t( - op, - as_actor::convert(a), - as_actor::convert(b), - as_actor::convert(c), - as_actor::convert(d), - as_actor::convert(e), - as_actor::convert(f), - as_actor::convert(g), - as_actor::convert(h), - as_actor::convert(i), - as_actor::convert(j), - as_actor::convert(k), - as_actor::convert(l), - as_actor::convert(m), - as_actor::convert(n), - as_actor::convert(o) - ); -} - -#endif -#endif -#endif -#endif - -/////////////////////////////////////////////////////////////////////////////// -} // namespace phoenix - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/phoenix/new.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/phoenix/new.hpp deleted file mode 100644 index 0b015611b813..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/phoenix/new.hpp +++ /dev/null @@ -1,1315 +0,0 @@ -/*============================================================================= - Phoenix V1.2.1 - Copyright (c) 2001-2003 Joel de Guzman - Copyright (c) 2001-2003 Hartmut Kaiser - Copyright (c) 2003 Vaclav Vesely - - 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) -==============================================================================*/ - -#ifndef BOOST_SPIRIT_CLASSIC_PHOENIX_NEW_HPP -#define BOOST_SPIRIT_CLASSIC_PHOENIX_NEW_HPP - -/////////////////////////////////////////////////////////////////////////////// -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace phoenix { - -/////////////////////////////////////////////////////////////////////////////// -// -// Phoenix predefined maximum new_ limit. This limit defines the maximum -// number of parameters supported for calles to the set of new_ template -// functions (lazy object construction, see below). This number defaults to 3. -// The actual maximum is rounded up in multiples of 3. Thus, if this value -// is 4, the actual limit is 6. The ultimate maximum limit in this -// implementation is 15. -// PHOENIX_CONSTRUCT_LIMIT should NOT be greater than PHOENIX_LIMIT! - -#if !defined(PHOENIX_CONSTRUCT_LIMIT) -#define PHOENIX_CONSTRUCT_LIMIT PHOENIX_LIMIT -#endif - -// ensure PHOENIX_CONSTRUCT_LIMIT <= PHOENIX_LIMIT -BOOST_STATIC_ASSERT(PHOENIX_CONSTRUCT_LIMIT <= PHOENIX_LIMIT); - -// ensure PHOENIX_CONSTRUCT_LIMIT <= 15 -BOOST_STATIC_ASSERT(PHOENIX_CONSTRUCT_LIMIT <= 15); - -/////////////////////////////////////////////////////////////////////////////// -// -// new_ -// -// Lazy object construction -// -// The set of new_<> template classes and functions provide a way -// of lazily constructing certain object from a arbitrary set of -// actors during parsing. -// The new_ templates are (syntactically) used very much like -// the well known C++ casts: -// -// A *a = new_(...arbitrary list of actors...); -// -// where the given parameters are submitted as parameters to the -// constructor of the object of type A. (This certainly implies, that -// type A has a constructor with a fitting set of parameter types -// defined.) -// -// The maximum number of needed parameters is controlled through the -// preprocessor constant PHOENIX_CONSTRUCT_LIMIT. Note though, that this -// limit should not be greater than PHOENIX_LIMIT. -// -/////////////////////////////////////////////////////////////////////////////// - -template -struct new_l_0 -{ - typedef T* result_type; - - T* operator()() const - { - return new T(); - } -}; - -template -struct new_l { - - template < - typename A - , typename B - , typename C - -#if PHOENIX_CONSTRUCT_LIMIT > 3 - , typename D - , typename E - , typename F - -#if PHOENIX_CONSTRUCT_LIMIT > 6 - , typename G - , typename H - , typename I - -#if PHOENIX_CONSTRUCT_LIMIT > 9 - , typename J - , typename K - , typename L - -#if PHOENIX_CONSTRUCT_LIMIT > 12 - , typename M - , typename N - , typename O -#endif -#endif -#endif -#endif - > - struct result { typedef T* type; }; - - T* operator()() const { - return new T(); - } - - template - T* operator()(A const& a) const { - return new T(a); - } - - template - T* operator()(A const& a, B const& b) const { - return new T(a, b); - } - - template - T* operator()(A const& a, B const& b, C const& c) const { - return new T(a, b, c); - } - -#if PHOENIX_CONSTRUCT_LIMIT > 3 - template < - typename A, typename B, typename C, typename D - > - T* operator()( - A const& a, B const& b, C const& c, D const& d) const - { - return new T(a, b, c, d); - } - - template < - typename A, typename B, typename C, typename D, typename E - > - T* operator()( - A const& a, B const& b, C const& c, D const& d, E const& e) const - { - return new T(a, b, c, d, e); - } - - template < - typename A, typename B, typename C, typename D, typename E, - typename F - > - T* operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f) const - { - return new T(a, b, c, d, e, f); - } - -#if PHOENIX_CONSTRUCT_LIMIT > 6 - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G - > - T* operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g) const - { - return new T(a, b, c, d, e, f, g); - } - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H - > - T* operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h) const - { - return new T(a, b, c, d, e, f, g, h); - } - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I - > - T* operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i) const - { - return new T(a, b, c, d, e, f, g, h, i); - } - -#if PHOENIX_CONSTRUCT_LIMIT > 9 - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J - > - T* operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i, J const& j) const - { - return new T(a, b, c, d, e, f, g, h, i, j); - } - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, - typename K - > - T* operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i, J const& j, - K const& k) const - { - return new T(a, b, c, d, e, f, g, h, i, j, k); - } - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, - typename K, typename L - > - T* operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i, J const& j, - K const& k, L const& l) const - { - return new T(a, b, c, d, e, f, g, h, i, j, k, l); - } - -#if PHOENIX_CONSTRUCT_LIMIT > 12 - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, - typename K, typename L, typename M - > - T* operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i, J const& j, - K const& k, L const& l, M const& m) const - { - return new T(a, b, c, d, e, f, g, h, i, j, k, l, m); - } - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, - typename K, typename L, typename M, typename N - > - T* operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i, J const& j, - K const& k, L const& l, M const& m, N const& n) const - { - return new T(a, b, c, d, e, f, g, h, i, j, k, l, m, n); - } - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, - typename K, typename L, typename M, typename N, typename O - > - T* operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i, J const& j, - K const& k, L const& l, M const& m, N const& n, O const& o) const - { - return new T(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o); - } - -#endif -#endif -#endif -#endif -}; - -template -struct new_1 { - - template < - typename A - > - struct result { typedef T* type; }; - - template - T* operator()(A const& a) const { - return new T(a); - } - -}; - -template -struct new_2 { - - template < - typename A - , typename B - > - struct result { typedef T* type; }; - - template - T* operator()(A const& a, B const& b) const { - return new T(a, b); - } - -}; - -template -struct new_3 { - - template < - typename A - , typename B - , typename C - > - struct result { typedef T* type; }; - - template - T* operator()(A const& a, B const& b, C const& c) const { - return new T(a, b, c); - } -}; - -#if PHOENIX_CONSTRUCT_LIMIT > 3 -template -struct new_4 { - - template < - typename A - , typename B - , typename C - , typename D - > - struct result { typedef T* type; }; - - - template < - typename A, typename B, typename C, typename D - > - T* operator()( - A const& a, B const& b, C const& c, D const& d) const - { - return new T(a, b, c, d); - } -}; - - -template -struct new_5 { - - template < - typename A - , typename B - , typename C - , typename D - , typename E - > - struct result { typedef T* type; }; - - template < - typename A, typename B, typename C, typename D, typename E - > - T* operator()( - A const& a, B const& b, C const& c, D const& d, E const& e) const - { - return new T(a, b, c, d, e); - } -}; - - -template -struct new_6 { - - template < - typename A - , typename B - , typename C - , typename D - , typename E - , typename F - > - struct result { typedef T* type; }; - - template < - typename A, typename B, typename C, typename D, typename E, - typename F - > - T* operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f) const - { - return new T(a, b, c, d, e, f); - } -}; -#endif - - -#if PHOENIX_CONSTRUCT_LIMIT > 6 -template -struct new_7 { - - template < - typename A - , typename B - , typename C - , typename D - , typename E - , typename F - , typename G - > - struct result { typedef T* type; }; - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G - > - T* operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g) const - { - return new T(a, b, c, d, e, f, g); - } -}; - -template -struct new_8 { - - template < - typename A - , typename B - , typename C - , typename D - , typename E - , typename F - , typename G - , typename H - > - struct result { typedef T* type; }; - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H - > - T* operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h) const - { - return new T(a, b, c, d, e, f, g, h); - } -}; - -template -struct new_9 { - - template < - typename A - , typename B - , typename C - , typename D - , typename E - , typename F - , typename G - , typename H - , typename I - > - struct result { typedef T* type; }; - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I - > - T* operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i) const - { - return new T(a, b, c, d, e, f, g, h, i); - } -}; -#endif - - -#if PHOENIX_CONSTRUCT_LIMIT > 9 -template -struct new_10 { - - template < - typename A - , typename B - , typename C - , typename D - , typename E - , typename F - , typename G - , typename H - , typename I - , typename J - > - struct result { typedef T* type; }; - - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J - > - T* operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i, J const& j) const - { - return new T(a, b, c, d, e, f, g, h, i, j); - } -}; - -template -struct new_11 { - - template < - typename A - , typename B - , typename C - , typename D - , typename E - , typename F - , typename G - , typename H - , typename I - , typename J - , typename K - > - struct result { typedef T* type; }; - - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, - typename K - > - T* operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i, J const& j, - K const& k) const - { - return new T(a, b, c, d, e, f, g, h, i, j, k); - } - -}; - -template -struct new_12 { - - template < - typename A - , typename B - , typename C - , typename D - , typename E - , typename F - , typename G - , typename H - , typename I - , typename J - , typename K - , typename L - > - struct result { typedef T* type; }; - - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, - typename K, typename L - > - T* operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i, J const& j, - K const& k, L const& l) const - { - return new T(a, b, c, d, f, e, g, h, i, j, k, l); - } -}; -#endif - -#if PHOENIX_CONSTRUCT_LIMIT > 12 -template -struct new_13 { - - template < - typename A - , typename B - , typename C - , typename D - , typename E - , typename F - , typename G - , typename H - , typename I - , typename J - , typename K - , typename L - , typename M - > - struct result { typedef T* type; }; - - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, - typename K, typename L, typename M - > - T* operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i, J const& j, - K const& k, L const& l, M const& m) const - { - return new T(a, b, c, d, e, f, g, h, i, j, k, l, m); - } -}; - -template -struct new_14 { - - template < - typename A - , typename B - , typename C - , typename D - , typename E - , typename F - , typename G - , typename H - , typename I - , typename J - , typename K - , typename L - , typename M - , typename N - > - struct result { typedef T* type; }; - - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, - typename K, typename L, typename M, typename N - > - T* operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i, J const& j, - K const& k, L const& l, M const& m, N const& n) const - { - return new T(a, b, c, d, e, f, g, h, i, j, k, l, m, n); - } - -}; - -template -struct new_15 { - - template < - typename A - , typename B - , typename C - , typename D - , typename E - , typename F - , typename G - , typename H - , typename I - , typename J - , typename K - , typename L - , typename M - , typename N - , typename O - > - struct result { typedef T* type; }; - - - template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, - typename K, typename L, typename M, typename N, typename O - > - T* operator()( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i, J const& j, - K const& k, L const& l, M const& m, N const& n, O const& o) const - { - return new T(a, b, c, d, f, e, g, h, i, j, k, l, m, n, o); - } - -}; -#endif - - -#if defined(BOOST_BORLANDC) || (defined(__MWERKS__) && (__MWERKS__ <= 0x3002)) - -/////////////////////////////////////////////////////////////////////////////// -// -// The following specializations are needed because Borland and CodeWarrior -// does not accept default template arguments in nested template classes in -// classes (i.e new_l::result) -// -/////////////////////////////////////////////////////////////////////////////// -template -struct composite0_result, TupleT> { - - typedef T* type; -}; - -////////////////////////////////// -template -struct composite1_result, TupleT, A> { - - typedef T* type; -}; - -////////////////////////////////// -template -struct composite2_result, TupleT, A, B> { - - typedef T* type; -}; - -////////////////////////////////// -template -struct composite3_result, TupleT, A, B, C> { - - typedef T* type; -}; - -#if PHOENIX_LIMIT > 3 -////////////////////////////////// -template -struct composite4_result, TupleT, - A, B, C, D> { - - typedef T* type; -}; - -////////////////////////////////// -template -struct composite5_result, TupleT, - A, B, C, D, E> { - - typedef T* type; -}; - -////////////////////////////////// -template -struct composite6_result, TupleT, - A, B, C, D, E, F> { - - typedef T* type; -}; - -#if PHOENIX_LIMIT > 6 -////////////////////////////////// -template -struct composite7_result, TupleT, - A, B, C, D, E, F, G> { - - typedef T* type; -}; - -////////////////////////////////// -template -struct composite8_result, TupleT, - A, B, C, D, E, F, G, H> { - - typedef T* type; -}; - -////////////////////////////////// -template -struct composite9_result, TupleT, - A, B, C, D, E, F, G, H, I> { - - typedef T* type; -}; - -#if PHOENIX_LIMIT > 9 -////////////////////////////////// -template -struct composite10_result, TupleT, - A, B, C, D, E, F, G, H, I, J> { - - typedef T* type; -}; - -////////////////////////////////// -template -struct composite11_result, TupleT, - A, B, C, D, E, F, G, H, I, J, K> { - - typedef T* type; -}; - -////////////////////////////////// -template -struct composite12_result, TupleT, - A, B, C, D, E, F, G, H, I, J, K, L> { - - typedef T* type; -}; - -#if PHOENIX_LIMIT > 12 -////////////////////////////////// -template -struct composite13_result, TupleT, - A, B, C, D, E, F, G, H, I, J, K, L, M> { - - typedef T* type; -}; - -////////////////////////////////// -template -struct composite14_result, TupleT, - A, B, C, D, E, F, G, H, I, J, K, L, M, N> { - - typedef T* type; -}; - -////////////////////////////////// -template -struct composite15_result, TupleT, - A, B, C, D, E, F, G, H, I, J, K, L, M, N, O> { - - typedef T* type; -}; - -#endif -#endif -#endif -#endif -#endif - -////////////////////////////////// -template -inline typename impl::make_composite >::type -new_() -{ - typedef impl::make_composite > make_composite_t; - typedef typename make_composite_t::type type_t; - typedef typename make_composite_t::composite_type composite_type_t; - - return type_t(composite_type_t(new_l_0())); -} - -////////////////////////////////// -template -inline typename impl::make_composite, A>::type -new_(A const& a) -{ - typedef impl::make_composite, A> make_composite_t; - typedef typename make_composite_t::type type_t; - typedef typename make_composite_t::composite_type composite_type_t; - - return type_t(composite_type_t(new_1(), - as_actor::convert(a) - )); -} - -////////////////////////////////// -template -inline typename impl::make_composite, A, B>::type -new_(A const& a, B const& b) -{ - typedef impl::make_composite, A, B> make_composite_t; - typedef typename make_composite_t::type type_t; - typedef typename make_composite_t::composite_type composite_type_t; - - return type_t(composite_type_t(new_2(), - as_actor::convert(a), - as_actor::convert(b) - )); -} - -////////////////////////////////// -template -inline typename impl::make_composite, A, B, C>::type -new_(A const& a, B const& b, C const& c) -{ - typedef impl::make_composite, A, B, C> make_composite_t; - typedef typename make_composite_t::type type_t; - typedef typename make_composite_t::composite_type composite_type_t; - - return type_t(composite_type_t(new_3(), - as_actor::convert(a), - as_actor::convert(b), - as_actor::convert(c) - )); -} - -#if PHOENIX_CONSTRUCT_LIMIT > 3 -////////////////////////////////// -template < - typename T, typename A, typename B, typename C, typename D -> -inline typename impl::make_composite, A, B, C, D>::type -new_( - A const& a, B const& b, C const& c, D const& d) -{ - typedef - impl::make_composite, A, B, C, D> - make_composite_t; - typedef typename make_composite_t::type type_t; - typedef typename make_composite_t::composite_type composite_type_t; - - return type_t(composite_type_t(new_4(), - as_actor::convert(a), - as_actor::convert(b), - as_actor::convert(c), - as_actor::convert(d) - )); -} - -////////////////////////////////// -template < - typename T, typename A, typename B, typename C, typename D, typename E -> -inline typename impl::make_composite, A, B, C, D, E>::type -new_( - A const& a, B const& b, C const& c, D const& d, E const& e) -{ - typedef - impl::make_composite, A, B, C, D, E> - make_composite_t; - typedef typename make_composite_t::type type_t; - typedef typename make_composite_t::composite_type composite_type_t; - - return type_t(composite_type_t(new_5(), - as_actor::convert(a), - as_actor::convert(b), - as_actor::convert(c), - as_actor::convert(d), - as_actor::convert(e) - )); -} - -////////////////////////////////// -template < - typename T, typename A, typename B, typename C, typename D, typename E, - typename F -> -inline typename impl::make_composite, A, B, C, D, E, F>::type -new_( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f) -{ - typedef - impl::make_composite, A, B, C, D, E, F> - make_composite_t; - typedef typename make_composite_t::type type_t; - typedef typename make_composite_t::composite_type composite_type_t; - - return type_t(composite_type_t(new_6(), - as_actor::convert(a), - as_actor::convert(b), - as_actor::convert(c), - as_actor::convert(d), - as_actor::convert(e), - as_actor::convert(f) - )); -} - -#if PHOENIX_CONSTRUCT_LIMIT > 6 -////////////////////////////////// -template < - typename T, typename A, typename B, typename C, typename D, typename E, - typename F, typename G -> -inline typename impl::make_composite, A, B, C, D, E, F, G>::type -new_( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g) -{ - typedef - impl::make_composite, A, B, C, D, E, F, G> - make_composite_t; - typedef typename make_composite_t::type type_t; - typedef typename make_composite_t::composite_type composite_type_t; - - return type_t(composite_type_t(new_7(), - as_actor::convert(a), - as_actor::convert(b), - as_actor::convert(c), - as_actor::convert(d), - as_actor::convert(e), - as_actor::convert(f), - as_actor::convert(g) - )); -} - -////////////////////////////////// -template < - typename T, typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H -> -inline typename impl::make_composite, A, B, C, D, E, F, G, H>::type -new_( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h) -{ - typedef - impl::make_composite, A, B, C, D, E, F, G, H> - make_composite_t; - typedef typename make_composite_t::type type_t; - typedef typename make_composite_t::composite_type composite_type_t; - - return type_t(composite_type_t(new_8(), - as_actor::convert(a), - as_actor::convert(b), - as_actor::convert(c), - as_actor::convert(d), - as_actor::convert(e), - as_actor::convert(f), - as_actor::convert(g), - as_actor::convert(h) - )); -} - -////////////////////////////////// -template < - typename T, typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I -> -inline typename impl::make_composite, A, B, C, D, E, F, G, H, I>::type -new_( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i) -{ - typedef - impl::make_composite, A, B, C, D, E, F, G, H, I> - make_composite_t; - typedef typename make_composite_t::type type_t; - typedef typename make_composite_t::composite_type composite_type_t; - - return type_t(composite_type_t(new_9(), - as_actor::convert(a), - as_actor::convert(b), - as_actor::convert(c), - as_actor::convert(d), - as_actor::convert(e), - as_actor::convert(f), - as_actor::convert(g), - as_actor::convert(h), - as_actor::convert(i) - )); -} - -#if PHOENIX_CONSTRUCT_LIMIT > 9 -////////////////////////////////// -template < - typename T, typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J -> -inline typename impl::make_composite< - new_10, A, B, C, D, E, F, G, H, I, J>::type -new_( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i, J const& j) -{ - typedef - impl::make_composite< - new_10, A, B, C, D, E, F, G, H, I, J - > - make_composite_t; - typedef typename make_composite_t::type type_t; - typedef typename make_composite_t::composite_type composite_type_t; - - return type_t(composite_type_t(new_10(), - as_actor::convert(a), - as_actor::convert(b), - as_actor::convert(c), - as_actor::convert(d), - as_actor::convert(e), - as_actor::convert(f), - as_actor::convert(g), - as_actor::convert(h), - as_actor::convert(i), - as_actor::convert(j) - )); -} - -////////////////////////////////// -template < - typename T, typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, typename K -> -inline typename impl::make_composite< - new_11, A, B, C, D, E, F, G, H, I, J, K>::type -new_( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i, J const& j, - K const& k) -{ - typedef - impl::make_composite< - new_11, A, B, C, D, E, F, G, H, I, J, K - > - make_composite_t; - typedef typename make_composite_t::type type_t; - typedef typename make_composite_t::composite_type composite_type_t; - - return type_t(composite_type_t(new_11(), - as_actor::convert(a), - as_actor::convert(b), - as_actor::convert(c), - as_actor::convert(d), - as_actor::convert(e), - as_actor::convert(f), - as_actor::convert(g), - as_actor::convert(h), - as_actor::convert(i), - as_actor::convert(j), - as_actor::convert(k) - )); -} - -////////////////////////////////// -template < - typename T, typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, typename K, - typename L -> -inline typename impl::make_composite< - new_12, A, B, C, D, E, F, G, H, I, J, K, L>::type -new_( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i, J const& j, - K const& k, L const& l) -{ - typedef - impl::make_composite< - new_12, A, B, C, D, E, F, G, H, I, J, K, L - > - make_composite_t; - typedef typename make_composite_t::type type_t; - typedef typename make_composite_t::composite_type composite_type_t; - - return type_t(composite_type_t(new_12(), - as_actor::convert(a), - as_actor::convert(b), - as_actor::convert(c), - as_actor::convert(d), - as_actor::convert(e), - as_actor::convert(f), - as_actor::convert(g), - as_actor::convert(h), - as_actor::convert(i), - as_actor::convert(j), - as_actor::convert(k), - as_actor::convert(l) - )); -} - -#if PHOENIX_CONSTRUCT_LIMIT > 12 -////////////////////////////////// -template < - typename T, typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, typename K, - typename L, typename M -> -inline typename impl::make_composite< - new_13, A, B, C, D, E, F, G, H, I, J, K, L, M>::type -new_( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i, J const& j, - K const& k, L const& l, M const& m) -{ - typedef - impl::make_composite< - new_13, A, B, C, D, E, F, G, H, I, J, K, L, M - > - make_composite_t; - typedef typename make_composite_t::type type_t; - typedef typename make_composite_t::composite_type composite_type_t; - - return type_t(composite_type_t(new_13(), - as_actor::convert(a), - as_actor::convert(b), - as_actor::convert(c), - as_actor::convert(d), - as_actor::convert(e), - as_actor::convert(f), - as_actor::convert(g), - as_actor::convert(h), - as_actor::convert(i), - as_actor::convert(j), - as_actor::convert(k), - as_actor::convert(l), - as_actor::convert(m) - )); -} - -////////////////////////////////// -template < - typename T, typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, typename K, - typename L, typename M, typename N -> -inline typename impl::make_composite< - new_14, A, B, C, D, E, F, G, H, I, J, K, L, M>::type -new_( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i, J const& j, - K const& k, L const& l, M const& m, N const& n) -{ - typedef - impl::make_composite< - new_14, A, B, C, D, E, F, G, H, I, J, K, L, M, N - > - make_composite_t; - typedef typename make_composite_t::type type_t; - typedef typename make_composite_t::composite_type composite_type_t; - - return type_t(composite_type_t(new_14(), - as_actor::convert(a), - as_actor::convert(b), - as_actor::convert(c), - as_actor::convert(d), - as_actor::convert(e), - as_actor::convert(f), - as_actor::convert(g), - as_actor::convert(h), - as_actor::convert(i), - as_actor::convert(j), - as_actor::convert(k), - as_actor::convert(l), - as_actor::convert(m), - as_actor::convert(n) - )); -} - -////////////////////////////////// -template < - typename T, typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, typename K, - typename L, typename M, typename N, typename O -> -inline typename impl::make_composite< - new_15, A, B, C, D, E, F, G, H, I, J, K, L, M, O>::type -new_( - A const& a, B const& b, C const& c, D const& d, E const& e, - F const& f, G const& g, H const& h, I const& i, J const& j, - K const& k, L const& l, M const& m, N const& n, O const& o) -{ - typedef - impl::make_composite< - new_15, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O - > - make_composite_t; - typedef typename make_composite_t::type type_t; - typedef typename make_composite_t::composite_type composite_type_t; - - return type_t(composite_type_t(new_15(), - as_actor::convert(a), - as_actor::convert(b), - as_actor::convert(c), - as_actor::convert(d), - as_actor::convert(e), - as_actor::convert(f), - as_actor::convert(g), - as_actor::convert(h), - as_actor::convert(i), - as_actor::convert(j), - as_actor::convert(k), - as_actor::convert(l), - as_actor::convert(m), - as_actor::convert(n), - as_actor::convert(o) - )); -} - -#endif -#endif -#endif -#endif - -/////////////////////////////////////////////////////////////////////////////// -} // namespace phoenix - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/phoenix/operators.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/phoenix/operators.hpp deleted file mode 100644 index 646169d42879..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/phoenix/operators.hpp +++ /dev/null @@ -1,2203 +0,0 @@ -/*============================================================================= - Phoenix V1.2.1 - Copyright (c) 2001-2002 Joel de Guzman - - 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) -==============================================================================*/ -#ifndef BOOST_SPIRIT_CLASSIC_PHOENIX_OPERATORS_HPP -#define BOOST_SPIRIT_CLASSIC_PHOENIX_OPERATORS_HPP - -/////////////////////////////////////////////////////////////////////////////// -#if !defined(BOOST_NO_CWCTYPE) - #include -#endif - -#if (defined(__BORLANDC__) && !defined(__clang__)) || (defined(__ICL) && __ICL >= 700) -#define CREF const& -#else -#define CREF -#endif - -#include -#include -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace phoenix { - -/////////////////////////////////////////////////////////////////////////////// -// -// Operators -// -// Lazy operators -// -// This class provides a mechanism for lazily evaluating operators. -// Syntactically, a lazy operator looks like an ordinary C/C++ -// infix, prefix or postfix operator. The operator application -// looks the same. However, unlike ordinary operators, the actual -// operator execution is deferred. (see actor.hpp, primitives.hpp -// and composite.hpp for an overview). Samples: -// -// arg1 + arg2 -// 1 + arg1 * arg2 -// 1 / -arg1 -// arg1 < 150 -// -// T1 set of classes implement all the C++ free operators. Like -// lazy functions (see functions.hpp), lazy operators are not -// immediately executed when invoked. Instead, a composite (see -// composite.hpp) object is created and returned to the caller. -// Example: -// -// (arg1 + arg2) * arg3 -// -// does nothing more than return a composite. T1 second function -// call will evaluate the actual operators. Example: -// -// int i = 4, j = 5, k = 6; -// cout << ((arg1 + arg2) * arg3)(i, j, k); -// -// will print out "54". -// -// Arbitrarily complex expressions can be lazily evaluated -// following three simple rules: -// -// 1) Lazy evaluated binary operators apply when at least one -// of the operands is an actor object (see actor.hpp and -// primitives.hpp). Consequently, if an operand is not an actor -// object, it is implicitly converted to an object of type -// actor > (where T is the original type of the -// operand). -// -// 2) Lazy evaluated unary operators apply only to operands -// which are actor objects. -// -// 3) The result of a lazy operator is a composite actor object -// that can in turn apply to rule 1. -// -// Example: -// -// arg1 + 3 -// -// is a lazy expression involving the operator+. Following rule 1, -// lazy evaluation is triggered since arg1 is an instance of an -// actor > class (see primitives.hpp). The right -// operand <3> is implicitly converted to an actor >. -// The result of this binary + expression is a composite object, -// following rule 3. -// -// Take note that although at least one of the operands must be a -// valid actor class in order for lazy evaluation to take effect, -// if this is not the case and we still want to lazily evaluate an -// expression, we can use var(x), val(x) or cref(x) to transform -// the operand into a valid action object (see primitives.hpp). -// Example: -// -// val(1) << 3; -// -// Supported operators: -// -// Unary operators: -// -// prefix: ~, !, -, +, ++, --, & (reference), * (dereference) -// postfix: ++, -- -// -// Binary operators: -// -// =, [], +=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>= -// +, -, *, /, %, &, |, ^, <<, >> -// ==, !=, <, >, <=, >= -// &&, || -// -// Each operator has a special tag type associated with it. For -// example the binary + operator has a plus_op tag type associated -// with it. This is used to specialize either the unary_operator or -// binary_operator template classes (see unary_operator and -// binary_operator below). Specializations of these unary_operator -// and binary_operator are the actual workhorses that implement the -// operations. The behavior of each lazy operator depends on these -// unary_operator and binary_operator specializations. 'preset' -// specializations conform to the canonical operator rules modeled -// by the behavior of integers and pointers: -// -// Prefix -, + and ~ accept constant arguments and return an -// object by value. -// -// The ! accept constant arguments and returns a boolean -// result. -// -// The & (address-of), * (dereference) both return a reference -// to an object. -// -// Prefix ++ returns a reference to its mutable argument after -// it is incremented. -// -// Postfix ++ returns the mutable argument by value before it -// is incremented. -// -// The += and its family accept mutable right hand side (rhs) -// operand and return a reference to the rhs operand. -// -// Infix + and its family accept constant arguments and return -// an object by value. -// -// The == and its family accept constant arguments and return a -// boolean result. -// -// Operators && and || accept constant arguments and return a -// boolean result and are short circuit evaluated as expected. -// -/////////////////////////////////////////////////////////////////////////////// - -/////////////////////////////////////////////////////////////////////////////// -// -// Operator tags -// -// Each C++ operator has a corresponding tag type. This is -// used as a means for specializing the unary_operator and -// binary_operator (see below). The tag also serves as the -// lazy operator type compatible as a composite operation -// see (composite.hpp). -// -/////////////////////////////////////////////////////////////////////////////// - -// Unary operator tags - -struct negative_op; struct positive_op; -struct logical_not_op; struct invert_op; -struct reference_op; struct dereference_op; -struct pre_incr_op; struct pre_decr_op; -struct post_incr_op; struct post_decr_op; - -// Binary operator tags - -struct assign_op; struct index_op; -struct plus_assign_op; struct minus_assign_op; -struct times_assign_op; struct divide_assign_op; struct mod_assign_op; -struct and_assign_op; struct or_assign_op; struct xor_assign_op; -struct shift_l_assign_op; struct shift_r_assign_op; - -struct plus_op; struct minus_op; -struct times_op; struct divide_op; struct mod_op; -struct and_op; struct or_op; struct xor_op; -struct shift_l_op; struct shift_r_op; - -struct eq_op; struct not_eq_op; -struct lt_op; struct lt_eq_op; -struct gt_op; struct gt_eq_op; -struct logical_and_op; struct logical_or_op; - -/////////////////////////////////////////////////////////////////////////////// -// -// unary_operator -// -// The unary_operator class implements most of the C++ unary -// operators. Each specialization is basically a simple static eval -// function plus a result_type typedef that determines the return -// type of the eval function. -// -// TagT is one of the unary operator tags above and T is the data -// type (argument) involved in the operation. -// -// Only the behavior of C/C++ built-in types are taken into account -// in the specializations provided below. For user-defined types, -// these specializations may still be used provided that the -// operator overloads of such types adhere to the standard behavior -// of built-in types. -// -// T1 separate special_ops.hpp file implements more stl savvy -// specializations. Other more specialized unary_operator -// implementations may be defined by the client for specific -// unary operator tags/data types. -// -/////////////////////////////////////////////////////////////////////////////// -template -struct unary_operator; - -////////////////////////////////// -template -struct unary_operator { - - typedef T const result_type; - static result_type eval(T const& v) - { return -v; } -}; - -////////////////////////////////// -template -struct unary_operator { - - typedef T const result_type; - static result_type eval(T const& v) - { return +v; } -}; - -////////////////////////////////// -template -struct unary_operator { - - typedef T const result_type; - static result_type eval(T const& v) - { return !v; } -}; - -////////////////////////////////// -template -struct unary_operator { - - typedef T const result_type; - static result_type eval(T const& v) - { return ~v; } -}; - -////////////////////////////////// -template -struct unary_operator { - - typedef T* result_type; - static result_type eval(T& v) - { return &v; } -}; - -////////////////////////////////// -template -struct unary_operator { - - typedef T& result_type; - static result_type eval(T* v) - { return *v; } -}; - -////////////////////////////////// -template -struct unary_operator { - - typedef T& result_type; - static result_type eval(T* const v) - { return *v; } -}; - -////////////////////////////////// -template <> -struct unary_operator { - - // G++ eager template instantiation - // somehow requires this. - typedef nil_t result_type; -}; - -////////////////////////////////// -#ifndef BOOST_BORLANDC -template <> -struct unary_operator { - - // G++ eager template instantiation - // somehow requires this. - typedef nil_t result_type; -}; -#endif - -////////////////////////////////// -template -struct unary_operator { - - typedef T& result_type; - static result_type eval(T& v) - { return ++v; } -}; - -////////////////////////////////// -template -struct unary_operator { - - typedef T& result_type; - static result_type eval(T& v) - { return --v; } -}; - -////////////////////////////////// -template -struct unary_operator { - - typedef T const result_type; - static result_type eval(T& v) - { T t(v); ++v; return t; } -}; - -////////////////////////////////// -template -struct unary_operator { - - typedef T const result_type; - static result_type eval(T& v) - { T t(v); --v; return t; } -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// rank -// -// rank class has a static int constant 'value' that defines the -// absolute rank of a type. rank is used to choose the result -// type of binary operators such as +. The type with the higher -// rank wins and is used as the operator's return type. T1 generic -// user defined type has a very high rank and always wins when -// compared against a user defined type. If this is not desirable, -// one can write a rank specialization for the type. -// -// Take note that ranks 0..9999 are reserved for the framework. -// -/////////////////////////////////////////////////////////////////////////////// -template -struct rank { static int const value = INT_MAX; }; - -template <> struct rank { static int const value = 0; }; -template <> struct rank { static int const value = 10; }; - -template <> struct rank { static int const value = 20; }; -template <> struct rank { static int const value = 20; }; -template <> struct rank { static int const value = 30; }; -#if !defined(BOOST_NO_INTRINSIC_WCHAR_T) -template <> struct rank { static int const value = 40; }; -#endif // !defined(BOOST_NO_INTRINSIC_WCHAR_T) - -template <> struct rank { static int const value = 50; }; -template <> struct rank { static int const value = 60; }; - -template <> struct rank { static int const value = 70; }; -template <> struct rank { static int const value = 80; }; - -template <> struct rank { static int const value = 90; }; -template <> struct rank { static int const value = 100; }; - -#ifdef BOOST_HAS_LONG_LONG -template <> struct rank< ::boost::long_long_type> { static int const value = 110; }; -template <> struct rank< ::boost::ulong_long_type> { static int const value = 120; }; -#endif - -template <> struct rank { static int const value = 130; }; -template <> struct rank { static int const value = 140; }; -template <> struct rank { static int const value = 150; }; - -template struct rank -{ static int const value = 160; }; - -template struct rank -{ static int const value = 160; }; - -template struct rank -{ static int const value = 160; }; - -/////////////////////////////////////////////////////////////////////////////// -// -// higher_rank -// -// Chooses the type (T0 or T1) with the higher rank. -// -/////////////////////////////////////////////////////////////////////////////// -template -struct higher_rank { - typedef typename boost::mpl::if_c< - rank::value < rank::value, - T1, T0>::type type; -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// binary_operator -// -// The binary_operator class implements most of the C++ binary -// operators. Each specialization is basically a simple static eval -// function plus a result_type typedef that determines the return -// type of the eval function. -// -// TagT is one of the binary operator tags above T0 and T1 are the -// (arguments') data types involved in the operation. -// -// Only the behavior of C/C++ built-in types are taken into account -// in the specializations provided below. For user-defined types, -// these specializations may still be used provided that the -// operator overloads of such types adhere to the standard behavior -// of built-in types. -// -// T1 separate special_ops.hpp file implements more stl savvy -// specializations. Other more specialized unary_operator -// implementations may be defined by the client for specific -// unary operator tags/data types. -// -// All binary_operator except the logical_and_op and logical_or_op -// have an eval static function that carries out the actual operation. -// The logical_and_op and logical_or_op d are special because these -// two operators are short-circuit evaluated. -// -/////////////////////////////////////////////////////////////////////////////// -template -struct binary_operator; - -////////////////////////////////// -template -struct binary_operator { - - typedef T0& result_type; - static result_type eval(T0& lhs, T1 const& rhs) - { return lhs = rhs; } -}; - -////////////////////////////////// -template -struct binary_operator { - - // G++ eager template instantiation - // somehow requires this. - typedef nil_t result_type; -}; - -////////////////////////////////// -template -struct binary_operator { - - typedef T0& result_type; - static result_type eval(T0* ptr, T1 const& index) - { return ptr[index]; } -}; - -////////////////////////////////// -template -struct binary_operator { - - typedef T0& result_type; - static result_type eval(T0* const ptr, T1 const& index) - { return ptr[index]; } -}; - -////////////////////////////////// -template -struct binary_operator { - - typedef T0& result_type; - static result_type eval(T0* ptr, T1 const& index) - { return ptr[index]; } -}; - -////////////////////////////////// -template -struct binary_operator { - - typedef T0& result_type; - static result_type eval(T0& lhs, T1 const& rhs) - { return lhs += rhs; } -}; - -////////////////////////////////// -template -struct binary_operator { - - typedef T0& result_type; - static result_type eval(T0& lhs, T1 const& rhs) - { return lhs -= rhs; } -}; - -////////////////////////////////// -template -struct binary_operator { - - typedef T0& result_type; - static result_type eval(T0& lhs, T1 const& rhs) - { return lhs *= rhs; } -}; - -////////////////////////////////// -template -struct binary_operator { - - typedef T0& result_type; - static result_type eval(T0& lhs, T1 const& rhs) - { return lhs /= rhs; } -}; - -////////////////////////////////// -template -struct binary_operator { - - typedef T0& result_type; - static result_type eval(T0& lhs, T1 const& rhs) - { return lhs %= rhs; } -}; - -////////////////////////////////// -template -struct binary_operator { - - typedef T0& result_type; - static result_type eval(T0& lhs, T1 const& rhs) - { return lhs &= rhs; } -}; - -////////////////////////////////// -template -struct binary_operator { - - typedef T0& result_type; - static result_type eval(T0& lhs, T1 const& rhs) - { return lhs |= rhs; } -}; - -////////////////////////////////// -template -struct binary_operator { - - typedef T0& result_type; - static result_type eval(T0& lhs, T1 const& rhs) - { return lhs ^= rhs; } -}; - -////////////////////////////////// -template -struct binary_operator { - - typedef T0& result_type; - static result_type eval(T0& lhs, T1 const& rhs) - { return lhs <<= rhs; } -}; - -////////////////////////////////// -template -struct binary_operator { - - typedef T0& result_type; - static result_type eval(T0& lhs, T1 const& rhs) - { return lhs >>= rhs; } -}; - -////////////////////////////////// -template -struct binary_operator { - - typedef typename higher_rank::type const result_type; - static result_type eval(T0 const& lhs, T1 const& rhs) - { return lhs + rhs; } -}; - -////////////////////////////////// -template -struct binary_operator { - - typedef typename higher_rank::type const result_type; - static result_type eval(T0 const& lhs, T1 const& rhs) - { return lhs - rhs; } -}; - -////////////////////////////////// -template -struct binary_operator { - - typedef typename higher_rank::type const result_type; - static result_type eval(T0 const& lhs, T1 const& rhs) - { return lhs * rhs; } -}; - -////////////////////////////////// -template -struct binary_operator { - - typedef typename higher_rank::type const result_type; - static result_type eval(T0 const& lhs, T1 const& rhs) - { return lhs / rhs; } -}; - -////////////////////////////////// -template -struct binary_operator { - - typedef typename higher_rank::type const result_type; - static result_type eval(T0 const& lhs, T1 const& rhs) - { return lhs % rhs; } -}; - -////////////////////////////////// -template -struct binary_operator { - - typedef typename higher_rank::type const result_type; - static result_type eval(T0 const& lhs, T1 const& rhs) - { return lhs & rhs; } -}; - -////////////////////////////////// -template -struct binary_operator { - - typedef typename higher_rank::type const result_type; - static result_type eval(T0 const& lhs, T1 const& rhs) - { return lhs | rhs; } -}; - -////////////////////////////////// -template -struct binary_operator { - - typedef typename higher_rank::type const result_type; - static result_type eval(T0 const& lhs, T1 const& rhs) - { return lhs ^ rhs; } -}; - -////////////////////////////////// -template -struct binary_operator { - - typedef T0 const result_type; - static result_type eval(T0 const& lhs, T1 const& rhs) - { return lhs << rhs; } -}; - -////////////////////////////////// -template -struct binary_operator { - - typedef T0 const result_type; - static result_type eval(T0 const& lhs, T1 const& rhs) - { return lhs >> rhs; } -}; - -////////////////////////////////// -template -struct binary_operator { - - typedef bool result_type; - static result_type eval(T0 const& lhs, T1 const& rhs) - { return lhs == rhs; } -}; - -////////////////////////////////// -template -struct binary_operator { - - typedef bool result_type; - static result_type eval(T0 const& lhs, T1 const& rhs) - { return lhs != rhs; } -}; - -////////////////////////////////// -template -struct binary_operator { - - typedef bool result_type; - static result_type eval(T0 const& lhs, T1 const& rhs) - { return lhs < rhs; } -}; - -////////////////////////////////// -template -struct binary_operator { - - typedef bool result_type; - static result_type eval(T0 const& lhs, T1 const& rhs) - { return lhs <= rhs; } -}; - -////////////////////////////////// -template -struct binary_operator { - - typedef bool result_type; - static result_type eval(T0 const& lhs, T1 const& rhs) - { return lhs > rhs; } -}; - -////////////////////////////////// -template -struct binary_operator { - - typedef bool result_type; - static result_type eval(T0 const& lhs, T1 const& rhs) - { return lhs >= rhs; } -}; - -////////////////////////////////// -template -struct binary_operator { - - typedef bool result_type; - // no eval function, see comment above. -}; - -////////////////////////////////// -template -struct binary_operator { - - typedef bool result_type; - // no eval function, see comment above. -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// negative lazy operator (prefix -) -// -/////////////////////////////////////////////////////////////////////////////// -struct negative_op { - - template - struct result { - - typedef typename unary_operator::result_type type; - }; - - template - typename unary_operator::result_type - operator()(T0& _0) const - { return unary_operator::eval(_0); } -}; - -////////////////////////////////// -template -inline typename impl::make_unary::type -operator-(actor const& _0) -{ - return impl::make_unary::construct(_0); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// positive lazy operator (prefix +) -// -/////////////////////////////////////////////////////////////////////////////// -struct positive_op { - - template - struct result { - - typedef typename unary_operator::result_type type; - }; - - template - typename unary_operator::result_type - operator()(T0& _0) const - { return unary_operator::eval(_0); } -}; - -////////////////////////////////// -template -inline typename impl::make_unary::type -operator+(actor const& _0) -{ - return impl::make_unary::construct(_0); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// logical not lazy operator (prefix !) -// -/////////////////////////////////////////////////////////////////////////////// -struct logical_not_op { - - template - struct result { - - typedef typename unary_operator::result_type type; - }; - - template - typename unary_operator::result_type - operator()(T0& _0) const - { return unary_operator::eval(_0); } -}; - -////////////////////////////////// -template -inline typename impl::make_unary::type -operator!(actor const& _0) -{ - return impl::make_unary::construct(_0); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// invert lazy operator (prefix ~) -// -/////////////////////////////////////////////////////////////////////////////// -struct invert_op { - - template - struct result { - - typedef typename unary_operator::result_type type; - }; - - template - typename unary_operator::result_type - operator()(T0& _0) const - { return unary_operator::eval(_0); } -}; - -////////////////////////////////// -template -inline typename impl::make_unary::type -operator~(actor const& _0) -{ - return impl::make_unary::construct(_0); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// reference lazy operator (prefix &) -// -/////////////////////////////////////////////////////////////////////////////// -struct reference_op { - - template - struct result { - - typedef typename unary_operator::result_type type; - }; - - template - typename unary_operator::result_type - operator()(T0& _0) const - { return unary_operator::eval(_0); } -}; - -////////////////////////////////// -template -inline typename impl::make_unary::type -operator&(actor const& _0) -{ - return impl::make_unary::construct(_0); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// dereference lazy operator (prefix *) -// -/////////////////////////////////////////////////////////////////////////////// -struct dereference_op { - - template - struct result { - - typedef typename unary_operator::result_type type; - }; - - template - typename unary_operator::result_type - operator()(T0& _0) const - { return unary_operator::eval(_0); } -}; - -////////////////////////////////// -template -inline typename impl::make_unary::type -operator*(actor const& _0) -{ - return impl::make_unary::construct(_0); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// pre increment lazy operator (prefix ++) -// -/////////////////////////////////////////////////////////////////////////////// -struct pre_incr_op { - - template - struct result { - - typedef typename unary_operator::result_type type; - }; - - template - typename unary_operator::result_type - operator()(T0& _0) const - { return unary_operator::eval(_0); } -}; - -////////////////////////////////// -template -inline typename impl::make_unary::type -operator++(actor const& _0) -{ - return impl::make_unary::construct(_0); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// pre decrement lazy operator (prefix --) -// -/////////////////////////////////////////////////////////////////////////////// -struct pre_decr_op { - - template - struct result { - - typedef typename unary_operator::result_type type; - }; - - template - typename unary_operator::result_type - operator()(T0& _0) const - { return unary_operator::eval(_0); } -}; - -////////////////////////////////// -template -inline typename impl::make_unary::type -operator--(actor const& _0) -{ - return impl::make_unary::construct(_0); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// post increment lazy operator (postfix ++) -// -/////////////////////////////////////////////////////////////////////////////// -struct post_incr_op { - - template - struct result { - - typedef typename unary_operator::result_type type; - }; - - template - typename unary_operator::result_type - operator()(T0& _0) const - { return unary_operator::eval(_0); } -}; - -////////////////////////////////// -template -inline typename impl::make_unary::type -operator++(actor const& _0, int) -{ - return impl::make_unary::construct(_0); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// post decrement lazy operator (postfix --) -// -/////////////////////////////////////////////////////////////////////////////// -struct post_decr_op { - - template - struct result { - - typedef typename unary_operator::result_type type; - }; - - template - typename unary_operator::result_type - operator()(T0& _0) const - { return unary_operator::eval(_0); } -}; - -////////////////////////////////// -template -inline typename impl::make_unary::type -operator--(actor const& _0, int) -{ - return impl::make_unary::construct(_0); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// assignment lazy operator (infix =) -// The acual lazy operator is a member of the actor class. -// -/////////////////////////////////////////////////////////////////////////////// -struct assign_op { - - template - struct result { - - typedef typename binary_operator - ::result_type type; - }; - - template - typename binary_operator::result_type - operator()(T0& _0, T1& _1) const - { return binary_operator::eval(_0, _1); } -}; - -////////////////////////////////// -template -template -inline typename impl::make_binary1::type -actor::operator=(B const& _1) const -{ - return impl::make_binary1::construct(*this, _1); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// index lazy operator (array index []) -// The acual lazy operator is a member of the actor class. -// -/////////////////////////////////////////////////////////////////////////////// -struct index_op { - - template - struct result { - - typedef typename binary_operator - ::result_type type; - }; - - template - typename binary_operator::result_type - operator()(T0& _0, T1& _1) const - { return binary_operator::eval(_0, _1); } -}; - -////////////////////////////////// -template -template -inline typename impl::make_binary1::type -actor::operator[](B const& _1) const -{ - return impl::make_binary1::construct(*this, _1); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// plus assign lazy operator (infix +=) -// -/////////////////////////////////////////////////////////////////////////////// -struct plus_assign_op { - - template - struct result { - - typedef typename binary_operator - ::result_type type; - }; - - template - typename binary_operator::result_type - operator()(T0& _0, T1& _1) const - { return binary_operator::eval(_0, _1); } -}; - -////////////////////////////////// -template -inline typename impl::make_binary1::type -operator+=(actor const& _0, T1 CREF _1) -{ - return impl::make_binary1::construct(_0, _1); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// minus assign lazy operator (infix -=) -// -/////////////////////////////////////////////////////////////////////////////// -struct minus_assign_op { - - template - struct result { - - typedef typename binary_operator - ::result_type type; - }; - - template - typename binary_operator::result_type - operator()(T0& _0, T1& _1) const - { return binary_operator::eval(_0, _1); } -}; - -////////////////////////////////// -template -inline typename impl::make_binary1::type -operator-=(actor const& _0, T1 CREF _1) -{ - return impl::make_binary1::construct(_0, _1); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// times assign lazy operator (infix *=) -// -/////////////////////////////////////////////////////////////////////////////// -struct times_assign_op { - - template - struct result { - - typedef typename binary_operator - ::result_type type; - }; - - template - typename binary_operator::result_type - operator()(T0& _0, T1& _1) const - { return binary_operator::eval(_0, _1); } -}; - -////////////////////////////////// -template -inline typename impl::make_binary1::type -operator*=(actor const& _0, T1 CREF _1) -{ - return impl::make_binary1::construct(_0, _1); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// divide assign lazy operator (infix /=) -// -/////////////////////////////////////////////////////////////////////////////// -struct divide_assign_op { - - template - struct result { - - typedef typename binary_operator - ::result_type type; - }; - - template - typename binary_operator::result_type - operator()(T0& _0, T1& _1) const - { return binary_operator::eval(_0, _1); } -}; - -////////////////////////////////// -template -inline typename impl::make_binary1::type -operator/=(actor const& _0, T1 CREF _1) -{ - return impl::make_binary1::construct(_0, _1); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// mod assign lazy operator (infix %=) -// -/////////////////////////////////////////////////////////////////////////////// -struct mod_assign_op { - - template - struct result { - - typedef typename binary_operator - ::result_type type; - }; - - template - typename binary_operator::result_type - operator()(T0& _0, T1& _1) const - { return binary_operator::eval(_0, _1); } -}; - -////////////////////////////////// -template -inline typename impl::make_binary1::type -operator%=(actor const& _0, T1 CREF _1) -{ - return impl::make_binary1::construct(_0, _1); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// and assign lazy operator (infix &=) -// -/////////////////////////////////////////////////////////////////////////////// -struct and_assign_op { - - template - struct result { - - typedef typename binary_operator - ::result_type type; - }; - - template - typename binary_operator::result_type - operator()(T0& _0, T1& _1) const - { return binary_operator::eval(_0, _1); } -}; - -////////////////////////////////// -template -inline typename impl::make_binary1::type -operator&=(actor const& _0, T1 CREF _1) -{ - return impl::make_binary1::construct(_0, _1); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// or assign lazy operator (infix |=) -// -/////////////////////////////////////////////////////////////////////////////// -struct or_assign_op { - - template - struct result { - - typedef typename binary_operator - ::result_type type; - }; - - template - typename binary_operator::result_type - operator()(T0& _0, T1& _1) const - { return binary_operator::eval(_0, _1); } -}; - -////////////////////////////////// -template -inline typename impl::make_binary1::type -operator|=(actor const& _0, T1 CREF _1) -{ - return impl::make_binary1::construct(_0, _1); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// xor assign lazy operator (infix ^=) -// -/////////////////////////////////////////////////////////////////////////////// -struct xor_assign_op { - - template - struct result { - - typedef typename binary_operator - ::result_type type; - }; - - template - typename binary_operator::result_type - operator()(T0& _0, T1& _1) const - { return binary_operator::eval(_0, _1); } -}; - -////////////////////////////////// -template -inline typename impl::make_binary1::type -operator^=(actor const& _0, T1 CREF _1) -{ - return impl::make_binary1::construct(_0, _1); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// shift left assign lazy operator (infix <<=) -// -/////////////////////////////////////////////////////////////////////////////// -struct shift_l_assign_op { - - template - struct result { - - typedef typename binary_operator - ::result_type type; - }; - - template - typename binary_operator::result_type - operator()(T0& _0, T1& _1) const - { return binary_operator::eval(_0, _1); } -}; - -////////////////////////////////// -template -inline typename impl::make_binary1::type -operator<<=(actor const& _0, T1 CREF _1) -{ - return impl::make_binary1::construct(_0, _1); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// shift right assign lazy operator (infix >>=) -// -/////////////////////////////////////////////////////////////////////////////// -struct shift_r_assign_op { - - template - struct result { - - typedef typename binary_operator - ::result_type type; - }; - - template - typename binary_operator::result_type - operator()(T0& _0, T1& _1) const - { return binary_operator::eval(_0, _1); } -}; - -////////////////////////////////// -template -inline typename impl::make_binary1::type -operator>>=(actor const& _0, T1 CREF _1) -{ - return impl::make_binary1::construct(_0, _1); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// plus lazy operator (infix +) -// -/////////////////////////////////////////////////////////////////////////////// -struct plus_op { - - template - struct result { - - typedef typename binary_operator - ::result_type type; - }; - - template - typename binary_operator::result_type - operator()(T0& _0, T1& _1) const - { return binary_operator::eval(_0, _1); } -}; - -////////////////////////////////// -template -inline typename impl::make_binary1::type -operator+(actor const& _0, T1 CREF _1) -{ - return impl::make_binary1::construct(_0, _1); -} - -////////////////////////////////// -template -inline typename impl::make_binary2::type -operator+(T0 CREF _0, actor const& _1) -{ - return impl::make_binary2::construct(_0, _1); -} - -////////////////////////////////// -template -inline typename impl::make_binary3::type -operator+(actor const& _0, actor const& _1) -{ - return impl::make_binary3::construct(_0, _1); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// minus lazy operator (infix -) -// -/////////////////////////////////////////////////////////////////////////////// -struct minus_op { - - template - struct result { - - typedef typename binary_operator - ::result_type type; - }; - - template - typename binary_operator::result_type - operator()(T0& _0, T1& _1) const - { return binary_operator::eval(_0, _1); } -}; - -////////////////////////////////// -template -inline typename impl::make_binary1::type -operator-(actor const& _0, T1 CREF _1) -{ - return impl::make_binary1::construct(_0, _1); -} - -////////////////////////////////// -template -inline typename impl::make_binary2::type -operator-(T0 CREF _0, actor const& _1) -{ - return impl::make_binary2::construct(_0, _1); -} - -////////////////////////////////// -template -inline typename impl::make_binary3::type -operator-(actor const& _0, actor const& _1) -{ - return impl::make_binary3::construct(_0, _1); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// times lazy operator (infix *) -// -/////////////////////////////////////////////////////////////////////////////// -struct times_op { - - template - struct result { - - typedef typename binary_operator - ::result_type type; - }; - - template - typename binary_operator::result_type - operator()(T0& _0, T1& _1) const - { return binary_operator::eval(_0, _1); } -}; - -////////////////////////////////// -template -inline typename impl::make_binary1::type -operator*(actor const& _0, T1 CREF _1) -{ - return impl::make_binary1::construct(_0, _1); -} - -////////////////////////////////// -template -inline typename impl::make_binary2::type -operator*(T0 CREF _0, actor const& _1) -{ - return impl::make_binary2::construct(_0, _1); -} - -////////////////////////////////// -template -inline typename impl::make_binary3::type -operator*(actor const& _0, actor const& _1) -{ - return impl::make_binary3::construct(_0, _1); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// divide lazy operator (infix /) -// -/////////////////////////////////////////////////////////////////////////////// -struct divide_op { - - template - struct result { - - typedef typename binary_operator - ::result_type type; - }; - - template - typename binary_operator::result_type - operator()(T0& _0, T1& _1) const - { return binary_operator::eval(_0, _1); } -}; - -////////////////////////////////// -template -inline typename impl::make_binary1::type -operator/(actor const& _0, T1 CREF _1) -{ - return impl::make_binary1::construct(_0, _1); -} - -////////////////////////////////// -template -inline typename impl::make_binary2::type -operator/(T0 CREF _0, actor const& _1) -{ - return impl::make_binary2::construct(_0, _1); -} - -////////////////////////////////// -template -inline typename impl::make_binary3::type -operator/(actor const& _0, actor const& _1) -{ - return impl::make_binary3::construct(_0, _1); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// mod lazy operator (infix %) -// -/////////////////////////////////////////////////////////////////////////////// -struct mod_op { - - template - struct result { - - typedef typename binary_operator - ::result_type type; - }; - - template - typename binary_operator::result_type - operator()(T0& _0, T1& _1) const - { return binary_operator::eval(_0, _1); } -}; - -////////////////////////////////// -template -inline typename impl::make_binary1::type -operator%(actor const& _0, T1 CREF _1) -{ - return impl::make_binary1::construct(_0, _1); -} - -////////////////////////////////// -template -inline typename impl::make_binary2::type -operator%(T0 CREF _0, actor const& _1) -{ - return impl::make_binary2::construct(_0, _1); -} - -////////////////////////////////// -template -inline typename impl::make_binary3::type -operator%(actor const& _0, actor const& _1) -{ - return impl::make_binary3::construct(_0, _1); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// and lazy operator (infix &) -// -/////////////////////////////////////////////////////////////////////////////// -struct and_op { - - template - struct result { - - typedef typename binary_operator - ::result_type type; - }; - - template - typename binary_operator::result_type - operator()(T0& _0, T1& _1) const - { return binary_operator::eval(_0, _1); } -}; - -////////////////////////////////// -template -inline typename impl::make_binary1::type -operator&(actor const& _0, T1 CREF _1) -{ - return impl::make_binary1::construct(_0, _1); -} - -////////////////////////////////// -template -inline typename impl::make_binary2::type -operator&(T0 CREF _0, actor const& _1) -{ - return impl::make_binary2::construct(_0, _1); -} - -////////////////////////////////// -template -inline typename impl::make_binary3::type -operator&(actor const& _0, actor const& _1) -{ - return impl::make_binary3::construct(_0, _1); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// or lazy operator (infix |) -// -/////////////////////////////////////////////////////////////////////////////// -struct or_op { - - template - struct result { - - typedef typename binary_operator - ::result_type type; - }; - - template - typename binary_operator::result_type - operator()(T0& _0, T1& _1) const - { return binary_operator::eval(_0, _1); } -}; - -////////////////////////////////// -template -inline typename impl::make_binary1::type -operator|(actor const& _0, T1 CREF _1) -{ - return impl::make_binary1::construct(_0, _1); -} - -////////////////////////////////// -template -inline typename impl::make_binary2::type -operator|(T0 CREF _0, actor const& _1) -{ - return impl::make_binary2::construct(_0, _1); -} - -////////////////////////////////// -template -inline typename impl::make_binary3::type -operator|(actor const& _0, actor const& _1) -{ - return impl::make_binary3::construct(_0, _1); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// xor lazy operator (infix ^) -// -/////////////////////////////////////////////////////////////////////////////// -struct xor_op { - - template - struct result { - - typedef typename binary_operator - ::result_type type; - }; - - template - typename binary_operator::result_type - operator()(T0& _0, T1& _1) const - { return binary_operator::eval(_0, _1); } -}; - -////////////////////////////////// -template -inline typename impl::make_binary1::type -operator^(actor const& _0, T1 CREF _1) -{ - return impl::make_binary1::construct(_0, _1); -} - -////////////////////////////////// -template -inline typename impl::make_binary2::type -operator^(T0 CREF _0, actor const& _1) -{ - return impl::make_binary2::construct(_0, _1); -} - -////////////////////////////////// -template -inline typename impl::make_binary3::type -operator^(actor const& _0, actor const& _1) -{ - return impl::make_binary3::construct(_0, _1); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// shift left lazy operator (infix <<) -// -/////////////////////////////////////////////////////////////////////////////// -struct shift_l_op { - - template - struct result { - - typedef typename binary_operator - ::result_type type; - }; - - template - typename binary_operator::result_type - operator()(T0& _0, T1& _1) const - { return binary_operator::eval(_0, _1); } -}; - -////////////////////////////////// -template -inline typename impl::make_binary1::type -operator<<(actor const& _0, T1 CREF _1) -{ - return impl::make_binary1::construct(_0, _1); -} - -////////////////////////////////// -template -inline typename impl::make_binary2::type -operator<<(T0 CREF _0, actor const& _1) -{ - return impl::make_binary2::construct(_0, _1); -} - -////////////////////////////////// -template -inline typename impl::make_binary3::type -operator<<(actor const& _0, actor const& _1) -{ - return impl::make_binary3::construct(_0, _1); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// shift right lazy operator (infix >>) -// -/////////////////////////////////////////////////////////////////////////////// -struct shift_r_op { - - template - struct result { - - typedef typename binary_operator - ::result_type type; - }; - - template - typename binary_operator::result_type - operator()(T0& _0, T1& _1) const - { return binary_operator::eval(_0, _1); } -}; - -////////////////////////////////// -template -inline typename impl::make_binary1::type -operator>>(actor const& _0, T1 CREF _1) -{ - return impl::make_binary1::construct(_0, _1); -} - -////////////////////////////////// -template -inline typename impl::make_binary2::type -operator>>(T0 CREF _0, actor const& _1) -{ - return impl::make_binary2::construct(_0, _1); -} - -////////////////////////////////// -template -inline typename impl::make_binary3::type -operator>>(actor const& _0, actor const& _1) -{ - return impl::make_binary3::construct(_0, _1); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// equal lazy operator (infix ==) -// -/////////////////////////////////////////////////////////////////////////////// -struct eq_op { - - template - struct result { - - typedef typename binary_operator - ::result_type type; - }; - - template - typename binary_operator::result_type - operator()(T0& _0, T1& _1) const - { return binary_operator::eval(_0, _1); } -}; - -////////////////////////////////// -template -inline typename impl::make_binary1::type -operator==(actor const& _0, T1 CREF _1) -{ - return impl::make_binary1::construct(_0, _1); -} - -////////////////////////////////// -template -inline typename impl::make_binary2::type -operator==(T0 CREF _0, actor const& _1) -{ - return impl::make_binary2::construct(_0, _1); -} - -////////////////////////////////// -template -inline typename impl::make_binary3::type -operator==(actor const& _0, actor const& _1) -{ - return impl::make_binary3::construct(_0, _1); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// not equal lazy operator (infix !=) -// -/////////////////////////////////////////////////////////////////////////////// -struct not_eq_op { - - template - struct result { - - typedef typename binary_operator - ::result_type type; - }; - - template - typename binary_operator::result_type - operator()(T0& _0, T1& _1) const - { return binary_operator::eval(_0, _1); } -}; - -////////////////////////////////// -template -inline typename impl::make_binary1::type -operator!=(actor const& _0, T1 CREF _1) -{ - return impl::make_binary1::construct(_0, _1); -} - -////////////////////////////////// -template -inline typename impl::make_binary2::type -operator!=(T0 CREF _0, actor const& _1) -{ - return impl::make_binary2::construct(_0, _1); -} - -////////////////////////////////// -template -inline typename impl::make_binary3::type -operator!=(actor const& _0, actor const& _1) -{ - return impl::make_binary3::construct(_0, _1); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// less than lazy operator (infix <) -// -/////////////////////////////////////////////////////////////////////////////// -struct lt_op { - - template - struct result { - - typedef typename binary_operator - ::result_type type; - }; - - template - typename binary_operator::result_type - operator()(T0& _0, T1& _1) const - { return binary_operator::eval(_0, _1); } -}; - -////////////////////////////////// -template -inline typename impl::make_binary1::type -operator<(actor const& _0, T1 CREF _1) -{ - return impl::make_binary1::construct(_0, _1); -} - -////////////////////////////////// -template -inline typename impl::make_binary2::type -operator<(T0 CREF _0, actor const& _1) -{ - return impl::make_binary2::construct(_0, _1); -} - -////////////////////////////////// -template -inline typename impl::make_binary3::type -operator<(actor const& _0, actor const& _1) -{ - return impl::make_binary3::construct(_0, _1); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// less than equal lazy operator (infix <=) -// -/////////////////////////////////////////////////////////////////////////////// -struct lt_eq_op { - - template - struct result { - - typedef typename binary_operator - ::result_type type; - }; - - template - typename binary_operator::result_type - operator()(T0& _0, T1& _1) const - { return binary_operator::eval(_0, _1); } -}; - -////////////////////////////////// -template -inline typename impl::make_binary1::type -operator<=(actor const& _0, T1 CREF _1) -{ - return impl::make_binary1::construct(_0, _1); -} - -////////////////////////////////// -template -inline typename impl::make_binary2::type -operator<=(T0 CREF _0, actor const& _1) -{ - return impl::make_binary2::construct(_0, _1); -} - -////////////////////////////////// -template -inline typename impl::make_binary3::type -operator<=(actor const& _0, actor const& _1) -{ - return impl::make_binary3::construct(_0, _1); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// greater than lazy operator (infix >) -// -/////////////////////////////////////////////////////////////////////////////// -struct gt_op { - - template - struct result { - - typedef typename binary_operator - ::result_type type; - }; - - template - typename binary_operator::result_type - operator()(T0& _0, T1& _1) const - { return binary_operator::eval(_0, _1); } -}; - -////////////////////////////////// -template -inline typename impl::make_binary1::type -operator>(actor const& _0, T1 CREF _1) -{ - return impl::make_binary1::construct(_0, _1); -} - -////////////////////////////////// -template -inline typename impl::make_binary2::type -operator>(T0 CREF _0, actor const& _1) -{ - return impl::make_binary2::construct(_0, _1); -} - -////////////////////////////////// -template -inline typename impl::make_binary3::type -operator>(actor const& _0, actor const& _1) -{ - return impl::make_binary3::construct(_0, _1); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// greater than equal lazy operator (infix >=) -// -/////////////////////////////////////////////////////////////////////////////// -struct gt_eq_op { - - template - struct result { - - typedef typename binary_operator - ::result_type type; - }; - - template - typename binary_operator::result_type - operator()(T0& _0, T1& _1) const - { return binary_operator::eval(_0, _1); } -}; - -////////////////////////////////// -template -inline typename impl::make_binary1::type -operator>=(actor const& _0, T1 CREF _1) -{ - return impl::make_binary1::construct(_0, _1); -} - -////////////////////////////////// -template -inline typename impl::make_binary2::type -operator>=(T0 CREF _0, actor const& _1) -{ - return impl::make_binary2::construct(_0, _1); -} - -////////////////////////////////// -template -inline typename impl::make_binary3::type -operator>=(actor const& _0, actor const& _1) -{ - return impl::make_binary3::construct(_0, _1); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// logical and lazy operator (infix &&) -// -// The logical_and_composite class and its corresponding generators are -// provided to allow short-circuit evaluation of the operator's -// operands. -// -/////////////////////////////////////////////////////////////////////////////// -template -struct logical_and_composite { - - typedef logical_and_composite self_t; - - template - struct result { - - typedef typename binary_operator::plain_type, - typename actor_result::plain_type - >::result_type type; - }; - - logical_and_composite(A0 const& _0, A1 const& _1) - : a0(_0), a1(_1) {} - - template - typename actor_result::type - eval(TupleT const& args) const - { - return a0.eval(args) && a1.eval(args); - } - - A0 a0; A1 a1; // actors -}; - -#if !(defined(__ICL) && __ICL <= 500) -////////////////////////////////// -template -inline actor, typename as_actor::type> > -operator&&(actor const& _0, T1 CREF _1) -{ - return logical_and_composite - , typename as_actor::type> - (_0, as_actor::convert(_1)); -} - -////////////////////////////////// -template -inline actor::type, actor > > -operator&&(T0 CREF _0, actor const& _1) -{ - return logical_and_composite - ::type, actor > - (as_actor::convert(_0), _1); -} - -////////////////////////////////// -template -inline actor, actor > > -operator&&(actor const& _0, actor const& _1) -{ - return logical_and_composite - , actor > - (_0, _1); -} -#else -////////////////////////////////// -template -inline actor::type, typename as_actor::type> > -operator&&(T0 CREF _0, T1 CREF _1) -{ - return logical_and_composite - ::type, typename as_actor::type> - (as_actor::convert(_0), as_actor::convert(_1)); -} -#endif // !(__ICL && __ICL <= 500) - -/////////////////////////////////////////////////////////////////////////////// -// -// logical or lazy operator (infix ||) -// -// The logical_or_composite class and its corresponding generators are -// provided to allow short-circuit evaluation of the operator's -// operands. -// -/////////////////////////////////////////////////////////////////////////////// -template -struct logical_or_composite { - - typedef logical_or_composite self_t; - - template - struct result { - - typedef typename binary_operator::plain_type, - typename actor_result::plain_type - >::result_type type; - }; - - logical_or_composite(A0 const& _0, A1 const& _1) - : a0(_0), a1(_1) {} - - template - typename actor_result::type - eval(TupleT const& args) const - { - return a0.eval(args) || a1.eval(args); - } - - A0 a0; A1 a1; // actors -}; - -////////////////////////////////// -template -inline actor, typename as_actor::type> > -operator||(actor const& _0, T1 CREF _1) -{ - return logical_or_composite - , typename as_actor::type> - (_0, as_actor::convert(_1)); -} - -////////////////////////////////// -template -inline actor::type, actor > > -operator||(T0 CREF _0, actor const& _1) -{ - return logical_or_composite - ::type, actor > - (as_actor::convert(_0), _1); -} - -////////////////////////////////// -template -inline actor, actor > > -operator||(actor const& _0, actor const& _1) -{ - return logical_or_composite - , actor > - (_0, _1); -} - -} // namespace phoenix - -#undef CREF -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/phoenix/primitives.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/phoenix/primitives.hpp deleted file mode 100644 index 312e8bfd8366..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/phoenix/primitives.hpp +++ /dev/null @@ -1,257 +0,0 @@ -/*============================================================================= - Phoenix V1.2.1 - Copyright (c) 2001-2002 Joel de Guzman - - 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) -==============================================================================*/ -#ifndef BOOST_SPIRIT_CLASSIC_PHOENIX_PRIMITIVES_HPP -#define BOOST_SPIRIT_CLASSIC_PHOENIX_PRIMITIVES_HPP - -/////////////////////////////////////////////////////////////////////////////// -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace phoenix { - -/////////////////////////////////////////////////////////////////////////////// -// -// argument class -// -// Lazy arguments -// -// An actor base class that extracts and returns the Nth argument -// from the argument list passed in the 'args' tuple in the eval -// member function (see actor.hpp). There are some predefined -// argument constants that can be used as actors (arg1..argN). -// -// The argument actor is a place-holder for the actual arguments -// passed by the client. For example, wherever arg1 is seen placed -// in a lazy function (see functions.hpp) or lazy operator (see -// operators.hpp), this will be replaced by the actual first -// argument in the actual function evaluation. Argument actors are -// essentially lazy arguments. A lazy argument is a full actor in -// its own right and can be evaluated through the actor's operator(). -// -// Example: -// -// char c = 'A'; -// int i = 123; -// const char* s = "Hello World"; -// -// cout << arg1(c) << ' '; -// cout << arg1(i, s) << ' '; -// cout << arg2(i, s) << ' '; -// -// will print out "A 123 Hello World" -// -/////////////////////////////////////////////////////////////////////////////// -template -struct argument { - - template - struct result { typedef typename tuple_element::type type; }; - - template - typename tuple_element::type - eval(TupleT const& args) const - { - tuple_index const idx; - return args[idx]; - } -}; - -////////////////////////////////// -actor > const arg1 = argument<0>(); -actor > const arg2 = argument<1>(); -actor > const arg3 = argument<2>(); - -#if PHOENIX_LIMIT > 3 -actor > const arg4 = argument<3>(); -actor > const arg5 = argument<4>(); -actor > const arg6 = argument<5>(); - -#if PHOENIX_LIMIT > 6 -actor > const arg7 = argument<6>(); -actor > const arg8 = argument<7>(); -actor > const arg9 = argument<8>(); - -#if PHOENIX_LIMIT > 9 -actor > const arg10 = argument<9>(); -actor > const arg11 = argument<10>(); -actor > const arg12 = argument<11>(); - -#if PHOENIX_LIMIT > 12 -actor > const arg13 = argument<12>(); -actor > const arg14 = argument<13>(); -actor > const arg15 = argument<14>(); - -#endif -#endif -#endif -#endif -/////////////////////////////////////////////////////////////////////////////// -// -// value class -// -// Lazy values -// -// A bound actual parameter is kept in a value class for deferred -// access later when needed. A value object is immutable. Value -// objects are typically created through the val(x) free function -// which returns a value with T deduced from the type of x. x is -// held in the value object by value. -// -// Lazy values are actors. As such, lazy values can be evaluated -// through the actor's operator(). Such invocation gives the value's -// identity. Example: -// -// cout << val(3)() << val("Hello World")(); -// -// prints out "3 Hello World" -// -/////////////////////////////////////////////////////////////////////////////// -template -struct value { - - typedef typename boost::remove_reference::type plain_t; - - template - struct result { typedef plain_t const type; }; - - value(plain_t val_) - : val(val_) {} - - template - plain_t const - eval(TupleT const& /*args*/) const - { - return val; - } - - plain_t val; -}; - -////////////////////////////////// -template -inline actor > const -val(T v) -{ - return value(v); -} - -////////////////////////////////// -template -void -val(actor const& v); // This is undefined and not allowed. - -/////////////////////////////////////////////////////////////////////////// -// -// Arbitrary types T are typically converted to a actor > -// (see as_actor in actor.hpp). A specialization is also provided -// for arrays. T[N] arrays are converted to actor >. -// -/////////////////////////////////////////////////////////////////////////// -template -struct as_actor { - - typedef actor > type; - static type convert(T const& x) - { return value(x); } -}; - -////////////////////////////////// -template -struct as_actor { - - typedef actor > type; - static type convert(T const x[N]) - { return value(x); } -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// variable class -// -// Lazy variables -// -// A bound actual parameter may also be held by non-const reference -// in a variable class for deferred access later when needed. A -// variable object is mutable, i.e. its referenced variable can be -// modified. Variable objects are typically created through the -// var(x) free function which returns a variable with T deduced -// from the type of x. x is held in the value object by -// reference. -// -// Lazy variables are actors. As such, lazy variables can be -// evaluated through the actor's operator(). Such invocation gives -// the variables's identity. Example: -// -// int i = 3; -// char const* s = "Hello World"; -// cout << var(i)() << var(s)(); -// -// prints out "3 Hello World" -// -// Another free function const_(x) may also be used. const_(x) creates -// a variable object using a constant reference. -// -/////////////////////////////////////////////////////////////////////////////// -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -#pragma warning(push) -#pragma warning(disable:4512) //assignment operator could not be generated -#endif - -template -struct variable { - - template - struct result { typedef T& type; }; - - variable(T& var_) - : var(var_) {} - - template - T& - eval(TupleT const& /*args*/) const - { - return var; - } - - T& var; -}; - -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -#pragma warning(pop) -#endif - -////////////////////////////////// -template -inline actor > const -var(T& v) -{ - return variable(v); -} - -////////////////////////////////// -template -inline actor > const -const_(T const& v) -{ - return variable(v); -} - -////////////////////////////////// -template -void -var(actor const& v); // This is undefined and not allowed. - -////////////////////////////////// -template -void -const_(actor const& v); // This is undefined and not allowed. - -/////////////////////////////////////////////////////////////////////////////// -} // namespace phoenix - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/phoenix/special_ops.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/phoenix/special_ops.hpp deleted file mode 100644 index e5974fd70927..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/phoenix/special_ops.hpp +++ /dev/null @@ -1,274 +0,0 @@ -/*============================================================================= - Phoenix V1.2.1 - Copyright (c) 2001-2002 Joel de Guzman - - 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) -==============================================================================*/ -#ifndef BOOST_SPIRIT_CLASSIC_PHOENIX_SPECIAL_OPS_HPP -#define BOOST_SPIRIT_CLASSIC_PHOENIX_SPECIAL_OPS_HPP - -#include -#ifdef BOOST_NO_STRINGSTREAM -#include -#define PHOENIX_SSTREAM strstream -#else -#include -#define PHOENIX_SSTREAM stringstream -#endif - -/////////////////////////////////////////////////////////////////////////////// -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -#if defined(_STLPORT_VERSION) && defined(__STL_USE_OWN_NAMESPACE) -#define PHOENIX_STD _STLP_STD -#define PHOENIX_NO_STD_NAMESPACE -#else -#define PHOENIX_STD std -#endif - -/////////////////////////////////////////////////////////////////////////////// -namespace phoenix -{ - -/////////////////////////////////////////////////////////////////////////////// -// -// The following specializations take into account the C++ standard -// library components. There are a couple of issues that have to be -// dealt with to enable lazy operator overloads for the standard -// library classes. -// -// *iostream (e.g. cout, cin, strstream/ stringstream) uses non- -// canonical shift operator overloads where the lhs is taken in -// by reference. -// -// *I/O manipulators overloads for the RHS of the << and >> -// operators. -// -// *STL iterators can be objects that conform to pointer semantics. -// Some operators need to be specialized for these. -// -// *std::complex is given a rank (see rank class in operators.hpp) -// -/////////////////////////////////////////////////////////////////////////////// - -/////////////////////////////////////////////////////////////////////////////// -// -// specialization for rank -// -/////////////////////////////////////////////////////////////////////////////// -template struct rank > -{ static int const value = 170 + rank::value; }; - -/////////////////////////////////////////////////////////////////////////////// -// -// specializations for std::istream -// -/////////////////////////////////////////////////////////////////////////////// - -////////////////////////////////// -template -struct binary_operator -{ - typedef PHOENIX_STD::istream& result_type; - static result_type eval(PHOENIX_STD::istream& out, T1& rhs) - { return out >> rhs; } -}; - -////////////////////////////////// -template -inline typename impl::make_binary3 - , BaseT>::type -operator>>(PHOENIX_STD::istream& _0, actor const& _1) -{ - return impl::make_binary3 - , BaseT> - ::construct(var(_0), _1); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// specializations for std::ostream -// -/////////////////////////////////////////////////////////////////////////////// - -////////////////////////////////// -template -struct binary_operator -{ - typedef PHOENIX_STD::ostream& result_type; - static result_type eval(PHOENIX_STD::ostream& out, T1 const& rhs) - { return out << rhs; } -}; - -////////////////////////////////// -template -inline typename impl::make_binary3 - , BaseT>::type -operator<<(PHOENIX_STD::ostream& _0, actor const& _1) -{ - return impl::make_binary3 - , BaseT> - ::construct(var(_0), _1); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// specializations for std::strstream / stringstream -// -/////////////////////////////////////////////////////////////////////////////// -template -struct binary_operator -{ - typedef PHOENIX_STD::istream& result_type; - static result_type eval(PHOENIX_STD::istream& out, T1& rhs) - { return out >> rhs; } -}; - -////////////////////////////////// -template -inline typename impl::make_binary3 - , BaseT>::type -operator>>(PHOENIX_STD::PHOENIX_SSTREAM& _0, actor const& _1) -{ - return impl::make_binary3 - , BaseT> - ::construct(var(_0), _1); -} - -////////////////////////////////// -template -struct binary_operator -{ - typedef PHOENIX_STD::ostream& result_type; - static result_type eval(PHOENIX_STD::ostream& out, T1 const& rhs) - { return out << rhs; } -}; - -////////////////////////////////// -template -inline typename impl::make_binary3 - , BaseT>::type -operator<<(PHOENIX_STD::PHOENIX_SSTREAM& _0, actor const& _1) -{ - return impl::make_binary3 - , BaseT> - ::construct(var(_0), _1); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// I/O manipulator specializations -// -/////////////////////////////////////////////////////////////////////////////// - -typedef PHOENIX_STD::ios_base& (*iomanip_t)(PHOENIX_STD::ios_base&); -typedef PHOENIX_STD::istream& (*imanip_t)(PHOENIX_STD::istream&); -typedef PHOENIX_STD::ostream& (*omanip_t)(PHOENIX_STD::ostream&); - -#if defined(BOOST_BORLANDC) - -/////////////////////////////////////////////////////////////////////////////// -// -// Borland does not like i/o manipulators functions such as endl to -// be the rhs of a lazy << operator (Borland incorrectly reports -// ambiguity). To get around the problem, we provide function -// pointer versions of the same name with a single trailing -// underscore. -// -// You can use the same trick for other i/o manipulators. -// Alternatively, you can prefix the manipulator with a '&' -// operator. Example: -// -// cout << arg1 << &endl -// -/////////////////////////////////////////////////////////////////////////////// - -imanip_t ws_ = &PHOENIX_STD::ws; -iomanip_t dec_ = &PHOENIX_STD::dec; -iomanip_t hex_ = &PHOENIX_STD::hex; -iomanip_t oct_ = &PHOENIX_STD::oct; -omanip_t endl_ = &PHOENIX_STD::endl; -omanip_t ends_ = &PHOENIX_STD::ends; -omanip_t flush_ = &PHOENIX_STD::flush; - -#else // BOOST_BORLANDC - -/////////////////////////////////////////////////////////////////////////////// -// -// The following are overloads for I/O manipulators. -// -/////////////////////////////////////////////////////////////////////////////// -template -inline typename impl::make_binary1::type -operator>>(actor const& _0, imanip_t _1) -{ - return impl::make_binary1::construct(_0, _1); -} - -////////////////////////////////// -template -inline typename impl::make_binary1::type -operator>>(actor const& _0, iomanip_t _1) -{ - return impl::make_binary1::construct(_0, _1); -} - -////////////////////////////////// -template -inline typename impl::make_binary1::type -operator<<(actor const& _0, omanip_t _1) -{ - return impl::make_binary1::construct(_0, _1); -} - -////////////////////////////////// -template -inline typename impl::make_binary1::type -operator<<(actor const& _0, iomanip_t _1) -{ - return impl::make_binary1::construct(_0, _1); -} - -#endif // BOOST_BORLANDC - -/////////////////////////////////////////////////////////////////////////////// -// -// specializations for stl iterators and containers -// -/////////////////////////////////////////////////////////////////////////////// -template -struct unary_operator -{ - typedef typename T::reference result_type; - static result_type eval(T const& iter) - { return *iter; } -}; - -////////////////////////////////// -template -struct binary_operator -{ - typedef typename T0::reference result_type; - static result_type eval(T0& container, T1 const& index) - { return container[index]; } -}; - -////////////////////////////////// -template -struct binary_operator -{ - typedef typename T0::const_reference result_type; - static result_type eval(T0 const& container, T1 const& index) - { return container[index]; } -}; - -/////////////////////////////////////////////////////////////////////////////// -} // namespace phoenix - -#undef PHOENIX_SSTREAM -#undef PHOENIX_STD -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/phoenix/statements.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/phoenix/statements.hpp deleted file mode 100644 index c85df44fbf48..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/phoenix/statements.hpp +++ /dev/null @@ -1,443 +0,0 @@ -/*============================================================================= - Phoenix V1.2.1 - Copyright (c) 2001-2002 Joel de Guzman - - 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) -==============================================================================*/ -#ifndef BOOST_SPIRIT_CLASSIC_PHOENIX_STATEMENTS_HPP -#define BOOST_SPIRIT_CLASSIC_PHOENIX_STATEMENTS_HPP - -/////////////////////////////////////////////////////////////////////////////// -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace phoenix { - -/////////////////////////////////////////////////////////////////////////////// -// -// sequential_composite -// -// Two or more actors separated by the comma generates a -// sequential_composite which is a composite actor. Example: -// -// actor, -// actor, -// actor -// -// The actors are evaluated sequentially. The result type of this -// is void. Note that the last actor should not have a trailing -// comma. -// -/////////////////////////////////////////////////////////////////////////////// -template -struct sequential_composite { - - typedef sequential_composite self_t; - - template - struct result { typedef void type; }; - - sequential_composite(A0 const& _0, A1 const& _1) - : a0(_0), a1(_1) {} - - template - void - eval(TupleT const& args) const - { - a0.eval(args); - a1.eval(args); - } - - A0 a0; A1 a1; // actors -}; - -////////////////////////////////// -template -inline actor, actor > > -operator,(actor const& _0, actor const& _1) -{ - return sequential_composite, actor >(_0, _1); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// if_then_else_composite -// -// This composite has two (2) forms: -// -// if_(condition) -// [ -// statement -// ] -// -// and -// -// if_(condition) -// [ -// true_statement -// ] -// .else_ -// [ -// false_statement -// ] -// -// where condition is an actor that evaluates to bool. If condition -// is true, the true_statement (again an actor) is executed -// otherwise, the false_statement (another actor) is executed. The -// result type of this is void. Note the trailing underscore after -// if_ and the leading dot and the trailing underscore before -// and after .else_. -// -/////////////////////////////////////////////////////////////////////////////// -template -struct if_then_else_composite { - - typedef if_then_else_composite self_t; - - template - struct result { - - typedef void type; - }; - - if_then_else_composite( - CondT const& cond_, - ThenT const& then_, - ElseT const& else__) - : cond(cond_), then(then_), else_(else__) {} - - template - void eval(TupleT const& args) const - { - if (cond.eval(args)) - then.eval(args); - else - else_.eval(args); - } - - CondT cond; ThenT then; ElseT else_; // actors -}; - -////////////////////////////////// -template -struct else_gen { - - else_gen(CondT const& cond_, ThenT const& then_) - : cond(cond_), then(then_) {} - - template - actor::type> > - operator[](ElseT const& else_) - { - typedef if_then_else_composite::type> - result; - - return result(cond, then, as_actor::convert(else_)); - } - - CondT cond; ThenT then; -}; - -////////////////////////////////// -template -struct if_then_composite { - - typedef if_then_composite self_t; - - template - struct result { typedef void type; }; - - if_then_composite(CondT const& cond_, ThenT const& then_) - : cond(cond_), then(then_), else_(cond, then) {} - - template - void eval(TupleT const& args) const - { - if (cond.eval(args)) - then.eval(args); - } - - CondT cond; ThenT then; // actors - else_gen else_; -}; - -////////////////////////////////// -template -struct if_gen { - - if_gen(CondT const& cond_) - : cond(cond_) {} - - template - actor::type, - typename as_actor::type> > - operator[](ThenT const& then) const - { - typedef if_then_composite< - typename as_actor::type, - typename as_actor::type> - result; - - return result( - as_actor::convert(cond), - as_actor::convert(then)); - } - - CondT cond; -}; - -////////////////////////////////// -template -inline if_gen -if_(CondT const& cond) -{ - return if_gen(cond); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// while_composite -// -// This composite has the form: -// -// while_(condition) -// [ -// statement -// ] -// -// While the condition (an actor) evaluates to true, statement -// (another actor) is executed. The result type of this is void. -// Note the trailing underscore after while_. -// -/////////////////////////////////////////////////////////////////////////////// -template -struct while_composite { - - typedef while_composite self_t; - - template - struct result { typedef void type; }; - - while_composite(CondT const& cond_, DoT const& do__) - : cond(cond_), do_(do__) {} - - template - void eval(TupleT const& args) const - { - while (cond.eval(args)) - do_.eval(args); - } - - CondT cond; - DoT do_; -}; - -////////////////////////////////// -template -struct while_gen { - - while_gen(CondT const& cond_) - : cond(cond_) {} - - template - actor::type, - typename as_actor::type> > - operator[](DoT const& do_) const - { - typedef while_composite< - typename as_actor::type, - typename as_actor::type> - result; - - return result( - as_actor::convert(cond), - as_actor::convert(do_)); - } - - CondT cond; -}; - -////////////////////////////////// -template -inline while_gen -while_(CondT const& cond) -{ - return while_gen(cond); -} - -/////////////////////////////////////////////////////////////////////////////// -// -// do_composite -// -// This composite has the form: -// -// do_ -// [ -// statement -// ] -// .while_(condition) -// -// While the condition (an actor) evaluates to true, statement -// (another actor) is executed. The statement is executed at least -// once. The result type of this is void. Note the trailing -// underscore after do_ and the leading dot and the trailing -// underscore before and after .while_. -// -/////////////////////////////////////////////////////////////////////////////// -template -struct do_composite { - - typedef do_composite self_t; - - template - struct result { typedef void type; }; - - do_composite(DoT const& do__, CondT const& cond_) - : do_(do__), cond(cond_) {} - - template - void eval(TupleT const& args) const - { - do - do_.eval(args); - while (cond.eval(args)); - } - - DoT do_; - CondT cond; -}; - -//////////////////////////////////// -template -struct do_gen2 { - - do_gen2(DoT const& do__) - : do_(do__) {} - - template - actor::type, - typename as_actor::type> > - while_(CondT const& cond) const - { - typedef do_composite< - typename as_actor::type, - typename as_actor::type> - result; - - return result( - as_actor::convert(do_), - as_actor::convert(cond)); - } - - DoT do_; -}; - -//////////////////////////////////// -struct do_gen { - - template - do_gen2 - operator[](DoT const& do_) const - { - return do_gen2(do_); - } -}; - -do_gen const do_ = do_gen(); - -/////////////////////////////////////////////////////////////////////////////// -// -// for_composite -// -// This statement has the form: -// -// for_(init, condition, step) -// [ -// statement -// ] -// -// Where init, condition, step and statement are all actors. init -// is executed once before entering the for-loop. The for-loop -// exits once condition evaluates to false. At each loop iteration, -// step and statement is called. The result of this statement is -// void. Note the trailing underscore after for_. -// -/////////////////////////////////////////////////////////////////////////////// -template -struct for_composite { - - typedef composite self_t; - - template - struct result { typedef void type; }; - - for_composite( - InitT const& init_, - CondT const& cond_, - StepT const& step_, - DoT const& do__) - : init(init_), cond(cond_), step(step_), do_(do__) {} - - template - void - eval(TupleT const& args) const - { - for (init.eval(args); cond.eval(args); step.eval(args)) - do_.eval(args); - } - - InitT init; CondT cond; StepT step; DoT do_; // actors -}; - -////////////////////////////////// -template -struct for_gen { - - for_gen( - InitT const& init_, - CondT const& cond_, - StepT const& step_) - : init(init_), cond(cond_), step(step_) {} - - template - actor::type, - typename as_actor::type, - typename as_actor::type, - typename as_actor::type> > - operator[](DoT const& do_) const - { - typedef for_composite< - typename as_actor::type, - typename as_actor::type, - typename as_actor::type, - typename as_actor::type> - result; - - return result( - as_actor::convert(init), - as_actor::convert(cond), - as_actor::convert(step), - as_actor::convert(do_)); - } - - InitT init; CondT cond; StepT step; -}; - -////////////////////////////////// -template -inline for_gen -for_(InitT const& init, CondT const& cond, StepT const& step) -{ - return for_gen(init, cond, step); -} - -} // namespace phoenix - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/phoenix/tuple_helpers.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/phoenix/tuple_helpers.hpp deleted file mode 100644 index de9741606118..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/phoenix/tuple_helpers.hpp +++ /dev/null @@ -1,1076 +0,0 @@ -/*============================================================================= - Phoenix V1.2.1 - Copyright (c) 2002 Joel de Guzman - Copyright (c) 2002-2003 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) -==============================================================================*/ -#ifndef BOOST_SPIRIT_CLASSIC_PHOENIX_TUPLE_HELPERS_HPP -#define BOOST_SPIRIT_CLASSIC_PHOENIX_TUPLE_HELPERS_HPP - -/////////////////////////////////////////////////////////////////////////////// -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace phoenix -{ - -/////////////////////////////////////////////////////////////////////////////// -// -// make_tuple template class -// -// This template class is used to calculate a tuple type required to hold -// the given template parameter type -// -/////////////////////////////////////////////////////////////////////////////// - -/////////////////////////////////////////////////////////////////////////////// -// normal (non-tuple types are wrapped into a tuple) -template -struct make_tuple { - - typedef tuple type; -}; - -/////////////////////////////////////////////////////////////////////////////// -// nil_t is converted to an empty tuple type -template <> -struct make_tuple { - - typedef tuple<> type; -}; - -/////////////////////////////////////////////////////////////////////////////// -// tuple types are left alone without any refactoring -template < - typename A, typename B, typename C -#if PHOENIX_LIMIT > 3 - , typename D, typename E, typename F -#if PHOENIX_LIMIT > 6 - , typename G, typename H, typename I -#if PHOENIX_LIMIT > 9 - , typename J, typename K, typename L -#if PHOENIX_LIMIT > 12 - , typename M, typename N, typename O -#endif -#endif -#endif -#endif -> -struct make_tuple 3 - , D, E, F -#if PHOENIX_LIMIT > 6 - , G, H, I -#if PHOENIX_LIMIT > 9 - , J, K, L -#if PHOENIX_LIMIT > 12 - , M, N, O -#endif -#endif -#endif -#endif - > > { - -// the tuple parameter itself is the required tuple type - typedef tuple 3 - , D, E, F -#if PHOENIX_LIMIT > 6 - , G, H, I -#if PHOENIX_LIMIT > 9 - , J, K, L -#if PHOENIX_LIMIT > 12 - , M, N, O -#endif -#endif -#endif -#endif - > type; -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// concat_tuple type computer -// -// This class returns the type of a tuple, which is constructed by -// concatenating a tuple with a given type -// -/////////////////////////////////////////////////////////////////////////////// -template -struct concat_tuple; - -/////////////////////////////////////////////////////////////////////////////// -// -// concat tuple <0 member> class -// -/////////////////////////////////////////////////////////////////////////////// -template -struct concat_tuple, AppendT> { - - typedef tuple type; -}; - -template <> -struct concat_tuple, nil_t> { - - typedef tuple<> type; -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// concat tuple <1 member> class -// -/////////////////////////////////////////////////////////////////////////////// -template -struct concat_tuple, AppendT> { - - typedef tuple type; -}; - -template -struct concat_tuple, nil_t> { - - typedef tuple type; -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// concat tuple <2 member> class -// -/////////////////////////////////////////////////////////////////////////////// -template -struct concat_tuple, AppendT> { - - typedef tuple type; -}; - -template -struct concat_tuple, nil_t> { - - typedef tuple type; -}; - -#if PHOENIX_LIMIT > 3 -/////////////////////////////////////////////////////////////////////////////// -// -// concat tuple <3 member> class -// -/////////////////////////////////////////////////////////////////////////////// -template < - typename A, typename B, typename C, - typename AppendT -> -struct concat_tuple, AppendT> { - - typedef tuple type; -}; - -template < - typename A, typename B, typename C -> -struct concat_tuple, nil_t> { - - typedef tuple type; -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// concat tuple <4 member> class -// -/////////////////////////////////////////////////////////////////////////////// -template < - typename A, typename B, typename C, typename D, - typename AppendT -> -struct concat_tuple, AppendT> { - - typedef tuple type; -}; - -template < - typename A, typename B, typename C, typename D -> -struct concat_tuple, nil_t> { - - typedef tuple type; -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// concat tuple <5 member> class -// -/////////////////////////////////////////////////////////////////////////////// -template < - typename A, typename B, typename C, typename D, typename E, - typename AppendT -> -struct concat_tuple, AppendT> { - - typedef tuple type; -}; - -template < - typename A, typename B, typename C, typename D, typename E -> -struct concat_tuple, nil_t> { - - typedef tuple type; -}; - -#if PHOENIX_LIMIT > 6 -/////////////////////////////////////////////////////////////////////////////// -// -// concat tuple <6 member> class -// -/////////////////////////////////////////////////////////////////////////////// -template < - typename A, typename B, typename C, typename D, typename E, typename F, - typename AppendT -> -struct concat_tuple, AppendT> { - - typedef tuple type; -}; - -template < - typename A, typename B, typename C, typename D, typename E, typename F -> -struct concat_tuple, nil_t> { - - typedef tuple type; -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// concat tuple <7 member> class -// -/////////////////////////////////////////////////////////////////////////////// -template < - typename A, typename B, typename C, typename D, typename E, typename F, - typename G, - typename AppendT -> -struct concat_tuple, AppendT> { - - typedef tuple type; -}; - -template < - typename A, typename B, typename C, typename D, typename E, typename F, - typename G -> -struct concat_tuple, nil_t> { - - typedef tuple type; -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// concat tuple <8 member> class -// -/////////////////////////////////////////////////////////////////////////////// -template < - typename A, typename B, typename C, typename D, typename E, typename F, - typename G, typename H, - typename AppendT -> -struct concat_tuple, AppendT> { - - typedef tuple type; -}; - -template < - typename A, typename B, typename C, typename D, typename E, typename F, - typename G, typename H -> -struct concat_tuple, nil_t> { - - typedef tuple type; -}; - -#if PHOENIX_LIMIT > 9 -/////////////////////////////////////////////////////////////////////////////// -// -// concat tuple <9 member> class -// -/////////////////////////////////////////////////////////////////////////////// -template < - typename A, typename B, typename C, typename D, typename E, typename F, - typename G, typename H, typename I, - typename AppendT -> -struct concat_tuple, AppendT> { - - typedef tuple type; -}; - -template < - typename A, typename B, typename C, typename D, typename E, typename F, - typename G, typename H, typename I -> -struct concat_tuple, nil_t> { - - typedef tuple type; -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// concat tuple <10 member> class -// -/////////////////////////////////////////////////////////////////////////////// -template < - typename A, typename B, typename C, typename D, typename E, typename F, - typename G, typename H, typename I, typename J, - typename AppendT -> -struct concat_tuple, AppendT> { - - typedef tuple type; -}; - -template < - typename A, typename B, typename C, typename D, typename E, typename F, - typename G, typename H, typename I, typename J -> -struct concat_tuple, nil_t> { - - typedef tuple type; -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// concat tuple <11 member> class -// -/////////////////////////////////////////////////////////////////////////////// -template < - typename A, typename B, typename C, typename D, typename E, typename F, - typename G, typename H, typename I, typename J, typename K, - typename AppendT -> -struct concat_tuple, AppendT> { - - typedef tuple type; -}; - -template < - typename A, typename B, typename C, typename D, typename E, typename F, - typename G, typename H, typename I, typename J, typename K -> -struct concat_tuple, nil_t> { - - typedef tuple type; -}; - -#if PHOENIX_LIMIT > 12 -/////////////////////////////////////////////////////////////////////////////// -// -// concat tuple <12 member> class -// -/////////////////////////////////////////////////////////////////////////////// -template < - typename A, typename B, typename C, typename D, typename E, typename F, - typename G, typename H, typename I, typename J, typename K, typename L, - typename AppendT -> -struct concat_tuple, AppendT> { - - typedef tuple type; -}; - -template < - typename A, typename B, typename C, typename D, typename E, typename F, - typename G, typename H, typename I, typename J, typename K, typename L -> -struct concat_tuple, nil_t> { - - typedef tuple type; -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// concat tuple <13 member> class -// -/////////////////////////////////////////////////////////////////////////////// -template < - typename A, typename B, typename C, typename D, typename E, typename F, - typename G, typename H, typename I, typename J, typename K, typename L, - typename M, - typename AppendT -> -struct concat_tuple, AppendT> { - - typedef tuple type; -}; - -template < - typename A, typename B, typename C, typename D, typename E, typename F, - typename G, typename H, typename I, typename J, typename K, typename L, - typename M -> -struct concat_tuple, nil_t> { - - typedef tuple type; -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// concat tuple <14 member> class -// -/////////////////////////////////////////////////////////////////////////////// -template < - typename A, typename B, typename C, typename D, typename E, typename F, - typename G, typename H, typename I, typename J, typename K, typename L, - typename M, typename N, - typename AppendT -> -struct concat_tuple, AppendT> { - - typedef tuple type; -}; - -template < - typename A, typename B, typename C, typename D, typename E, typename F, - typename G, typename H, typename I, typename J, typename K, typename L, - typename M, typename N -> -struct concat_tuple, nil_t> { - - typedef tuple type; -}; - -#endif -#endif -#endif -#endif - -/////////////////////////////////////////////////////////////////////////////// -// -// concat_tuples type computer -// -// This template class returns the type of a tuple built from the -// concatenation of two given tuples. -// -/////////////////////////////////////////////////////////////////////////////// -template -struct concat_tuple_element { - - typedef - typename concat_tuple_element< - typename concat_tuple::type, TupleT2, N+1, - typename tuple_element::type - >::type - type; -}; - -template -struct concat_tuple_element { - - typedef TupleT1 type; -}; - -template -struct concat_tuples { - - typedef - typename concat_tuple_element< - TupleT1, TupleT2, 0, - typename tuple_element<0, TupleT2>::type - >::type - type; -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// convert_actors template function -// -// The convert_actors template functions constructs a new tuple object -// composed of the elements returned by the actors contained in the -// input tuple. (i.e. the given tuple type 'actor_tuple' contains a set -// of actors to evaluate and the resulting tuple contains the results of -// evaluating the actors.) -// -/////////////////////////////////////////////////////////////////////////////// -template -struct actor_result; // forward declaration - -namespace impl -{ - template - struct convert_actors_ {}; -} - -template -TupleResultT -convert_actors(ActorTupleT const& actor_tuple) -{ - BOOST_STATIC_ASSERT(ActorTupleT::length <= TupleResultT::length); - BOOST_STATIC_CONSTANT(int, length = TupleResultT::length); - return impl::convert_actors_ - ::template apply::do_(actor_tuple); -} - -namespace impl -{ - template - struct convert_actor - { - typedef typename tuple_element::type type; - - template - struct is_default_t {}; - typedef is_default_t is_default; - typedef is_default_t is_not_default; - - static type - actor_element(ActorTupleT const& /*actor_tuple*/, is_default) - { - return type(); // default construct - } - - static type - actor_element(ActorTupleT const& actor_tuple, is_not_default) - { - BOOST_STATIC_ASSERT(ActorTupleT::length <= TupleResultT::length); - tuple_index const idx; - return actor_tuple[idx](); // apply the actor - } - - static type - do_(ActorTupleT const& actor_tuple) - { - return actor_element( - actor_tuple, is_default_t<(N >= ActorTupleT::length)>()); - } - }; - - /////////////////////////////////////// - template <> - struct convert_actors_<1> - { - template - struct apply - { - static TupleResultT - do_(ActorTupleT const& actor_tuple) - { - typedef impl::convert_actor<0, TupleResultT, ActorTupleT> converter0; - - return TupleResultT( - converter0::do_(actor_tuple) - ); - } - }; - }; - - /////////////////////////////////////// - template <> - struct convert_actors_<2> - { - template - struct apply - { - static TupleResultT - do_(ActorTupleT const& actor_tuple) - { - typedef impl::convert_actor<0, TupleResultT, ActorTupleT> converter0; - typedef impl::convert_actor<1, TupleResultT, ActorTupleT> converter1; - - using namespace tuple_index_names; - return TupleResultT( - converter0::do_(actor_tuple) - , converter1::do_(actor_tuple) - ); - } - }; - }; - - /////////////////////////////////////// - template <> - struct convert_actors_<3> - { - template - struct apply - { - static TupleResultT - do_(ActorTupleT const& actor_tuple) - { - typedef impl::convert_actor<0, TupleResultT, ActorTupleT> converter0; - typedef impl::convert_actor<1, TupleResultT, ActorTupleT> converter1; - typedef impl::convert_actor<2, TupleResultT, ActorTupleT> converter2; - - using namespace tuple_index_names; - return TupleResultT( - converter0::do_(actor_tuple) - , converter1::do_(actor_tuple) - , converter2::do_(actor_tuple) - ); - } - }; - }; - - #if PHOENIX_LIMIT > 3 - - ///////////////////////////////////// - template <> - struct convert_actors_<4> - { - template - struct apply - { - static TupleResultT - do_(ActorTupleT const& actor_tuple) - { - typedef impl::convert_actor<0, TupleResultT, ActorTupleT> converter0; - typedef impl::convert_actor<1, TupleResultT, ActorTupleT> converter1; - typedef impl::convert_actor<2, TupleResultT, ActorTupleT> converter2; - typedef impl::convert_actor<3, TupleResultT, ActorTupleT> converter3; - - using namespace tuple_index_names; - return TupleResultT( - converter0::do_(actor_tuple) - , converter1::do_(actor_tuple) - , converter2::do_(actor_tuple) - , converter3::do_(actor_tuple) - ); - } - }; - }; - - ///////////////////////////////////// - template <> - struct convert_actors_<5> - { - template - struct apply - { - static TupleResultT - do_(ActorTupleT const& actor_tuple) - { - typedef impl::convert_actor<0, TupleResultT, ActorTupleT> converter0; - typedef impl::convert_actor<1, TupleResultT, ActorTupleT> converter1; - typedef impl::convert_actor<2, TupleResultT, ActorTupleT> converter2; - typedef impl::convert_actor<3, TupleResultT, ActorTupleT> converter3; - typedef impl::convert_actor<4, TupleResultT, ActorTupleT> converter4; - - using namespace tuple_index_names; - return TupleResultT( - converter0::do_(actor_tuple) - , converter1::do_(actor_tuple) - , converter2::do_(actor_tuple) - , converter3::do_(actor_tuple) - , converter4::do_(actor_tuple) - ); - } - }; - }; - - ///////////////////////////////////// - template <> - struct convert_actors_<6> - { - template - struct apply - { - static TupleResultT - do_(ActorTupleT const& actor_tuple) - { - typedef impl::convert_actor<0, TupleResultT, ActorTupleT> converter0; - typedef impl::convert_actor<1, TupleResultT, ActorTupleT> converter1; - typedef impl::convert_actor<2, TupleResultT, ActorTupleT> converter2; - typedef impl::convert_actor<3, TupleResultT, ActorTupleT> converter3; - typedef impl::convert_actor<4, TupleResultT, ActorTupleT> converter4; - typedef impl::convert_actor<5, TupleResultT, ActorTupleT> converter5; - - using namespace tuple_index_names; - return TupleResultT( - converter0::do_(actor_tuple) - , converter1::do_(actor_tuple) - , converter2::do_(actor_tuple) - , converter3::do_(actor_tuple) - , converter4::do_(actor_tuple) - , converter5::do_(actor_tuple) - ); - } - }; - }; - - #if PHOENIX_LIMIT > 6 - - ///////////////////////////////////// - template <> - struct convert_actors_<7> - { - template - struct apply - { - static TupleResultT - do_(ActorTupleT const& actor_tuple) - { - typedef impl::convert_actor<0, TupleResultT, ActorTupleT> converter0; - typedef impl::convert_actor<1, TupleResultT, ActorTupleT> converter1; - typedef impl::convert_actor<2, TupleResultT, ActorTupleT> converter2; - typedef impl::convert_actor<3, TupleResultT, ActorTupleT> converter3; - typedef impl::convert_actor<4, TupleResultT, ActorTupleT> converter4; - typedef impl::convert_actor<5, TupleResultT, ActorTupleT> converter5; - typedef impl::convert_actor<6, TupleResultT, ActorTupleT> converter6; - - using namespace tuple_index_names; - return TupleResultT( - converter0::do_(actor_tuple) - , converter1::do_(actor_tuple) - , converter2::do_(actor_tuple) - , converter3::do_(actor_tuple) - , converter4::do_(actor_tuple) - , converter5::do_(actor_tuple) - , converter6::do_(actor_tuple) - ); - } - }; - }; - - ///////////////////////////////////// - template <> - struct convert_actors_<8> - { - template - struct apply - { - static TupleResultT - do_(ActorTupleT const& actor_tuple) - { - typedef impl::convert_actor<0, TupleResultT, ActorTupleT> converter0; - typedef impl::convert_actor<1, TupleResultT, ActorTupleT> converter1; - typedef impl::convert_actor<2, TupleResultT, ActorTupleT> converter2; - typedef impl::convert_actor<3, TupleResultT, ActorTupleT> converter3; - typedef impl::convert_actor<4, TupleResultT, ActorTupleT> converter4; - typedef impl::convert_actor<5, TupleResultT, ActorTupleT> converter5; - typedef impl::convert_actor<6, TupleResultT, ActorTupleT> converter6; - typedef impl::convert_actor<7, TupleResultT, ActorTupleT> converter7; - - using namespace tuple_index_names; - return TupleResultT( - converter0::do_(actor_tuple) - , converter1::do_(actor_tuple) - , converter2::do_(actor_tuple) - , converter3::do_(actor_tuple) - , converter4::do_(actor_tuple) - , converter5::do_(actor_tuple) - , converter6::do_(actor_tuple) - , converter7::do_(actor_tuple) - ); - } - }; - }; - - ///////////////////////////////////// - template <> - struct convert_actors_<9> - { - template - struct apply - { - static TupleResultT - do_(ActorTupleT const& actor_tuple) - { - typedef impl::convert_actor<0, TupleResultT, ActorTupleT> converter0; - typedef impl::convert_actor<1, TupleResultT, ActorTupleT> converter1; - typedef impl::convert_actor<2, TupleResultT, ActorTupleT> converter2; - typedef impl::convert_actor<3, TupleResultT, ActorTupleT> converter3; - typedef impl::convert_actor<4, TupleResultT, ActorTupleT> converter4; - typedef impl::convert_actor<5, TupleResultT, ActorTupleT> converter5; - typedef impl::convert_actor<6, TupleResultT, ActorTupleT> converter6; - typedef impl::convert_actor<7, TupleResultT, ActorTupleT> converter7; - typedef impl::convert_actor<8, TupleResultT, ActorTupleT> converter8; - - using namespace tuple_index_names; - return TupleResultT( - converter0::do_(actor_tuple) - , converter1::do_(actor_tuple) - , converter2::do_(actor_tuple) - , converter3::do_(actor_tuple) - , converter4::do_(actor_tuple) - , converter5::do_(actor_tuple) - , converter6::do_(actor_tuple) - , converter7::do_(actor_tuple) - , converter8::do_(actor_tuple) - ); - } - }; - }; - - #if PHOENIX_LIMIT > 9 - - ///////////////////////////////////// - template <> - struct convert_actors_<10> - { - template - struct apply - { - static TupleResultT - do_(ActorTupleT const& actor_tuple) - { - typedef impl::convert_actor<0, TupleResultT, ActorTupleT> converter0; - typedef impl::convert_actor<1, TupleResultT, ActorTupleT> converter1; - typedef impl::convert_actor<2, TupleResultT, ActorTupleT> converter2; - typedef impl::convert_actor<3, TupleResultT, ActorTupleT> converter3; - typedef impl::convert_actor<4, TupleResultT, ActorTupleT> converter4; - typedef impl::convert_actor<5, TupleResultT, ActorTupleT> converter5; - typedef impl::convert_actor<6, TupleResultT, ActorTupleT> converter6; - typedef impl::convert_actor<7, TupleResultT, ActorTupleT> converter7; - typedef impl::convert_actor<8, TupleResultT, ActorTupleT> converter8; - typedef impl::convert_actor<9, TupleResultT, ActorTupleT> converter9; - - using namespace tuple_index_names; - return TupleResultT( - converter0::do_(actor_tuple) - , converter1::do_(actor_tuple) - , converter2::do_(actor_tuple) - , converter3::do_(actor_tuple) - , converter4::do_(actor_tuple) - , converter5::do_(actor_tuple) - , converter6::do_(actor_tuple) - , converter7::do_(actor_tuple) - , converter8::do_(actor_tuple) - , converter9::do_(actor_tuple) - ); - } - }; - }; - - ///////////////////////////////////// - template <> - struct convert_actors_<11> - { - template - struct apply - { - static TupleResultT - do_(ActorTupleT const& actor_tuple) - { - typedef impl::convert_actor<0, TupleResultT, ActorTupleT> converter0; - typedef impl::convert_actor<1, TupleResultT, ActorTupleT> converter1; - typedef impl::convert_actor<2, TupleResultT, ActorTupleT> converter2; - typedef impl::convert_actor<3, TupleResultT, ActorTupleT> converter3; - typedef impl::convert_actor<4, TupleResultT, ActorTupleT> converter4; - typedef impl::convert_actor<5, TupleResultT, ActorTupleT> converter5; - typedef impl::convert_actor<6, TupleResultT, ActorTupleT> converter6; - typedef impl::convert_actor<7, TupleResultT, ActorTupleT> converter7; - typedef impl::convert_actor<8, TupleResultT, ActorTupleT> converter8; - typedef impl::convert_actor<9, TupleResultT, ActorTupleT> converter9; - typedef impl::convert_actor<10, TupleResultT, ActorTupleT> converter10; - - using namespace tuple_index_names; - return TupleResultT( - converter0::do_(actor_tuple) - , converter1::do_(actor_tuple) - , converter2::do_(actor_tuple) - , converter3::do_(actor_tuple) - , converter4::do_(actor_tuple) - , converter5::do_(actor_tuple) - , converter6::do_(actor_tuple) - , converter7::do_(actor_tuple) - , converter8::do_(actor_tuple) - , converter9::do_(actor_tuple) - , converter10::do_(actor_tuple) - ); - } - }; - }; - - ///////////////////////////////////// - template <> - struct convert_actors_<12> - { - template - struct apply - { - static TupleResultT - do_(ActorTupleT const& actor_tuple) - { - typedef impl::convert_actor<0, TupleResultT, ActorTupleT> converter0; - typedef impl::convert_actor<1, TupleResultT, ActorTupleT> converter1; - typedef impl::convert_actor<2, TupleResultT, ActorTupleT> converter2; - typedef impl::convert_actor<3, TupleResultT, ActorTupleT> converter3; - typedef impl::convert_actor<4, TupleResultT, ActorTupleT> converter4; - typedef impl::convert_actor<5, TupleResultT, ActorTupleT> converter5; - typedef impl::convert_actor<6, TupleResultT, ActorTupleT> converter6; - typedef impl::convert_actor<7, TupleResultT, ActorTupleT> converter7; - typedef impl::convert_actor<8, TupleResultT, ActorTupleT> converter8; - typedef impl::convert_actor<9, TupleResultT, ActorTupleT> converter9; - typedef impl::convert_actor<10, TupleResultT, ActorTupleT> converter10; - typedef impl::convert_actor<11, TupleResultT, ActorTupleT> converter11; - - using namespace tuple_index_names; - return TupleResultT( - converter0::do_(actor_tuple) - , converter1::do_(actor_tuple) - , converter2::do_(actor_tuple) - , converter3::do_(actor_tuple) - , converter4::do_(actor_tuple) - , converter5::do_(actor_tuple) - , converter6::do_(actor_tuple) - , converter7::do_(actor_tuple) - , converter8::do_(actor_tuple) - , converter9::do_(actor_tuple) - , converter10::do_(actor_tuple) - , converter11::do_(actor_tuple) - ); - } - }; - }; - - #if PHOENIX_LIMIT > 12 - - ///////////////////////////////////// - template <> - struct convert_actors_<13> - { - template - struct apply - { - static TupleResultT - do_(ActorTupleT const& actor_tuple) - { - typedef impl::convert_actor<0, TupleResultT, ActorTupleT> converter0; - typedef impl::convert_actor<1, TupleResultT, ActorTupleT> converter1; - typedef impl::convert_actor<2, TupleResultT, ActorTupleT> converter2; - typedef impl::convert_actor<3, TupleResultT, ActorTupleT> converter3; - typedef impl::convert_actor<4, TupleResultT, ActorTupleT> converter4; - typedef impl::convert_actor<5, TupleResultT, ActorTupleT> converter5; - typedef impl::convert_actor<6, TupleResultT, ActorTupleT> converter6; - typedef impl::convert_actor<7, TupleResultT, ActorTupleT> converter7; - typedef impl::convert_actor<8, TupleResultT, ActorTupleT> converter8; - typedef impl::convert_actor<9, TupleResultT, ActorTupleT> converter9; - typedef impl::convert_actor<10, TupleResultT, ActorTupleT> converter10; - typedef impl::convert_actor<11, TupleResultT, ActorTupleT> converter11; - typedef impl::convert_actor<12, TupleResultT, ActorTupleT> converter12; - - using namespace tuple_index_names; - return TupleResultT( - converter0::do_(actor_tuple) - , converter1::do_(actor_tuple) - , converter2::do_(actor_tuple) - , converter3::do_(actor_tuple) - , converter4::do_(actor_tuple) - , converter5::do_(actor_tuple) - , converter6::do_(actor_tuple) - , converter7::do_(actor_tuple) - , converter8::do_(actor_tuple) - , converter9::do_(actor_tuple) - , converter10::do_(actor_tuple) - , converter11::do_(actor_tuple) - , converter12::do_(actor_tuple) - ); - } - }; - }; - - /////////////////////////////////////// - template <> - struct convert_actors_<14> - { - template - struct apply - { - static TupleResultT - do_(ActorTupleT const& actor_tuple) - { - typedef impl::convert_actor<0, TupleResultT, ActorTupleT> converter0; - typedef impl::convert_actor<1, TupleResultT, ActorTupleT> converter1; - typedef impl::convert_actor<2, TupleResultT, ActorTupleT> converter2; - typedef impl::convert_actor<3, TupleResultT, ActorTupleT> converter3; - typedef impl::convert_actor<4, TupleResultT, ActorTupleT> converter4; - typedef impl::convert_actor<5, TupleResultT, ActorTupleT> converter5; - typedef impl::convert_actor<6, TupleResultT, ActorTupleT> converter6; - typedef impl::convert_actor<7, TupleResultT, ActorTupleT> converter7; - typedef impl::convert_actor<8, TupleResultT, ActorTupleT> converter8; - typedef impl::convert_actor<9, TupleResultT, ActorTupleT> converter9; - typedef impl::convert_actor<10, TupleResultT, ActorTupleT> converter10; - typedef impl::convert_actor<11, TupleResultT, ActorTupleT> converter11; - typedef impl::convert_actor<12, TupleResultT, ActorTupleT> converter12; - typedef impl::convert_actor<13, TupleResultT, ActorTupleT> converter13; - - using namespace tuple_index_names; - return TupleResultT( - converter0::do_(actor_tuple) - , converter1::do_(actor_tuple) - , converter2::do_(actor_tuple) - , converter3::do_(actor_tuple) - , converter4::do_(actor_tuple) - , converter5::do_(actor_tuple) - , converter6::do_(actor_tuple) - , converter7::do_(actor_tuple) - , converter8::do_(actor_tuple) - , converter9::do_(actor_tuple) - , converter10::do_(actor_tuple) - , converter11::do_(actor_tuple) - , converter12::do_(actor_tuple) - , converter13::do_(actor_tuple) - ); - } - }; - }; - - /////////////////////////////////////// - template <> - struct convert_actors_<15> - { - template - struct apply - { - static TupleResultT - do_(ActorTupleT const& actor_tuple) - { - typedef impl::convert_actor<0, TupleResultT, ActorTupleT> converter0; - typedef impl::convert_actor<1, TupleResultT, ActorTupleT> converter1; - typedef impl::convert_actor<2, TupleResultT, ActorTupleT> converter2; - typedef impl::convert_actor<3, TupleResultT, ActorTupleT> converter3; - typedef impl::convert_actor<4, TupleResultT, ActorTupleT> converter4; - typedef impl::convert_actor<5, TupleResultT, ActorTupleT> converter5; - typedef impl::convert_actor<6, TupleResultT, ActorTupleT> converter6; - typedef impl::convert_actor<7, TupleResultT, ActorTupleT> converter7; - typedef impl::convert_actor<8, TupleResultT, ActorTupleT> converter8; - typedef impl::convert_actor<9, TupleResultT, ActorTupleT> converter9; - typedef impl::convert_actor<10, TupleResultT, ActorTupleT> converter10; - typedef impl::convert_actor<11, TupleResultT, ActorTupleT> converter11; - typedef impl::convert_actor<12, TupleResultT, ActorTupleT> converter12; - typedef impl::convert_actor<13, TupleResultT, ActorTupleT> converter13; - typedef impl::convert_actor<14, TupleResultT, ActorTupleT> converter14; - - using namespace tuple_index_names; - return TupleResultT( - converter0::do_(actor_tuple) - , converter1::do_(actor_tuple) - , converter2::do_(actor_tuple) - , converter3::do_(actor_tuple) - , converter4::do_(actor_tuple) - , converter5::do_(actor_tuple) - , converter6::do_(actor_tuple) - , converter7::do_(actor_tuple) - , converter8::do_(actor_tuple) - , converter9::do_(actor_tuple) - , converter10::do_(actor_tuple) - , converter11::do_(actor_tuple) - , converter12::do_(actor_tuple) - , converter13::do_(actor_tuple) - , converter14::do_(actor_tuple) - ); - } - }; - }; - - #endif - #endif - #endif - #endif -} // namespace impl - - -/////////////////////////////////////////////////////////////////////////////// -} // namespace phoenix - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/phoenix/tuples.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/phoenix/tuples.hpp deleted file mode 100644 index 666e7ffe1d63..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/phoenix/tuples.hpp +++ /dev/null @@ -1,1306 +0,0 @@ -/*============================================================================= - Phoenix V1.2.1 - Copyright (c) 2001-2002 Joel de Guzman - - 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) -==============================================================================*/ -#ifndef BOOST_SPIRIT_CLASSIC_PHOENIX_TUPLES_HPP -#define BOOST_SPIRIT_CLASSIC_PHOENIX_TUPLES_HPP - -/////////////////////////////////////////////////////////////////////////////// -// -// Phoenix predefined maximum limit. This limit defines the maximum -// number of elements a tuple can hold. This number defaults to 3. The -// actual maximum is rounded up in multiples of 3. Thus, if this value -// is 4, the actual limit is 6. The ultimate maximum limit in this -// implementation is 15. -// -/////////////////////////////////////////////////////////////////////////////// -#ifndef PHOENIX_LIMIT -#define PHOENIX_LIMIT 3 -#endif - -/////////////////////////////////////////////////////////////////////////////// -#include -#include -#include - -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -#pragma warning(push) -#pragma warning(disable:4512) //assignment operator could not be generated -// bogus https://developercommunity.visualstudio.com/t/buggy-warning-c4709/471956 -#pragma warning(disable:4709) //comma operator within array index expression -#endif - -/////////////////////////////////////////////////////////////////////////////// -namespace phoenix { - -/////////////////////////////////////////////////////////////////////////////// -// -// tuple -// -// Tuples hold heterogeneous types up to a predefined maximum. Only -// the most basic functionality needed is provided. Unlike other -// recursive list-like tuple implementations, this tuple -// implementation uses simple structs similar to std::pair with -// specialization for 0 to N tuple elements. -// -// 1) Construction -// Here are examples on how to construct tuples: -// -// typedef tuple t1_t; -// typedef tuple t2_t; -// -// // this tuple has an int and char members -// t1_t t1(3, 'c'); -// -// // this tuple has an int, std::string and double members -// t2_t t2(3, "hello", 3.14); -// -// Tuples can also be constructed from other tuples. The -// source and destination tuples need not have exactly the -// same element types. The only requirement is that the -// source tuple have the same number of elements as the -// destination and that each element slot in the -// destination can be copy constructed from the source -// element. For example: -// -// tuple t3(t1); // OK. Compatible tuples -// tuple t4(t2); // Error! Incompatible tuples -// -// 2) Member access -// A member in a tuple can be accessed using the -// tuple's [] operator by specifying the Nth -// tuple_index. Here are some examples: -// -// tuple_index<0> ix0; // 0th index == 1st item -// tuple_index<1> ix1; // 1st index == 2nd item -// tuple_index<2> ix2; // 2nd index == 3rd item -// -// t1[ix0] = 33; // sets the int member of the tuple t1 -// t2[ix2] = 6e6; // sets the double member of the tuple t2 -// t1[ix1] = 'a'; // sets the char member of the tuple t1 -// -// There are some predefined names are provided in sub- -// namespace tuple_index_names: -// -// tuple_index<0> _1; -// tuple_index<1> _2; -// ... -// tuple_index _N; -// -// These indexes may be used by 'using' namespace -// phoenix::tuple_index_names. -// -// Access to out of bound indexes returns a nil_t value. -// -// 3) Member type inquiry -// The type of an individual member can be queried. -// Example: -// -// tuple_element<1, t2_t>::type -// -// Refers to the type of the second member (note zero based, -// thus 0 = 1st item, 1 = 2nd item) of the tuple. -// -// Aside from tuple_element::type, there are two -// more types that tuple_element provides: rtype and -// crtype. While 'type' is the plain underlying type, -// 'rtype' is the reference type, or type& and 'crtype' -// is the constant reference type or type const&. The -// latter two are provided to make it easy for the -// client in dealing with the possibility of reference -// to reference when type is already a reference, which -// is illegal in C++. -// -// Access to out of bound indexes returns a nil_t type. -// -// 4) Tuple length -// The number of elements in a tuple can be queried. -// Example: -// -// int n = t1.length; -// -// gets the number of elements in tuple t1. -// -// length is a static constant. Thus, TupleT::length -// also works. Example: -// -// int n = t1_t::length; -// -/////////////////////////////////////////////////////////////////////////////// -struct nil_t {}; -using boost::remove_reference; -using boost::call_traits; - -////////////////////////////////// -namespace impl { - - template - struct access { - - typedef const T& ctype; - typedef T& type; - }; - - template - struct access { - - typedef T& ctype; - typedef T& type; - }; -} - -/////////////////////////////////////////////////////////////////////////////// -// -// tuple_element -// -// A query class that gets the Nth element inside a tuple. -// Examples: -// -// tuple_element<1, tuple >::type // plain -// tuple_element<1, tuple >::rtype // ref -// tuple_element<1, tuple >::crtype // const ref -// -// Has type char which is the 2nd type in the tuple -// (note zero based, thus 0 = 1st item, 1 = 2nd item). -// -// Given a tuple object, the static function tuple_element::get(tuple) gets the Nth element in the tuple. The -// tuple class' tuple::operator[] uses this to get its Nth -// element. -// -/////////////////////////////////////////////////////////////////////////////// -template -struct tuple_element -{ - typedef nil_t type; - typedef nil_t& rtype; - typedef nil_t const& crtype; - - static nil_t get(TupleT const&) { return nil_t(); } -}; - -////////////////////////////////// -template -struct tuple_element<0, TupleT> -{ - typedef typename TupleT::a_type type; - typedef typename impl::access::type rtype; - typedef typename impl::access::ctype crtype; - - static rtype get(TupleT& t) { return t.a; } - static crtype get(TupleT const& t) { return t.a; } -}; - -////////////////////////////////// -template -struct tuple_element<1, TupleT> -{ - typedef typename TupleT::b_type type; - typedef typename impl::access::type rtype; - typedef typename impl::access::ctype crtype; - - static rtype get(TupleT& t) { return t.b; } - static crtype get(TupleT const& t) { return t.b; } -}; - -////////////////////////////////// -template -struct tuple_element<2, TupleT> -{ - typedef typename TupleT::c_type type; - typedef typename impl::access::type rtype; - typedef typename impl::access::ctype crtype; - - static rtype get(TupleT& t) { return t.c; } - static crtype get(TupleT const& t) { return t.c; } -}; - -#if PHOENIX_LIMIT > 3 -////////////////////////////////// -template -struct tuple_element<3, TupleT> -{ - typedef typename TupleT::d_type type; - typedef typename impl::access::type rtype; - typedef typename impl::access::ctype crtype; - - static rtype get(TupleT& t) { return t.d; } - static crtype get(TupleT const& t) { return t.d; } -}; - -////////////////////////////////// -template -struct tuple_element<4, TupleT> -{ - typedef typename TupleT::e_type type; - typedef typename impl::access::type rtype; - typedef typename impl::access::ctype crtype; - - static rtype get(TupleT& t) { return t.e; } - static crtype get(TupleT const& t) { return t.e; } -}; - -////////////////////////////////// -template -struct tuple_element<5, TupleT> -{ - typedef typename TupleT::f_type type; - typedef typename impl::access::type rtype; - typedef typename impl::access::ctype crtype; - - static rtype get(TupleT& t) { return t.f; } - static crtype get(TupleT const& t) { return t.f; } -}; - -#if PHOENIX_LIMIT > 6 -////////////////////////////////// -template -struct tuple_element<6, TupleT> -{ - typedef typename TupleT::g_type type; - typedef typename impl::access::type rtype; - typedef typename impl::access::ctype crtype; - - static rtype get(TupleT& t) { return t.g; } - static crtype get(TupleT const& t) { return t.g; } -}; - -////////////////////////////////// -template -struct tuple_element<7, TupleT> -{ - typedef typename TupleT::h_type type; - typedef typename impl::access::type rtype; - typedef typename impl::access::ctype crtype; - - static rtype get(TupleT& t) { return t.h; } - static crtype get(TupleT const& t) { return t.h; } -}; - -////////////////////////////////// -template -struct tuple_element<8, TupleT> -{ - typedef typename TupleT::i_type type; - typedef typename impl::access::type rtype; - typedef typename impl::access::ctype crtype; - - static rtype get(TupleT& t) { return t.i; } - static crtype get(TupleT const& t) { return t.i; } -}; - -#if PHOENIX_LIMIT > 9 -////////////////////////////////// -template -struct tuple_element<9, TupleT> -{ - typedef typename TupleT::j_type type; - typedef typename impl::access::type rtype; - typedef typename impl::access::ctype crtype; - - static rtype get(TupleT& t) { return t.j; } - static crtype get(TupleT const& t) { return t.j; } -}; - -////////////////////////////////// -template -struct tuple_element<10, TupleT> -{ - typedef typename TupleT::k_type type; - typedef typename impl::access::type rtype; - typedef typename impl::access::ctype crtype; - - static rtype get(TupleT& t) { return t.k; } - static crtype get(TupleT const& t) { return t.k; } -}; - -////////////////////////////////// -template -struct tuple_element<11, TupleT> -{ - typedef typename TupleT::l_type type; - typedef typename impl::access::type rtype; - typedef typename impl::access::ctype crtype; - - static rtype get(TupleT& t) { return t.l; } - static crtype get(TupleT const& t) { return t.l; } -}; - -#if PHOENIX_LIMIT > 12 -////////////////////////////////// -template -struct tuple_element<12, TupleT> -{ - typedef typename TupleT::m_type type; - typedef typename impl::access::type rtype; - typedef typename impl::access::ctype crtype; - - static rtype get(TupleT& t) { return t.m; } - static crtype get(TupleT const& t) { return t.m; } -}; - -////////////////////////////////// -template -struct tuple_element<13, TupleT> -{ - typedef typename TupleT::n_type type; - typedef typename impl::access::type rtype; - typedef typename impl::access::ctype crtype; - - static rtype get(TupleT& t) { return t.n; } - static crtype get(TupleT const& t) { return t.n; } -}; - -////////////////////////////////// -template -struct tuple_element<14, TupleT> -{ - typedef typename TupleT::o_type type; - typedef typename impl::access::type rtype; - typedef typename impl::access::ctype crtype; - - static rtype get(TupleT& t) { return t.o; } - static crtype get(TupleT const& t) { return t.o; } -}; - -#endif -#endif -#endif -#endif - -/////////////////////////////////////////////////////////////////////////////// -// -// tuple forward declaration. -// -/////////////////////////////////////////////////////////////////////////////// -template < - typename A = nil_t - , typename B = nil_t - , typename C = nil_t - -#if PHOENIX_LIMIT > 3 - , typename D = nil_t - , typename E = nil_t - , typename F = nil_t - -#if PHOENIX_LIMIT > 6 - , typename G = nil_t - , typename H = nil_t - , typename I = nil_t - -#if PHOENIX_LIMIT > 9 - , typename J = nil_t - , typename K = nil_t - , typename L = nil_t - -#if PHOENIX_LIMIT > 12 - , typename M = nil_t - , typename N = nil_t - , typename O = nil_t - -#endif -#endif -#endif -#endif - - , typename NU = nil_t // Not used -> -struct tuple; - -/////////////////////////////////////////////////////////////////////////////// -// -// tuple_index -// -// This class wraps an integer in a type to be used for indexing -// the Nth element in a tuple. See tuple operator[]. Some -// predefined names are provided in sub-namespace -// tuple_index_names. -// -/////////////////////////////////////////////////////////////////////////////// -template -struct tuple_index {}; - -////////////////////////////////// -namespace tuple_index_names { - - tuple_index<0> const _1 = tuple_index<0>(); - tuple_index<1> const _2 = tuple_index<1>(); - tuple_index<2> const _3 = tuple_index<2>(); - -#if PHOENIX_LIMIT > 3 - tuple_index<3> const _4 = tuple_index<3>(); - tuple_index<4> const _5 = tuple_index<4>(); - tuple_index<5> const _6 = tuple_index<5>(); - -#if PHOENIX_LIMIT > 6 - tuple_index<6> const _7 = tuple_index<6>(); - tuple_index<7> const _8 = tuple_index<7>(); - tuple_index<8> const _9 = tuple_index<8>(); - -#if PHOENIX_LIMIT > 9 - tuple_index<9> const _10 = tuple_index<9>(); - tuple_index<10> const _11 = tuple_index<10>(); - tuple_index<11> const _12 = tuple_index<11>(); - -#if PHOENIX_LIMIT > 12 - tuple_index<12> const _13 = tuple_index<12>(); - tuple_index<13> const _14 = tuple_index<13>(); - tuple_index<14> const _15 = tuple_index<14>(); - -#endif -#endif -#endif -#endif -} - -/////////////////////////////////////////////////////////////////////////////// -// -// tuple_common class -// -/////////////////////////////////////////////////////////////////////////////// -template -struct tuple_base { - - typedef nil_t a_type; - typedef nil_t b_type; - typedef nil_t c_type; - -#if PHOENIX_LIMIT > 3 - typedef nil_t d_type; - typedef nil_t e_type; - typedef nil_t f_type; - -#if PHOENIX_LIMIT > 6 - typedef nil_t g_type; - typedef nil_t h_type; - typedef nil_t i_type; - -#if PHOENIX_LIMIT > 9 - typedef nil_t j_type; - typedef nil_t k_type; - typedef nil_t l_type; - -#if PHOENIX_LIMIT > 12 - typedef nil_t m_type; - typedef nil_t n_type; - typedef nil_t o_type; - -#endif -#endif -#endif -#endif - - template - typename tuple_element::crtype - operator[](tuple_index) const - { - return tuple_element - ::get(*static_cast(this)); - } - - template - typename tuple_element::rtype - operator[](tuple_index) - { - return tuple_element - ::get(*static_cast(this)); - } -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// tuple <0 member> class -// -/////////////////////////////////////////////////////////////////////////////// -template <> -struct tuple<> -: public tuple_base > { - - BOOST_STATIC_CONSTANT(int, length = 0); -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// tuple <1 member> class -// -/////////////////////////////////////////////////////////////////////////////// -template -struct tuple 3 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 6 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 9 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 12 - nil_t, nil_t, nil_t, -#endif -#endif -#endif -#endif - nil_t // Unused -> -: public tuple_base > { - - BOOST_STATIC_CONSTANT(int, length = 1); - typedef A a_type; - - tuple() {} - - tuple( - typename call_traits::param_type a_ - ): a(a_) {} - - template - tuple(TupleT const& init) - : a(init[tuple_index<0>()]) - { BOOST_STATIC_ASSERT(TupleT::length == length); } - - A a; -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// tuple <2 member> class -// -/////////////////////////////////////////////////////////////////////////////// -template -struct tuple 3 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 6 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 9 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 12 - nil_t, nil_t, nil_t, -#endif -#endif -#endif -#endif - nil_t // Unused -> -: public tuple_base > { - - BOOST_STATIC_CONSTANT(int, length = 2); - typedef A a_type; typedef B b_type; - - tuple() {} - - tuple( - typename call_traits::param_type a_, - typename call_traits::param_type b_ - ): a(a_), b(b_) {} - - template - tuple(TupleT const& init) - : a(init[tuple_index<0>()]), b(init[tuple_index<1>()]) - { BOOST_STATIC_ASSERT(TupleT::length == length); } - - A a; B b; -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// tuple <3 member> class -// -/////////////////////////////////////////////////////////////////////////////// -template -struct tuple 3 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 6 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 9 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 12 - nil_t, nil_t, nil_t, -#endif -#endif -#endif -#endif - nil_t // Unused -> -: public tuple_base > { - - BOOST_STATIC_CONSTANT(int, length = 3); - typedef A a_type; typedef B b_type; - typedef C c_type; - - tuple() {} - - tuple( - typename call_traits::param_type a_, - typename call_traits::param_type b_, - typename call_traits::param_type c_ - ): a(a_), b(b_), c(c_) {} - - template - tuple(TupleT const& init) - : a(init[tuple_index<0>()]), b(init[tuple_index<1>()]), - c(init[tuple_index<2>()]) - { BOOST_STATIC_ASSERT(TupleT::length == length); } - - A a; B b; C c; -}; - -#if PHOENIX_LIMIT > 3 -/////////////////////////////////////////////////////////////////////////////// -// -// tuple <4 member> class -// -/////////////////////////////////////////////////////////////////////////////// -template -struct tuple 6 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 9 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 12 - nil_t, nil_t, nil_t, -#endif -#endif -#endif - nil_t // Unused -> -: public tuple_base > { - - BOOST_STATIC_CONSTANT(int, length = 4); - typedef A a_type; typedef B b_type; - typedef C c_type; typedef D d_type; - - tuple() {} - - tuple( - typename call_traits::param_type a_, - typename call_traits::param_type b_, - typename call_traits::param_type c_, - typename call_traits::param_type d_ - ): a(a_), b(b_), c(c_), d(d_) {} - - template - tuple(TupleT const& init) - : a(init[tuple_index<0>()]), b(init[tuple_index<1>()]), - c(init[tuple_index<2>()]), d(init[tuple_index<3>()]) - { BOOST_STATIC_ASSERT(TupleT::length == length); } - - A a; B b; C c; D d; -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// tuple <5 member> class -// -/////////////////////////////////////////////////////////////////////////////// -template -struct tuple 6 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 9 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 12 - nil_t, nil_t, nil_t, -#endif -#endif -#endif - nil_t // Unused -> -: public tuple_base > { - - BOOST_STATIC_CONSTANT(int, length = 5); - typedef A a_type; typedef B b_type; - typedef C c_type; typedef D d_type; - typedef E e_type; - - tuple() {} - - tuple( - typename call_traits::param_type a_, - typename call_traits::param_type b_, - typename call_traits::param_type c_, - typename call_traits::param_type d_, - typename call_traits::param_type e_ - ): a(a_), b(b_), c(c_), d(d_), e(e_) {} - - template - tuple(TupleT const& init) - : a(init[tuple_index<0>()]), b(init[tuple_index<1>()]), - c(init[tuple_index<2>()]), d(init[tuple_index<3>()]), - e(init[tuple_index<4>()]) - { BOOST_STATIC_ASSERT(TupleT::length == length); } - - A a; B b; C c; D d; E e; -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// tuple <6 member> class -// -/////////////////////////////////////////////////////////////////////////////// -template < - typename A, typename B, typename C, typename D, typename E, - typename F> -struct tuple 6 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 9 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 12 - nil_t, nil_t, nil_t, -#endif -#endif -#endif - nil_t // Unused -> -: public tuple_base > { - - BOOST_STATIC_CONSTANT(int, length = 6); - typedef A a_type; typedef B b_type; - typedef C c_type; typedef D d_type; - typedef E e_type; typedef F f_type; - - tuple() {} - - tuple( - typename call_traits::param_type a_, - typename call_traits::param_type b_, - typename call_traits::param_type c_, - typename call_traits::param_type d_, - typename call_traits::param_type e_, - typename call_traits::param_type f_ - ): a(a_), b(b_), c(c_), d(d_), e(e_), - f(f_) {} - - template - tuple(TupleT const& init) - : a(init[tuple_index<0>()]), b(init[tuple_index<1>()]), - c(init[tuple_index<2>()]), d(init[tuple_index<3>()]), - e(init[tuple_index<4>()]), f(init[tuple_index<5>()]) - { BOOST_STATIC_ASSERT(TupleT::length == length); } - - A a; B b; C c; D d; E e; - F f; -}; - -#if PHOENIX_LIMIT > 6 -/////////////////////////////////////////////////////////////////////////////// -// -// tuple <7 member> class -// -/////////////////////////////////////////////////////////////////////////////// -template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G> -struct tuple 9 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 12 - nil_t, nil_t, nil_t, -#endif -#endif - nil_t // Unused -> -: public tuple_base > { - - BOOST_STATIC_CONSTANT(int, length = 7); - typedef A a_type; typedef B b_type; - typedef C c_type; typedef D d_type; - typedef E e_type; typedef F f_type; - typedef G g_type; - - tuple() {} - - tuple( - typename call_traits::param_type a_, - typename call_traits::param_type b_, - typename call_traits::param_type c_, - typename call_traits::param_type d_, - typename call_traits::param_type e_, - typename call_traits::param_type f_, - typename call_traits::param_type g_ - ): a(a_), b(b_), c(c_), d(d_), e(e_), - f(f_), g(g_) {} - - template - tuple(TupleT const& init) - : a(init[tuple_index<0>()]), b(init[tuple_index<1>()]), - c(init[tuple_index<2>()]), d(init[tuple_index<3>()]), - e(init[tuple_index<4>()]), f(init[tuple_index<5>()]), - g(init[tuple_index<6>()]) - { BOOST_STATIC_ASSERT(TupleT::length == length); } - - A a; B b; C c; D d; E e; - F f; G g; -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// tuple <8 member> class -// -/////////////////////////////////////////////////////////////////////////////// -template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H> -struct tuple 9 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 12 - nil_t, nil_t, nil_t, -#endif -#endif - nil_t // Unused -> -: public tuple_base > { - - BOOST_STATIC_CONSTANT(int, length = 8); - typedef A a_type; typedef B b_type; - typedef C c_type; typedef D d_type; - typedef E e_type; typedef F f_type; - typedef G g_type; typedef H h_type; - - tuple() {} - - tuple( - typename call_traits::param_type a_, - typename call_traits::param_type b_, - typename call_traits::param_type c_, - typename call_traits::param_type d_, - typename call_traits::param_type e_, - typename call_traits::param_type f_, - typename call_traits::param_type g_, - typename call_traits::param_type h_ - ): a(a_), b(b_), c(c_), d(d_), e(e_), - f(f_), g(g_), h(h_) {} - - template - tuple(TupleT const& init) - : a(init[tuple_index<0>()]), b(init[tuple_index<1>()]), - c(init[tuple_index<2>()]), d(init[tuple_index<3>()]), - e(init[tuple_index<4>()]), f(init[tuple_index<5>()]), - g(init[tuple_index<6>()]), h(init[tuple_index<7>()]) - { BOOST_STATIC_ASSERT(TupleT::length == length); } - - A a; B b; C c; D d; E e; - F f; G g; H h; -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// tuple <9 member> class -// -/////////////////////////////////////////////////////////////////////////////// -template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I> -struct tuple 9 - nil_t, nil_t, nil_t, -#if PHOENIX_LIMIT > 12 - nil_t, nil_t, nil_t, -#endif -#endif - nil_t // Unused -> -: public tuple_base > { - - BOOST_STATIC_CONSTANT(int, length = 9); - typedef A a_type; typedef B b_type; - typedef C c_type; typedef D d_type; - typedef E e_type; typedef F f_type; - typedef G g_type; typedef H h_type; - typedef I i_type; - - tuple() {} - - tuple( - typename call_traits::param_type a_, - typename call_traits::param_type b_, - typename call_traits::param_type c_, - typename call_traits::param_type d_, - typename call_traits::param_type e_, - typename call_traits::param_type f_, - typename call_traits::param_type g_, - typename call_traits::param_type h_, - typename call_traits::param_type i_ - ): a(a_), b(b_), c(c_), d(d_), e(e_), - f(f_), g(g_), h(h_), i(i_) {} - - template - tuple(TupleT const& init) - : a(init[tuple_index<0>()]), b(init[tuple_index<1>()]), - c(init[tuple_index<2>()]), d(init[tuple_index<3>()]), - e(init[tuple_index<4>()]), f(init[tuple_index<5>()]), - g(init[tuple_index<6>()]), h(init[tuple_index<7>()]), - i(init[tuple_index<8>()]) - { BOOST_STATIC_ASSERT(TupleT::length == length); } - - A a; B b; C c; D d; E e; - F f; G g; H h; I i; -}; - -#if PHOENIX_LIMIT > 9 -/////////////////////////////////////////////////////////////////////////////// -// -// tuple <10 member> class -// -/////////////////////////////////////////////////////////////////////////////// -template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J> -struct tuple 12 - nil_t, nil_t, nil_t, -#endif - nil_t // Unused -> -: public tuple_base > { - - BOOST_STATIC_CONSTANT(int, length = 10); - typedef A a_type; typedef B b_type; - typedef C c_type; typedef D d_type; - typedef E e_type; typedef F f_type; - typedef G g_type; typedef H h_type; - typedef I i_type; typedef J j_type; - - tuple() {} - - tuple( - typename call_traits::param_type a_, - typename call_traits::param_type b_, - typename call_traits::param_type c_, - typename call_traits::param_type d_, - typename call_traits::param_type e_, - typename call_traits::param_type f_, - typename call_traits::param_type g_, - typename call_traits::param_type h_, - typename call_traits::param_type i_, - typename call_traits::param_type j_ - ): a(a_), b(b_), c(c_), d(d_), e(e_), - f(f_), g(g_), h(h_), i(i_), j(j_) {} - - template - tuple(TupleT const& init) - : a(init[tuple_index<0>()]), b(init[tuple_index<1>()]), - c(init[tuple_index<2>()]), d(init[tuple_index<3>()]), - e(init[tuple_index<4>()]), f(init[tuple_index<5>()]), - g(init[tuple_index<6>()]), h(init[tuple_index<7>()]), - i(init[tuple_index<8>()]), j(init[tuple_index<9>()]) - { BOOST_STATIC_ASSERT(TupleT::length == length); } - - A a; B b; C c; D d; E e; - F f; G g; H h; I i; J j; -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// tuple <11 member> class -// -/////////////////////////////////////////////////////////////////////////////// -template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, - typename K> -struct tuple 12 - nil_t, nil_t, nil_t, -#endif - nil_t // Unused -> -: public tuple_base > { - - BOOST_STATIC_CONSTANT(int, length = 11); - typedef A a_type; typedef B b_type; - typedef C c_type; typedef D d_type; - typedef E e_type; typedef F f_type; - typedef G g_type; typedef H h_type; - typedef I i_type; typedef J j_type; - typedef K k_type; - - tuple() {} - - tuple( - typename call_traits::param_type a_, - typename call_traits::param_type b_, - typename call_traits::param_type c_, - typename call_traits::param_type d_, - typename call_traits::param_type e_, - typename call_traits::param_type f_, - typename call_traits::param_type g_, - typename call_traits::param_type h_, - typename call_traits::param_type i_, - typename call_traits::param_type j_, - typename call_traits::param_type k_ - ): a(a_), b(b_), c(c_), d(d_), e(e_), - f(f_), g(g_), h(h_), i(i_), j(j_), - k(k_) {} - - template - tuple(TupleT const& init) - : a(init[tuple_index<0>()]), b(init[tuple_index<1>()]), - c(init[tuple_index<2>()]), d(init[tuple_index<3>()]), - e(init[tuple_index<4>()]), f(init[tuple_index<5>()]), - g(init[tuple_index<6>()]), h(init[tuple_index<7>()]), - i(init[tuple_index<8>()]), j(init[tuple_index<9>()]), - k(init[tuple_index<10>()]) - { BOOST_STATIC_ASSERT(TupleT::length == length); } - - A a; B b; C c; D d; E e; - F f; G g; H h; I i; J j; - K k; -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// tuple <12 member> class -// -/////////////////////////////////////////////////////////////////////////////// -template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, - typename K, typename L> -struct tuple 12 - nil_t, nil_t, nil_t, -#endif - nil_t // Unused -> -: public tuple_base > { - - BOOST_STATIC_CONSTANT(int, length = 12); - typedef A a_type; typedef B b_type; - typedef C c_type; typedef D d_type; - typedef E e_type; typedef F f_type; - typedef G g_type; typedef H h_type; - typedef I i_type; typedef J j_type; - typedef K k_type; typedef L l_type; - - tuple() {} - - tuple( - typename call_traits::param_type a_, - typename call_traits::param_type b_, - typename call_traits::param_type c_, - typename call_traits::param_type d_, - typename call_traits::param_type e_, - typename call_traits::param_type f_, - typename call_traits::param_type g_, - typename call_traits::param_type h_, - typename call_traits::param_type i_, - typename call_traits::param_type j_, - typename call_traits::param_type k_, - typename call_traits::param_type l_ - ): a(a_), b(b_), c(c_), d(d_), e(e_), - f(f_), g(g_), h(h_), i(i_), j(j_), - k(k_), l(l_) {} - - template - tuple(TupleT const& init) - : a(init[tuple_index<0>()]), b(init[tuple_index<1>()]), - c(init[tuple_index<2>()]), d(init[tuple_index<3>()]), - e(init[tuple_index<4>()]), f(init[tuple_index<5>()]), - g(init[tuple_index<6>()]), h(init[tuple_index<7>()]), - i(init[tuple_index<8>()]), j(init[tuple_index<9>()]), - k(init[tuple_index<10>()]), l(init[tuple_index<11>()]) - { BOOST_STATIC_ASSERT(TupleT::length == length); } - - A a; B b; C c; D d; E e; - F f; G g; H h; I i; J j; - K k; L l; -}; - -#if PHOENIX_LIMIT > 12 -/////////////////////////////////////////////////////////////////////////////// -// -// tuple <13 member> class -// -/////////////////////////////////////////////////////////////////////////////// -template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, - typename K, typename L, typename M> -struct tuple -: public tuple_base< - tuple > { - - BOOST_STATIC_CONSTANT(int, length = 13); - typedef A a_type; typedef B b_type; - typedef C c_type; typedef D d_type; - typedef E e_type; typedef F f_type; - typedef G g_type; typedef H h_type; - typedef I i_type; typedef J j_type; - typedef K k_type; typedef L l_type; - typedef M m_type; - - tuple() {} - - tuple( - typename call_traits::param_type a_, - typename call_traits::param_type b_, - typename call_traits::param_type c_, - typename call_traits::param_type d_, - typename call_traits::param_type e_, - typename call_traits::param_type f_, - typename call_traits::param_type g_, - typename call_traits::param_type h_, - typename call_traits::param_type i_, - typename call_traits::param_type j_, - typename call_traits::param_type k_, - typename call_traits::param_type l_, - typename call_traits::param_type m_ - ): a(a_), b(b_), c(c_), d(d_), e(e_), - f(f_), g(g_), h(h_), i(i_), j(j_), - k(k_), l(l_), m(m_) {} - - template - tuple(TupleT const& init) - : a(init[tuple_index<0>()]), b(init[tuple_index<1>()]), - c(init[tuple_index<2>()]), d(init[tuple_index<3>()]), - e(init[tuple_index<4>()]), f(init[tuple_index<5>()]), - g(init[tuple_index<6>()]), h(init[tuple_index<7>()]), - i(init[tuple_index<8>()]), j(init[tuple_index<9>()]), - k(init[tuple_index<10>()]), l(init[tuple_index<11>()]), - m(init[tuple_index<12>()]) - { BOOST_STATIC_ASSERT(TupleT::length == length); } - - A a; B b; C c; D d; E e; - F f; G g; H h; I i; J j; - K k; L l; M m; -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// tuple <14 member> class -// -/////////////////////////////////////////////////////////////////////////////// -template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, - typename K, typename L, typename M, typename N> -struct tuple -: public tuple_base< - tuple > { - - BOOST_STATIC_CONSTANT(int, length = 14); - typedef A a_type; typedef B b_type; - typedef C c_type; typedef D d_type; - typedef E e_type; typedef F f_type; - typedef G g_type; typedef H h_type; - typedef I i_type; typedef J j_type; - typedef K k_type; typedef L l_type; - typedef M m_type; typedef N n_type; - - tuple() {} - - tuple( - typename call_traits::param_type a_, - typename call_traits::param_type b_, - typename call_traits::param_type c_, - typename call_traits::param_type d_, - typename call_traits::param_type e_, - typename call_traits::param_type f_, - typename call_traits::param_type g_, - typename call_traits::param_type h_, - typename call_traits::param_type i_, - typename call_traits::param_type j_, - typename call_traits::param_type k_, - typename call_traits::param_type l_, - typename call_traits::param_type m_, - typename call_traits::param_type n_ - ): a(a_), b(b_), c(c_), d(d_), e(e_), - f(f_), g(g_), h(h_), i(i_), j(j_), - k(k_), l(l_), m(m_), n(n_) {} - - template - tuple(TupleT const& init) - : a(init[tuple_index<0>()]), b(init[tuple_index<1>()]), - c(init[tuple_index<2>()]), d(init[tuple_index<3>()]), - e(init[tuple_index<4>()]), f(init[tuple_index<5>()]), - g(init[tuple_index<6>()]), h(init[tuple_index<7>()]), - i(init[tuple_index<8>()]), j(init[tuple_index<9>()]), - k(init[tuple_index<10>()]), l(init[tuple_index<11>()]), - m(init[tuple_index<12>()]), n(init[tuple_index<13>()]) - { BOOST_STATIC_ASSERT(TupleT::length == length); } - - A a; B b; C c; D d; E e; - F f; G g; H h; I i; J j; - K k; L l; M m; N n; -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// tuple <15 member> class -// -/////////////////////////////////////////////////////////////////////////////// -template < - typename A, typename B, typename C, typename D, typename E, - typename F, typename G, typename H, typename I, typename J, - typename K, typename L, typename M, typename N, typename O> -struct tuple -: public tuple_base< - tuple > { - - BOOST_STATIC_CONSTANT(int, length = 15); - typedef A a_type; typedef B b_type; - typedef C c_type; typedef D d_type; - typedef E e_type; typedef F f_type; - typedef G g_type; typedef H h_type; - typedef I i_type; typedef J j_type; - typedef K k_type; typedef L l_type; - typedef M m_type; typedef N n_type; - typedef O o_type; - - tuple() {} - - tuple( - typename call_traits::param_type a_, - typename call_traits::param_type b_, - typename call_traits::param_type c_, - typename call_traits::param_type d_, - typename call_traits::param_type e_, - typename call_traits::param_type f_, - typename call_traits::param_type g_, - typename call_traits::param_type h_, - typename call_traits::param_type i_, - typename call_traits::param_type j_, - typename call_traits::param_type k_, - typename call_traits::param_type l_, - typename call_traits::param_type m_, - typename call_traits::param_type n_, - typename call_traits::param_type o_ - ): a(a_), b(b_), c(c_), d(d_), e(e_), - f(f_), g(g_), h(h_), i(i_), j(j_), - k(k_), l(l_), m(m_), n(n_), o(o_) {} - - template - tuple(TupleT const& init) - : a(init[tuple_index<0>()]), b(init[tuple_index<1>()]), - c(init[tuple_index<2>()]), d(init[tuple_index<3>()]), - e(init[tuple_index<4>()]), f(init[tuple_index<5>()]), - g(init[tuple_index<6>()]), h(init[tuple_index<7>()]), - i(init[tuple_index<8>()]), j(init[tuple_index<9>()]), - k(init[tuple_index<10>()]), l(init[tuple_index<11>()]), - m(init[tuple_index<12>()]), n(init[tuple_index<13>()]), - o(init[tuple_index<14>()]) - { BOOST_STATIC_ASSERT(TupleT::length == length); } - - A a; B b; C c; D d; E e; - F f; G g; H h; I i; J j; - K k; L l; M m; N n; O o; -}; - -#endif -#endif -#endif -#endif - -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -#pragma warning(pop) -#endif - -/////////////////////////////////////////////////////////////////////////////// -} // namespace phoenix - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/symbols.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/symbols.hpp deleted file mode 100644 index d65d70b2a780..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/symbols.hpp +++ /dev/null @@ -1,21 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2003 Joel de Guzman - http://spirit.sourceforge.net/ - - 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_SYMBOLS_MAIN_HPP) -#define BOOST_SPIRIT_SYMBOLS_MAIN_HPP - -#include - -/////////////////////////////////////////////////////////////////////////////// -// -// Master header for Spirit.Symbols -// -/////////////////////////////////////////////////////////////////////////////// - -#include - -#endif // !defined(BOOST_SPIRIT_SYMBOLS_MAIN_HPP) diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/symbols/impl/symbols.ipp b/framework/contrib/boost/include/boost/spirit/home/classic/symbols/impl/symbols.ipp deleted file mode 100644 index 561341a16c6f..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/symbols/impl/symbols.ipp +++ /dev/null @@ -1,118 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2003 Joel de Guzman - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_SYMBOLS_IPP -#define BOOST_SPIRIT_SYMBOLS_IPP - -/////////////////////////////////////////////////////////////////////////////// -#include -#include - -// MSVC: void warning about the use of 'this' pointer in constructors -#if defined(BOOST_MSVC) -#pragma warning(push) -#pragma warning(disable : 4355) -#endif - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -/////////////////////////////////////////////////////////////////////////////// -// -// symbols class implementation -// -/////////////////////////////////////////////////////////////////////////////// -template -inline symbols::symbols() -: SetT() -, add(*this) -{ -} - -////////////////////////////////// -template -symbols::symbols(symbols const& other) -: SetT(other) -// Tru64 CXX seems to be confused by the explicit call of the default -// constructor and generates wrong code which invalidates the just contructed -// first base class in the line above. -#if !BOOST_WORKAROUND(__DECCXX_VER, BOOST_TESTED_AT(60590041)) -, parser >() -#endif -, add(*this) -{ -} - -////////////////////////////////// -template -inline symbols::~symbols() -{} - -////////////////////////////////// -template -inline symbols& -symbols::operator=(symbols const& other) -{ - SetT::operator=(other); - return *this; -} - -////////////////////////////////// -template -inline symbol_inserter const& -symbols::operator=(CharT const* str) -{ - return add, str; -} - -/////////////////////////////////////////////////////////////////////////////// -// -// Symbol table utilities -// -/////////////////////////////////////////////////////////////////////////////// -template -inline T* -find(symbols const& table, CharT const* sym) -{ - CharT const* last = sym; - while (*last) - last++; - scanner scan(sym, last); - T* result = table.find(scan); - return scan.at_end()? result: 0; -} - -////////////////////////////////// -template -inline T* -add(symbols& table, CharT const* sym, T const& data) -{ - CharT const* first = sym; - CharT const* last = sym; - while (*last) - last++; - scanner scan(first, last); - if (table.find(scan) && scan.at_end()) - return 0; // symbol already contained in symbol table - table.add(sym, last, data); - first = sym; - return table.find(scan); // refind the inserted symbol -} - -/////////////////////////////////////////////////////////////////////////////// -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace boost::spirit - -#if defined(BOOST_MSVC) -#pragma warning(pop) -#endif - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/symbols/impl/tst.ipp b/framework/contrib/boost/include/boost/spirit/home/classic/symbols/impl/tst.ipp deleted file mode 100644 index 60932c94ce7a..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/symbols/impl/tst.ipp +++ /dev/null @@ -1,281 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2003 Joel de Guzman - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_TST_IPP -#define BOOST_SPIRIT_TST_IPP - -/////////////////////////////////////////////////////////////////////////////// -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - namespace impl - { - -/////////////////////////////////////////////////////////////////////////////// -// -// tst class -// -// Ternary Search Tree implementation. The data structure is faster than -// hashing for many typical search problems especially when the search -// interface is iterator based. Searching for a string of length k in a -// ternary search tree with n strings will require at most O(log n+k) -// character comparisons. TSTs are many times faster than hash tables -// for unsuccessful searches since mismatches are discovered earlier -// after examining only a few characters. Hash tables always examine an -// entire key when searching. -// -// For details see http://www.cs.princeton.edu/~rs/strings/. -// -// *** This is a low level class and is -// not meant for public consumption *** -// -/////////////////////////////////////////////////////////////////////////////// - template - struct tst_node - { - tst_node(CharT value_) - : value(value_) - , left(0) - , right(0) - { middle.link = 0; } - - ~tst_node() - { - delete left; - delete right; - if (value) - delete middle.link; - else - delete middle.data; - } - - tst_node* - clone() const - { - boost::movelib::unique_ptr copy(new tst_node(value)); - - if (left) - copy->left = left->clone(); - if (right) - copy->right = right->clone(); - - if (value && middle.link) - { - copy->middle.link = middle.link->clone(); - } - else - { - boost::movelib::unique_ptr mid_data(new T(*middle.data)); - copy->middle.data = mid_data.release(); - } - - return copy.release(); - } - - union center { - - tst_node* link; - T* data; - }; - - CharT value; - tst_node* left; - center middle; - tst_node* right; - }; - - /////////////////////////////////////////////////////////////////////////// - template - class tst - { - public: - - struct search_info - { - T* data; - std::size_t length; - }; - - tst() - : root(0) {} - - tst(tst const& other) - : root(other.root ? other.root->clone() : 0) {} - - ~tst() - { delete root; } - - tst& - operator=(tst const& other) - { - if (this != &other) - { - node_t* new_root = other.root ? other.root->clone() : 0; - delete root; - root = new_root; - } - return *this; - } - - template - T* add(IteratorT first, IteratorT const& last, T const& data) - { - if (first == last) - return 0; - - node_t** np = &root; - CharT ch = *first; - - BOOST_SPIRIT_ASSERT((first == last || ch != 0) - && "Won't add string containing null character"); - - for (;;) - { - if (*np == 0 || ch == 0) - { - node_t* right = 0; - if (np != 0) - right = *np; - *np = new node_t(ch); - if (right) - (**np).right = right; - } - - if (ch < (**np).value) - { - np = &(**np).left; - } - else - { - if (ch == (**np).value) - { - if (ch == 0) - { - if ((**np).middle.data == 0) - { - (**np).middle.data = new T(data); - return (**np).middle.data; - } - else - { - // re-addition is disallowed - return 0; - } - } - ++first; - ch = (first == last) ? CharT(0) : *first; - BOOST_SPIRIT_ASSERT((first == last || ch != 0) - && "Won't add string containing null character"); - np = &(**np).middle.link; - } - else - { - np = &(**np).right; - } - } - } - } - - template - search_info find(ScannerT const& scan) const - { - search_info result = { 0, 0 }; - if (scan.at_end()) { - return result; - } - - typedef typename ScannerT::iterator_t iterator_t; - node_t* np = root; - CharT ch = *scan; - iterator_t save = scan.first; - iterator_t latest = scan.first; - std::size_t latest_len = 0; - - while (np) - { - - if (ch < np->value) // => go left! - { - if (np->value == 0) - { - result.data = np->middle.data; - if (result.data) - { - latest = scan.first; - latest_len = result.length; - } - } - - np = np->left; - } - else if (ch == np->value) // => go middle! - { - // Matching the null character is not allowed. - if (np->value == 0) - { - result.data = np->middle.data; - if (result.data) - { - latest = scan.first; - latest_len = result.length; - } - break; - } - - ++scan; - ch = scan.at_end() ? CharT(0) : *scan; - np = np->middle.link; - ++result.length; - } - else // (ch > np->value) => go right! - { - if (np->value == 0) - { - result.data = np->middle.data; - if (result.data) - { - latest = scan.first; - latest_len = result.length; - } - } - - np = np->right; - } - } - - if (result.data == 0) - { - scan.first = save; - } - else - { - scan.first = latest; - result.length = latest_len; - } - return result; - } - - private: - - typedef tst_node node_t; - node_t* root; - }; - -/////////////////////////////////////////////////////////////////////////////// - } // namespace impl - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace boost::spirit - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/symbols/symbols.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/symbols/symbols.hpp deleted file mode 100644 index 8605585685eb..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/symbols/symbols.hpp +++ /dev/null @@ -1,229 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2003 Joel de Guzman - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_SYMBOLS_HPP -#define BOOST_SPIRIT_SYMBOLS_HPP - -/////////////////////////////////////////////////////////////////////////////// -#include - -#include - -#include -#include -#include - -#include - - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -/////////////////////////////////////////////////////////////////////////////// -// -// symbols class -// -// This class implements a symbol table. The symbol table holds a -// dictionary of symbols where each symbol is a sequence of CharTs. -// The template class can work efficiently with 8, 16 and 32 bit -// characters. Mutable data of type T is associated with each -// symbol. -// -// The class is a parser. The parse member function returns -// additional information in the symbol_match class (see below). -// The additional data is a pointer to some data associated with -// the matching symbol. -// -// The actual set implementation is supplied by the SetT template -// parameter. By default, this uses the tst class (see tst.ipp). -// -// Symbols are added into the symbol table statically using the -// construct: -// -// sym = a, b, c, d ...; -// -// where sym is a symbol table and a..d are strings. Example: -// -// sym = "pineapple", "orange", "banana", "apple"; -// -// Alternatively, symbols may be added dynamically through the -// member functor 'add' (see symbol_inserter below). The member -// functor 'add' may be attached to a parser as a semantic action -// taking in a begin/end pair: -// -// p[sym.add] -// -// where p is a parser (and sym is a symbol table). On success, -// the matching portion of the input is added to the symbol table. -// -// 'add' may also be used to directly initialize data. Examples: -// -// sym.add("hello", 1)("crazy", 2)("world", 3); -// -/////////////////////////////////////////////////////////////////////////////// -template -class symbols -: private SetT -, public parser > -{ -public: - - typedef parser > parser_base_t; - typedef symbols self_t; - typedef self_t const& embed_t; - typedef T symbol_data_t; - typedef boost::reference_wrapper symbol_ref_t; - - symbols(); - symbols(symbols const& other); - ~symbols(); - - symbols& - operator=(symbols const& other); - - symbol_inserter const& - operator=(CharT const* str); - - template - struct result - { - typedef typename match_result::type type; - }; - - template - typename parser_result::type - parse_main(ScannerT const& scan) const - { - typedef typename ScannerT::iterator_t iterator_t; - iterator_t first = scan.first; - typename SetT::search_info result = SetT::find(scan); - - if (result.data) - return scan. - create_match( - result.length, - symbol_ref_t(*result.data), - first, - scan.first); - else - return scan.no_match(); - } - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - typedef typename parser_result::type result_t; - return impl::implicit_lexeme_parse - (*this, scan, scan); - } - - template < typename ScannerT > - T* find(ScannerT const& scan) const - { return SetT::find(scan).data; } - - symbol_inserter const add; -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// Symbol table utilities -// -// add -// -// adds a symbol 'sym' (string) to a symbol table 'table' plus an -// optional data 'data' associated with the symbol. Returns a pointer to -// the data associated with the symbol or NULL if add failed (e.g. when -// the symbol is already added before). -// -// find -// -// finds a symbol 'sym' (string) from a symbol table 'table'. Returns a -// pointer to the data associated with the symbol or NULL if not found -// -/////////////////////////////////////////////////////////////////////////////// -template -T* add(symbols& table, CharT const* sym, T const& data = T()); - -template -T* find(symbols const& table, CharT const* sym); - -/////////////////////////////////////////////////////////////////////////////// -// -// symbol_inserter class -// -// The symbols class holds an instance of this class named 'add'. -// This can be called directly just like a member function, -// passing in a first/last iterator and optional data: -// -// sym.add(first, last, data); -// -// Or, passing in a C string and optional data: -// -// sym.add(c_string, data); -// -// where sym is a symbol table. The 'data' argument is optional. -// This may also be used as a semantic action since it conforms -// to the action interface (see action.hpp): -// -// p[sym.add] -// -/////////////////////////////////////////////////////////////////////////////// -template -class symbol_inserter -{ -public: - - symbol_inserter(SetT& set_) - : set(set_) {} - - typedef symbol_inserter const & result_type; - - template - symbol_inserter const& - operator()(IteratorT first, IteratorT const& last, T const& data = T()) const - { - set.add(first, last, data); - return *this; - } - - template - symbol_inserter const& - operator()(CharT const* str, T const& data = T()) const - { - CharT const* last = str; - while (*last) - last++; - set.add(str, last, data); - return *this; - } - - template - symbol_inserter const& - operator,(CharT const* str) const - { - CharT const* last = str; - while (*last) - last++; - set.add(str, last, T()); - return *this; - } - -private: - - SetT& set; -}; - -/////////////////////////////////////////////////////////////////////////////// -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#include -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/symbols/symbols_fwd.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/symbols/symbols_fwd.hpp deleted file mode 100644 index 402c319aed1a..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/symbols/symbols_fwd.hpp +++ /dev/null @@ -1,39 +0,0 @@ -/*============================================================================= - Copyright (c) 2006 Tobias Schwinger - http://spirit.sourceforge.net/ - - 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_SYMBOLS_FWD_HPP) -#define BOOST_SPIRIT_SYMBOLS_FWD_HPP - -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - namespace impl - { - template - class tst; - } - - template - < - typename T = int, - typename CharT = char, - typename SetT = impl::tst - > - class symbols; - - template - class symbol_inserter; - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/symbols/typeof.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/symbols/typeof.hpp deleted file mode 100644 index c1631102a923..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/symbols/typeof.hpp +++ /dev/null @@ -1,25 +0,0 @@ -/*============================================================================= - Copyright (c) 2006 Tobias Schwinger - http://spirit.sourceforge.net/ - - 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_SYMBOLS_TYPEOF_HPP) -#define BOOST_SPIRIT_SYMBOLS_TYPEOF_HPP - -#include - -#include - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::symbols,3) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::symbol_inserter,2) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::impl::tst,2) - -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::symbols,2) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::symbols,1) - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/tree/ast.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/tree/ast.hpp deleted file mode 100644 index 7fa871d5ce9e..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/tree/ast.hpp +++ /dev/null @@ -1,387 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2003 Daniel Nuffer - Copyright (c) 2001-2007 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_TREE_AST_HPP -#define BOOST_SPIRIT_TREE_AST_HPP - -#include -#include -#include - -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -////////////////////////////////// -// ast_match_policy is simply an id so the correct specialization of -// tree_policy can be found. -template < - typename IteratorT, - typename NodeFactoryT, - typename T -> -struct ast_match_policy : - public common_tree_match_policy< - ast_match_policy, - IteratorT, - NodeFactoryT, - ast_tree_policy< - ast_match_policy, - NodeFactoryT, - T - >, - T - > -{ - typedef - common_tree_match_policy< - ast_match_policy, - IteratorT, - NodeFactoryT, - ast_tree_policy< - ast_match_policy, - NodeFactoryT, - T - >, - T - > - common_tree_match_policy_; - - ast_match_policy() - { - } - - template - ast_match_policy(PolicyT const & policies) - : common_tree_match_policy_(policies) - { - } -}; - -////////////////////////////////// -template -struct ast_tree_policy : - public common_tree_tree_policy -{ - typedef typename MatchPolicyT::match_t match_t; - typedef typename MatchPolicyT::iterator_t iterator_t; - - template - static void concat(MatchAT& a, MatchBT const& b) - { - BOOST_SPIRIT_ASSERT(a && b); - -#if defined(BOOST_SPIRIT_DEBUG) && \ - (BOOST_SPIRIT_DEBUG_FLAGS & BOOST_SPIRIT_DEBUG_FLAGS_NODES) - BOOST_SPIRIT_DEBUG_OUT << "\n>>>AST concat. a = " << a << - "\n\tb = " << b << "<<<\n"; -#endif - typedef typename tree_match::container_t - container_t; - - // test for size() is necessary, because no_tree_gen_node leaves a.trees - // and/or b.trees empty - if (0 != b.trees.size() && b.trees.begin()->value.is_root()) - { - BOOST_SPIRIT_ASSERT(b.trees.size() == 1); - - container_t tmp; - std::swap(a.trees, tmp); // save a into tmp - std::swap(b.trees, a.trees); // make b.trees[0] be new root (a.trees[0]) - container_t* pnon_root_trees = &a.trees; - while (pnon_root_trees->size() > 0 && - pnon_root_trees->begin()->value.is_root()) - { - pnon_root_trees = & pnon_root_trees->begin()->children; - } - pnon_root_trees->insert(pnon_root_trees->begin(), - tmp.begin(), tmp.end()); - } - else if (0 != a.trees.size() && a.trees.begin()->value.is_root()) - { - BOOST_SPIRIT_ASSERT(a.trees.size() == 1); - -#if !defined(BOOST_SPIRIT_USE_LIST_FOR_TREES) - a.trees.begin()->children.reserve(a.trees.begin()->children.size() + b.trees.size()); -#endif - std::copy(b.trees.begin(), - b.trees.end(), - std::back_insert_iterator( - a.trees.begin()->children)); - } - else - { -#if !defined(BOOST_SPIRIT_USE_LIST_FOR_TREES) - a.trees.reserve(a.trees.size() + b.trees.size()); -#endif - std::copy(b.trees.begin(), - b.trees.end(), - std::back_insert_iterator(a.trees)); - } - -#if defined(BOOST_SPIRIT_DEBUG) && \ - (BOOST_SPIRIT_DEBUG_FLAGS & BOOST_SPIRIT_DEBUG_FLAGS_NODES) - BOOST_SPIRIT_DEBUG_OUT << ">>>after AST concat. a = " << a << "<<<\n\n"; -#endif - - return; - } - - template - static void group_match(MatchT& m, parser_id const& id, - Iterator1T const& first, Iterator2T const& last) - { - if (!m) - return; - - typedef typename tree_match::container_t - container_t; - typedef typename container_t::iterator cont_iterator_t; - typedef typename NodeFactoryT::template factory factory_t; - - if (m.trees.size() == 1 -#ifdef BOOST_SPIRIT_NO_TREE_NODE_COLLAPSING - && !(id.to_long() && m.trees.begin()->value.id().to_long()) -#endif - ) - { - // set rule_id's. There may have been multiple nodes created. - // Because of root_node[] they may be left-most children of the top - // node. - container_t* punset_id = &m.trees; - while (punset_id->size() > 0 && - punset_id->begin()->value.id() == 0) - { - punset_id->begin()->value.id(id); - punset_id = &punset_id->begin()->children; - } - - m.trees.begin()->value.is_root(false); - } - else - { - match_t newmatch(m.length(), - m.trees.empty() ? - factory_t::empty_node() : - factory_t::create_node(first, last, false)); - - std::swap(newmatch.trees.begin()->children, m.trees); - // set this node and all it's unset children's rule_id - newmatch.trees.begin()->value.id(id); - for (cont_iterator_t i = newmatch.trees.begin(); - i != newmatch.trees.end(); - ++i) - { - if (i->value.id() == 0) - i->value.id(id); - } - m = newmatch; - } - } - - template - static void apply_op_to_match(FunctorT const& op, MatchT& m) - { - op(m); - } -}; - -namespace impl { - - template - struct tree_policy_selector > - { - typedef ast_tree_policy< - ast_match_policy, - NodeFactoryT, - T - > type; - }; - -} // namespace impl - - -////////////////////////////////// -struct gen_ast_node_parser_gen; - -template -struct gen_ast_node_parser -: public unary > > -{ - typedef gen_ast_node_parser self_t; - typedef gen_ast_node_parser_gen parser_generator_t; - typedef unary_parser_category parser_category_t; - - gen_ast_node_parser(T const& a) - : unary > >(a) {} - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - typedef typename ScannerT::iteration_policy_t iteration_policy_t; - typedef typename ScannerT::match_policy_t::iterator_t iterator_t; - typedef typename ScannerT::match_policy_t::factory_t factory_t; - typedef ast_match_policy match_policy_t; - typedef typename ScannerT::action_policy_t action_policy_t; - typedef scanner_policies< - iteration_policy_t, - match_policy_t, - action_policy_t - > policies_t; - - return this->subject().parse(scan.change_policies(policies_t(scan))); - } -}; - -////////////////////////////////// -struct gen_ast_node_parser_gen -{ - template - struct result { - - typedef gen_ast_node_parser type; - }; - - template - static gen_ast_node_parser - generate(parser const& s) - { - return gen_ast_node_parser(s.derived()); - } - - template - gen_ast_node_parser - operator[](parser const& s) const - { - return gen_ast_node_parser(s.derived()); - } -}; - -////////////////////////////////// -const gen_ast_node_parser_gen gen_ast_node_d = gen_ast_node_parser_gen(); - - -////////////////////////////////// -struct root_node_op -{ - template - void operator()(MatchT& m) const - { - BOOST_SPIRIT_ASSERT(m.trees.size() > 0); - m.trees.begin()->value.is_root(true); - } -}; - -const node_parser_gen root_node_d = - node_parser_gen(); - -/////////////////////////////////////////////////////////////////////////////// -// -// Parse functions for ASTs -// -/////////////////////////////////////////////////////////////////////////////// -template < - typename AstFactoryT, typename IteratorT, typename ParserT, - typename SkipT -> -inline tree_parse_info -ast_parse( - IteratorT const& first_, - IteratorT const& last_, - parser const& parser, - SkipT const& skip_, - AstFactoryT const & /*dummy_*/ = AstFactoryT()) -{ - typedef skip_parser_iteration_policy it_policy_t; - typedef ast_match_policy ast_match_policy_t; - typedef - scanner_policies - scan_policies_t; - typedef scanner scanner_t; - - it_policy_t iter_policy(skip_); - scan_policies_t policies(iter_policy); - IteratorT first = first_; - scanner_t scan(first, last_, policies); - tree_match hit = parser.derived().parse(scan); - return tree_parse_info( - first, hit, hit && (first == last_), hit.length(), hit.trees); -} - -////////////////////////////////// -template -inline tree_parse_info -ast_parse( - IteratorT const& first_, - IteratorT const& last_, - parser const& parser, - SkipT const& skip_) -{ - typedef node_val_data_factory default_factory_t; - return ast_parse(first_, last_, parser, skip_, default_factory_t()); -} - -////////////////////////////////// -template -inline tree_parse_info -ast_parse( - IteratorT const& first_, - IteratorT const& last, - parser const& parser) -{ - typedef ast_match_policy ast_match_policy_t; - IteratorT first = first_; - scanner< - IteratorT, - scanner_policies - > scan(first, last); - tree_match hit = parser.derived().parse(scan); - return tree_parse_info( - first, hit, hit && (first == last), hit.length(), hit.trees); -} - -////////////////////////////////// -template -inline tree_parse_info -ast_parse( - CharT const* str, - parser const& parser, - SkipT const& skip) -{ - CharT const* last = str; - while (*last) - last++; - return ast_parse(str, last, parser, skip); -} - -////////////////////////////////// -template -inline tree_parse_info -ast_parse( - CharT const* str, - parser const& parser) -{ - CharT const* last = str; - while (*last) - { - last++; - } - return ast_parse(str, last, parser); -} - -/////////////////////////////////////////////////////////////////////////////// -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/tree/ast_fwd.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/tree/ast_fwd.hpp deleted file mode 100644 index 71ef91b0f562..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/tree/ast_fwd.hpp +++ /dev/null @@ -1,42 +0,0 @@ -/*============================================================================= - Copyright (c) 2006 Tobias Schwinger - http://spirit.sourceforge.net/ - - 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_TREE_AST_FWD_HPP) -#define BOOST_SPIRIT_TREE_AST_FWD_HPP - -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - template < - typename MatchPolicyT, - typename NodeFactoryT, - typename T = nil_t - > - struct ast_tree_policy; - - template < - typename IteratorT, - typename NodeFactoryT = node_val_data_factory, - typename T = nil_t - > - struct ast_match_policy; - - template - struct gen_ast_node_parser; - - struct root_node_op; - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/tree/common.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/tree/common.hpp deleted file mode 100644 index 879793cb8f52..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/tree/common.hpp +++ /dev/null @@ -1,1572 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2003 Daniel Nuffer - Copyright (c) 2001-2007 Hartmut Kaiser - Revised 2007, Copyright (c) Tobias Schwinger - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_TREE_COMMON_HPP -#define BOOST_SPIRIT_TREE_COMMON_HPP - -#if !defined(BOOST_SPIRIT_USE_LIST_FOR_TREES) -#include -#else -#include -#endif - -#if defined(BOOST_SPIRIT_USE_BOOST_ALLOCATOR_FOR_TREES) -#include -#endif - -#include - -#include -#include -#include -#include -#include - -#if defined(BOOST_SPIRIT_DEBUG) && \ - (BOOST_SPIRIT_DEBUG_FLAGS & BOOST_SPIRIT_DEBUG_FLAGS_NODES) -#include -#include -#endif - -#include - -#include // for std::iterator_traits, std::distance - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -template -void swap(tree_node& a, tree_node& b); - -template -void swap(node_iter_data& a, node_iter_data& b); - -namespace impl { - template - inline void cp_swap(T& t1, T& t2); -} - -template -struct tree_node -{ - typedef T parse_node_t; - -#if !defined(BOOST_SPIRIT_USE_BOOST_ALLOCATOR_FOR_TREES) - typedef std::allocator > allocator_type; -#elif !defined(BOOST_SPIRIT_USE_LIST_FOR_TREES) - typedef boost::pool_allocator > allocator_type; -#else - typedef boost::fast_pool_allocator > allocator_type; -#endif - -#if !defined(BOOST_SPIRIT_USE_LIST_FOR_TREES) - typedef std::vector, allocator_type> children_t; -#else - typedef std::list, allocator_type> children_t; -#endif // BOOST_SPIRIT_USE_LIST_FOR_TREES - - typedef typename children_t::iterator tree_iterator; - typedef typename children_t::const_iterator const_tree_iterator; - - T value; - children_t children; - - tree_node() - : value() - , children() - {} - - explicit tree_node(T const& v) - : value(v) - , children() - {} - - tree_node(T const& v, children_t const& c) - : value(v) - , children(c) - {} - - void swap(tree_node& x) - { - impl::cp_swap(value, x.value); - impl::cp_swap(children, x.children); - } -}; - -#if defined(BOOST_SPIRIT_DEBUG) && \ - (BOOST_SPIRIT_DEBUG_FLAGS & BOOST_SPIRIT_DEBUG_FLAGS_NODES) -template -inline std::ostream& -operator<<(std::ostream& o, tree_node const& n) -{ - static int depth = 0; - o << "\n"; - for (int i = 0; i <= depth; ++i) - { - o << "\t"; - } - o << "(depth = " << depth++ << " value = " << n.value; - int c = 0; - for (typename tree_node::children_t::const_iterator it = n.children.begin(); - it != n.children.end(); ++it) - { - o << " children[" << c++ << "] = " << *it; - } - o << ")"; - --depth; - return o; -} -#endif - -////////////////////////////////// -template -struct node_iter_data -{ - typedef IteratorT iterator_t; - typedef IteratorT /*const*/ const_iterator_t; - - node_iter_data() - : first(), last(), is_root_(false), parser_id_(), value_() - {} - - node_iter_data(IteratorT const& _first, IteratorT const& _last) - : first(_first), last(_last), is_root_(false), parser_id_(), value_() - {} - - void swap(node_iter_data& x) - { - impl::cp_swap(first, x.first); - impl::cp_swap(last, x.last); - impl::cp_swap(parser_id_, x.parser_id_); - impl::cp_swap(is_root_, x.is_root_); - impl::cp_swap(value_, x.value_); - } - - IteratorT begin() - { - return first; - } - - IteratorT const& begin() const - { - return first; - } - - IteratorT end() - { - return last; - } - - IteratorT const& end() const - { - return last; - } - - bool is_root() const - { - return is_root_; - } - - void is_root(bool b) - { - is_root_ = b; - } - - parser_id id() const - { - return parser_id_; - } - - void id(parser_id r) - { - parser_id_ = r; - } - - ValueT const& value() const - { - return value_; - } - - void value(ValueT const& v) - { - value_ = v; - } -private: - IteratorT first, last; - bool is_root_; - parser_id parser_id_; - ValueT value_; - -public: -}; - -#if defined(BOOST_SPIRIT_DEBUG) && \ - (BOOST_SPIRIT_DEBUG_FLAGS & BOOST_SPIRIT_DEBUG_FLAGS_NODES) -// value is default nil_t, so provide an operator<< for nil_t -inline std::ostream& -operator<<(std::ostream& o, nil_t const&) -{ - return o; -} - -template -inline std::ostream& -operator<<(std::ostream& o, node_iter_data const& n) -{ - o << "(id = " << n.id() << " text = \""; - typedef typename node_iter_data::const_iterator_t - iterator_t; - for (iterator_t it = n.begin(); it != n.end(); ++it) - impl::token_printer(o, *it); - o << "\" is_root = " << n.is_root() - << /*" value = " << n.value() << */")"; - return o; -} -#endif - -////////////////////////////////// -template -struct node_val_data -{ - typedef - typename std::iterator_traits::value_type - value_type; - -#if !defined(BOOST_SPIRIT_USE_BOOST_ALLOCATOR_FOR_TREES) - typedef std::allocator allocator_type; -#elif !defined(BOOST_SPIRIT_USE_LIST_FOR_TREES) - typedef boost::pool_allocator allocator_type; -#else - typedef boost::fast_pool_allocator allocator_type; -#endif - -#if !defined(BOOST_SPIRIT_USE_LIST_FOR_TREES) - typedef std::vector container_t; -#else - typedef std::list container_t; -#endif - - typedef typename container_t::iterator iterator_t; - typedef typename container_t::const_iterator const_iterator_t; - - node_val_data() - : text(), is_root_(false), parser_id_(), value_() - {} - -#if defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS) - node_val_data(IteratorT const& _first, IteratorT const& _last) - : text(), is_root_(false), parser_id_(), value_() - { - std::copy(_first, _last, std::inserter(text, text.end())); - } - - // This constructor is for building text out of iterators - template - node_val_data(IteratorT2 const& _first, IteratorT2 const& _last) - : text(), is_root_(false), parser_id_(), value_() - { - std::copy(_first, _last, std::inserter(text, text.end())); - } -#else - node_val_data(IteratorT const& _first, IteratorT const& _last) - : text(_first, _last), is_root_(false), parser_id_(), value_() - {} - - // This constructor is for building text out of iterators - template - node_val_data(IteratorT2 const& _first, IteratorT2 const& _last) - : text(_first, _last), is_root_(false), parser_id_(), value_() - {} -#endif - - void swap(node_val_data& x) - { - impl::cp_swap(text, x.text); - impl::cp_swap(is_root_, x.is_root_); - impl::cp_swap(parser_id_, x.parser_id_); - impl::cp_swap(value_, x.value_); - } - - typename container_t::iterator begin() - { - return text.begin(); - } - - typename container_t::const_iterator begin() const - { - return text.begin(); - } - - typename container_t::iterator end() - { - return text.end(); - } - - typename container_t::const_iterator end() const - { - return text.end(); - } - - bool is_root() const - { - return is_root_; - } - - void is_root(bool b) - { - is_root_ = b; - } - - parser_id id() const - { - return parser_id_; - } - - void id(parser_id r) - { - parser_id_ = r; - } - - ValueT const& value() const - { - return value_; - } - - void value(ValueT const& v) - { - value_ = v; - } - -private: - container_t text; - bool is_root_; - parser_id parser_id_; - ValueT value_; -}; - -#if defined(BOOST_SPIRIT_DEBUG) && \ - (BOOST_SPIRIT_DEBUG_FLAGS & BOOST_SPIRIT_DEBUG_FLAGS_NODES) -template -inline std::ostream& -operator<<(std::ostream& o, node_val_data const& n) -{ - o << "(id = " << n.id() << " text = \""; - typedef typename node_val_data::const_iterator_t - iterator_t; - for (iterator_t it = n.begin(); it != n.end(); ++it) - impl::token_printer(o, *it); - o << "\" is_root = " << n.is_root() - << " value = " << n.value() << ")"; - return o; -} -#endif - -template -inline void -swap(tree_node& a, tree_node& b) -{ - a.swap(b); -} - -template -inline void -swap(node_iter_data& a, node_iter_data& b) -{ - a.swap(b); -} - -////////////////////////////////// -template -class node_iter_data_factory -{ -public: - // This inner class is so that node_iter_data_factory can simulate - // a template template parameter - template - class factory - { - public: - typedef IteratorT iterator_t; - typedef node_iter_data node_t; - - static node_t create_node(iterator_t const& first, iterator_t const& last, - bool /*is_leaf_node*/) - { - return node_t(first, last); - } - - static node_t empty_node() - { - return node_t(); - } - - // precondition: ContainerT contains a tree_node. And all - // iterators in the container point to the same sequence. - template - static node_t group_nodes(ContainerT const& nodes) - { - return node_t(nodes.begin()->value.begin(), - nodes.back().value.end()); - } - }; -}; - -////////////////////////////////// -template -class node_val_data_factory -{ -public: - // This inner class is so that node_val_data_factory can simulate - // a template template parameter - template - class factory - { - public: - typedef IteratorT iterator_t; - typedef node_val_data node_t; - - static node_t create_node(iterator_t const& first, iterator_t const& last, - bool is_leaf_node) - { - if (is_leaf_node) - return node_t(first, last); - else - return node_t(); - } - - static node_t empty_node() - { - return node_t(); - } - - template - static node_t group_nodes(ContainerT const& nodes) - { - typename node_t::container_t c; - typename ContainerT::const_iterator i_end = nodes.end(); - // copy all the nodes text into a new one - for (typename ContainerT::const_iterator i = nodes.begin(); - i != i_end; ++i) - { - // See docs: reduced_node_d cannot be used with a - // rule inside the []. - BOOST_ASSERT(i->children.size() == 0); - c.insert(c.end(), i->value.begin(), i->value.end()); - } - return node_t(c.begin(), c.end()); - } - }; -}; - -////////////////////////////////// -template -class node_all_val_data_factory -{ -public: - // This inner class is so that node_all_val_data_factory can simulate - // a template template parameter - template - class factory - { - public: - typedef IteratorT iterator_t; - typedef node_val_data node_t; - - static node_t create_node(iterator_t const& first, iterator_t const& last, - bool /*is_leaf_node*/) - { - return node_t(first, last); - } - - static node_t empty_node() - { - return node_t(); - } - - template - static node_t group_nodes(ContainerT const& nodes) - { - typename node_t::container_t c; - typename ContainerT::const_iterator i_end = nodes.end(); - // copy all the nodes text into a new one - for (typename ContainerT::const_iterator i = nodes.begin(); - i != i_end; ++i) - { - BOOST_ASSERT(i->children.size() == 0); - c.insert(c.end(), i->value.begin(), i->value.end()); - } - return node_t(c.begin(), c.end()); - } - }; -}; - -namespace impl { - - /////////////////////////////////////////////////////////////////////////// - // can't call unqualified swap from within classname::swap - // as Koenig lookup rules will find only the classname::swap - // member function not the global declaration, so use cp_swap - // as a forwarding function (JM): - template - inline void cp_swap(T& t1, T& t2) - { - using std::swap; - using BOOST_SPIRIT_CLASSIC_NS::swap; - swap(t1, t2); - } -} - -////////////////////////////////// -template -class tree_match : public match -{ -public: - - typedef typename NodeFactoryT::template factory node_factory_t; - typedef typename node_factory_t::node_t parse_node_t; - typedef tree_node node_t; - typedef typename node_t::children_t container_t; - typedef typename container_t::iterator tree_iterator; - typedef typename container_t::const_iterator const_tree_iterator; - - typedef T attr_t; - typedef typename boost::call_traits::param_type param_type; - typedef typename boost::call_traits::reference reference; - typedef typename boost::call_traits::const_reference const_reference; - - tree_match() - : match(), trees() - {} - - explicit - tree_match(std::size_t length_) - : match(length_), trees() - {} - - tree_match(std::size_t length_, parse_node_t const& n) - : match(length_), trees() - { - trees.push_back(node_t(n)); - } - - tree_match(std::size_t length_, param_type val, parse_node_t const& n) - : match(length_, val), trees() - { -#if !defined(BOOST_SPIRIT_USE_LIST_FOR_TREES) - trees.reserve(10); // this is more or less an arbitrary number... -#endif - trees.push_back(node_t(n)); - } - - // attention, these constructors will change the second parameter! - tree_match(std::size_t length_, container_t& c) - : match(length_), trees() - { - impl::cp_swap(trees, c); - } - - tree_match(std::size_t length_, param_type val, container_t& c) - : match(length_, val), trees() - { - impl::cp_swap(trees, c); - } - - template - tree_match(match const& other) - : match(other), trees() - {} - - template - tree_match(tree_match const& other) - : match(other), trees() - { impl::cp_swap(trees, other.trees); } - - template - tree_match& - operator=(match const& other) - { - match::operator=(other); - return *this; - } - - template - tree_match& - operator=(tree_match const& other) - { - match::operator=(other); - impl::cp_swap(trees, other.trees); - return *this; - } - - tree_match(tree_match const& x) - : match(x), trees() - { - // use auto_ptr like ownership for the trees data member - impl::cp_swap(trees, x.trees); - } - - tree_match& operator=(tree_match const& x) - { - tree_match tmp(x); - this->swap(tmp); - return *this; - } - - void swap(tree_match& x) - { - match::swap(x); - impl::cp_swap(trees, x.trees); - } - - mutable container_t trees; -}; - -#if defined(BOOST_SPIRIT_DEBUG) && \ - (BOOST_SPIRIT_DEBUG_FLAGS & BOOST_SPIRIT_DEBUG_FLAGS_NODES) -template -inline std::ostream& -operator<<(std::ostream& o, tree_match const& m) -{ - typedef - typename tree_match::container_t::iterator - iterator; - - o << "(length = " << (int)m.length(); - int c = 0; - for (iterator i = m.trees.begin(); i != m.trees.end(); ++i) - { - o << " trees[" << c++ << "] = " << *i; - } - o << "\n)"; - return o; -} -#endif - -////////////////////////////////// -struct tree_policy -{ - template - static void apply_op_to_match(FunctorT const& /*op*/, MatchT& /*m*/) - {} - - template - static void group_match(MatchT& /*m*/, parser_id const& /*id*/, - Iterator1T const& /*first*/, Iterator2T const& /*last*/) - {} - - template - static void concat(MatchT& /*a*/, MatchT const& /*b*/) - {} -}; - -////////////////////////////////// -template < - typename MatchPolicyT, - typename IteratorT, - typename NodeFactoryT, - typename TreePolicyT, - typename T -> -struct common_tree_match_policy : public match_policy -{ - common_tree_match_policy() - { - } - - template - common_tree_match_policy(PolicyT const & policies) - : match_policy((match_policy const &)policies) - { - } - - template - struct result { typedef tree_match type; }; - - typedef tree_match match_t; - typedef IteratorT iterator_t; - typedef TreePolicyT tree_policy_t; - typedef NodeFactoryT factory_t; - - static const match_t no_match() { return match_t(); } - static const match_t empty_match() - { return match_t(0, tree_policy_t::empty_node()); } - - template - static tree_match create_match( - std::size_t length, - AttrT const& val, - Iterator1T const& first, - Iterator2T const& last) - { -#if defined(BOOST_SPIRIT_DEBUG) && \ - (BOOST_SPIRIT_DEBUG_FLAGS & BOOST_SPIRIT_DEBUG_FLAGS_NODES) - - BOOST_SPIRIT_DEBUG_OUT << "\n>>> create_node(begin) <<<\n" - "creating node text: \""; - for (Iterator1T it = first; it != last; ++it) - impl::token_printer(BOOST_SPIRIT_DEBUG_OUT, *it); - BOOST_SPIRIT_DEBUG_OUT << "\"\n"; - BOOST_SPIRIT_DEBUG_OUT << ">>> create_node(end) <<<\n\n"; -#endif - return tree_match(length, val, - tree_policy_t::create_node(length, first, last, true)); - } - - template - static void concat_match(Match1T& a, Match2T const& b) - { -#if defined(BOOST_SPIRIT_DEBUG) && \ - (BOOST_SPIRIT_DEBUG_FLAGS & BOOST_SPIRIT_DEBUG_FLAGS_NODES) - - BOOST_SPIRIT_DEBUG_OUT << "\n>>> concat_match(begin) <<<\n"; - BOOST_SPIRIT_DEBUG_OUT << "tree a:\n" << a << "\n"; - BOOST_SPIRIT_DEBUG_OUT << "tree b:\n" << b << "\n"; - BOOST_SPIRIT_DEBUG_OUT << ">>> concat_match(end) <<<\n\n"; -#endif - BOOST_SPIRIT_ASSERT(a && b); - if (a.length() == 0) - { - a = b; - return; - } - else if (b.length() == 0 -#ifdef BOOST_SPIRIT_NO_TREE_NODE_COLLAPSING - && !b.trees.begin()->value.id().to_long() -#endif - ) - { - return; - } - a.concat(b); - tree_policy_t::concat(a, b); - } - - template - void - group_match( - MatchT& m, - parser_id const& id, - IteratorT2 const& first, - IteratorT2 const& last) const - { - if (!m) return; - -#if defined(BOOST_SPIRIT_DEBUG) && \ - (BOOST_SPIRIT_DEBUG_FLAGS & BOOST_SPIRIT_DEBUG_FLAGS_TREES) - - BOOST_SPIRIT_DEBUG_OUT << "\n>>> group_match(begin) <<<\n" - "new node(" << id << ") \""; - for (IteratorT2 it = first; it != last; ++it) - impl::token_printer(BOOST_SPIRIT_DEBUG_OUT, *it); - BOOST_SPIRIT_DEBUG_OUT << "\"\n"; - BOOST_SPIRIT_DEBUG_OUT << "new child tree (before grouping):\n" << m << "\n"; - - tree_policy_t::group_match(m, id, first, last); - - BOOST_SPIRIT_DEBUG_OUT << "new child tree (after grouping):\n" << m << "\n"; - BOOST_SPIRIT_DEBUG_OUT << ">>> group_match(end) <<<\n\n"; -#else - tree_policy_t::group_match(m, id, first, last); -#endif - } -}; - -////////////////////////////////// -template -struct common_tree_tree_policy -{ - typedef typename MatchPolicyT::iterator_t iterator_t; - typedef typename MatchPolicyT::match_t match_t; - typedef typename NodeFactoryT::template factory factory_t; - typedef typename factory_t::node_t node_t; - - template - static node_t - create_node(std::size_t /*length*/, Iterator1T const& first, - Iterator2T const& last, bool leaf_node) - { - return factory_t::create_node(first, last, leaf_node); - } - - static node_t - empty_node() - { - return factory_t::empty_node(); - } - - template - static void apply_op_to_match(FunctorT const& op, match_t& m) - { - op(m); - } -}; - -////////////////////////////////// -// directives to modify how the parse tree is generated - -struct no_tree_gen_node_parser_gen; - -template -struct no_tree_gen_node_parser -: public unary > > -{ - typedef no_tree_gen_node_parser self_t; - typedef no_tree_gen_node_parser_gen parser_generator_t; - typedef unary_parser_category parser_category_t; - - no_tree_gen_node_parser(T const& a) - : unary > >(a) {} - - template - typename parser_result::type - parse(ScannerT const& scanner) const - { - typedef typename ScannerT::iteration_policy_t iteration_policy_t; - typedef match_policy match_policy_t; - typedef typename ScannerT::action_policy_t action_policy_t; - typedef scanner_policies< - iteration_policy_t, - match_policy_t, - action_policy_t - > policies_t; - - return this->subject().parse(scanner.change_policies(policies_t(scanner))); - } -}; - -struct no_tree_gen_node_parser_gen -{ - template - struct result { - - typedef no_tree_gen_node_parser type; - }; - - template - static no_tree_gen_node_parser - generate(parser const& s) - { - return no_tree_gen_node_parser(s.derived()); - } - - template - no_tree_gen_node_parser - operator[](parser const& s) const - { - return no_tree_gen_node_parser(s.derived()); - } -}; - -const no_tree_gen_node_parser_gen no_node_d = no_tree_gen_node_parser_gen(); - -////////////////////////////////// - -struct leaf_node_parser_gen; - -template -struct leaf_node_parser -: public unary > > -{ - typedef leaf_node_parser self_t; - typedef leaf_node_parser_gen parser_generator_t; - typedef unary_parser_category parser_category_t; - - leaf_node_parser(T const& a) - : unary > >(a) {} - - template - typename parser_result::type - parse(ScannerT const& scanner) const - { - typedef scanner_policies< typename ScannerT::iteration_policy_t, - match_policy, typename ScannerT::action_policy_t > policies_t; - - typedef typename ScannerT::iterator_t iterator_t; - typedef typename parser_result::type result_t; - typedef typename result_t::node_factory_t factory_t; - - iterator_t from = scanner.first; - result_t hit = impl::contiguous_parser_parse(this->subject(), - scanner.change_policies(policies_t(scanner,match_policy(),scanner)), - scanner); - - if (hit) - return result_t(hit.length(), - factory_t::create_node(from, scanner.first, true)); - else - return result_t(hit.length()); - } -}; - -struct leaf_node_parser_gen -{ - template - struct result { - - typedef leaf_node_parser type; - }; - - template - static leaf_node_parser - generate(parser const& s) - { - return leaf_node_parser(s.derived()); - } - - template - leaf_node_parser - operator[](parser const& s) const - { - return leaf_node_parser(s.derived()); - } -}; - -const leaf_node_parser_gen leaf_node_d = leaf_node_parser_gen(); -const leaf_node_parser_gen token_node_d = leaf_node_parser_gen(); - -////////////////////////////////// -namespace impl { - - template - struct tree_policy_selector - { - typedef tree_policy type; - }; - -} // namespace impl - -////////////////////////////////// -template -struct node_parser_gen; - -template -struct node_parser -: public unary > > -{ - typedef node_parser self_t; - typedef node_parser_gen parser_generator_t; - typedef unary_parser_category parser_category_t; - - node_parser(T const& a) - : unary > >(a) {} - - template - struct result - { - typedef typename parser_result::type type; - }; - - template - typename parser_result::type - parse(ScannerT const& scanner) const - { - typename parser_result::type hit = this->subject().parse(scanner); - if (hit) - { - impl::tree_policy_selector::type::apply_op_to_match(NodeParserT(), hit); - } - return hit; - } -}; - -template -struct node_parser_gen -{ - template - struct result { - - typedef node_parser type; - }; - - template - static node_parser - generate(parser const& s) - { - return node_parser(s.derived()); - } - - template - node_parser - operator[](parser const& s) const - { - return node_parser(s.derived()); - } -}; -////////////////////////////////// -struct reduced_node_op -{ - template - void operator()(MatchT& m) const - { - if (m.trees.size() == 1) - { - m.trees.begin()->children.clear(); - } - else if (m.trees.size() > 1) - { - typedef typename MatchT::node_factory_t node_factory_t; - m = MatchT(m.length(), node_factory_t::group_nodes(m.trees)); - } - } -}; - -const node_parser_gen reduced_node_d = - node_parser_gen(); - - -struct discard_node_op -{ - template - void operator()(MatchT& m) const - { - m.trees.clear(); - } -}; - -const node_parser_gen discard_node_d = - node_parser_gen(); - -struct infix_node_op -{ - template - void operator()(MatchT& m) const - { - typedef typename MatchT::container_t container_t; - typedef typename MatchT::container_t::iterator iter_t; - typedef typename MatchT::container_t::value_type value_t; - - using std::swap; - using BOOST_SPIRIT_CLASSIC_NS::swap; - - // copying the tree nodes is expensive, since it may copy a whole - // tree. swapping them is cheap, so swap the nodes we want into - // a new container of children. - container_t new_children; - std::size_t length = 0; - std::size_t tree_size = m.trees.size(); - - // the infix_node_d[] make no sense for nodes with no subnodes - BOOST_SPIRIT_ASSERT(tree_size >= 1); - - bool keep = true; -#if !defined(BOOST_SPIRIT_USE_LIST_FOR_TREES) - new_children.reserve((tree_size+1)/2); -#endif - iter_t i_end = m.trees.end(); - for (iter_t i = m.trees.begin(); i != i_end; ++i) - { - if (keep) { - // adjust the length - length += std::distance((*i).value.begin(), (*i).value.end()); - - // move the child node - new_children.push_back(value_t()); - swap(new_children.back(), *i); - keep = false; - } - else { - // ignore this child node - keep = true; - } - } - - m = MatchT(length, new_children); - } -}; - -const node_parser_gen infix_node_d = - node_parser_gen(); - -struct discard_first_node_op -{ - template - void operator()(MatchT& m) const - { - typedef typename MatchT::container_t container_t; - typedef typename MatchT::container_t::iterator iter_t; - typedef typename MatchT::container_t::value_type value_t; - - using std::swap; - using BOOST_SPIRIT_CLASSIC_NS::swap; - - // copying the tree nodes is expensive, since it may copy a whole - // tree. swapping them is cheap, so swap the nodes we want into - // a new container of children, instead of saying - // m.trees.erase(m.trees.begin()) because, on a container_t that will - // cause all the nodes afterwards to be copied into the previous - // position. - container_t new_children; - std::size_t length = 0; - std::size_t tree_size = m.trees.size(); - - // the discard_first_node_d[] make no sense for nodes with no subnodes - BOOST_SPIRIT_ASSERT(tree_size >= 1); - - if (tree_size > 1) { -#if !defined(BOOST_SPIRIT_USE_LIST_FOR_TREES) - new_children.reserve(tree_size - 1); -#endif - iter_t i = m.trees.begin(), i_end = m.trees.end(); - for (++i; i != i_end; ++i) - { - // adjust the length - length += std::distance((*i).value.begin(), (*i).value.end()); - - // move the child node - new_children.push_back(value_t()); - swap(new_children.back(), *i); - } - } - else { - // if there was a tree and now there isn't any, insert an empty node - iter_t i = m.trees.begin(); - - // This isn't entirely correct, since the empty node will reference - // the end of the discarded node, but I currently don't see any way to - // get at the begin of the node following this subnode. - // This should be safe anyway because the it shouldn't get dereferenced - // under any circumstances. - typedef typename value_t::parse_node_t::iterator_t iterator_type; - iterator_type it = (*i).value.end(); - - new_children.push_back( - value_t(typename value_t::parse_node_t(it, it))); - } - - m = MatchT(length, new_children); - } -}; - -const node_parser_gen discard_first_node_d = - node_parser_gen(); - -struct discard_last_node_op -{ - template - void operator()(MatchT& m) const - { - typedef typename MatchT::container_t container_t; - typedef typename MatchT::container_t::iterator iter_t; - typedef typename MatchT::container_t::value_type value_t; - - using std::swap; - using BOOST_SPIRIT_CLASSIC_NS::swap; - - // copying the tree nodes is expensive, since it may copy a whole - // tree. swapping them is cheap, so swap the nodes we want into - // a new container of children, instead of saying - // m.trees.erase(m.trees.begin()) because, on a container_t that will - // cause all the nodes afterwards to be copied into the previous - // position. - container_t new_children; - std::size_t length = 0; - std::size_t tree_size = m.trees.size(); - - // the discard_last_node_d[] make no sense for nodes with no subnodes - BOOST_SPIRIT_ASSERT(tree_size >= 1); - - if (tree_size > 1) { - m.trees.pop_back(); -#if !defined(BOOST_SPIRIT_USE_LIST_FOR_TREES) - new_children.reserve(tree_size - 1); -#endif - iter_t i_end = m.trees.end(); - for (iter_t i = m.trees.begin(); i != i_end; ++i) - { - // adjust the length - length += std::distance((*i).value.begin(), (*i).value.end()); - - // move the child node - new_children.push_back(value_t()); - swap(new_children.back(), *i); - } - } - else { - // if there was a tree and now there isn't any, insert an empty node - iter_t i = m.trees.begin(); - - typedef typename value_t::parse_node_t::iterator_t iterator_type; - iterator_type it = (*i).value.begin(); - - new_children.push_back( - value_t(typename value_t::parse_node_t(it, it))); - } - - m = MatchT(length, new_children); - } -}; - -const node_parser_gen discard_last_node_d = - node_parser_gen(); - -struct inner_node_op -{ - template - void operator()(MatchT& m) const - { - typedef typename MatchT::container_t container_t; - typedef typename MatchT::container_t::iterator iter_t; - typedef typename MatchT::container_t::value_type value_t; - - using std::swap; - using BOOST_SPIRIT_CLASSIC_NS::swap; - - // copying the tree nodes is expensive, since it may copy a whole - // tree. swapping them is cheap, so swap the nodes we want into - // a new container of children, instead of saying - // m.trees.erase(m.trees.begin()) because, on a container_t that will - // cause all the nodes afterwards to be copied into the previous - // position. - container_t new_children; - std::size_t length = 0; - std::size_t tree_size = m.trees.size(); - - // the inner_node_d[] make no sense for nodes with less then 2 subnodes - BOOST_SPIRIT_ASSERT(tree_size >= 2); - - if (tree_size > 2) { - m.trees.pop_back(); // erase the last element -#if !defined(BOOST_SPIRIT_USE_LIST_FOR_TREES) - new_children.reserve(tree_size - 1); -#endif - iter_t i = m.trees.begin(); // skip over the first element - iter_t i_end = m.trees.end(); - for (++i; i != i_end; ++i) - { - // adjust the length - length += std::distance((*i).value.begin(), (*i).value.end()); - - // move the child node - new_children.push_back(value_t()); - swap(new_children.back(), *i); - } - } - else { - // if there was a tree and now there isn't any, insert an empty node - iter_t i = m.trees.begin(); // skip over the first element - - typedef typename value_t::parse_node_t::iterator_t iterator_type; - iterator_type it = (*++i).value.begin(); - - new_children.push_back( - value_t(typename value_t::parse_node_t(it, it))); - } - - m = MatchT(length, new_children); - } -}; - -const node_parser_gen inner_node_d = - node_parser_gen(); - - -////////////////////////////////// -// action_directive_parser and action_directive_parser_gen -// are meant to be used as a template to create directives that -// generate action classes. For example access_match and -// access_node. The ActionParserT template parameter must be -// a class that has an innter class called action that is templated -// on the parser type and the action type. -template -struct action_directive_parser_gen; - -template -struct action_directive_parser -: public unary > > -{ - typedef action_directive_parser self_t; - typedef action_directive_parser_gen parser_generator_t; - typedef unary_parser_category parser_category_t; - - action_directive_parser(T const& a) - : unary > >(a) {} - - template - struct result - { - typedef typename parser_result::type type; - }; - - template - typename parser_result::type - parse(ScannerT const& scanner) const - { - return this->subject().parse(scanner); - } - - template - typename ActionParserT::template action, ActionT> - operator[](ActionT const& actor) const - { - typedef typename - ActionParserT::template action - action_t; - return action_t(*this, actor); - } -}; - -////////////////////////////////// -template -struct action_directive_parser_gen -{ - template - struct result { - - typedef action_directive_parser type; - }; - - template - static action_directive_parser - generate(parser const& s) - { - return action_directive_parser(s.derived()); - } - - template - action_directive_parser - operator[](parser const& s) const - { - return action_directive_parser(s.derived()); - } -}; - -////////////////////////////////// -// Calls the attached action passing it the match from the parser -// and the first and last iterators. -// The inner template class is used to simulate template-template parameters -// (declared in common_fwd.hpp). -template -struct access_match_action::action -: public unary > > -{ - typedef action_parser_category parser_category; - typedef action self_t; - - template - struct result - { - typedef typename parser_result::type type; - }; - - action( ParserT const& subject, - ActionT const& actor_); - - template - typename parser_result::type - parse(ScannerT const& scanner) const; - - ActionT const &predicate() const; - - private: - ActionT actor; -}; - -////////////////////////////////// -template -access_match_action::action::action( - ParserT const& subject, - ActionT const& actor_) -: unary > >(subject) -, actor(actor_) -{} - -////////////////////////////////// -template -template -typename parser_result, ScannerT>::type -access_match_action::action:: -parse(ScannerT const& scan) const -{ - typedef typename ScannerT::iterator_t iterator_t; - typedef typename parser_result::type result_t; - if (!scan.at_end()) - { - iterator_t save = scan.first; - result_t hit = this->subject().parse(scan); - actor(hit, save, scan.first); - return hit; - } - return scan.no_match(); -} - -////////////////////////////////// -template -ActionT const &access_match_action::action::predicate() const -{ - return actor; -} - -////////////////////////////////// -const action_directive_parser_gen access_match_d - = action_directive_parser_gen(); - - - -////////////////////////////////// -// Calls the attached action passing it the node from the parser -// and the first and last iterators -// The inner template class is used to simulate template-template parameters -// (declared in common_fwd.hpp). -template -struct access_node_action::action -: public unary > > -{ - typedef action_parser_category parser_category; - typedef action self_t; - - template - struct result - { - typedef typename parser_result::type type; - }; - - action( ParserT const& subject, - ActionT const& actor_); - - template - typename parser_result::type - parse(ScannerT const& scanner) const; - - ActionT const &predicate() const; - - private: - ActionT actor; -}; - -////////////////////////////////// -template -access_node_action::action::action( - ParserT const& subject, - ActionT const& actor_) -: unary > >(subject) -, actor(actor_) -{} - -////////////////////////////////// -template -template -typename parser_result, ScannerT>::type -access_node_action::action:: -parse(ScannerT const& scan) const -{ - typedef typename ScannerT::iterator_t iterator_t; - typedef typename parser_result::type result_t; - if (!scan.at_end()) - { - iterator_t save = scan.first; - result_t hit = this->subject().parse(scan); - if (hit && hit.trees.size() > 0) - actor(*hit.trees.begin(), save, scan.first); - return hit; - } - return scan.no_match(); -} - -////////////////////////////////// -template -ActionT const &access_node_action::action::predicate() const -{ - return actor; -} - -////////////////////////////////// -const action_directive_parser_gen access_node_d - = action_directive_parser_gen(); - - - -////////////////////////////////// - -/////////////////////////////////////////////////////////////////////////////// -// -// tree_parse_info -// -// Results returned by the tree parse functions: -// -// stop: points to the final parse position (i.e parsing -// processed the input up to this point). -// -// match: true if parsing is successful. This may be full: -// the parser consumed all the input, or partial: -// the parser consumed only a portion of the input. -// -// full: true when we have a full match (i.e the parser -// consumed all the input. -// -// length: The number of characters consumed by the parser. -// This is valid only if we have a successful match -// (either partial or full). A negative value means -// that the match is unsuccessful. -// -// trees: Contains the root node(s) of the tree. -// -/////////////////////////////////////////////////////////////////////////////// -template < - typename IteratorT, - typename NodeFactoryT, - typename T -> -struct tree_parse_info -{ - IteratorT stop; - bool match; - bool full; - std::size_t length; - typename tree_match::container_t trees; - - tree_parse_info() - : stop() - , match(false) - , full(false) - , length(0) - , trees() - {} - - template - tree_parse_info(tree_parse_info const& pi) - : stop(pi.stop) - , match(pi.match) - , full(pi.full) - , length(pi.length) - , trees() - { - using std::swap; - using BOOST_SPIRIT_CLASSIC_NS::swap; - - // use auto_ptr like ownership for the trees data member - swap(trees, pi.trees); - } - - tree_parse_info( - IteratorT stop_, - bool match_, - bool full_, - std::size_t length_, - typename tree_match::container_t trees_) - : stop(stop_) - , match(match_) - , full(full_) - , length(length_) - , trees() - { - using std::swap; - using BOOST_SPIRIT_CLASSIC_NS::swap; - - // use auto_ptr like ownership for the trees data member - swap(trees, trees_); - } -}; - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/tree/common_fwd.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/tree/common_fwd.hpp deleted file mode 100644 index 1388e53b7f5c..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/tree/common_fwd.hpp +++ /dev/null @@ -1,96 +0,0 @@ -/*============================================================================= - Copyright (c) 2006 Tobias Schwinger - http://spirit.sourceforge.net/ - - 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_TREE_COMMON_FWD_HPP) -#define BOOST_SPIRIT_TREE_COMMON_FWD_HPP - -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - template - struct tree_node; - - template - struct node_iter_data; - - template - class node_iter_data_factory; - - template - class node_val_data_factory; - - template - class node_all_val_data_factory; - - template < - typename IteratorT, - typename NodeFactoryT = node_val_data_factory, - typename T = nil_t - > - class tree_match; - - struct tree_policy; - - template < - typename MatchPolicyT, - typename IteratorT, - typename NodeFactoryT, - typename TreePolicyT, - typename T = nil_t - > - struct common_tree_match_policy; - - template - struct common_tree_tree_policy; - - template - struct no_tree_gen_node_parser; - - template - struct leaf_node_parser; - - template - struct node_parser; - - struct discard_node_op; - struct reduced_node_op; - struct infix_node_op; - struct discard_first_node_op; - struct discard_last_node_op; - struct inner_node_op; - - template - struct action_directive_parser; - - struct access_match_action - { - template - struct action; - }; - - struct access_node_action - { - template - struct action; - }; - - template < - typename IteratorT = char const *, - typename NodeFactoryT = node_val_data_factory, - typename T = nil_t - > - struct tree_parse_info; - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/tree/impl/parse_tree_utils.ipp b/framework/contrib/boost/include/boost/spirit/home/classic/tree/impl/parse_tree_utils.ipp deleted file mode 100644 index 24796f8f635b..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/tree/impl/parse_tree_utils.ipp +++ /dev/null @@ -1,135 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2007 Hartmut Kaiser - Copyright (c) 2001-2003 Daniel Nuffer - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ - -#ifndef BOOST_SPIRIT_CLASSIC_TREE_IMPL_PARSE_TREE_UTILS_IPP -#define BOOST_SPIRIT_CLASSIC_TREE_IMPL_PARSE_TREE_UTILS_IPP - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { -namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -/////////////////////////////////////////////////////////////////////////////// -// -// Returnes the first leaf node of the given parsetree. -// -/////////////////////////////////////////////////////////////////////////////// -template -inline tree_node const & -get_first_leaf (tree_node const &node) -{ - if (node.children.size() > 0) - return get_first_leaf(*node.children.begin()); - return node; -} - -/////////////////////////////////////////////////////////////////////////////// -// -// Find a specified node through recursive search. -// -/////////////////////////////////////////////////////////////////////////////// -template -inline bool -find_node (tree_node const &node, parser_id node_to_search, - tree_node const **found_node) -{ - if (node.value.id() == node_to_search) { - *found_node = &node; - return true; - } - if (node.children.size() > 0) { - typedef typename tree_node::const_tree_iterator const_tree_iterator; - - const_tree_iterator end = node.children.end(); - for (const_tree_iterator it = node.children.begin(); it != end; ++it) - { - if (find_node (*it, node_to_search, found_node)) - return true; - } - } - return false; // not found here -} - -/////////////////////////////////////////////////////////////////////////////// -// -// The functions 'get_node_range' return a pair of iterators pointing at the -// range, which contains the elements of a specified node. -// -/////////////////////////////////////////////////////////////////////////////// -namespace impl { - -template -inline bool -get_node_range (typename tree_node::const_tree_iterator const &start, - parser_id node_to_search, - std::pair::const_tree_iterator, - typename tree_node::const_tree_iterator> &nodes) -{ -// look at this node first -tree_node const &node = *start; - - if (node.value.id() == node_to_search) { - if (node.children.size() > 0) { - // full subrange - nodes.first = node.children.begin(); - nodes.second = node.children.end(); - } - else { - // only this node - nodes.first = start; - nodes.second = start; - std::advance(nodes.second, 1); - } - return true; - } - -// look at subnodes now - if (node.children.size() > 0) { - typedef typename tree_node::const_tree_iterator const_tree_iterator; - - const_tree_iterator end = node.children.end(); - for (const_tree_iterator it = node.children.begin(); it != end; ++it) - { - if (impl::get_node_range(it, node_to_search, nodes)) - return true; - } - } - return false; -} - -} // end of namespace impl - -template -inline bool -get_node_range (tree_node const &node, parser_id node_to_search, - std::pair::const_tree_iterator, - typename tree_node::const_tree_iterator> &nodes) -{ - if (node.children.size() > 0) { - typedef typename tree_node::const_tree_iterator const_tree_iterator; - - const_tree_iterator end = node.children.end(); - for (const_tree_iterator it = node.children.begin(); it != end; ++it) - { - if (impl::get_node_range(it, node_to_search, nodes)) - return true; - } - } - return false; -} - -/////////////////////////////////////////////////////////////////////////////// -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -} // namespace spirit -} // namespace boost - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/tree/impl/tree_to_xml.ipp b/framework/contrib/boost/include/boost/spirit/home/classic/tree/impl/tree_to_xml.ipp deleted file mode 100644 index 44a6750a9c75..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/tree/impl/tree_to_xml.ipp +++ /dev/null @@ -1,527 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2008 Hartmut Kaiser - Copyright (c) 2001-2003 Daniel Nuffer - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ - -#ifndef BOOST_SPIRIT_CLASSIC_TREE_IMPL_TREE_TO_XML_IPP -#define BOOST_SPIRIT_CLASSIC_TREE_IMPL_TREE_TO_XML_IPP - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -#ifdef BOOST_NO_STRINGSTREAM -#include -#define BOOST_SPIRIT_OSSTREAM std::ostrstream -inline -std::string BOOST_SPIRIT_GETSTRING(std::ostrstream& ss) -{ - ss << std::ends; - std::string rval = ss.str(); - ss.freeze(false); - return rval; -} -#else -#include -#define BOOST_SPIRIT_GETSTRING(ss) ss.str() -#define BOOST_SPIRIT_OSSTREAM std::basic_ostringstream -#endif - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -namespace impl { - - /////////////////////////////////////////////////////////////////////////// - template - struct string_lit; - - template <> - struct string_lit - { - static char get(char c) { return c; } - static std::string get(char const* str = "") { return str; } - }; - - template <> - struct string_lit - { - static wchar_t get(char c) - { - typedef std::ctype ctype_t; - return std::use_facet(std::locale()).widen(c); - } - static std::basic_string get(char const* source = "") - { - using namespace std; // some systems have size_t in ns std - size_t len = strlen(source); - boost::scoped_array result (new wchar_t[len+1]); - result.get()[len] = '\0'; - - // working with wide character streams is supported only if the - // platform provides the std::ctype facet - BOOST_ASSERT(std::has_facet >(std::locale())); - - std::use_facet >(std::locale()) - .widen(source, source + len, result.get()); - return result.get(); - } - }; -} - -// xml formatting helper classes -namespace xml { - - template - inline void - encode (std::basic_string &str, char s, char const *r, int len) - { - typedef typename std::basic_string::size_type size_type; - - size_type pos = 0; - while ((pos = str.find_first_of (impl::string_lit::get(s), pos)) != - size_type(std::basic_string::npos)) - { - str.replace (pos, 1, impl::string_lit::get(r)); - pos += len; - } - } - - template - inline std::basic_string - encode (std::basic_string str) - { - encode(str, '&', "&", 3); - encode(str, '<', "<", 2); - encode(str, '>', ">", 2); - encode(str, '\r', "\\r", 1); - encode(str, '\n', "\\n", 1); - return str; - } - - template - inline std::basic_string - encode (CharT const *text) - { - return encode (std::basic_string(text)); - } - - // format a xml attribute - template - struct attribute - { - attribute() - { - } - - attribute (std::basic_string const& key_, - std::basic_string const& value_) - : key (key_), value(value_) - { - } - - bool has_value() - { - return value.size() > 0; - } - - std::basic_string key; - std::basic_string value; - }; - - template - inline std::basic_ostream& - operator<< (std::basic_ostream &ostrm, attribute const &attr) - { - if (0 == attr.key.size()) - return ostrm; - ostrm << impl::string_lit::get(" ") << encode(attr.key) - << impl::string_lit::get("=\"") << encode(attr.value) - << impl::string_lit::get("\""); - return ostrm; - } - - // output a xml element (base class, not used directly) - template - class element - { - protected: - element(std::basic_ostream &ostrm_, bool incr_indent_ = true) - : ostrm(ostrm_), incr_indent(incr_indent_) - { - if (incr_indent) ++get_indent(); - } - ~element() - { - if (incr_indent) --get_indent(); - } - - public: - void output_space () - { - for (int i = 0; i < get_indent(); i++) - ostrm << impl::string_lit::get(" "); - } - - protected: - int &get_indent() - { - static int indent; - - return indent; - } - - std::basic_ostream &ostrm; - bool incr_indent; - }; - - // a xml node - template - class node : public element - { - public: - node (std::basic_ostream &ostrm_, - std::basic_string const& tag_, attribute &attr) - : element(ostrm_), tag(tag_) - { - this->output_space(); - this->ostrm - << impl::string_lit::get("<") << tag_ << attr - << impl::string_lit::get(">\n"); - } - node (std::basic_ostream &ostrm_, - std::basic_string const& tag_) - : element(ostrm_), tag(tag_) - { - this->output_space(); - this->ostrm - << impl::string_lit::get("<") << tag_ - << impl::string_lit::get(">\n"); - } - ~node() - { - this->output_space(); - this->ostrm - << impl::string_lit::get("::get(">\n"); - } - - private: - std::basic_string tag; - }; - - template - class text : public element - { - public: - text (std::basic_ostream &ostrm_, - std::basic_string const& tag, - std::basic_string const& textlit) - : element(ostrm_) - { - this->output_space(); - this->ostrm - << impl::string_lit::get("<") << tag - << impl::string_lit::get(">") << encode(textlit) - << impl::string_lit::get("::get(">\n"); - } - - text (std::basic_ostream &ostrm_, - std::basic_string const& tag, - std::basic_string const& textlit, - attribute &attr) - : element(ostrm_) - { - this->output_space(); - this->ostrm - << impl::string_lit::get("<") << tag << attr - << impl::string_lit::get(">") << encode(textlit) - << impl::string_lit::get("::get(">\n"); - } - - text (std::basic_ostream &ostrm_, - std::basic_string const& tag, - std::basic_string const& textlit, - attribute &attr1, attribute &attr2) - : element(ostrm_) - { - this->output_space(); - this->ostrm - << impl::string_lit::get("<") << tag << attr1 << attr2 - << impl::string_lit::get(">") << encode(textlit) - << impl::string_lit::get("::get(">\n"); - } - }; - - // a xml comment - template - class comment : public element - { - public: - comment (std::basic_ostream &ostrm_, - std::basic_string const& commentlit) - : element(ostrm_, false) - { - if ('\0' != commentlit[0]) - { - this->output_space(); - this->ostrm << impl::string_lit::get("\n"); - } - } - }; - - // a xml document - template - class document : public element - { - public: - document (std::basic_ostream &ostrm_) - : element(ostrm_) - { - this->get_indent() = -1; - this->ostrm << impl::string_lit::get( - "\n"); - } - - document (std::basic_ostream &ostrm_, - std::basic_string const& mainnode, - std::basic_string const& dtd) - : element(ostrm_) - { - this->get_indent() = -1; - this->ostrm << impl::string_lit::get( - "\n"); - - this->output_space(); - this->ostrm << impl::string_lit::get("::get(" SYSTEM \"") << dtd - << impl::string_lit::get("\">\n"); - } - ~document() - { - BOOST_SPIRIT_ASSERT(-1 == this->get_indent()); - } - }; - -} // end of namespace xml - -namespace impl { - - /////////////////////////////////////////////////////////////////////////// - // look up the rule name from the given parser_id - template - inline typename AssocContainerT::value_type::second_type - get_rulename (AssocContainerT const &id_to_name_map, - BOOST_SPIRIT_CLASSIC_NS::parser_id const &id) - { - typename AssocContainerT::const_iterator it = id_to_name_map.find(id); - if (it != id_to_name_map.end()) - return (*it).second; - typedef typename AssocContainerT::value_type::second_type second_t; - return second_t(); - } - - // dump a parse tree as xml - template < - typename CharT, typename IteratorT, typename GetIdT, typename GetValueT - > - inline void - token_to_xml (std::basic_ostream &ostrm, IteratorT const &it, - bool is_root, GetIdT const &get_token_id, GetValueT const &get_token_value) - { - BOOST_SPIRIT_OSSTREAM stream; - - stream << get_token_id(*it) << std::ends; - xml::attribute token_id ( - impl::string_lit::get("id"), - BOOST_SPIRIT_GETSTRING(stream).c_str()); - xml::attribute is_root_attr ( - impl::string_lit::get("is_root"), - impl::string_lit::get(is_root ? "1" : "")); - xml::attribute nil; - xml::text(ostrm, - impl::string_lit::get("token"), - get_token_value(*it).c_str(), - token_id, - is_root_attr.has_value() ? is_root_attr : nil); - } - - template < - typename CharT, typename TreeNodeT, typename AssocContainerT, - typename GetIdT, typename GetValueT - > - inline void - tree_node_to_xml (std::basic_ostream &ostrm, TreeNodeT const &node, - AssocContainerT const& id_to_name_map, GetIdT const &get_token_id, - GetValueT const &get_token_value) - { - typedef typename TreeNodeT::const_iterator node_iter_t; - typedef - typename TreeNodeT::value_type::parse_node_t::const_iterator_t - value_iter_t; - - xml::attribute nil; - node_iter_t end = node.end(); - for (node_iter_t it = node.begin(); it != end; ++it) - { - // output a node - xml::attribute id ( - impl::string_lit::get("rule"), - get_rulename(id_to_name_map, (*it).value.id()).c_str()); - xml::node currnode (ostrm, - impl::string_lit::get("parsenode"), - (*it).value.id() != 0 && id.has_value() ? id : nil); - - // first dump the value - std::size_t cnt = std::distance((*it).value.begin(), (*it).value.end()); - - if (1 == cnt) - { - token_to_xml (ostrm, (*it).value.begin(), - (*it).value.is_root(), get_token_id, get_token_value); - } - else if (cnt > 1) - { - xml::node value (ostrm, - impl::string_lit::get("value")); - bool is_root = (*it).value.is_root(); - - value_iter_t val_end = (*it).value.end(); - for (value_iter_t val_it = (*it).value.begin(); - val_it != val_end; ++val_it) - { - token_to_xml (ostrm, val_it, is_root, get_token_id, - get_token_value); - } - } - tree_node_to_xml(ostrm, (*it).children, id_to_name_map, - get_token_id, get_token_value); // dump all subnodes - } - } - - template - inline void - tree_node_to_xml (std::basic_ostream &ostrm, TreeNodeT const &node, - AssocContainerT const& id_to_name_map) - { - typedef typename TreeNodeT::const_iterator node_iter_t; - - xml::attribute nil; - node_iter_t end = node.end(); - for (node_iter_t it = node.begin(); it != end; ++it) - { - // output a node - xml::attribute id ( - impl::string_lit::get("rule"), - get_rulename(id_to_name_map, (*it).value.id()).c_str()); - xml::node currnode (ostrm, - impl::string_lit::get("parsenode"), - (*it).value.id() != parser_id() && id.has_value() ? id : nil); - - // first dump the value - if ((*it).value.begin() != (*it).value.end()) - { - std::basic_string tokens ((*it).value.begin(), (*it).value.end()); - - if (tokens.size() > 0) - { - // output all subtokens as one string (for better readability) - xml::attribute is_root ( - impl::string_lit::get("is_root"), - impl::string_lit::get((*it).value.is_root() ? "1" : "")); - xml::text(ostrm, - impl::string_lit::get("value"), tokens.c_str(), - is_root.has_value() ? is_root : nil); - } - - } - // dump all subnodes - tree_node_to_xml(ostrm, (*it).children, id_to_name_map); - } - } - -} // namespace impl - -/////////////////////////////////////////////////////////////////////////////// -// dump a parse tree as a xml stream (generic variant) -template < - typename CharT, typename TreeNodeT, typename AssocContainerT, - typename GetIdT, typename GetValueT -> -inline void -basic_tree_to_xml (std::basic_ostream &ostrm, TreeNodeT const &tree, -std::basic_string const &input_line, AssocContainerT const& id_to_name, - GetIdT const &get_token_id, GetValueT const &get_token_value) -{ - // generate xml dump - xml::document doc (ostrm, - impl::string_lit::get("parsetree"), - impl::string_lit::get("parsetree.dtd")); - xml::comment input (ostrm, input_line.c_str()); - xml::attribute ver ( - impl::string_lit::get("version"), - impl::string_lit::get("1.0")); - xml::node mainnode (ostrm, - impl::string_lit::get("parsetree"), ver); - - impl::tree_node_to_xml (ostrm, tree, id_to_name, get_token_id, - get_token_value); -} - -// dump a parse tree as a xml steam (for character based parsers) -template -inline void -basic_tree_to_xml (std::basic_ostream &ostrm, TreeNodeT const &tree, - std::basic_string const &input_line, - AssocContainerT const& id_to_name) -{ - // generate xml dump - xml::document doc (ostrm, - impl::string_lit::get("parsetree"), - impl::string_lit::get("parsetree.dtd")); - xml::comment input (ostrm, input_line.c_str()); - xml::attribute ver ( - impl::string_lit::get("version"), - impl::string_lit::get("1.0")); - xml::node mainnode (ostrm, - impl::string_lit::get("parsetree"), ver); - - impl::tree_node_to_xml(ostrm, tree, id_to_name); -} - -template -inline void -basic_tree_to_xml (std::basic_ostream &ostrm, TreeNodeT const &tree, - std::basic_string const &input_line) -{ - return basic_tree_to_xml(ostrm, tree, input_line, - std::map >()); -} - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace boost::spirit - -#undef BOOST_SPIRIT_OSSTREAM -#undef BOOST_SPIRIT_GETSTRING - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/tree/parse_tree.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/tree/parse_tree.hpp deleted file mode 100644 index dcb55461c7fa..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/tree/parse_tree.hpp +++ /dev/null @@ -1,295 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2003 Daniel Nuffer - Copyright (c) 2001-2007 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_TREE_PARSE_TREE_HPP -#define BOOST_SPIRIT_TREE_PARSE_TREE_HPP - -#include -#include -#include - -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -////////////////////////////////// -// pt_match_policy is simply an id so the correct specialization of tree_policy can be found. -template < - typename IteratorT, - typename NodeFactoryT, - typename T -> -struct pt_match_policy : - public common_tree_match_policy< - pt_match_policy, - IteratorT, - NodeFactoryT, - pt_tree_policy< - pt_match_policy, - NodeFactoryT, - T - >, - T - > -{ - typedef - common_tree_match_policy< - pt_match_policy, - IteratorT, - NodeFactoryT, - pt_tree_policy< - pt_match_policy, - NodeFactoryT, - T - >, - T - > - common_tree_match_policy_; - - pt_match_policy() - { - } - - template - pt_match_policy(PolicyT const & policies) - : common_tree_match_policy_(policies) - { - } -}; - -////////////////////////////////// -template -struct pt_tree_policy : - public common_tree_tree_policy -{ - typedef typename MatchPolicyT::match_t match_t; - typedef typename MatchPolicyT::iterator_t iterator_t; - - template - static void concat(MatchAT& a, MatchBT const& b) - { - BOOST_SPIRIT_ASSERT(a && b); - - std::copy(b.trees.begin(), b.trees.end(), - std::back_insert_iterator(a.trees)); - } - - template - static void group_match(MatchT& m, parser_id const& id, - Iterator1T const& first, Iterator2T const& last) - { - if (!m) - return; - - typedef typename NodeFactoryT::template factory factory_t; - typedef typename tree_match::container_t - container_t; - typedef typename container_t::iterator cont_iterator_t; - - match_t newmatch(m.length(), - factory_t::create_node(first, last, false)); - - std::swap(newmatch.trees.begin()->children, m.trees); - // set this node and all it's unset children's rule_id - newmatch.trees.begin()->value.id(id); - for (cont_iterator_t i = newmatch.trees.begin()->children.begin(); - i != newmatch.trees.begin()->children.end(); - ++i) - { - if (i->value.id() == 0) - i->value.id(id); - } - m = newmatch; - } - - template - static void apply_op_to_match(FunctorT const& op, MatchT& m) - { - op(m); - } -}; - -namespace impl { - - template - struct tree_policy_selector > - { - typedef pt_tree_policy< - pt_match_policy, - NodeFactoryT, - T - > type; - }; - -} // namespace impl - - -////////////////////////////////// -struct gen_pt_node_parser_gen; - -template -struct gen_pt_node_parser -: public unary > > -{ - typedef gen_pt_node_parser self_t; - typedef gen_pt_node_parser_gen parser_generator_t; - typedef unary_parser_category parser_category_t; - - gen_pt_node_parser(T const& a) - : unary > >(a) {} - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - typedef typename ScannerT::iteration_policy_t iteration_policy_t; - typedef typename ScannerT::match_policy_t::iterator_t iterator_t; - typedef typename ScannerT::match_policy_t::factory_t factory_t; - typedef pt_match_policy match_policy_t; - typedef typename ScannerT::action_policy_t action_policy_t; - typedef scanner_policies< - iteration_policy_t, - match_policy_t, - action_policy_t - > policies_t; - - return this->subject().parse(scan.change_policies(policies_t(scan))); - } -}; - -////////////////////////////////// -struct gen_pt_node_parser_gen -{ - template - struct result { - - typedef gen_pt_node_parser type; - }; - - template - static gen_pt_node_parser - generate(parser const& s) - { - return gen_pt_node_parser(s.derived()); - } - - template - gen_pt_node_parser - operator[](parser const& s) const - { - return gen_pt_node_parser(s.derived()); - } -}; - -////////////////////////////////// -const gen_pt_node_parser_gen gen_pt_node_d = gen_pt_node_parser_gen(); - - -/////////////////////////////////////////////////////////////////////////////// -// -// Parse functions for parse trees -// -/////////////////////////////////////////////////////////////////////////////// -template < - typename NodeFactoryT, typename IteratorT, typename ParserT, - typename SkipT -> -inline tree_parse_info -pt_parse( - IteratorT const& first_, - IteratorT const& last, - parser const& p, - SkipT const& skip, - NodeFactoryT const& /*dummy_*/ = NodeFactoryT()) -{ - typedef skip_parser_iteration_policy it_policy_t; - typedef pt_match_policy pt_match_policy_t; - typedef - scanner_policies - scan_policies_t; - typedef scanner scanner_t; - - it_policy_t iter_policy(skip); - scan_policies_t policies(iter_policy); - IteratorT first = first_; - scanner_t scan(first, last, policies); - tree_match hit = p.derived().parse(scan); - return tree_parse_info( - first, hit, hit && (first == last), hit.length(), hit.trees); -} - -template -inline tree_parse_info -pt_parse( - IteratorT const& first, - IteratorT const& last, - parser const& p, - SkipT const& skip) -{ - typedef node_val_data_factory default_node_factory_t; - return pt_parse(first, last, p, skip, default_node_factory_t()); -} - -////////////////////////////////// -template -inline tree_parse_info -pt_parse( - IteratorT const& first_, - IteratorT const& last, - parser const& parser) -{ - typedef pt_match_policy pt_match_policy_t; - IteratorT first = first_; - scanner< - IteratorT, - scanner_policies - > scan(first, last); - tree_match hit = parser.derived().parse(scan); - return tree_parse_info( - first, hit, hit && (first == last), hit.length(), hit.trees); -} - -////////////////////////////////// -template -inline tree_parse_info -pt_parse( - CharT const* str, - parser const& p, - SkipT const& skip) -{ - CharT const* last = str; - while (*last) - last++; - return pt_parse(str, last, p, skip); -} - -////////////////////////////////// -template -inline tree_parse_info -pt_parse( - CharT const* str, - parser const& parser) -{ - CharT const* last = str; - while (*last) - { - last++; - } - return pt_parse(str, last, parser); -} - -/////////////////////////////////////////////////////////////////////////////// -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/tree/parse_tree_fwd.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/tree/parse_tree_fwd.hpp deleted file mode 100644 index 5e994594ab74..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/tree/parse_tree_fwd.hpp +++ /dev/null @@ -1,39 +0,0 @@ -/*============================================================================= - Copyright (c) 2006 Tobias Schwinger - http://spirit.sourceforge.net/ - - 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_TREE_PARSE_TREE_FWD_HPP) -#define BOOST_SPIRIT_TREE_PARSE_TREE_FWD_HPP - -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - template < - typename MatchPolicyT, - typename NodeFactoryT, - typename T = nil_t - > - struct pt_tree_policy; - - template < - typename IteratorT, - typename NodeFactoryT = node_val_data_factory, - typename T = nil_t - > - struct pt_match_policy; - - template - struct gen_pt_node_parser; - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/tree/parse_tree_utils.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/tree/parse_tree_utils.hpp deleted file mode 100644 index 50bf9b91c400..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/tree/parse_tree_utils.hpp +++ /dev/null @@ -1,64 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2003 Daniel Nuffer - Copyright (c) 2001-2007 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ - -#ifndef BOOST_SPIRIT_CLASSIC_TREE_PARSE_TREE_UTILS_HPP -#define BOOST_SPIRIT_CLASSIC_TREE_PARSE_TREE_UTILS_HPP - -#include // for std::pair - -#include // needed for parse tree generation - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { -namespace spirit { -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -/////////////////////////////////////////////////////////////////////////////// -// -// The function 'get_first_leaf' returnes a reference to the first leaf node -// of the given parsetree. -// -/////////////////////////////////////////////////////////////////////////////// -template -tree_node const & -get_first_leaf (tree_node const &node); - -/////////////////////////////////////////////////////////////////////////////// -// -// The function 'find_node' finds a specified node through recursive search. -// If the return value is true, the variable to which points the parameter -// 'found_node' will contain the address of the node with the given rule_id. -// -/////////////////////////////////////////////////////////////////////////////// -template -bool -find_node (tree_node const &node, parser_id node_to_search, - tree_node const **found_node); - -/////////////////////////////////////////////////////////////////////////////// -// -// The function 'get_node_range' return a pair of iterators pointing at the -// range, which contains the elements of a specified node. It's very useful -// for locating all information related with a specified node. -// -/////////////////////////////////////////////////////////////////////////////// -template -bool -get_node_range (tree_node const &node, parser_id node_to_search, - std::pair::const_tree_iterator, - typename tree_node::const_tree_iterator> &nodes); - -/////////////////////////////////////////////////////////////////////////////// -BOOST_SPIRIT_CLASSIC_NAMESPACE_END -} // namespace spirit -} // namespace boost - -#include - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/tree/parsetree.dtd b/framework/contrib/boost/include/boost/spirit/home/classic/tree/parsetree.dtd deleted file mode 100644 index 9d847c746c21..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/tree/parsetree.dtd +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/tree/tree_to_xml.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/tree/tree_to_xml.hpp deleted file mode 100644 index 54dd710c45e6..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/tree/tree_to_xml.hpp +++ /dev/null @@ -1,116 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2007 Hartmut Kaiser - Copyright (c) 2001-2003 Daniel Nuffer - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ - -#ifndef BOOST_SPIRIT_CLASSIC_TREE_TREE_TO_XML_HPP -#define BOOST_SPIRIT_CLASSIC_TREE_TREE_TO_XML_HPP - -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - namespace impl { - template struct default_string; - } - -/////////////////////////////////////////////////////////////////////////////// -// -// Dump a parse tree as a xml stream -// -// The functions 'tree_to_xml' can be used to output a parse tree as a xml -// stream into the given ostream. The parameters have the following -// meaning: -// -// mandatory parameters: -// ostrm The output stream used for streaming the parse tree. -// tree The parse tree to output. -// -// optional parameters: -// input_line The input line from which the parse tree was -// generated (if given, it is used to output a comment -// containing this line). -// id_to_name A map, which is used for converting the rule id's contained -// in the parse tree to readable strings. Here a auxiliary -// associative container can be used, which maps a rule_id to -// a std::string (i.e. a std::map). -// get_token_id -// A function or functor, which takes an instance of a token -// and which should return a token id (i.e. something like -// 'int f(char const c)'). -// get_token_value -// A function or functor, which takes an instance of a token -// and which should return a readable representation of this -// token (i.e. something like 'std::string f(char const c)'). -// -// The structure of the generated xml stream conforms to the DTD given in the -// file 'parsetree.dtd'. This file is located in the spirit/tree directory. -// -/////////////////////////////////////////////////////////////////////////////// - - template < - typename CharT, typename TreeNodeT, typename AssocContainerT, - typename GetIdT, typename GetValueT - > - inline void - basic_tree_to_xml (std::basic_ostream &ostrm, TreeNodeT const &tree, - std::basic_string const &input_line, - AssocContainerT const& id_to_name, GetIdT const &get_token_id, - GetValueT const &get_token_value); - - template - inline void - basic_tree_to_xml (std::basic_ostream &ostrm, TreeNodeT const &tree, - std::basic_string const &input_line, - AssocContainerT const& id_to_name); - - template - inline void - basic_tree_to_xml (std::basic_ostream &ostrm, TreeNodeT const &tree, - std::basic_string const &input_line = - impl::default_string::get()); - - /////////////////////////////////////////////////////////////////////////// - template < - typename TreeNodeT, typename AssocContainerT, - typename GetIdT, typename GetValueT - > - inline void - tree_to_xml (std::ostream &ostrm, TreeNodeT const &tree, - std::string const &input_line, AssocContainerT const& id_to_name, - GetIdT const &get_token_id, GetValueT const &get_token_value) - { - basic_tree_to_xml(ostrm, tree, input_line, id_to_name, - get_token_id, get_token_value); - } - - template - inline void - tree_to_xml (std::ostream &ostrm, TreeNodeT const &tree, - std::string const &input_line, AssocContainerT const& id_to_name) - { - basic_tree_to_xml(ostrm, tree, input_line, id_to_name); - } - - template - inline void - tree_to_xml (std::ostream &ostrm, TreeNodeT const &tree, - std::string const &input_line = "") - { - basic_tree_to_xml(ostrm, tree, input_line); - } - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#include - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/tree/typeof.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/tree/typeof.hpp deleted file mode 100644 index 2d25512c81a7..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/tree/typeof.hpp +++ /dev/null @@ -1,80 +0,0 @@ -/*============================================================================= - Copyright (c) 2006 Tobias Schwinger - http://spirit.sourceforge.net/ - - 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_TREE_TYPEOF_HPP) -#define BOOST_SPIRIT_TREE_TYPEOF_HPP - -#include - -#include - -#include -#include -#include - - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - - -// common.hpp (has forward header) - -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::tree_node,1) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::node_iter_data,2) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::node_iter_data_factory,1) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::node_val_data_factory,1) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::node_all_val_data_factory,1) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::tree_match,3) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::tree_policy) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::common_tree_match_policy,4) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::common_tree_tree_policy,2) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::no_tree_gen_node_parser,1) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::leaf_node_parser,1) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::node_parser,2) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::discard_node_op) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::reduced_node_op) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::infix_node_op) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::discard_first_node_op) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::discard_last_node_op) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::inner_node_op) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::action_directive_parser,2) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::access_match_action) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::access_match_action::action,2) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::access_node_action) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::access_node_action::action,2) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::tree_parse_info,3) - -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::node_iter_data,1) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::node_iter_data_factory) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::node_val_data_factory) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::node_all_val_data_factory) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::tree_match,2) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::tree_match,1) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::tree_parse_info,2) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::tree_parse_info,1) - - -// parse_tree.hpp (has forward header) - -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::pt_tree_policy,2) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::pt_match_policy,2) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::gen_pt_node_parser,1) - -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::pt_match_policy,1) - - -// ast.hpp (has forward header) - -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::ast_tree_policy,2) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::ast_match_policy,2) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::gen_ast_node_parser,1) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::root_node_op) - -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::ast_match_policy,1) - - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/utility.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/utility.hpp deleted file mode 100644 index d04c51dc6058..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/utility.hpp +++ /dev/null @@ -1,42 +0,0 @@ -/*============================================================================= - Copyright (c) 1998-2003 Joel de Guzman - Copyright (c) 2001-2003 Daniel Nuffer - Copyright (c) 2001-2003 Hartmut Kaiser - Copyright (c) 2002-2003 Martin Wille - Copyright (c) 2002 Juan Carlos Arevalo-Baeza - Copyright (c) 2002 Raghavendra Satish - Copyright (c) 2002 Jeff Westfahl - http://spirit.sourceforge.net/ - - 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_UTILITY_MAIN_HPP) -#define BOOST_SPIRIT_UTILITY_MAIN_HPP - -#include - -/////////////////////////////////////////////////////////////////////////////// -// -// Master header for Spirit.Utilities -// -/////////////////////////////////////////////////////////////////////////////// - -// Utility.Parsers -#include -#include -#include -#include -#include -#include -#include -#include - -// Utility.Support -#include -#ifdef BOOST_SPIRIT_THREADSAFE -#include -#endif - - -#endif // !defined(BOOST_SPIRIT_UTILITY_MAIN_HPP) diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/utility/chset.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/utility/chset.hpp deleted file mode 100644 index 363545642436..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/utility/chset.hpp +++ /dev/null @@ -1,187 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2003 Joel de Guzman - Copyright (c) 2001-2003 Daniel Nuffer - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_CHSET_HPP -#define BOOST_SPIRIT_CHSET_HPP - -/////////////////////////////////////////////////////////////////////////////// -#include -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -namespace utility { namespace impl { - - // This is here because some compilers choke on out-of-line member - // template functions. And we don't want to put the whole algorithm - // in the chset constructor in the class definition. - template - void construct_chset(boost::shared_ptr >& ptr, - CharT2 const* definition); - -}} // namespace utility::impl - -/////////////////////////////////////////////////////////////////////////////// -// -// chset class -// -/////////////////////////////////////////////////////////////////////////////// -template -class chset: public char_parser > { - -public: - chset(); - chset(chset const& arg_); - explicit chset(CharT arg_); - explicit chset(anychar_parser arg_); - explicit chset(nothing_parser arg_); - explicit chset(chlit const& arg_); - explicit chset(range const& arg_); - explicit chset(negated_char_parser > const& arg_); - explicit chset(negated_char_parser > const& arg_); - - template - explicit chset(CharT2 const* definition) - : ptr(new basic_chset()) - { - utility::impl::construct_chset(ptr, definition); - } - ~chset(); - - chset& operator=(chset const& rhs); - chset& operator=(CharT rhs); - chset& operator=(anychar_parser rhs); - chset& operator=(nothing_parser rhs); - chset& operator=(chlit const& rhs); - chset& operator=(range const& rhs); - chset& operator=(negated_char_parser > const& rhs); - chset& operator=(negated_char_parser > const& rhs); - - void set(range const& arg_); - void set(negated_char_parser > const& arg_); - void set(negated_char_parser > const& arg_); - - void clear(range const& arg_); - void clear(negated_char_parser > const& arg_); - bool test(CharT ch) const; - chset& inverse(); - void swap(chset& x); - - chset& operator|=(chset const& x); - chset& operator&=(chset const& x); - chset& operator-=(chset const& x); - chset& operator^=(chset const& x); - -private: - - boost::shared_ptr > ptr; -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// Generator functions -// -/////////////////////////////////////////////////////////////////////////////// -template -inline chset -chset_p(chlit const& arg_) -{ return chset(arg_); } - -////////////////////////////////// -template -inline chset -chset_p(range const& arg_) -{ return chset(arg_); } - -template -inline chset -chset_p(negated_char_parser > const& arg_) -{ return chset(arg_); } - -template -inline chset -chset_p(negated_char_parser > const& arg_) -{ return chset(arg_); } - -////////////////////////////////// -inline chset -chset_p(char const* init) -{ return chset(init); } - -////////////////////////////////// -inline chset -chset_p(wchar_t const* init) -{ return chset(init); } - -////////////////////////////////// -inline chset -chset_p(char ch) -{ return chset(ch); } - -////////////////////////////////// -inline chset -chset_p(wchar_t ch) -{ return chset(ch); } - -////////////////////////////////// -inline chset -chset_p(int ch) -{ return chset(ch); } - -////////////////////////////////// -inline chset -chset_p(unsigned int ch) -{ return chset(ch); } - -////////////////////////////////// -inline chset -chset_p(short ch) -{ return chset(ch); } - -#if !defined(BOOST_NO_INTRINSIC_WCHAR_T) -////////////////////////////////// -inline chset -chset_p(unsigned short ch) -{ return chset(ch); } -#endif -////////////////////////////////// -inline chset -chset_p(long ch) -{ return chset(ch); } - -////////////////////////////////// -inline chset -chset_p(unsigned long ch) -{ return chset(ch); } - -#ifdef BOOST_HAS_LONG_LONG -////////////////////////////////// -inline chset< ::boost::long_long_type> -chset_p( ::boost::long_long_type ch) -{ return chset< ::boost::long_long_type>(ch); } - -////////////////////////////////// -inline chset< ::boost::ulong_long_type> -chset_p( ::boost::ulong_long_type ch) -{ return chset< ::boost::ulong_long_type>(ch); } -#endif - -/////////////////////////////////////////////////////////////////////////////// -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif - -#include -#include diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/utility/chset_operators.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/utility/chset_operators.hpp deleted file mode 100644 index d42b5faae48a..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/utility/chset_operators.hpp +++ /dev/null @@ -1,402 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2003 Joel de Guzman - Copyright (c) 2001-2003 Daniel Nuffer - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_CHSET_OPERATORS_HPP -#define BOOST_SPIRIT_CHSET_OPERATORS_HPP - -/////////////////////////////////////////////////////////////////////////////// -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -/////////////////////////////////////////////////////////////////////////////// -// -// chset free operators -// -// Where a and b are both chsets, implements: -// -// a | b, a & b, a - b, a ^ b -// -// Where a is a chset, implements: -// -// ~a -// -/////////////////////////////////////////////////////////////////////////////// -template -chset -operator~(chset const& a); - -////////////////////////////////// -template -chset -operator|(chset const& a, chset const& b); - -////////////////////////////////// -template -chset -operator&(chset const& a, chset const& b); - -////////////////////////////////// -template -chset -operator-(chset const& a, chset const& b); - -////////////////////////////////// -template -chset -operator^(chset const& a, chset const& b); - -/////////////////////////////////////////////////////////////////////////////// -// -// range <--> chset free operators -// -// Where a is a chset and b is a range, and vice-versa, implements: -// -// a | b, a & b, a - b, a ^ b -// -/////////////////////////////////////////////////////////////////////////////// -template -chset -operator|(chset const& a, range const& b); - -////////////////////////////////// -template -chset -operator&(chset const& a, range const& b); - -////////////////////////////////// -template -chset -operator-(chset const& a, range const& b); - -////////////////////////////////// -template -chset -operator^(chset const& a, range const& b); - -////////////////////////////////// -template -chset -operator|(range const& a, chset const& b); - -////////////////////////////////// -template -chset -operator&(range const& a, chset const& b); - -////////////////////////////////// -template -chset -operator-(range const& a, chset const& b); - -////////////////////////////////// -template -chset -operator^(range const& a, chset const& b); - -/////////////////////////////////////////////////////////////////////////////// -// -// chlit <--> chset free operators -// -// Where a is a chset and b is a chlit, and vice-versa, implements: -// -// a | b, a & b, a - b, a ^ b -// -/////////////////////////////////////////////////////////////////////////////// -template -chset -operator|(chset const& a, chlit const& b); - -////////////////////////////////// -template -chset -operator&(chset const& a, chlit const& b); - -////////////////////////////////// -template -chset -operator-(chset const& a, chlit const& b); - -////////////////////////////////// -template -chset -operator^(chset const& a, chlit const& b); - -////////////////////////////////// -template -chset -operator|(chlit const& a, chset const& b); - -////////////////////////////////// -template -chset -operator&(chlit const& a, chset const& b); - -////////////////////////////////// -template -chset -operator-(chlit const& a, chset const& b); - -////////////////////////////////// -template -chset -operator^(chlit const& a, chset const& b); - -/////////////////////////////////////////////////////////////////////////////// -// -// negated_char_parser <--> chset free operators -// -// Where a is a chset and b is a range, and vice-versa, implements: -// -// a | b, a & b, a - b, a ^ b -// -/////////////////////////////////////////////////////////////////////////////// -template -chset -operator|(chset const& a, negated_char_parser > const& b); - -////////////////////////////////// -template -chset -operator&(chset const& a, negated_char_parser > const& b); - -////////////////////////////////// -template -chset -operator-(chset const& a, negated_char_parser > const& b); - -////////////////////////////////// -template -chset -operator^(chset const& a, negated_char_parser > const& b); - -////////////////////////////////// -template -chset -operator|(negated_char_parser > const& a, chset const& b); - -////////////////////////////////// -template -chset -operator&(negated_char_parser > const& a, chset const& b); - -////////////////////////////////// -template -chset -operator-(negated_char_parser > const& a, chset const& b); - -////////////////////////////////// -template -chset -operator^(negated_char_parser > const& a, chset const& b); - -/////////////////////////////////////////////////////////////////////////////// -// -// negated_char_parser <--> chset free operators -// -// Where a is a chset and b is a chlit, and vice-versa, implements: -// -// a | b, a & b, a - b, a ^ b -// -/////////////////////////////////////////////////////////////////////////////// -template -chset -operator|(chset const& a, negated_char_parser > const& b); - -////////////////////////////////// -template -chset -operator&(chset const& a, negated_char_parser > const& b); - -////////////////////////////////// -template -chset -operator-(chset const& a, negated_char_parser > const& b); - -////////////////////////////////// -template -chset -operator^(chset const& a, negated_char_parser > const& b); - -////////////////////////////////// -template -chset -operator|(negated_char_parser > const& a, chset const& b); - -////////////////////////////////// -template -chset -operator&(negated_char_parser > const& a, chset const& b); - -////////////////////////////////// -template -chset -operator-(negated_char_parser > const& a, chset const& b); - -////////////////////////////////// -template -chset -operator^(negated_char_parser > const& a, chset const& b); - -/////////////////////////////////////////////////////////////////////////////// -// -// literal primitives <--> chset free operators -// -// Where a is a chset and b is a literal primitive, -// and vice-versa, implements: -// -// a | b, a & b, a - b, a ^ b -// -/////////////////////////////////////////////////////////////////////////////// -template -chset -operator|(chset const& a, CharT b); - -////////////////////////////////// -template -chset -operator&(chset const& a, CharT b); - -////////////////////////////////// -template -chset -operator-(chset const& a, CharT b); - -////////////////////////////////// -template -chset -operator^(chset const& a, CharT b); - -////////////////////////////////// -template -chset -operator|(CharT a, chset const& b); - -////////////////////////////////// -template -chset -operator&(CharT a, chset const& b); - -////////////////////////////////// -template -chset -operator-(CharT a, chset const& b); - -////////////////////////////////// -template -chset -operator^(CharT a, chset const& b); - -/////////////////////////////////////////////////////////////////////////////// -// -// anychar_parser <--> chset free operators -// -// Where a is chset and b is a anychar_parser, and vice-versa, implements: -// -// a | b, a & b, a - b, a ^ b -// -/////////////////////////////////////////////////////////////////////////////// -template -chset -operator|(chset const& a, anychar_parser b); - -////////////////////////////////// -template -chset -operator&(chset const& a, anychar_parser b); - -////////////////////////////////// -template -chset -operator-(chset const& a, anychar_parser b); - -////////////////////////////////// -template -chset -operator^(chset const& a, anychar_parser b); - -////////////////////////////////// -template -chset -operator|(anychar_parser a, chset const& b); - -////////////////////////////////// -template -chset -operator&(anychar_parser a, chset const& b); - -////////////////////////////////// -template -chset -operator-(anychar_parser a, chset const& b); - -////////////////////////////////// -template -chset -operator^(anychar_parser a, chset const& b); - -/////////////////////////////////////////////////////////////////////////////// -// -// nothing_parser <--> chset free operators -// -// Where a is chset and b is nothing_parser, and vice-versa, implements: -// -// a | b, a & b, a - b, a ^ b -// -/////////////////////////////////////////////////////////////////////////////// -template -chset -operator|(chset const& a, nothing_parser b); - -////////////////////////////////// -template -chset -operator&(chset const& a, nothing_parser b); - -////////////////////////////////// -template -chset -operator-(chset const& a, nothing_parser b); - -////////////////////////////////// -template -chset -operator^(chset const& a, nothing_parser b); - -////////////////////////////////// -template -chset -operator|(nothing_parser a, chset const& b); - -////////////////////////////////// -template -chset -operator&(nothing_parser a, chset const& b); - -////////////////////////////////// -template -chset -operator-(nothing_parser a, chset const& b); - -////////////////////////////////// -template -chset -operator^(nothing_parser a, chset const& b); - -/////////////////////////////////////////////////////////////////////////////// -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif - -#include diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/utility/confix.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/utility/confix.hpp deleted file mode 100644 index 42228ea242a3..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/utility/confix.hpp +++ /dev/null @@ -1,405 +0,0 @@ -/*============================================================================= - Copyright (c) 2002-2003 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_CONFIX_HPP -#define BOOST_SPIRIT_CONFIX_HPP - -/////////////////////////////////////////////////////////////////////////////// -#include -#include -#include -#include - -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -/////////////////////////////////////////////////////////////////////////////// -// -// confix_parser class -// -// Parses a sequence of 3 sub-matches. This class may -// be used to parse structures, where the opening part is possibly -// contained in the expression part and the whole sequence is only -// parsed after seeing the closing part matching the first opening -// subsequence. Example: C-comments: -// -// /* This is a C-comment */ -// -/////////////////////////////////////////////////////////////////////////////// - -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -#pragma warning(push) -#pragma warning(disable:4512) //assignment operator could not be generated -#endif - -template -struct confix_parser_gen; - -template < - typename OpenT, typename ExprT, typename CloseT, typename CategoryT, - typename NestedT, typename LexemeT -> -struct confix_parser : - public parser< - confix_parser - > -{ - typedef - confix_parser - self_t; - - confix_parser(OpenT const &open_, ExprT const &expr_, CloseT const &close_) - : open(open_), expr(expr_), close(close_) - {} - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - return impl::confix_parser_type:: - parse(NestedT(), LexemeT(), *this, scan, open, expr, close); - } - -private: - - typename as_parser::type::embed_t open; - typename as_parser::type::embed_t expr; - typename as_parser::type::embed_t close; -}; - -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -#pragma warning(pop) -#endif - -/////////////////////////////////////////////////////////////////////////////// -// -// Confix parser generator template -// -// This is a helper for generating a correct confix_parser<> from -// auxiliary parameters. There are the following types supported as -// parameters yet: parsers, single characters and strings (see -// as_parser). -// -// If the body parser is an action_parser_category type parser (a parser -// with an attached semantic action) we have to do something special. This -// happens, if the user wrote something like: -// -// confix_p(open, body[f], close) -// -// where 'body' is the parser matching the body of the confix sequence -// and 'f' is a functor to be called after matching the body. If we would -// do nothing, the resulting code would parse the sequence as follows: -// -// start >> (body[f] - close) >> close -// -// what in most cases is not what the user expects. -// (If this _is_ what you've expected, then please use the confix_p -// generator function 'direct()', which will inhibit -// re-attaching the actor to the body parser). -// -// To make the confix parser behave as expected: -// -// start >> (body - close)[f] >> close -// -// the actor attached to the 'body' parser has to be re-attached to the -// (body - close) parser construct, which will make the resulting confix -// parser 'do the right thing'. This refactoring is done by the help of -// the refactoring parsers (see the files refactoring.[hi]pp). -// -// Additionally special care must be taken, if the body parser is a -// unary_parser_category type parser as -// -// confix_p(open, *anychar_p, close) -// -// which without any refactoring would result in -// -// start >> (*anychar_p - close) >> close -// -// and will not give the expected result (*anychar_p will eat up all the -// input up to the end of the input stream). So we have to refactor this -// into: -// -// start >> *(anychar_p - close) >> close -// -// what will give the correct result. -// -// The case, where the body parser is a combination of the two mentioned -// problems (i.e. the body parser is a unary parser with an attached -// action), is handled accordingly too: -// -// confix_p(start, (*anychar_p)[f], end) -// -// will be parsed as expected: -// -// start >> (*(anychar_p - end))[f] >> end. -// -/////////////////////////////////////////////////////////////////////////////// - -template -struct confix_parser_gen -{ - // Generic generator function for creation of concrete confix parsers - - template - struct paren_op_result_type - { - typedef confix_parser< - typename as_parser::type, - typename as_parser::type, - typename as_parser::type, - typename as_parser::type::parser_category_t, - NestedT, - LexemeT - > type; - }; - - template - typename paren_op_result_type::type - operator()(StartT const &start_, ExprT const &expr_, EndT const &end_) const - { - typedef typename paren_op_result_type::type - return_t; - - return return_t( - as_parser::convert(start_), - as_parser::convert(expr_), - as_parser::convert(end_) - ); - } - - // Generic generator function for creation of concrete confix parsers - // which have an action directly attached to the ExprT part of the - // parser (see comment above, no automatic refactoring) - - template - struct direct_result_type - { - typedef confix_parser< - typename as_parser::type, - typename as_parser::type, - typename as_parser::type, - plain_parser_category, // do not re-attach action - NestedT, - LexemeT - > type; - }; - - template - typename direct_result_type::type - direct(StartT const &start_, ExprT const &expr_, EndT const &end_) const - { - typedef typename direct_result_type::type - return_t; - - return return_t( - as_parser::convert(start_), - as_parser::convert(expr_), - as_parser::convert(end_) - ); - } -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// Predefined non_nested confix parser generators -// -/////////////////////////////////////////////////////////////////////////////// - -const confix_parser_gen confix_p = - confix_parser_gen(); - -/////////////////////////////////////////////////////////////////////////////// -// -// Comments are special types of confix parsers -// -// Comment parser generator template. This is a helper for generating a -// correct confix_parser<> from auxiliary parameters, which is able to -// parse comment constructs: (StartToken >> Comment text >> EndToken). -// -// There are the following types supported as parameters yet: parsers, -// single characters and strings (see as_parser). -// -// There are two diffenerent predefined comment parser generators -// (comment_p and comment_nest_p, see below), which may be used for -// creating special comment parsers in two different ways. -// -// If these are used with one parameter, a comment starting with the given -// first parser parameter up to the end of the line is matched. So for -// instance the following parser matches C++ style comments: -// -// comment_p("//"). -// -// If these are used with two parameters, a comment starting with the -// first parser parameter up to the second parser parameter is matched. -// For instance a C style comment parser should be constrcuted as: -// -// comment_p("/*", "*/"). -// -// Please note, that a comment is parsed implicitly as if the whole -// comment_p(...) statement were embedded into a lexeme_d[] directive. -// -/////////////////////////////////////////////////////////////////////////////// - -template -struct comment_parser_gen -{ - // Generic generator function for creation of concrete comment parsers - // from an open token. The newline parser eol_p is used as the - // closing token. - - template - struct paren_op1_result_type - { - typedef confix_parser< - typename as_parser::type, - kleene_star, - alternative, - unary_parser_category, // there is no action to re-attach - NestedT, - is_lexeme // insert implicit lexeme_d[] - > - type; - }; - - template - typename paren_op1_result_type::type - operator() (StartT const &start_) const - { - typedef typename paren_op1_result_type::type - return_t; - - return return_t( - as_parser::convert(start_), - *anychar_p, - eol_p | end_p - ); - } - - // Generic generator function for creation of concrete comment parsers - // from an open and a close tokens. - - template - struct paren_op2_result_type - { - typedef confix_parser< - typename as_parser::type, - kleene_star, - typename as_parser::type, - unary_parser_category, // there is no action to re-attach - NestedT, - is_lexeme // insert implicit lexeme_d[] - > type; - }; - - template - typename paren_op2_result_type::type - operator() (StartT const &start_, EndT const &end_) const - { - typedef typename paren_op2_result_type::type - return_t; - - return return_t( - as_parser::convert(start_), - *anychar_p, - as_parser::convert(end_) - ); - } -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// Predefined non_nested comment parser generator -// -/////////////////////////////////////////////////////////////////////////////// - -const comment_parser_gen comment_p = - comment_parser_gen(); - -/////////////////////////////////////////////////////////////////////////////// -// -// comment_nest_parser class -// -// Parses a nested comments. -// Example: nested PASCAL-comments: -// -// { This is a { nested } PASCAL-comment } -// -/////////////////////////////////////////////////////////////////////////////// - -template -struct comment_nest_parser: - public parser > -{ - typedef comment_nest_parser self_t; - - comment_nest_parser(OpenT const &open_, CloseT const &close_): - open(open_), close(close_) - {} - - template - typename parser_result::type - parse(ScannerT const &scan) const - { - return do_parse( - open >> *(*this | (anychar_p - close)) >> close, - scan); - } - -private: - template - typename parser_result::type - do_parse(ParserT const &p, ScannerT const &scan) const - { - return - impl::contiguous_parser_parse< - typename parser_result::type - >(p, scan, scan); - } - - typename as_parser::type::embed_t open; - typename as_parser::type::embed_t close; -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// Predefined nested comment parser generator -// -/////////////////////////////////////////////////////////////////////////////// - -template -struct comment_nest_p_result -{ - typedef comment_nest_parser< - typename as_parser::type, - typename as_parser::type - > type; -}; - -template -inline typename comment_nest_p_result::type -comment_nest_p(OpenT const &open, CloseT const &close) -{ - typedef typename comment_nest_p_result::type - result_t; - - return result_t( - as_parser::convert(open), - as_parser::convert(close) - ); -} - -/////////////////////////////////////////////////////////////////////////////// -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/utility/confix_fwd.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/utility/confix_fwd.hpp deleted file mode 100644 index 24e223623321..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/utility/confix_fwd.hpp +++ /dev/null @@ -1,39 +0,0 @@ -/*============================================================================= - Copyright (c) 2006 Tobias Schwinger - http://spirit.sourceforge.net/ - - 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_CONFIX_FWD_HPP) -#define BOOST_SPIRIT_CONFIX_FWD_HPP - -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - struct is_nested; - struct non_nested; - struct is_lexeme; - struct non_lexeme; - - template < - typename OpenT, typename ExprT, typename CloseT, - typename CategoryT = plain_parser_category, - typename NestedT = non_nested, typename LexemeT = non_lexeme - > - struct confix_parser; - - template - struct comment_nest_parser; - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif - - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/utility/distinct.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/utility/distinct.hpp deleted file mode 100644 index b66d409f5d91..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/utility/distinct.hpp +++ /dev/null @@ -1,229 +0,0 @@ -/*============================================================================= - Copyright (c) 1998-2003 Joel de Guzman - Copyright (c) 2003 Vaclav Vesely - http://spirit.sourceforge.net/ - - 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_DISTINCT_HPP) -#define BOOST_SPIRIT_DISTINCT_HPP - -#include -#include -#include -#include -#include -#include -#include - -#include - -namespace boost { - namespace spirit { - BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -//----------------------------------------------------------------------------- -// distinct_parser class - -template -class distinct_parser -{ -public: - typedef - contiguous< - sequence< - chseq, - negated_empty_match_parser< - TailT - > - > - > - result_t; - - distinct_parser() - : tail(chset()) - { - } - - explicit distinct_parser(parser const & tail_) - : tail(tail_.derived()) - { - } - - explicit distinct_parser(CharT const* letters) - : tail(chset_p(letters)) - { - } - - result_t operator()(CharT const* str) const - { - return lexeme_d[chseq_p(str) >> ~epsilon_p(tail)]; - } - - TailT tail; -}; - -//----------------------------------------------------------------------------- -// distinct_directive class - -template -class distinct_directive -{ -public: - template - struct result { - typedef - contiguous< - sequence< - ParserT, - negated_empty_match_parser< - TailT - > - > - > - type; - }; - - distinct_directive() - : tail(chset()) - { - } - - explicit distinct_directive(CharT const* letters) - : tail(chset_p(letters)) - { - } - - explicit distinct_directive(parser const & tail_) - : tail(tail_.derived()) - { - } - - template - typename result::type>::type - operator[](ParserT const &subject) const - { - return - lexeme_d[as_parser::convert(subject) >> ~epsilon_p(tail)]; - } - - TailT tail; -}; - -//----------------------------------------------------------------------------- -// dynamic_distinct_parser class - -template -class dynamic_distinct_parser -{ -public: - typedef typename ScannerT::value_t char_t; - - typedef - rule< - typename no_actions_scanner< - typename lexeme_scanner::type - >::type - > - tail_t; - - typedef - contiguous< - sequence< - chseq, - negated_empty_match_parser< - tail_t - > - > - > - result_t; - - dynamic_distinct_parser() - : tail(nothing_p) - { - } - - template - explicit dynamic_distinct_parser(parser const & tail_) - : tail(tail_.derived()) - { - } - - explicit dynamic_distinct_parser(char_t const* letters) - : tail(chset_p(letters)) - { - } - - result_t operator()(char_t const* str) const - { - return lexeme_d[chseq_p(str) >> ~epsilon_p(tail)]; - } - - tail_t tail; -}; - -//----------------------------------------------------------------------------- -// dynamic_distinct_directive class - -template -class dynamic_distinct_directive -{ -public: - typedef typename ScannerT::value_t char_t; - - typedef - rule< - typename no_actions_scanner< - typename lexeme_scanner::type - >::type - > - tail_t; - - template - struct result { - typedef - contiguous< - sequence< - ParserT, - negated_empty_match_parser< - tail_t - > - > - > - type; - }; - - dynamic_distinct_directive() - : tail(nothing_p) - { - } - - template - explicit dynamic_distinct_directive(parser const & tail_) - : tail(tail_.derived()) - { - } - - explicit dynamic_distinct_directive(char_t const* letters) - : tail(chset_p(letters)) - { - } - - template - typename result::type>::type - operator[](ParserT const &subject) const - { - return - lexeme_d[as_parser::convert(subject) >> ~epsilon_p(tail)]; - } - - tail_t tail; -}; - -//----------------------------------------------------------------------------- - BOOST_SPIRIT_CLASSIC_NAMESPACE_END - } // namespace spirit -} // namespace boost - -#endif // !defined(BOOST_SPIRIT_DISTINCT_HPP) diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/utility/distinct_fwd.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/utility/distinct_fwd.hpp deleted file mode 100644 index 368d1f01624c..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/utility/distinct_fwd.hpp +++ /dev/null @@ -1,37 +0,0 @@ -/*============================================================================= - Copyright (c) 2006 Tobias Schwinger - http://spirit.sourceforge.net/ - - 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_DISTINCT_FWD_HPP) -#define BOOST_SPIRIT_DISTINCT_FWD_HPP - -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - template class chset; - - template > - class distinct_parser; - - template > - class distinct_directive; - - template > - class dynamic_distinct_parser; - - template > - class dynamic_distinct_directive; - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif - - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/utility/escape_char.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/utility/escape_char.hpp deleted file mode 100644 index 375402f73a76..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/utility/escape_char.hpp +++ /dev/null @@ -1,184 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2003 Daniel Nuffer - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_ESCAPE_CHAR_HPP -#define BOOST_SPIRIT_ESCAPE_CHAR_HPP - -/////////////////////////////////////////////////////////////////////////////// -#include -#include -#include -#include - -#include -#include - -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -/////////////////////////////////////////////////////////////////////////////// -// -// escape_char_action class -// -// Links an escape char parser with a user defined semantic action. -// The semantic action may be a function or a functor. A function -// should be compatible with the interface: -// -// void f(CharT ch); -// -// A functor should have a member operator() with a compatible signature -// as above. The matching character is passed into the function/functor. -// This is the default class that character parsers use when dealing with -// the construct: -// -// p[f] -// -// where p is a parser and f is a function or functor. -// -/////////////////////////////////////////////////////////////////////////////// -template < - typename ParserT, typename ActionT, - unsigned long Flags, typename CharT -> -struct escape_char_action -: public unary > > -{ - typedef escape_char_action - self_t; - typedef action_parser_category parser_category_t; - typedef unary > base_t; - - template - struct result - { - typedef typename match_result::type type; - }; - - escape_char_action(ParserT const& p, ActionT const& a) - : base_t(p), actor(a) {} - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - return impl::escape_char_action_parse:: - parse(scan, *this); - } - - ActionT const& predicate() const { return actor; } - -private: - - ActionT actor; -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// escape_char_parser class -// -// The escape_char_parser helps in conjunction with the escape_char_action -// template class (see above) in parsing escaped characters. There are two -// different variants of this parser: one for parsing C style escaped -// characters and one for parsing LEX style escaped characters. -// -// The C style escaped character parser is generated, when the template -// parameter 'Flags' is equal to 'c_escapes' (a constant defined in the -// file impl/escape_char.ipp). This parser recognizes all valid C escape -// character sequences: '\t', '\b', '\f', '\n', '\r', '\"', '\'', '\\' -// and the numeric style escapes '\120' (octal) and '\x2f' (hexadecimal) -// and converts these to their character equivalent, for instance the -// sequence of a backslash and a 'b' is parsed as the character '\b'. -// All other escaped characters are rejected by this parser. -// -// The LEX style escaped character parser is generated, when the template -// parameter 'Flags' is equal to 'lex_escapes' (a constant defined in the -// file impl/escape_char.ipp). This parser recognizes all the C style -// escaped character sequences (as described above) and additionally -// does not reject all other escape sequences. All not mentioned escape -// sequences are converted by the parser to the plain character, for -// instance '\a' will be parsed as 'a'. -// -// All not escaped characters are parsed without modification. -// -/////////////////////////////////////////////////////////////////////////////// - -template -struct escape_char_action_parser_gen; - -template -struct escape_char_parser : - public parser > { - - // only the values c_escapes and lex_escapes are valid for Flags - BOOST_STATIC_ASSERT(Flags == c_escapes || Flags == lex_escapes); - - typedef escape_char_parser self_t; - typedef - escape_char_action_parser_gen - action_parser_generator_t; - - template - struct result { - - typedef typename match_result::type type; - }; - - template - escape_char_action - operator[](ActionT const& actor) const - { - return escape_char_action(*this, actor); - } - - template - typename parser_result::type - parse(ScannerT const &scan) const - { - return impl::escape_char_parse::parse(scan, *this); - } -}; - -template -struct escape_char_action_parser_gen { - - template - static escape_char_action - generate (ParserT const &p, ActionT const &actor) - { - typedef - escape_char_action - action_parser_t; - return action_parser_t(p, actor); - } -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// predefined escape_char_parser objects -// -// These objects should be used for generating correct escaped character -// parsers. -// -/////////////////////////////////////////////////////////////////////////////// -const escape_char_parser lex_escape_ch_p = - escape_char_parser(); - -const escape_char_parser c_escape_ch_p = - escape_char_parser(); - -/////////////////////////////////////////////////////////////////////////////// -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/utility/escape_char_fwd.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/utility/escape_char_fwd.hpp deleted file mode 100644 index 1485367164d2..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/utility/escape_char_fwd.hpp +++ /dev/null @@ -1,30 +0,0 @@ -/*============================================================================= - Copyright (c) 2006 Tobias Schwinger - http://spirit.sourceforge.net/ - - 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_ESCAPE_CHAR_FWD_HPP) -#define BOOST_SPIRIT_ESCAPE_CHAR_FWD_HPP - -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - template - struct escape_char_parser; - - template < - class ParserT, typename ActionT, - unsigned long Flags, typename CharT = char> - struct escape_char_action; - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/utility/flush_multi_pass.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/utility/flush_multi_pass.hpp deleted file mode 100644 index ad69f4fefb33..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/utility/flush_multi_pass.hpp +++ /dev/null @@ -1,77 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2003 Daniel Nuffer - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_FLUSH_MULTI_PASS_HPP -#define BOOST_SPIRIT_FLUSH_MULTI_PASS_HPP - -/////////////////////////////////////////////////////////////////////////////// -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - namespace impl { - - template - void flush_iterator(T &) {} - - template - void flush_iterator(BOOST_SPIRIT_CLASSIC_NS::multi_pass< - T1, T2, T3, T4, BOOST_SPIRIT_CLASSIC_NS::multi_pass_policies::std_deque> &i) - { - i.clear_queue(); - } - - } // namespace impl - - /////////////////////////////////////////////////////////////////////////// - // - // flush_multi_pass_parser - // - // The flush_multi_pass_parser flushes an underlying - // multi_pass_iterator during the normal parsing process. This may - // be used at certain points during the parsing process, when it is - // clear, that no backtracking is needed anymore and the input - // gathered so far may be discarded. - // - /////////////////////////////////////////////////////////////////////////// - class flush_multi_pass_parser - : public parser - { - public: - typedef flush_multi_pass_parser this_t; - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - impl::flush_iterator(scan.first); - return scan.empty_match(); - } - }; - - /////////////////////////////////////////////////////////////////////////// - // - // predefined flush_multi_pass_p object - // - // This object should may used to flush a multi_pass_iterator along - // the way during the normal parsing process. - // - /////////////////////////////////////////////////////////////////////////// - - flush_multi_pass_parser const - flush_multi_pass_p = flush_multi_pass_parser(); - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif // BOOST_SPIRIT_FLUSH_MULTI_PASS_HPP diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/utility/functor_parser.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/utility/functor_parser.hpp deleted file mode 100644 index e991eaf7d7cf..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/utility/functor_parser.hpp +++ /dev/null @@ -1,69 +0,0 @@ -/*============================================================================= - Copyright (c) 2002-2003 Joel de Guzman - Copyright (c) 2002-2003 Juan Carlos Arevalo-Baeza - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_FUNCTOR_PARSER_HPP -#define BOOST_SPIRIT_FUNCTOR_PARSER_HPP - -/////////////////////////////////////////////////////////////////////////////// -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // - // functor_parser class - // - // Once a functor parser has been defined, you can build a real - // parser from it by passing it to this class as the template - // parameter. - // - /////////////////////////////////////////////////////////////////////////// - template < class FunctorT > - struct functor_parser : public parser > - { - FunctorT functor; - - functor_parser(): functor() {} - functor_parser(FunctorT const& functor_): functor(functor_) {} - - typedef typename FunctorT::result_t functor_result_t; - typedef functor_parser self_t; - - template - struct result - { - typedef typename match_result::type - type; - }; - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - typedef typename ScannerT::iterator_t iterator_t; - - iterator_t const s(scan.first); - functor_result_t functor_result; - std::ptrdiff_t len = functor(scan, functor_result); - - if (len < 0) - return scan.no_match(); - else - return scan.create_match(std::size_t(len), functor_result, s, scan.first); - } - }; - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/utility/grammar_def.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/utility/grammar_def.hpp deleted file mode 100644 index f6a463df4de2..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/utility/grammar_def.hpp +++ /dev/null @@ -1,313 +0,0 @@ -/*============================================================================= - Copyright (c) 2003 Hartmut Kaiser - Copyright (c) 2003 Joel de Guzman - http://spirit.sourceforge.net/ - - 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_GRAMMAR_DEF_HPP) -#define BOOST_SPIRIT_GRAMMAR_DEF_HPP - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -// -// Spirit predefined maximum grammar start parser limit. This limit defines -// the maximum number of possible different parsers exposed from a -// particular grammar. This number defaults to 3. -// The actual maximum is rounded up in multiples of 3. Thus, if this value -// is 4, the actual limit is 6. The ultimate maximum limit in this -// implementation is 15. -// -// It should NOT be greater than PHOENIX_LIMIT! -// -/////////////////////////////////////////////////////////////////////////////// -#if !defined(BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT) -#define BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT PHOENIX_LIMIT -#endif - -/////////////////////////////////////////////////////////////////////////////// -// -// ensure BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT <= PHOENIX_LIMIT and -// BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT <= 15 and -// BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT > 0 -// -/////////////////////////////////////////////////////////////////////////////// -BOOST_STATIC_ASSERT(BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT <= PHOENIX_LIMIT); -BOOST_STATIC_ASSERT(BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT <= 15); -BOOST_STATIC_ASSERT(BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT > 0); - -////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -struct same {}; - -/////////////////////////////////////////////////////////////////////////////// -namespace impl { - - /////////////////////////////////////////////////////////////////////////// - // - // The make_const_pointer meta function allows to generate a T const* - // needed to store the pointer to a given start parser from a grammar. - // - /////////////////////////////////////////////////////////////////////////// - template - struct make_const_pointer { - - private: - // T0 shouldn't be of type 'same' - BOOST_STATIC_ASSERT((!boost::is_same::value)); - - typedef typename boost::mpl::if_c< - boost::is_same::value, - T0 const *, - T const * - >::type - ptr_type; - - public: - // If the type in question is phoenix::nil_t, then the returned type - // is still phoenix::nil_t, otherwise a constant pointer type to the - // inspected type is returned. - typedef typename boost::mpl::if_c< - boost::is_same::value, - ::phoenix::nil_t, - ptr_type - >::type - type; - }; - - /////////////////////////////////////////////////////////////////////////// - template - struct assign_zero_to_tuple_member { - - template - static void do_(TupleT &t) - { - ::phoenix::tuple_index const idx; - t[idx] = 0; - } - }; - - template - struct assign_zero_to_tuple_member { - - template - static void do_(TupleT& /*t*/) {} - }; - - struct phoenix_nil_type { - - typedef ::phoenix::nil_t type; - }; - - template - struct init_tuple_member { - - template - static void - do_(TupleT &t) - { - typedef typename boost::mpl::eval_if_c< - (N < TupleT::length), - ::phoenix::tuple_element, - phoenix_nil_type - >::type - element_type; - - assign_zero_to_tuple_member::do_(t); - } - }; - -/////////////////////////////////////////////////////////////////////////////// -} // namespace impl - -/////////////////////////////////////////////////////////////////////////////// -// -// grammar_def class -// -// This class may be used as a base class for the embedded definition -// class inside the grammar<> derived user grammar. -// It exposes the two functions needed for start rule access: -// -// rule<> const &start() const; -// -// and -// -// template -// rule<> const *get_start_parser() const; -// -// Additionally it exposes a set o 'start_parsers' functions, which are to -// be called by the user to define the parsers to use as start parsers -// of the given grammar. -// -/////////////////////////////////////////////////////////////////////////////// -template < - typename T, - BOOST_PP_ENUM_PARAMS( - BOOST_PP_DEC(BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT_A), typename T) -> -class grammar_def { - -private: - /////////////////////////////////////////////////////////////////////////// - // - // This generates the full tuple type from the given template parameters - // T, T0, ... - // - // typedef ::phoenix::tuple< - // typename impl::make_const_pointer::type, - // typename impl::make_const_pointer::type, - // ... - // > tuple_t; - // - /////////////////////////////////////////////////////////////////////////// - #define BOOST_SPIRIT_GRAMMARDEF_TUPLE_PARAM(z, N, _) \ - typename impl::make_const_pointer::type \ - /**/ - - typedef ::phoenix::tuple< - typename impl::make_const_pointer::type, - BOOST_PP_ENUM( - BOOST_PP_DEC(BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT_A), - BOOST_SPIRIT_GRAMMARDEF_TUPLE_PARAM, - _ - ) - > tuple_t; - - #undef BOOST_SPIRIT_GRAMMARDEF_TUPLE_PARAM - /////////////////////////////////////////////////////////////////////////// - -protected: - /////////////////////////////////////////////////////////////////////////// - // - // This generates a sequence of 'start_parsers' functions with increasing - // number of arguments, which allow to initialize the tuple members with - // the pointers to the start parsers of the grammar: - // - // template - // void start_parsers (TC0 const &t0, ...) - // { - // using ::phoenix::tuple_index_names::_1; - // t[_1] = &t0; - // ... - // } - // - // where a TC0 const* must be convertible to a T0 const* - // - /////////////////////////////////////////////////////////////////////////// - #define BOOST_SPIRIT_GRAMMARDEF_ENUM_PARAMS(z, N, _) \ - BOOST_PP_CAT(TC, N) const &BOOST_PP_CAT(t, N) \ - /**/ - #define BOOST_SPIRIT_GRAMMARDEF_ENUM_ASSIGN(z, N, _) \ - using ::phoenix::tuple_index_names::BOOST_PP_CAT(_, BOOST_PP_INC(N)); \ - t[BOOST_PP_CAT(_, BOOST_PP_INC(N))] = &BOOST_PP_CAT(t, N); \ - /**/ - #define BOOST_SPIRIT_GRAMMARDEF_ENUM_START(z, N, _) \ - template \ - void \ - start_parsers(BOOST_PP_ENUM_ ## z(BOOST_PP_INC(N), \ - BOOST_SPIRIT_GRAMMARDEF_ENUM_PARAMS, _) ) \ - { \ - BOOST_PP_REPEAT_ ## z(BOOST_PP_INC(N), \ - BOOST_SPIRIT_GRAMMARDEF_ENUM_ASSIGN, _) \ - } \ - /**/ - - BOOST_PP_REPEAT( - BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT_A, - BOOST_SPIRIT_GRAMMARDEF_ENUM_START, _) - - #undef BOOST_SPIRIT_GRAMMARDEF_ENUM_START - #undef BOOST_SPIRIT_GRAMMARDEF_ENUM_ASSIGN - #undef BOOST_SPIRIT_GRAMMARDEF_ENUM_PARAMS - /////////////////////////////////////////////////////////////////////////// - - /////////////////////////////////////////////////////////////////////////// - // - // This generates some initialization code, which allows to initialize all - // used tuple members to 0 (zero): - // - // t[_1] = 0; - // impl::init_tuple_member<1>::do_(t); - // ... - // - /////////////////////////////////////////////////////////////////////////// - #define BOOST_SPIRIT_GRAMMARDEF_ENUM_INIT(z, N, _) \ - impl::init_tuple_member::do_(t); \ - /**/ - - grammar_def() - { - using ::phoenix::tuple_index_names::_1; - t[_1] = 0; - BOOST_PP_REPEAT_FROM_TO( - 1, BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT_A, - BOOST_SPIRIT_GRAMMARDEF_ENUM_INIT, _) - } - - #undef BOOST_SPIRIT_GRAMMARDEF_ENUM_INIT - /////////////////////////////////////////////////////////////////////////// - -public: - T const & - start() const - { - // If the following assertion is fired, you have probably forgot to call - // the start_parser() function from inside the constructor of your - // embedded definition class to initialize the start parsers to be exposed - // from your grammar. - using ::phoenix::tuple_index_names::_1; - BOOST_SPIRIT_ASSERT(0 != t[_1]); - return *t[_1]; - } - - template - typename ::phoenix::tuple_element::crtype - get_start_parser() const - { - // If the following expression yields a compiler error, you have probably - // tried to access a start rule, which isn't exposed as such from your - // grammar. - BOOST_STATIC_ASSERT(N > 0 && N < tuple_t::length); - - ::phoenix::tuple_index const idx; - - // If the following assertion is fired, you have probably forgot to call - // the start_parser() function from inside the constructor of your - // embedded definition class to initialize the start parsers to be exposed - // from your grammar. - // Another reason may be, that there is a count mismatch between - // the number of template parameters to the grammar_def<> class and the - // number of parameters used while calling start_parsers(). - BOOST_SPIRIT_ASSERT(0 != t[idx]); - - return t[idx]; - } - -private: - tuple_t t; -}; - -#undef BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT_A - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif // BOOST_SPIRIT_GRAMMAR_DEF_HPP diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/utility/grammar_def_fwd.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/utility/grammar_def_fwd.hpp deleted file mode 100644 index cf9e3851c605..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/utility/grammar_def_fwd.hpp +++ /dev/null @@ -1,52 +0,0 @@ -/*============================================================================= - Copyright (c) 2006 Tobias Schwinger - http://spirit.sourceforge.net/ - - 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_GRAMMAR_DEF_FWD_HPP) -#define BOOST_SPIRIT_GRAMMAR_DEF_FWD_HPP - -#include -#include - -#include -#include - -#if !defined(BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT) -#define BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT PHOENIX_LIMIT -#endif - -// Calculate an integer rounded up to the nearest integer dividable by 3 -#if BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT > 12 -#define BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT_A 15 -#elif BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT > 9 -#define BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT_A 12 -#elif BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT > 6 -#define BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT_A 9 -#elif BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT > 3 -#define BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT_A 6 -#else -#define BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT_A 3 -#endif - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - template < - typename T, - BOOST_PP_ENUM_BINARY_PARAMS( - BOOST_PP_DEC(BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT_A), - typename T, = ::phoenix::nil_t BOOST_PP_INTERCEPT - ) - > - class grammar_def; - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/utility/impl/chset.ipp b/framework/contrib/boost/include/boost/spirit/home/classic/utility/impl/chset.ipp deleted file mode 100644 index f6da6f2f3fa1..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/utility/impl/chset.ipp +++ /dev/null @@ -1,322 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2003 Joel de Guzman - Copyright (c) 2001-2003 Daniel Nuffer - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_CHSET_IPP -#define BOOST_SPIRIT_CHSET_IPP - -/////////////////////////////////////////////////////////////////////////////// -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -/////////////////////////////////////////////////////////////////////////////// -// -// chset class -// -/////////////////////////////////////////////////////////////////////////////// -namespace utility { namespace impl { - template - inline void - detach(boost::shared_ptr >& ptr) - { - if (!ptr.unique()) - ptr = boost::shared_ptr > - (new basic_chset(*ptr)); - } - - template - inline void - detach_clear(boost::shared_ptr >& ptr) - { - if (ptr.unique()) - ptr->clear(); - else - ptr.reset(new basic_chset()); - } - - template - void construct_chset(boost::shared_ptr >& ptr, - CharT2 const* definition) - { - CharT2 ch = *definition++; - while (ch) - { - CharT2 next = *definition++; - if (next == '-') - { - next = *definition++; - if (next == 0) - { - ptr->set(ch); - ptr->set('-'); - break; - } - ptr->set(ch, next); - } - else - { - ptr->set(ch); - } - ch = next; - } - } - -}} // namespace utility::impl - -template -inline chset::chset() -: ptr(new basic_chset()) {} - -template -inline chset::chset(chset const& arg_) -: ptr(new basic_chset(*arg_.ptr)) {} - -template -inline chset::chset(CharT arg_) -: ptr(new basic_chset()) -{ ptr->set(arg_); } - -template -inline chset::chset(anychar_parser /*arg*/) -: ptr(new basic_chset()) -{ - ptr->set( - (std::numeric_limits::min)(), - (std::numeric_limits::max)() - ); -} - -template -inline chset::chset(nothing_parser /*arg_*/) -: ptr(new basic_chset()) {} - -template -inline chset::chset(chlit const& arg_) -: ptr(new basic_chset()) -{ ptr->set(arg_.ch); } - -template -inline chset::chset(range const& arg_) -: ptr(new basic_chset()) -{ ptr->set(arg_.first, arg_.last); } - -template -inline chset::chset(negated_char_parser > const& arg_) -: ptr(new basic_chset()) -{ - set(arg_); -} - -template -inline chset::chset(negated_char_parser > const& arg_) -: ptr(new basic_chset()) -{ - set(arg_); -} - -template -inline chset::~chset() {} - -template -inline chset& -chset::operator=(chset const& rhs) -{ - ptr = rhs.ptr; - return *this; -} - -template -inline chset& -chset::operator=(CharT rhs) -{ - utility::impl::detach_clear(ptr); - ptr->set(rhs); - return *this; -} - -template -inline chset& -chset::operator=(anychar_parser /*rhs*/) -{ - utility::impl::detach_clear(ptr); - ptr->set( - (std::numeric_limits::min)(), - (std::numeric_limits::max)() - ); - return *this; -} - -template -inline chset& -chset::operator=(nothing_parser /*rhs*/) -{ - utility::impl::detach_clear(ptr); - return *this; -} - -template -inline chset& -chset::operator=(chlit const& rhs) -{ - utility::impl::detach_clear(ptr); - ptr->set(rhs.ch); - return *this; -} - -template -inline chset& -chset::operator=(range const& rhs) -{ - utility::impl::detach_clear(ptr); - ptr->set(rhs.first, rhs.last); - return *this; -} - -template -inline chset& -chset::operator=(negated_char_parser > const& rhs) -{ - utility::impl::detach_clear(ptr); - set(rhs); - return *this; -} - -template -inline chset& -chset::operator=(negated_char_parser > const& rhs) -{ - utility::impl::detach_clear(ptr); - set(rhs); - return *this; -} - -template -inline void -chset::set(range const& arg_) -{ - utility::impl::detach(ptr); - ptr->set(arg_.first, arg_.last); -} - -template -inline void -chset::set(negated_char_parser > const& arg_) -{ - utility::impl::detach(ptr); - - if(arg_.positive.ch != (std::numeric_limits::min)()) { - ptr->set((std::numeric_limits::min)(), arg_.positive.ch - 1); - } - if(arg_.positive.ch != (std::numeric_limits::max)()) { - ptr->set(arg_.positive.ch + 1, (std::numeric_limits::max)()); - } -} - -template -inline void -chset::set(negated_char_parser > const& arg_) -{ - utility::impl::detach(ptr); - - if(arg_.positive.first != (std::numeric_limits::min)()) { - ptr->set((std::numeric_limits::min)(), arg_.positive.first - 1); - } - if(arg_.positive.last != (std::numeric_limits::max)()) { - ptr->set(arg_.positive.last + 1, (std::numeric_limits::max)()); - } -} - -template -inline void -chset::clear(range const& arg_) -{ - utility::impl::detach(ptr); - ptr->clear(arg_.first, arg_.last); -} - -template -inline void -chset::clear(negated_char_parser > const& arg_) -{ - utility::impl::detach(ptr); - - if(arg_.positive.first != (std::numeric_limits::min)()) { - ptr->clear((std::numeric_limits::min)(), arg_.positive.first - 1); - } - if(arg_.positive.last != (std::numeric_limits::max)()) { - ptr->clear(arg_.positive.last + 1, (std::numeric_limits::max)()); - } -} - -template -inline bool -chset::test(CharT ch) const -{ return ptr->test(ch); } - -template -inline chset& -chset::inverse() -{ - utility::impl::detach(ptr); - ptr->inverse(); - return *this; -} - -template -inline void -chset::swap(chset& x) -{ ptr.swap(x.ptr); } - -template -inline chset& -chset::operator|=(chset const& x) -{ - utility::impl::detach(ptr); - *ptr |= *x.ptr; - return *this; -} - -template -inline chset& -chset::operator&=(chset const& x) -{ - utility::impl::detach(ptr); - *ptr &= *x.ptr; - return *this; -} - -template -inline chset& -chset::operator-=(chset const& x) -{ - utility::impl::detach(ptr); - *ptr -= *x.ptr; - return *this; -} - -template -inline chset& -chset::operator^=(chset const& x) -{ - utility::impl::detach(ptr); - *ptr ^= *x.ptr; - return *this; -} - -/////////////////////////////////////////////////////////////////////////////// -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace boost::spirit - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/utility/impl/chset/basic_chset.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/utility/impl/chset/basic_chset.hpp deleted file mode 100644 index ace650166fe8..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/utility/impl/chset/basic_chset.hpp +++ /dev/null @@ -1,107 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2003 Joel de Guzman - Copyright (c) 2001-2003 Daniel Nuffer - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_BASIC_CHSET_HPP -#define BOOST_SPIRIT_BASIC_CHSET_HPP - -/////////////////////////////////////////////////////////////////////////////// -#include -#include -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // - // basic_chset: basic character set implementation using range_run - // - /////////////////////////////////////////////////////////////////////////// - template - class basic_chset - { - public: - basic_chset(); - basic_chset(basic_chset const& arg_); - - bool test(CharT v) const; - void set(CharT from, CharT to); - void set(CharT c); - void clear(CharT from, CharT to); - void clear(CharT c); - void clear(); - - void inverse(); - void swap(basic_chset& x); - - basic_chset& operator|=(basic_chset const& x); - basic_chset& operator&=(basic_chset const& x); - basic_chset& operator-=(basic_chset const& x); - basic_chset& operator^=(basic_chset const& x); - - private: utility::impl::range_run rr; - }; - - #if (CHAR_BIT == 8) - - /////////////////////////////////////////////////////////////////////////// - // - // basic_chset: specializations for 8 bit chars using std::bitset - // - /////////////////////////////////////////////////////////////////////////// - template - class basic_chset_8bit { - - public: - basic_chset_8bit(); - basic_chset_8bit(basic_chset_8bit const& arg_); - - bool test(CharT v) const; - void set(CharT from, CharT to); - void set(CharT c); - void clear(CharT from, CharT to); - void clear(CharT c); - void clear(); - - void inverse(); - void swap(basic_chset_8bit& x); - - basic_chset_8bit& operator|=(basic_chset_8bit const& x); - basic_chset_8bit& operator&=(basic_chset_8bit const& x); - basic_chset_8bit& operator-=(basic_chset_8bit const& x); - basic_chset_8bit& operator^=(basic_chset_8bit const& x); - - private: std::bitset<256> bset; - }; - - ///////////////////////////////// - template <> - class basic_chset - : public basic_chset_8bit {}; - - ///////////////////////////////// - template <> - class basic_chset - : public basic_chset_8bit {}; - - ///////////////////////////////// - template <> - class basic_chset - : public basic_chset_8bit {}; - -#endif - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif - -#include diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/utility/impl/chset/basic_chset.ipp b/framework/contrib/boost/include/boost/spirit/home/classic/utility/impl/chset/basic_chset.ipp deleted file mode 100644 index e7d92723454e..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/utility/impl/chset/basic_chset.ipp +++ /dev/null @@ -1,246 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2003 Joel de Guzman - Copyright (c) 2001-2003 Daniel Nuffer - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_BASIC_CHSET_IPP -#define BOOST_SPIRIT_BASIC_CHSET_IPP - -/////////////////////////////////////////////////////////////////////////////// -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -/////////////////////////////////////////////////////////////////////////////// -// -// basic_chset: character set implementation -// -/////////////////////////////////////////////////////////////////////////////// -template -inline basic_chset::basic_chset() {} - -////////////////////////////////// -template -inline basic_chset::basic_chset(basic_chset const& arg_) -: rr(arg_.rr) {} - -////////////////////////////////// -template -inline bool -basic_chset::test(CharT v) const -{ return rr.test(v); } - -////////////////////////////////// -template -inline void -basic_chset::set(CharT from, CharT to) -{ rr.set(utility::impl::range(from, to)); } - -////////////////////////////////// -template -inline void -basic_chset::set(CharT c) -{ rr.set(utility::impl::range(c, c)); } - -////////////////////////////////// -template -inline void -basic_chset::clear(CharT from, CharT to) -{ rr.clear(utility::impl::range(from, to)); } - -////////////////////////////////// -template -inline void -basic_chset::clear() -{ rr.clear(); } - -///////////////////////////////// -template -inline void -basic_chset::inverse() -{ - basic_chset inv; - inv.set( - (std::numeric_limits::min)(), - (std::numeric_limits::max)() - ); - inv -= *this; - swap(inv); -} - -///////////////////////////////// -template -inline void -basic_chset::swap(basic_chset& x) -{ rr.swap(x.rr); } - -///////////////////////////////// -template -inline basic_chset& -basic_chset::operator|=(basic_chset const& x) -{ - typedef typename utility::impl::range_run::const_iterator const_iterator; - for (const_iterator iter = x.rr.begin(); iter != x.rr.end(); ++iter) - rr.set(*iter); - return *this; -} - -///////////////////////////////// -template -inline basic_chset& -basic_chset::operator&=(basic_chset const& x) -{ - basic_chset inv; - inv.set( - (std::numeric_limits::min)(), - (std::numeric_limits::max)() - ); - inv -= x; - *this -= inv; - return *this; -} - -///////////////////////////////// -template -inline basic_chset& -basic_chset::operator-=(basic_chset const& x) -{ - typedef typename utility::impl::range_run::const_iterator const_iterator; - for (const_iterator iter = x.rr.begin(); iter != x.rr.end(); ++iter) - rr.clear(*iter); - return *this; -} - -///////////////////////////////// -template -inline basic_chset& -basic_chset::operator^=(basic_chset const& x) -{ - basic_chset bma = x; - bma -= *this; - *this -= x; - *this |= bma; - return *this; -} - -#if (CHAR_BIT == 8) - -/////////////////////////////////////////////////////////////////////////////// -// -// basic_chset: specializations for 8 bit chars using std::bitset -// -/////////////////////////////////////////////////////////////////////////////// -template -inline basic_chset_8bit::basic_chset_8bit() {} - -///////////////////////////////// -template -inline basic_chset_8bit::basic_chset_8bit(basic_chset_8bit const& arg_) -: bset(arg_.bset) {} - -///////////////////////////////// -template -inline bool -basic_chset_8bit::test(CharT v) const -{ return bset.test((unsigned char)v); } - -///////////////////////////////// -template -inline void -basic_chset_8bit::set(CharT from, CharT to) -{ - for (int i = from; i <= to; ++i) - bset.set((unsigned char)i); -} - -///////////////////////////////// -template -inline void -basic_chset_8bit::set(CharT c) -{ bset.set((unsigned char)c); } - -///////////////////////////////// -template -inline void -basic_chset_8bit::clear(CharT from, CharT to) -{ - for (int i = from; i <= to; ++i) - bset.reset((unsigned char)i); -} - -///////////////////////////////// -template -inline void -basic_chset_8bit::clear(CharT c) -{ bset.reset((unsigned char)c); } - -///////////////////////////////// -template -inline void -basic_chset_8bit::clear() -{ bset.reset(); } - -///////////////////////////////// -template -inline void -basic_chset_8bit::inverse() -{ bset.flip(); } - -///////////////////////////////// -template -inline void -basic_chset_8bit::swap(basic_chset_8bit& x) -{ std::swap(bset, x.bset); } - -///////////////////////////////// -template -inline basic_chset_8bit& -basic_chset_8bit::operator|=(basic_chset_8bit const& x) -{ - bset |= x.bset; - return *this; -} - -///////////////////////////////// -template -inline basic_chset_8bit& -basic_chset_8bit::operator&=(basic_chset_8bit const& x) -{ - bset &= x.bset; - return *this; -} - -///////////////////////////////// -template -inline basic_chset_8bit& -basic_chset_8bit::operator-=(basic_chset_8bit const& x) -{ - bset &= ~x.bset; - return *this; -} - -///////////////////////////////// -template -inline basic_chset_8bit& -basic_chset_8bit::operator^=(basic_chset_8bit const& x) -{ - bset ^= x.bset; - return *this; -} - -#endif - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace boost::spirit - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/utility/impl/chset/range_run.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/utility/impl/chset/range_run.hpp deleted file mode 100644 index 579bcaec708f..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/utility/impl/chset/range_run.hpp +++ /dev/null @@ -1,127 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2003 Joel de Guzman - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_RANGE_RUN_HPP -#define BOOST_SPIRIT_RANGE_RUN_HPP - -/////////////////////////////////////////////////////////////////////////////// -#include - -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -namespace utility { namespace impl { - - /////////////////////////////////////////////////////////////////////////// - // - // range class - // - // Implements a closed range of values. This class is used in - // the implementation of the range_run class. - // - // { Low level implementation detail } - // { Not to be confused with BOOST_SPIRIT_CLASSIC_NS::range } - // - /////////////////////////////////////////////////////////////////////////// - template - struct range { - - range(CharT first, CharT last); - - bool is_valid() const; - bool includes(CharT v) const; - bool includes(range const& r) const; - bool overlaps(range const& r) const; - void merge(range const& r); - - CharT first; - CharT last; - }; - - ////////////////////////////////// - template - struct range_char_compare { - - bool operator()(range const& x, const CharT y) const - { return x.first < y; } - - bool operator()(const CharT x, range const& y) const - { return x < y.first; } - - // This additional operator is required for the checked STL shipped - // with VC8 testing the ordering of the iterators passed to the - // std::lower_bound algo this range_char_compare<> predicate is passed - // to. - bool operator()(range const& x, range const& y) const - { return x.first < y.first; } - }; - - ////////////////////////////////// - template - struct range_compare { - - bool operator()(range const& x, range const& y) const - { return x.first < y.first; } - }; - - /////////////////////////////////////////////////////////////////////////// - // - // range_run - // - // An implementation of a sparse bit (boolean) set. The set uses - // a sorted vector of disjoint ranges. This class implements the - // bare minimum essentials from which the full range of set - // operators can be implemented. The set is constructed from - // ranges. Internally, adjacent or overlapping ranges are - // coalesced. - // - // range_runs are very space-economical in situations where there - // are lots of ranges and a few individual disjoint values. - // Searching is O(log n) where n is the number of ranges. - // - // { Low level implementation detail } - // - /////////////////////////////////////////////////////////////////////////// - template - class range_run { - - public: - - typedef range range_t; - typedef std::vector run_t; - typedef typename run_t::iterator iterator; - typedef typename run_t::const_iterator const_iterator; - - void swap(range_run& rr); - bool test(CharT v) const; - void set(range_t const& r); - void clear(range_t const& r); - void clear(); - - const_iterator begin() const; - const_iterator end() const; - - private: - - void merge(iterator iter, range_t const& r); - - run_t run; - }; - -}} - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS::utility::impl - -#endif - -#include diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/utility/impl/chset/range_run.ipp b/framework/contrib/boost/include/boost/spirit/home/classic/utility/impl/chset/range_run.ipp deleted file mode 100644 index ede15673fcaa..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/utility/impl/chset/range_run.ipp +++ /dev/null @@ -1,218 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2003 Joel de Guzman - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_RANGE_RUN_IPP -#define BOOST_SPIRIT_RANGE_RUN_IPP - -/////////////////////////////////////////////////////////////////////////////// -#include // for std::lower_bound -#include // for BOOST_SPIRIT_ASSERT -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - namespace utility { namespace impl { - - /////////////////////////////////////////////////////////////////////// - // - // range class implementation - // - /////////////////////////////////////////////////////////////////////// - template - inline range::range(CharT first_, CharT last_) - : first(first_), last(last_) {} - - ////////////////////////////////// - template - inline bool - range::is_valid() const - { return first <= last; } - - ////////////////////////////////// - template - inline bool - range::includes(range const& r) const - { return (first <= r.first) && (last >= r.last); } - - ////////////////////////////////// - template - inline bool - range::includes(CharT v) const - { return (first <= v) && (last >= v); } - - ////////////////////////////////// - template - inline bool - range::overlaps(range const& r) const - { - CharT decr_first = - first == (std::numeric_limits::min)() ? first : first-1; - CharT incr_last = - last == (std::numeric_limits::max)() ? last : last+1; - - return (decr_first <= r.last) && (incr_last >= r.first); - } - - ////////////////////////////////// - template - inline void - range::merge(range const& r) - { - first = (std::min)(first, r.first); - last = (std::max)(last, r.last); - } - - /////////////////////////////////////////////////////////////////////// - // - // range_run class implementation - // - /////////////////////////////////////////////////////////////////////// - template - inline bool - range_run::test(CharT v) const - { - if (!run.empty()) - { - const_iterator iter = - std::lower_bound( - run.begin(), run.end(), v, - range_char_compare() - ); - - if (iter != run.end() && iter->includes(v)) - return true; - if (iter != run.begin()) - return (--iter)->includes(v); - } - return false; - } - - ////////////////////////////////// - template - inline void - range_run::swap(range_run& rr) - { run.swap(rr.run); } - - ////////////////////////////////// - template - void - range_run::merge(iterator iter, range const& r) - { - iter->merge(r); - iterator i = iter + 1; - - while (i != run.end() && iter->overlaps(*i)) - iter->merge(*i++); - - run.erase(iter+1, i); - } - - ////////////////////////////////// - template - void - range_run::set(range const& r) - { - BOOST_SPIRIT_ASSERT(r.is_valid()); - if (!run.empty()) - { - iterator iter = - std::lower_bound( - run.begin(), run.end(), r, - range_compare() - ); - - if ((iter != run.end() && iter->includes(r)) || - ((iter != run.begin()) && (iter - 1)->includes(r))) - return; - - if (iter != run.begin() && (iter - 1)->overlaps(r)) - merge(--iter, r); - - else if (iter != run.end() && iter->overlaps(r)) - merge(iter, r); - - else - run.insert(iter, r); - } - else - { - run.push_back(r); - } - } - - ////////////////////////////////// - template - void - range_run::clear(range const& r) - { - BOOST_SPIRIT_ASSERT(r.is_valid()); - if (!run.empty()) - { - iterator iter = - std::lower_bound( - run.begin(), run.end(), r, - range_compare() - ); - - iterator left_iter; - - if ((iter != run.begin()) && - (left_iter = (iter - 1))->includes(r.first)) - { - if (left_iter->last > r.last) - { - CharT save_last = left_iter->last; - left_iter->last = r.first-1; - run.insert(iter, range(r.last+1, save_last)); - return; - } - else - { - left_iter->last = r.first-1; - } - } - - iterator i = iter; - while (i != run.end() && r.includes(*i)) - i++; - if (i != run.end() && i->includes(r.last)) - i->first = r.last+1; - run.erase(iter, i); - } - } - - ////////////////////////////////// - template - inline void - range_run::clear() - { run.clear(); } - - ////////////////////////////////// - template - inline typename range_run::const_iterator - range_run::begin() const - { return run.begin(); } - - ////////////////////////////////// - template - inline typename range_run::const_iterator - range_run::end() const - { return run.end(); } - - }} // namespace utility::impl - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace boost::spirit - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/utility/impl/chset_operators.ipp b/framework/contrib/boost/include/boost/spirit/home/classic/utility/impl/chset_operators.ipp deleted file mode 100644 index 842a679d6db8..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/utility/impl/chset_operators.ipp +++ /dev/null @@ -1,592 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2003 Joel de Guzman - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_CHSET_OPERATORS_IPP -#define BOOST_SPIRIT_CHSET_OPERATORS_IPP - -/////////////////////////////////////////////////////////////////////////////// -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -/////////////////////////////////////////////////////////////////////////////// -// -// chset free operators implementation -// -/////////////////////////////////////////////////////////////////////////////// -template -inline chset -operator|(chset const& a, chset const& b) -{ - return chset(a) |= b; -} - -////////////////////////////////// -template -inline chset -operator-(chset const& a, chset const& b) -{ - return chset(a) -= b; -} - -////////////////////////////////// -template -inline chset -operator~(chset const& a) -{ - return chset(a).inverse(); -} - -////////////////////////////////// -template -inline chset -operator&(chset const& a, chset const& b) -{ - return chset(a) &= b; -} - -////////////////////////////////// -template -inline chset -operator^(chset const& a, chset const& b) -{ - return chset(a) ^= b; -} - -/////////////////////////////////////////////////////////////////////////////// -// -// range <--> chset free operators implementation -// -/////////////////////////////////////////////////////////////////////////////// -template -inline chset -operator|(chset const& a, range const& b) -{ - chset a_(a); - a_.set(b); - return a_; -} - -////////////////////////////////// -template -inline chset -operator&(chset const& a, range const& b) -{ - chset a_(a); - if(b.first != (std::numeric_limits::min)()) { - a_.clear(range((std::numeric_limits::min)(), b.first - 1)); - } - if(b.last != (std::numeric_limits::max)()) { - a_.clear(range(b.last + 1, (std::numeric_limits::max)())); - } - return a_; -} - -////////////////////////////////// -template -inline chset -operator-(chset const& a, range const& b) -{ - chset a_(a); - a_.clear(b); - return a_; -} - -////////////////////////////////// -template -inline chset -operator^(chset const& a, range const& b) -{ - return a ^ chset(b); -} - -////////////////////////////////// -template -inline chset -operator|(range const& a, chset const& b) -{ - chset b_(b); - b_.set(a); - return b_; -} - -////////////////////////////////// -template -inline chset -operator&(range const& a, chset const& b) -{ - chset b_(b); - if(a.first != (std::numeric_limits::min)()) { - b_.clear(range((std::numeric_limits::min)(), a.first - 1)); - } - if(a.last != (std::numeric_limits::max)()) { - b_.clear(range(a.last + 1, (std::numeric_limits::max)())); - } - return b_; -} - -////////////////////////////////// -template -inline chset -operator-(range const& a, chset const& b) -{ - return chset(a) - b; -} - -////////////////////////////////// -template -inline chset -operator^(range const& a, chset const& b) -{ - return chset(a) ^ b; -} - -/////////////////////////////////////////////////////////////////////////////// -// -// literal primitives <--> chset free operators implementation -// -/////////////////////////////////////////////////////////////////////////////// -template -inline chset -operator|(chset const& a, CharT b) -{ - return a | chset(b); -} - -////////////////////////////////// -template -inline chset -operator&(chset const& a, CharT b) -{ - return a & chset(b); -} - -////////////////////////////////// -template -inline chset -operator-(chset const& a, CharT b) -{ - return a - chset(b); -} - -////////////////////////////////// -template -inline chset -operator^(chset const& a, CharT b) -{ - return a ^ chset(b); -} - -////////////////////////////////// -template -inline chset -operator|(CharT a, chset const& b) -{ - return chset(a) | b; -} - -////////////////////////////////// -template -inline chset -operator&(CharT a, chset const& b) -{ - return chset(a) & b; -} - -////////////////////////////////// -template -inline chset -operator-(CharT a, chset const& b) -{ - return chset(a) - b; -} - -////////////////////////////////// -template -inline chset -operator^(CharT a, chset const& b) -{ - return chset(a) ^ b; -} - -/////////////////////////////////////////////////////////////////////////////// -// -// chlit <--> chset free operators implementation -// -/////////////////////////////////////////////////////////////////////////////// -template -inline chset -operator|(chset const& a, chlit const& b) -{ - return a | chset(b.ch); -} - -////////////////////////////////// -template -inline chset -operator&(chset const& a, chlit const& b) -{ - return a & chset(b.ch); -} - -////////////////////////////////// -template -inline chset -operator-(chset const& a, chlit const& b) -{ - return a - chset(b.ch); -} - -////////////////////////////////// -template -inline chset -operator^(chset const& a, chlit const& b) -{ - return a ^ chset(b.ch); -} - -////////////////////////////////// -template -inline chset -operator|(chlit const& a, chset const& b) -{ - return chset(a.ch) | b; -} - -////////////////////////////////// -template -inline chset -operator&(chlit const& a, chset const& b) -{ - return chset(a.ch) & b; -} - -////////////////////////////////// -template -inline chset -operator-(chlit const& a, chset const& b) -{ - return chset(a.ch) - b; -} - -////////////////////////////////// -template -inline chset -operator^(chlit const& a, chset const& b) -{ - return chset(a.ch) ^ b; -} - -/////////////////////////////////////////////////////////////////////////////// -// -// negated_char_parser <--> chset free operators implementation -// -/////////////////////////////////////////////////////////////////////////////// -template -inline chset -operator|(chset const& a, negated_char_parser > const& b) -{ - return a | chset(b); -} - -////////////////////////////////// -template -inline chset -operator&(chset const& a, negated_char_parser > const& b) -{ - return a & chset(b); -} - -////////////////////////////////// -template -inline chset -operator-(chset const& a, negated_char_parser > const& b) -{ - return a - chset(b); -} - -////////////////////////////////// -template -inline chset -operator^(chset const& a, negated_char_parser > const& b) -{ - return a ^ chset(b); -} - -////////////////////////////////// -template -inline chset -operator|(negated_char_parser > const& a, chset const& b) -{ - return chset(a) | b; -} - -////////////////////////////////// -template -inline chset -operator&(negated_char_parser > const& a, chset const& b) -{ - return chset(a) & b; -} - -////////////////////////////////// -template -inline chset -operator-(negated_char_parser > const& a, chset const& b) -{ - return chset(a) - b; -} - -////////////////////////////////// -template -inline chset -operator^(negated_char_parser > const& a, chset const& b) -{ - return chset(a) ^ b; -} - -/////////////////////////////////////////////////////////////////////////////// -// -// negated_char_parser <--> chset free operators implementation -// -/////////////////////////////////////////////////////////////////////////////// -template -inline chset -operator|(chset const& a, negated_char_parser > const& b) -{ - return a | chset(b); -} - -////////////////////////////////// -template -inline chset -operator&(chset const& a, negated_char_parser > const& b) -{ - return a & chset(b); -} - -////////////////////////////////// -template -inline chset -operator-(chset const& a, negated_char_parser > const& b) -{ - return a - chset(b); -} - -////////////////////////////////// -template -inline chset -operator^(chset const& a, negated_char_parser > const& b) -{ - return a ^ chset(b); -} - -////////////////////////////////// -template -inline chset -operator|(negated_char_parser > const& a, chset const& b) -{ - return chset(a) | b; -} - -////////////////////////////////// -template -inline chset -operator&(negated_char_parser > const& a, chset const& b) -{ - return chset(a) & b; -} - -////////////////////////////////// -template -inline chset -operator-(negated_char_parser > const& a, chset const& b) -{ - return chset(a) - b; -} - -////////////////////////////////// -template -inline chset -operator^(negated_char_parser > const& a, chset const& b) -{ - return chset(a) ^ b; -} - -/////////////////////////////////////////////////////////////////////////////// -// -// anychar_parser <--> chset free operators -// -// Where a is chset and b is a anychar_parser, and vice-versa, implements: -// -// a | b, a & b, a - b, a ^ b -// -/////////////////////////////////////////////////////////////////////////////// -namespace impl { - - template - inline BOOST_SPIRIT_CLASSIC_NS::range const& - full() - { - static BOOST_SPIRIT_CLASSIC_NS::range full_( - (std::numeric_limits::min)(), - (std::numeric_limits::max)()); - return full_; - } - - template - inline BOOST_SPIRIT_CLASSIC_NS::range const& - empty() - { - static BOOST_SPIRIT_CLASSIC_NS::range empty_; - return empty_; - } -} - -////////////////////////////////// -template -inline chset -operator|(chset const&, anychar_parser) -{ - return chset(impl::full()); -} - -////////////////////////////////// -template -inline chset -operator&(chset const& a, anychar_parser) -{ - return a; -} - -////////////////////////////////// -template -inline chset -operator-(chset const&, anychar_parser) -{ - return chset(); -} - -////////////////////////////////// -template -inline chset -operator^(chset const& a, anychar_parser) -{ - return ~a; -} - -////////////////////////////////// -template -inline chset -operator|(anychar_parser, chset const& /*b*/) -{ - return chset(impl::full()); -} - -////////////////////////////////// -template -inline chset -operator&(anychar_parser, chset const& b) -{ - return b; -} - -////////////////////////////////// -template -inline chset -operator-(anychar_parser, chset const& b) -{ - return ~b; -} - -////////////////////////////////// -template -inline chset -operator^(anychar_parser, chset const& b) -{ - return ~b; -} - -/////////////////////////////////////////////////////////////////////////////// -// -// nothing_parser <--> chset free operators implementation -// -/////////////////////////////////////////////////////////////////////////////// -template -inline chset -operator|(chset const& a, nothing_parser) -{ - return a; -} - -////////////////////////////////// -template -inline chset -operator&(chset const& /*a*/, nothing_parser) -{ - return impl::empty(); -} - -////////////////////////////////// -template -inline chset -operator-(chset const& a, nothing_parser) -{ - return a; -} - -////////////////////////////////// -template -inline chset -operator^(chset const& a, nothing_parser) -{ - return a; -} - -////////////////////////////////// -template -inline chset -operator|(nothing_parser, chset const& b) -{ - return b; -} - -////////////////////////////////// -template -inline chset -operator&(nothing_parser, chset const& /*b*/) -{ - return impl::empty(); -} - -////////////////////////////////// -template -inline chset -operator-(nothing_parser, chset const& /*b*/) -{ - return impl::empty(); -} - -////////////////////////////////// -template -inline chset -operator^(nothing_parser, chset const& b) -{ - return b; -} - -/////////////////////////////////////////////////////////////////////////////// -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace boost::spirit - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/utility/impl/confix.ipp b/framework/contrib/boost/include/boost/spirit/home/classic/utility/impl/confix.ipp deleted file mode 100644 index 494c4807cdeb..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/utility/impl/confix.ipp +++ /dev/null @@ -1,221 +0,0 @@ -/*============================================================================= - Copyright (c) 2002-2003 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_CONFIX_IPP -#define BOOST_SPIRIT_CONFIX_IPP - -/////////////////////////////////////////////////////////////////////////////// -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -/////////////////////////////////////////////////////////////////////////////// -// -// Types to distinguish nested and non-nested confix parsers -// -/////////////////////////////////////////////////////////////////////////////// -struct is_nested {}; -struct non_nested {}; - -/////////////////////////////////////////////////////////////////////////////// -// -// Types to distinguish between confix parsers, which are implicitly lexems -// and without this behaviour -// -/////////////////////////////////////////////////////////////////////////////// -struct is_lexeme {}; -struct non_lexeme {}; - -/////////////////////////////////////////////////////////////////////////////// -// -// confix_parser_type class implementation -// -/////////////////////////////////////////////////////////////////////////////// -namespace impl { - - /////////////////////////////////////////////////////////////////////////// - // implicitly insert a lexeme_d into the parsing process - - template - struct select_confix_parse_lexeme; - - template <> - struct select_confix_parse_lexeme { - - template - static typename parser_result::type - parse(ParserT const& p, ScannerT const& scan) - { - typedef typename parser_result::type result_t; - return contiguous_parser_parse(p, scan, scan); - } - }; - - template <> - struct select_confix_parse_lexeme { - - template - static typename parser_result::type - parse(ParserT const& p, ScannerT const& scan) - { - return p.parse(scan); - } - }; - - /////////////////////////////////////////////////////////////////////////// - // parse confix sequences with refactoring - - template - struct select_confix_parse_refactor; - - template <> - struct select_confix_parse_refactor { - - template < - typename LexemeT, typename ParserT, typename ScannerT, - typename OpenT, typename ExprT, typename CloseT - > - static typename parser_result::type - parse( - LexemeT const &, ParserT const& this_, ScannerT const& scan, - OpenT const& open, ExprT const& expr, CloseT const& close) - { - typedef refactor_action_gen > refactor_t; - const refactor_t refactor_body_d = refactor_t(refactor_unary_d); - - return select_confix_parse_lexeme::parse(( - open - >> (this_ | refactor_body_d[expr - close]) - >> close - ), scan); - } - }; - - template <> - struct select_confix_parse_refactor { - - template < - typename LexemeT, typename ParserT, typename ScannerT, - typename OpenT, typename ExprT, typename CloseT - > - static typename parser_result::type - parse( - LexemeT const &, ParserT const& /*this_*/, ScannerT const& scan, - OpenT const& open, ExprT const& expr, CloseT const& close) - { - typedef refactor_action_gen > refactor_t; - const refactor_t refactor_body_d = refactor_t(refactor_unary_d); - - return select_confix_parse_lexeme::parse(( - open - >> refactor_body_d[expr - close] - >> close - ), scan); - } - }; - - /////////////////////////////////////////////////////////////////////////// - // parse confix sequences without refactoring - - template - struct select_confix_parse_no_refactor; - - template <> - struct select_confix_parse_no_refactor { - - template < - typename LexemeT, typename ParserT, typename ScannerT, - typename OpenT, typename ExprT, typename CloseT - > - static typename parser_result::type - parse( - LexemeT const &, ParserT const& this_, ScannerT const& scan, - OpenT const& open, ExprT const& expr, CloseT const& close) - { - return select_confix_parse_lexeme::parse(( - open - >> (this_ | (expr - close)) - >> close - ), scan); - } - }; - - template <> - struct select_confix_parse_no_refactor { - - template < - typename LexemeT, typename ParserT, typename ScannerT, - typename OpenT, typename ExprT, typename CloseT - > - static typename parser_result::type - parse( - LexemeT const &, ParserT const & /*this_*/, ScannerT const& scan, - OpenT const& open, ExprT const& expr, CloseT const& close) - { - return select_confix_parse_lexeme::parse(( - open - >> (expr - close) - >> close - ), scan); - } - }; - - // the refactoring is handled by the refactoring parsers, so here there - // is no need to pay attention to these issues. - - template - struct confix_parser_type { - - template < - typename NestedT, typename LexemeT, - typename ParserT, typename ScannerT, - typename OpenT, typename ExprT, typename CloseT - > - static typename parser_result::type - parse( - NestedT const &, LexemeT const &lexeme, - ParserT const& this_, ScannerT const& scan, - OpenT const& open, ExprT const& expr, CloseT const& close) - { - return select_confix_parse_refactor:: - parse(lexeme, this_, scan, open, expr, close); - } - }; - - template <> - struct confix_parser_type { - - template < - typename NestedT, typename LexemeT, - typename ParserT, typename ScannerT, - typename OpenT, typename ExprT, typename CloseT - > - static typename parser_result::type - parse( - NestedT const &, LexemeT const &lexeme, - ParserT const& this_, ScannerT const& scan, - OpenT const& open, ExprT const& expr, CloseT const& close) - { - return select_confix_parse_no_refactor:: - parse(lexeme, this_, scan, open, expr, close); - } - }; - -} // namespace impl - -/////////////////////////////////////////////////////////////////////////////// -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace boost::spirit - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/utility/impl/escape_char.ipp b/framework/contrib/boost/include/boost/spirit/home/classic/utility/impl/escape_char.ipp deleted file mode 100644 index 6e19043c8da8..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/utility/impl/escape_char.ipp +++ /dev/null @@ -1,224 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2003 Daniel Nuffer - Copyright (c) 2002-2003 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_ESCAPE_CHAR_IPP -#define BOOST_SPIRIT_ESCAPE_CHAR_IPP - -#include -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -/////////////////////////////////////////////////////////////////////////////// -// -// escape_char_parser class -// -/////////////////////////////////////////////////////////////////////////////// - -const unsigned long c_escapes = 1; -const unsigned long lex_escapes = c_escapes << 1; - -////////////////////////////////// -namespace impl { - - ////////////////////////////////// -#if defined(BOOST_MSVC) -#pragma warning(push) -#pragma warning(disable:4127) -#endif - template - struct escape_char_action_parse { - - template - static typename parser_result::type - parse(ScannerT const& scan, ParserT const &p) - { - // Actually decode the escape char. - typedef CharT char_t; - typedef typename ScannerT::iterator_t iterator_t; - typedef typename parser_result::type result_t; - - if (scan.first != scan.last) { - - iterator_t save = scan.first; - if (result_t hit = p.subject().parse(scan)) { - - char_t unescaped; - - scan.first = save; - if (*scan.first == '\\') { - - ++scan.first; - switch (*scan.first) { - case 'b': unescaped = '\b'; ++scan.first; break; - case 't': unescaped = '\t'; ++scan.first; break; - case 'n': unescaped = '\n'; ++scan.first; break; - case 'f': unescaped = '\f'; ++scan.first; break; - case 'r': unescaped = '\r'; ++scan.first; break; - case '"': unescaped = '"'; ++scan.first; break; - case '\'': unescaped = '\''; ++scan.first; break; - case '\\': unescaped = '\\'; ++scan.first; break; - - case 'x': case 'X': - { - char_t hex = 0; - char_t const lim = - (std::numeric_limits::max)() >> 4; - - ++scan.first; - while (scan.first != scan.last) - { - char_t c = *scan.first; - if (hex > lim && impl::isxdigit_(c)) - { - // overflow detected - scan.first = save; - return scan.no_match(); - } - if (impl::isdigit_(c)) - { - hex <<= 4; - hex |= c - '0'; - ++scan.first; - } - else if (impl::isxdigit_(c)) - { - hex <<= 4; - c = impl::toupper_(c); - hex |= c - 'A' + 0xA; - ++scan.first; - } - else - { - break; // reached the end of the number - } - } - unescaped = hex; - } - break; - - case '0': case '1': case '2': case '3': - case '4': case '5': case '6': case '7': - { - char_t oct = 0; - char_t const lim = - (std::numeric_limits::max)() >> 3; - while (scan.first != scan.last) - { - char_t c = *scan.first; - if (oct > lim && (c >= '0' && c <= '7')) - { - // overflow detected - scan.first = save; - return scan.no_match(); - } - - if (c >= '0' && c <= '7') - { - oct <<= 3; - oct |= c - '0'; - ++scan.first; - } - else - { - break; // reached end of digits - } - } - unescaped = oct; - } - break; - - default: - if (Flags & c_escapes) - { - // illegal C escape sequence - scan.first = save; - return scan.no_match(); - } - else - { - unescaped = *scan.first; - ++scan.first; - } - break; - } - } - else { - unescaped = *scan.first; - ++scan.first; - } - - scan.do_action(p.predicate(), unescaped, save, scan.first); - return hit; - } - } - return scan.no_match(); // overflow detected - } - }; -#if defined(BOOST_MSVC) -#pragma warning(pop) -#endif - - ////////////////////////////////// - template - struct escape_char_parse { - - template - static typename parser_result::type - parse(ScannerT const &scan, ParserT const &/*p*/) - { - typedef - uint_parser::digits / 3 + 1 - > - oct_parser_t; - typedef - uint_parser::digits / 4 + 1 - > - hex_parser_t; - - typedef alternative >, - sequence, alternative >, hex_parser_t > >, - difference > >, oct_parser_t > > > > - parser_t; - - static parser_t p = - ( (anychar_p - chlit(CharT('\\'))) - | (chlit(CharT('\\')) >> - ( oct_parser_t() - | as_lower_d[chlit(CharT('x'))] >> hex_parser_t() - | (anychar_p - as_lower_d[chlit(CharT('x'))] - oct_parser_t()) - ) - )); - - BOOST_SPIRIT_DEBUG_TRACE_NODE(p, - (BOOST_SPIRIT_DEBUG_FLAGS & BOOST_SPIRIT_DEBUG_FLAGS_ESCAPE_CHAR) != 0); - - return p.parse(scan); - } - }; - -/////////////////////////////////////////////////////////////////////////////// -} // namespace impl - -/////////////////////////////////////////////////////////////////////////////// -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace boost::spirit - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/utility/impl/lists.ipp b/framework/contrib/boost/include/boost/spirit/home/classic/utility/impl/lists.ipp deleted file mode 100644 index a3dd462fcdf9..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/utility/impl/lists.ipp +++ /dev/null @@ -1,168 +0,0 @@ -/*============================================================================= - Copyright (c) 2002-2003 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_LISTS_IPP -#define BOOST_SPIRIT_LISTS_IPP - -/////////////////////////////////////////////////////////////////////////////// -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -/////////////////////////////////////////////////////////////////////////////// -// -// list_parser_type class implementation -// -/////////////////////////////////////////////////////////////////////////////// -struct no_list_endtoken { typedef no_list_endtoken embed_t; }; - -namespace impl { - -/////////////////////////////////////////////////////////////////////////////// -// -// Refactor the original list item parser -// -/////////////////////////////////////////////////////////////////////////////// - - // match list with 'extended' syntax - template - struct select_list_parse_refactor { - - template < - typename ParserT, typename ScannerT, - typename ItemT, typename DelimT - > - static typename parser_result::type - parse(ScannerT const& scan, ParserT const& /*p*/, - ItemT const &item, DelimT const &delim, EndT const &end) - { - typedef refactor_action_gen > refactor_t; - const refactor_t refactor_item_d = refactor_t(refactor_unary_d); - - return ( - refactor_item_d[item - (end | delim)] - >> *(delim >> refactor_item_d[item - (end | delim)]) - >> !(delim >> end) - ).parse(scan); - } - }; - - // match list with 'normal' syntax (without an 'end' parser) - template <> - struct select_list_parse_refactor { - - template < - typename ParserT, typename ScannerT, - typename ItemT, typename DelimT - > - static typename parser_result::type - parse(ScannerT const& scan, ParserT const& /*p*/, - ItemT const &item, DelimT const &delim, no_list_endtoken const&) - { - typedef refactor_action_gen > refactor_t; - const refactor_t refactor_item_d = refactor_t(refactor_unary_d); - - return ( - refactor_item_d[item - delim] - >> *(delim >> refactor_item_d[item - delim]) - ).parse(scan); - } - }; - -/////////////////////////////////////////////////////////////////////////////// -// -// Do not refactor the original list item parser. -// -/////////////////////////////////////////////////////////////////////////////// - - // match list with 'extended' syntax - template - struct select_list_parse_no_refactor { - - template < - typename ParserT, typename ScannerT, - typename ItemT, typename DelimT - > - static typename parser_result::type - parse(ScannerT const& scan, ParserT const& /*p*/, - ItemT const &item, DelimT const &delim, EndT const &end) - { - return ( - (item - (end | delim)) - >> *(delim >> (item - (end | delim))) - >> !(delim >> end) - ).parse(scan); - } - }; - - // match list with 'normal' syntax (without an 'end' parser) - template <> - struct select_list_parse_no_refactor { - - template < - typename ParserT, typename ScannerT, - typename ItemT, typename DelimT - > - static typename parser_result::type - parse(ScannerT const& scan, ParserT const& /*p*/, - ItemT const &item, DelimT const &delim, no_list_endtoken const&) - { - return ( - (item - delim) - >> *(delim >> (item - delim)) - ).parse(scan); - } - }; - - // the refactoring is handled by the refactoring parsers, so here there - // is no need to pay attention to these issues. - - template - struct list_parser_type { - - template < - typename ParserT, typename ScannerT, - typename ItemT, typename DelimT, typename EndT - > - static typename parser_result::type - parse(ScannerT const& scan, ParserT const& p, - ItemT const &item, DelimT const &delim, EndT const &end) - { - return select_list_parse_refactor:: - parse(scan, p, item, delim, end); - } - }; - - template <> - struct list_parser_type { - - template < - typename ParserT, typename ScannerT, - typename ItemT, typename DelimT, typename EndT - > - static typename parser_result::type - parse(ScannerT const& scan, ParserT const& p, - ItemT const &item, DelimT const &delim, EndT const &end) - { - return select_list_parse_no_refactor:: - parse(scan, p, item, delim, end); - } - }; - -} // namespace impl - -/////////////////////////////////////////////////////////////////////////////// -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace boost::spirit - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/utility/impl/regex.ipp b/framework/contrib/boost/include/boost/spirit/home/classic/utility/impl/regex.ipp deleted file mode 100644 index 655c1e5c8d33..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/utility/impl/regex.ipp +++ /dev/null @@ -1,81 +0,0 @@ -/*============================================================================= - Copyright (c) 2002-2003 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_REGEX_IPP -#define BOOST_SPIRIT_REGEX_IPP - -/////////////////////////////////////////////////////////////////////////////// -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -namespace impl { - -/////////////////////////////////////////////////////////////////////////////// -// -inline const char* rx_prefix(char) { return "\\A"; } -inline const wchar_t* rx_prefix(wchar_t) { return L"\\A"; } - -/////////////////////////////////////////////////////////////////////////////// -// -// rx_parser class -// -/////////////////////////////////////////////////////////////////////////////// -template -class rx_parser : public parser > { - -public: - typedef std::basic_string string_t; - typedef rx_parser self_t; - - rx_parser(CharT const *first, CharT const *last) - { - rxstr = string_t(rx_prefix(CharT())) + string_t(first, last); - } - - rx_parser(CharT const *first) - { - rxstr = string_t(rx_prefix(CharT())) + - string_t(first, impl::get_last(first)); - } - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - boost::match_results what; - boost::regex_search(scan.first, scan.last, what, rxstr, - boost::match_default); - - if (!what[0].matched) - return scan.no_match(); - - scan.first = what[0].second; - return scan.create_match(what[0].length(), nil_t(), - what[0].first, scan.first); - } - -private: -#if BOOST_VERSION >= 013300 - boost::basic_regex rxstr; // regular expression to match -#else - boost::reg_expression rxstr; // regular expression to match -#endif -}; - -} // namespace impl - -/////////////////////////////////////////////////////////////////////////////// -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace boost::spirit - -#endif // BOOST_SPIRIT_REGEX_IPP diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/utility/lists.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/utility/lists.hpp deleted file mode 100644 index 48e9de01daf9..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/utility/lists.hpp +++ /dev/null @@ -1,340 +0,0 @@ -/*============================================================================= - Copyright (c) 2002-2003 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_LISTS_HPP -#define BOOST_SPIRIT_LISTS_HPP - -/////////////////////////////////////////////////////////////////////////////// -#include -#include -#include -#include -#include - -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -/////////////////////////////////////////////////////////////////////////////// -// -// list_parser class -// -// List parsers allow to parse constructs like -// -// item >> *(delim >> item) -// -// where 'item' is an auxiliary expression to parse and 'delim' is an -// auxiliary delimiter to parse. -// -// The list_parser class also can match an optional closing delimiter -// represented by the 'end' parser at the end of the list: -// -// item >> *(delim >> item) >> !end. -// -// If ItemT is an action_parser_category type (parser with an attached -// semantic action) we have to do something special. This happens, if the -// user wrote something like: -// -// list_p(item[f], delim) -// -// where 'item' is the parser matching one item of the list sequence and -// 'f' is a functor to be called after matching one item. If we would do -// nothing, the resulting code would parse the sequence as follows: -// -// (item[f] - delim) >> *(delim >> (item[f] - delim)) -// -// what in most cases is not what the user expects. -// (If this _is_ what you've expected, then please use one of the list_p -// generator functions 'direct()', which will inhibit re-attaching -// the actor to the item parser). -// -// To make the list parser behave as expected: -// -// (item - delim)[f] >> *(delim >> (item - delim)[f]) -// -// the actor attached to the 'item' parser has to be re-attached to the -// *(item - delim) parser construct, which will make the resulting list -// parser 'do the right thing'. -// -// Additionally special care must be taken, if the item parser is a -// unary_parser_category type parser as -// -// list_p(*anychar_p, ',') -// -// which without any refactoring would result in -// -// (*anychar_p - ch_p(',')) -// >> *( ch_p(',') >> (*anychar_p - ch_p(',')) ) -// -// and will not give the expected result (the first *anychar_p will eat up -// all the input up to the end of the input stream). So we have to -// refactor this into: -// -// *(anychar_p - ch_p(',')) -// >> *( ch_p(',') >> *(anychar_p - ch_p(',')) ) -// -// what will give the correct result. -// -// The case, where the item parser is a combination of the two mentioned -// problems (i.e. the item parser is a unary parser with an attached -// action), is handled accordingly too: -// -// list_p((*anychar_p)[f], ',') -// -// will be parsed as expected: -// -// (*(anychar_p - ch_p(',')))[f] -// >> *( ch_p(',') >> (*(anychar_p - ch_p(',')))[f] ). -// -/////////////////////////////////////////////////////////////////////////////// -template < - typename ItemT, typename DelimT, typename EndT, typename CategoryT -> -struct list_parser : - public parser > { - - typedef list_parser self_t; - typedef CategoryT parser_category_t; - - list_parser(ItemT const &item_, DelimT const &delim_, - EndT const& end_ = no_list_endtoken()) - : item(item_), delim(delim_), end(end_) - {} - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - return impl::list_parser_type - ::parse(scan, *this, item, delim, end); - } - -private: - typename as_parser::type::embed_t item; - typename as_parser::type::embed_t delim; - typename as_parser::type::embed_t end; -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// List parser generator template -// -// This is a helper for generating a correct list_parser<> from -// auxiliary parameters. There are the following types supported as -// parameters yet: parsers, single characters and strings (see -// as_parser<> in meta/as_parser.hpp). -// -// The list_parser_gen by itself can be used for parsing comma separated -// lists without item formatting: -// -// list_p.parse(...) -// matches any comma separated list. -// -// If list_p is used with one parameter, this parameter is used to match -// the delimiter: -// -// list_p(';').parse(...) -// matches any semicolon separated list. -// -// If list_p is used with two parameters, the first parameter is used to -// match the items and the second parameter matches the delimiters: -// -// list_p(uint_p, ',').parse(...) -// matches comma separated unsigned integers. -// -// If list_p is used with three parameters, the first parameter is used -// to match the items, the second one is used to match the delimiters and -// the third one is used to match an optional ending token sequence: -// -// list_p(real_p, ';', eol_p).parse(...) -// matches a semicolon separated list of real numbers optionally -// followed by an end of line. -// -// The list_p in the previous examples denotes the predefined parser -// generator, which should be used to define list parsers (see below). -// -/////////////////////////////////////////////////////////////////////////////// - -template -struct list_parser_gen : - public list_parser, chlit > -{ - typedef list_parser_gen self_t; - -// construct the list_parser_gen object as an list parser for comma separated -// lists without item formatting. - list_parser_gen() - : list_parser, chlit > - (*anychar_p, chlit(',')) - {} - -// The following generator functions should be used under normal circumstances. -// (the operator()(...) functions) - - // Generic generator functions for creation of concrete list parsers, which - // support 'normal' syntax: - // - // item >> *(delim >> item) - // - // If item isn't given, everything between two delimiters is matched. - - template - list_parser< - kleene_star, - typename as_parser::type, - no_list_endtoken, - unary_parser_category // there is no action to re-attach - > - operator()(DelimT const &delim_) const - { - typedef kleene_star item_t; - typedef typename as_parser::type delim_t; - - typedef - list_parser - return_t; - - return return_t(*anychar_p, as_parser::convert(delim_)); - } - - template - list_parser< - typename as_parser::type, - typename as_parser::type, - no_list_endtoken, - typename as_parser::type::parser_category_t - > - operator()(ItemT const &item_, DelimT const &delim_) const - { - typedef typename as_parser::type item_t; - typedef typename as_parser::type delim_t; - typedef list_parser - return_t; - - return return_t( - as_parser::convert(item_), - as_parser::convert(delim_) - ); - } - - // Generic generator function for creation of concrete list parsers, which - // support 'extended' syntax: - // - // item >> *(delim >> item) >> !end - - template - list_parser< - typename as_parser::type, - typename as_parser::type, - typename as_parser::type, - typename as_parser::type::parser_category_t - > - operator()( - ItemT const &item_, DelimT const &delim_, EndT const &end_) const - { - typedef typename as_parser::type item_t; - typedef typename as_parser::type delim_t; - typedef typename as_parser::type end_t; - - typedef list_parser - return_t; - - return return_t( - as_parser::convert(item_), - as_parser::convert(delim_), - as_parser::convert(end_) - ); - } - -// The following functions should be used, if the 'item' parser has an attached -// semantic action or is a unary_parser_category type parser and the structure -// of the resulting list parser should _not_ be refactored during parser -// construction (see comment above). - - // Generic generator function for creation of concrete list parsers, which - // support 'normal' syntax: - // - // item >> *(delim >> item) - - template - list_parser< - typename as_parser::type, - typename as_parser::type, - no_list_endtoken, - plain_parser_category // inhibit action re-attachment - > - direct(ItemT const &item_, DelimT const &delim_) const - { - typedef typename as_parser::type item_t; - typedef typename as_parser::type delim_t; - typedef list_parser - return_t; - - return return_t( - as_parser::convert(item_), - as_parser::convert(delim_) - ); - } - - // Generic generator function for creation of concrete list parsers, which - // support 'extended' syntax: - // - // item >> *(delim >> item) >> !end - - template - list_parser< - typename as_parser::type, - typename as_parser::type, - typename as_parser::type, - plain_parser_category // inhibit action re-attachment - > - direct( - ItemT const &item_, DelimT const &delim_, EndT const &end_) const - { - typedef typename as_parser::type item_t; - typedef typename as_parser::type delim_t; - typedef typename as_parser::type end_t; - - typedef - list_parser - return_t; - - return return_t( - as_parser::convert(item_), - as_parser::convert(delim_), - as_parser::convert(end_) - ); - } -}; - -/////////////////////////////////////////////////////////////////////////////// -// -// Predefined list parser generator -// -// The list_p parser generator can be used -// - by itself for parsing comma separated lists without item formatting -// or -// - for generating list parsers with auxiliary parser parameters -// for the 'item', 'delim' and 'end' subsequences. -// (see comment above) -// -/////////////////////////////////////////////////////////////////////////////// -const list_parser_gen<> list_p = list_parser_gen<>(); - -/////////////////////////////////////////////////////////////////////////////// -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/utility/lists_fwd.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/utility/lists_fwd.hpp deleted file mode 100644 index 1defcb6d66d1..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/utility/lists_fwd.hpp +++ /dev/null @@ -1,31 +0,0 @@ -/*============================================================================= - Copyright (c) 2006 Tobias Schwinger - http://spirit.sourceforge.net/ - - 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_LISTS_FWD_HPP) -#define BOOST_SPIRIT_LISTS_FWD_HPP - -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - struct no_list_endtoken; - - template < - typename ItemT, typename DelimT, typename EndT = no_list_endtoken, - typename CategoryT = plain_parser_category - > - struct list_parser; - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/utility/loops.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/utility/loops.hpp deleted file mode 100644 index baece7fdcbd4..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/utility/loops.hpp +++ /dev/null @@ -1,319 +0,0 @@ -/*============================================================================= - Copyright (c) 1998-2003 Joel de Guzman - Copyright (c) 2002 Raghavendra Satish - Copyright (c) 2002 Jeff Westfahl - http://spirit.sourceforge.net/ - - 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_LOOPS_HPP) -#define BOOST_SPIRIT_LOOPS_HPP - -/////////////////////////////////////////////////////////////////////////////// -#include -#include -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // - // fixed_loop class - // - // This class takes care of the construct: - // - // repeat_p (exact) [p] - // - // where 'p' is a parser and 'exact' is the number of times to - // repeat. The parser iterates over the input exactly 'exact' times. - // The parse function fails if the parser does not match the input - // exactly 'exact' times. - // - // This class is parametizable and can accept constant arguments - // (e.g. repeat_p (5) [p]) as well as references to variables (e.g. - // repeat_p (ref (n)) [p]). - // - /////////////////////////////////////////////////////////////////////////// - template - class fixed_loop - : public unary > > - { - public: - - typedef fixed_loop self_t; - typedef unary > base_t; - - fixed_loop (ParserT const & subject_, ExactT const & exact) - : base_t(subject_), m_exact(exact) {} - - template - typename parser_result ::type - parse (ScannerT const & scan) const - { - typedef typename parser_result::type result_t; - result_t hit = scan.empty_match(); - std::size_t n = m_exact; - - for (std::size_t i = 0; i < n; ++i) - { - if (result_t next = this->subject().parse(scan)) - { - scan.concat_match(hit, next); - } - else - { - return scan.no_match(); - } - } - - return hit; - } - - template - struct result - { - typedef typename match_result::type type; - }; - - private: - - ExactT m_exact; - }; - - /////////////////////////////////////////////////////////////////////////////// - // - // finite_loop class - // - // This class takes care of the construct: - // - // repeat_p (min, max) [p] - // - // where 'p' is a parser, 'min' and 'max' specifies the minimum and - // maximum iterations over 'p'. The parser iterates over the input - // at least 'min' times and at most 'max' times. The parse function - // fails if the parser does not match the input at least 'min' times - // and at most 'max' times. - // - // This class is parametizable and can accept constant arguments - // (e.g. repeat_p (5, 10) [p]) as well as references to variables - // (e.g. repeat_p (ref (n1), ref (n2)) [p]). - // - /////////////////////////////////////////////////////////////////////////////// - template - class finite_loop - : public unary > > - { - public: - - typedef finite_loop self_t; - typedef unary > base_t; - - finite_loop (ParserT const & subject_, MinT const & min, MaxT const & max) - : base_t(subject_), m_min(min), m_max(max) {} - - template - typename parser_result ::type - parse(ScannerT const & scan) const - { - BOOST_SPIRIT_ASSERT(m_min <= m_max); - typedef typename parser_result::type result_t; - result_t hit = scan.empty_match(); - - std::size_t n1 = m_min; - std::size_t n2 = m_max; - - for (std::size_t i = 0; i < n2; ++i) - { - typename ScannerT::iterator_t save = scan.first; - result_t next = this->subject().parse(scan); - - if (!next) - { - if (i >= n1) - { - scan.first = save; - break; - } - else - { - return scan.no_match(); - } - } - - scan.concat_match(hit, next); - } - - return hit; - } - - template - struct result - { - typedef typename match_result::type type; - }; - - private: - - MinT m_min; - MaxT m_max; - }; - - /////////////////////////////////////////////////////////////////////////////// - // - // infinite_loop class - // - // This class takes care of the construct: - // - // repeat_p (min, more) [p] - // - // where 'p' is a parser, 'min' is the minimum iteration over 'p' - // and more specifies that the iteration should proceed - // indefinitely. The parser iterates over the input at least 'min' - // times and continues indefinitely until 'p' fails or all of the - // input is parsed. The parse function fails if the parser does not - // match the input at least 'min' times. - // - // This class is parametizable and can accept constant arguments - // (e.g. repeat_p (5, more) [p]) as well as references to variables - // (e.g. repeat_p (ref (n), more) [p]). - // - /////////////////////////////////////////////////////////////////////////////// - - struct more_t {}; - more_t const more = more_t (); - - template - class infinite_loop - : public unary > > - { - public: - - typedef infinite_loop self_t; - typedef unary > base_t; - - infinite_loop ( - ParserT const& subject_, - MinT const& min, - more_t const& - ) - : base_t(subject_), m_min(min) {} - - template - typename parser_result ::type - parse(ScannerT const & scan) const - { - typedef typename parser_result::type result_t; - result_t hit = scan.empty_match(); - std::size_t n = m_min; - - for (std::size_t i = 0; ; ++i) - { - typename ScannerT::iterator_t save = scan.first; - result_t next = this->subject().parse(scan); - - if (!next) - { - if (i >= n) - { - scan.first = save; - break; - } - else - { - return scan.no_match(); - } - } - - scan.concat_match(hit, next); - } - - return hit; - } - - template - struct result - { - typedef typename match_result::type type; - }; - - private: - - MinT m_min; - }; - - template - struct fixed_loop_gen - { - fixed_loop_gen (ExactT const & exact) - : m_exact (exact) {} - - template - fixed_loop - operator[](parser const & subject_) const - { - return fixed_loop (subject_.derived (), m_exact); - } - - ExactT m_exact; - }; - - namespace impl { - - template - struct loop_traits - { - typedef typename mpl::if_< - boost::is_same, - infinite_loop, - finite_loop - >::type type; - }; - - } // namespace impl - - template - struct nonfixed_loop_gen - { - nonfixed_loop_gen (MinT min, MaxT max) - : m_min (min), m_max (max) {} - - template - typename impl::loop_traits::type - operator[](parser const & subject_) const - { - typedef typename impl::loop_traits::type ret_t; - return ret_t( - subject_.derived(), - m_min, - m_max); - } - - MinT m_min; - MaxT m_max; - }; - - template - fixed_loop_gen - repeat_p(ExactT const & exact) - { - return fixed_loop_gen (exact); - } - - template - nonfixed_loop_gen - repeat_p(MinT const & min, MaxT const & max) - { - return nonfixed_loop_gen (min, max); - } - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif // #if !defined(BOOST_SPIRIT_LOOPS_HPP) diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/utility/regex.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/utility/regex.hpp deleted file mode 100644 index 14ace86d7568..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/utility/regex.hpp +++ /dev/null @@ -1,112 +0,0 @@ -/*============================================================================= - Copyright (c) 2002-2003 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_REGEX_HPP -#define BOOST_SPIRIT_REGEX_HPP - -#include - -/////////////////////////////////////////////////////////////////////////////// -// -// Include the regular expression library of boost (Boost.Regex) -// -// Note though, that this library is not distributed with Spirit. You have to -// obtain a separate copy from http://www.boost.org. -// -/////////////////////////////////////////////////////////////////////////////// -#if defined(BOOST_SPIRIT_NO_REGEX_LIB) && BOOST_VERSION < 103300 -// -// Include all the Boost.regex library. Please note that this will not work, -// if you are using the boost/spirit/regex.hpp header from more than one -// translation units. -// -#define BOOST_REGEX_NO_LIB -#define BOOST_REGEX_STATIC_LINK -#define BOOST_REGEX_NO_EXTERNAL_TEMPLATES -#include -#include - -#else -// -// Include the Boost.Regex headers only. Note, that you will have to link your -// application against the Boost.Regex library as described in the related -// documentation. -// This is the only way for Boost newer than V1.32.0 -// -#include -#endif // defined(BOOST_SPIRIT_NO_REGEX_LIB) - -#include - -/////////////////////////////////////////////////////////////////////////////// -#include -#include -#include -#include -#include // for std::iterator_traits - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -/////////////////////////////////////////////////////////////////////////////// -// rxstrlit class -template -struct rxstrlit : public parser > { - - typedef rxstrlit self_t; - - rxstrlit(CharT const *first, CharT const *last) - : rx(first, last) {} - rxstrlit(CharT const *first) - : rx(first) {} - - template - typename parser_result::type - parse(ScannerT const& scan) const - { - // Due to limitations in the boost::regex library the iterators wrapped in - // the ScannerT object should be at least bidirectional iterators. Plain - // forward iterators do not work here. - typedef typename ScannerT::iterator_t iterator_t; - typedef - typename std::iterator_traits::iterator_category - iterator_category; - - BOOST_STATIC_ASSERT(( - boost::is_convertible::value - )); - - typedef typename parser_result::type result_t; - return impl::contiguous_parser_parse(rx, scan, scan); - } - -private: - impl::rx_parser rx; // contains the boost regular expression parser -}; - -/////////////////////////////////////////////////////////////////////////////// -// Generator functions -template -inline rxstrlit -regex_p(CharT const *first) -{ return rxstrlit(first); } - -////////////////////////////////// -template -inline rxstrlit -regex_p(CharT const *first, CharT const *last) -{ return rxstrlit(first, last); } - -/////////////////////////////////////////////////////////////////////////////// -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - -#endif // BOOST_SPIRIT_REGEX_HPP diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/utility/rule_parser.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/utility/rule_parser.hpp deleted file mode 100644 index 82742b4d1b5e..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/utility/rule_parser.hpp +++ /dev/null @@ -1,1142 +0,0 @@ -/*============================================================================== - Copyright (c) 2006 Tobias Schwinger - http://spirit.sourceforge.net/ - - 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) -==============================================================================*/ -// The comment below contains a unnamed 'namespace {', which is flagged by the -// Boost inspect tool as a violation of common C++ programming rules. Since it's -// in a comment, well, we switch it off :-P -// boostinspect:nounnamed - -// -// About: -// ===== -// -// Using a typeof operator or Boost.Typeof to automatically set the type of -// variables (as done in the Spirit example demonstrating typeof) is by far not -// all we can do to tighten up our grammars as there are some significant -// drawbacks of this approach: -// - the types complexity scales with the complexity of the grammar (sooner or -// later hitting the limits of the compiler), -// - recursive grammars are not possible, and -// - all parser objects are embedded by value. -// -// The Spirit documentation therefore recommends creating custom parser classes -// (derived from the a sub_grammar template): -// -// http://www.boost.org/libs/spirit/doc/techniques.html#no_rules -// http://www.boost.org/libs/spirit/doc/techniques.html#typeof -// -// In practice manually applying this technique leads to rather lengthy code and -// overthis requires the user to have a solid understanding of Spirit details. -// -// Here is a generalized, macro-based approach to easily create typeof-based -// grammars that can be recursive and arbitrarily complex. -// -// -// Quick manual: -// ============ -// -// 1. Setup -// -// Before the rule parser macro (the protagonist of the facility) can be used -// the user must define the macro BOOST_SPIRIT__NAMESPACE (note the double -// underscore characeter) and setup a registration group for Boost.Typeof. -// -// Examples: -// -// // should come after regular #includeS -// #include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() -// -// // [...] -// -// #define BOOST_SPIRIT__NAMESPACE (2,(my_project, my_module)) -// // | | +- outer +- inner -// // ! space ! -+ | namespace namespace -// // | -// // +--- number of nested namespaces -// -// namespace my_project { namespace my_module { -// -// // [...] -// -// --- -// -// // should come after regular #includeS -// #include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() -// -// // [...] -// -// #define BOOST_SPIRIT__NAMESPACE (2,(my_project, (anonymous) )) -// -// namespace my_project { namespace { -// -// // [...] -// -// --- -// -// // should come after regular #includeS -// #include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() -// -// // [...] -// -// -// #define BOOST_SPIRIT__NAMESPACE - -// // we're working at root namespace -// -// -// Why do I have to do this? -// -// Boost.Typeof needs to assign a unique ID for each registration. This ID is -// created composed of the line number and the registration group. The -// facility performs Typeof registration and thus requires the source file to -// have its own registration group. Further Boost.Typeof requires registration -// to happen at root namespace so we have to close and reopen the namespace -// we're in. -// -// -// 2. The rule parser macro -// -// A simple rule parser definition looks like that: -// -// // we're at namespace scope here -// -// // Skip parser for C/C++ comments and whitespace -// BOOST_SPIRIT_RULE_PARSER(skipper, -// -,-,-, -// -// +( confix_p("//",*anychar_p,eol_p) -// | confix_p("/*",*anychar_p,"*/") -// | space_p -// ) -// ) -// -// Now we can use 'skipper' in other Spirit expressions. -// -// The code above creates a parser (template) class 'skpper_t' and (in this -// case, because there are no parameters) a static const instance 'skipper' of -// that class. The class is automatically registered with Boost.Typeof. The type -// name our parser is skipper_t here. -// -// -// 2.1. Parametrized rule parsers -// -// Rule parser definitions can have parameters. -// -// Parameters are passed to the BOOST_SPIRIT_RULE_PARSER macro as its second -// argument (just pass '-' if there are no parameters) with the following -// format: -// -// (N,( param1,param2, / ... / paramN )) -// +-- number of parameters -// -// Example of a whole rule parser: -// -// BOOST_SPIRIT_RULE_PARSER(new_name, -// (1,( symbol_table )),-,-, -// -// lexeme_d[ (alpha_p >> *alnum_p)[ symbol_table.add ] ] -// ) -// -// The expression 'new_name(my_symbols)' parses a string literal and adds it to -// the symbol table 'my_symbols'. -// -// The rule parser macro creates a function template as called 'new_name' that -// takes one parameter of deduced reference type and returns a specialization of -// 'new_name_t' in this case. -// -// Since parsers that require to be fast and lightweight often also require to -// be reentrant, it's quite common to pass in some semantic controller (the -// symbol table in the example above). -// However, parameters are templated so they can be anything (including parsers -// of course) so refactoring tasks can be abstracted with rule parsers as well. -// -// BOOST_SPIRIT_RULE_PARSER(enumeration_parser, -// (2,( element_parser, delimiter_parser )),-,-, -// -// element_parser >> *(delimiter_parser >> element_parser) -// ) -// -// The expression 'enumeration_parser(int_p[ some_action ], ',')' creates a -// parser for a comma-separated list of integers. -// -// -// 2.2. Rule parsrs and semantic actions -// -// While semantic actions can be globally attached to a rule parser or passed -// to a parametrized rule parser as (part of) an argument, even more control is -// possible by using action placeholders. E.g: -// -// BOOST_SPIRIT_ACTION_PLACEHOLDER(int_action) -// -// BOOST_SPIRIT_RULE_PARSER(int_list, -// -,(1,( int_action )),-, -// -// int_p[ int_action ] >> *(',' >> int_p[ int_action ]) -// ) -// -// The expression 'int_list[ my_action ]' parses a comma separated list of -// integers and calls 'my_action' for every integer parsed therein. -// -// Of course multiple actions can be attached to one placeholder as usual (in -// this case 'int_list[ my_action1 ][ my_action2 ] would call two actions). -// -// Further there can be multiple action placeholders for a single rule parser: -// -// BOOST_SPIRIT_ACTION_PLACEHOLDER(feed_int) -// BOOST_SPIRIT_ACTION_PLACEHOLDER(next_int) -// -// BOOST_SPIRIT_RULE_PARSER(int_list, -// -,(2,( feed_int, next_int )),-, -// -// int_p[ feed_int ] >> *(',' >> int_p[ next_int ][ feed_int ]) -// ) -// -// The expression 'int_list[ (feed_int = my_action1), (next_int = my_action2) ]' -// creates a parser for a comma separated list of integers with the actions -// attached appropriately. -// -// int_list[ feed_int = my_action1,my_action2, next_int = my_action3 ] -// -// works too (in this case the action placeholder 'feed_int' has two actions -// attached to it). -// -// You can both override and append actions associated with an action -// placeholder: -// -// var = int_list[ feed_int = my_action1, next_int = my_action2 ] -// -// // [...] -// -// ... var[ feed_int = another_action ] -// // 'another_action' overrides the actions previously attached to 'feed_int' -// -// ... var[ next_int += another_action ] -// // 'another_action' is appended to the list of actions attached to -// // 'next_int' -// -// Action placeholders are not entirely for free -- they add to the size and the -// initialization time of the rule parser. However, the impact on an already -// initialized rule parser instance should be quite small. -// -// -// 2.3. Member variables -// -// You can add member variables to the rule parser class using the third -// parameter of the rule parser macro: -// -// BOOST_SPIRIT_RULE_PARSER( calc, -// -, -// -, -// (3,( ((subrule<0>),expression,()), -// ((subrule<1>),term,()), -// ((subrule<2>),factor,() )) ), -// -// // [...] -// -// adds three subrules to the rule parser. -// Each parameter must have the following type to allow commas to be handled -// safely from within the preprocessing code: -// -// ((type)),name,(constructor argument(s))) -// -// -// 2.4. The opaque rule parser -// -// Rule parsers usually are templates. Building large grammars pushes the -// compiler really hard (and eventually to its limits) because of the -// metafunction complexity involved. -// If a rule parser without parameters and action placeholders is defined, a -// non-template class is created. Non-templated rule parsers can also be created -// explicitly by using BOOST_SPIRIT_OPAQUE_RULE_PARSER. -// Opaque rule parsers can have parameters and member variables (note: no action -// placeholders are possible). The parameters of an opaque rule parsers are -// strictly typed, e.g: -// -// BOOST_SPIRIT_OPAQUE_RULE_PARSER(new_identifier, -// (1,( ((my_symbol_table_t &),symbol_table) )) -// ,-, -// (alpha_p >> *alnum_p) [ symbol_table.add ] -// ) -// -// Note it's also possible to have opaque rule parsers accept parameters of -// non-const reference types which is not possible with regular rule parsers. -// -// -// 3. Utilities for by-reference embedding -// -// When using parsers multiple times or recursively it can be helpful to embed -// them by-reference into the final parser expression. -// For this purpose the library provides a wrapper template 'parser_reference'. -// There is also a function template to create a wrapped parser which can deduce -// the parser's type from its argument. -// -// --- --- - - --- - - --- - - - - --- - - - - - - - - - - - - - - - - - - - - - -#if !defined(BOOST_SPIRIT_UTILITY_RULE_PARSER_HPP_INCLUDED) -# define BOOST_SPIRIT_UTILITY_RULE_PARSER_HPP_INCLUDED -//============================================================================== -// Dependencies -//============================================================================== -# include -# include -# include -# include -# include -# include -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -//============================================================================== -// Interface -//============================================================================== -// Creates a rule parser. Use at namespace scope. -# define BOOST_SPIRIT_RULE_PARSER(name,params,actions,members,rule) \ - BOOST_SPIRIT_RP_IMPL_I(name,params,actions,members,rule) -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// Creates a non-templated rule parser. Use at namespace scope. -# define BOOST_SPIRIT_OPAQUE_RULE_PARSER(name,params,members,rule) \ - BOOST_SPIRIT_RP_OPAQUE_IMPL_I(name,params,members,rule) -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// Defines an action placeholder. Use at namespace scope. -# define BOOST_SPIRIT_ACTION_PLACEHOLDER(name) \ - BOOST_SPIRIT_RP_AP_IMPL(name,::BOOST_SPIRIT_CLASSIC_NS::type_of) -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// Utilities to embed parsers by reference. -namespace boost -{ - namespace spirit - { - BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - template class parser_reference; - template parser_reference

embed_by_reference(parser

> - { - P const & ref_that; - public: - parser_reference(P & that) - // we allow implicit conversion but forbid temporaries. - : ref_that(that) - { } - - typedef parser_reference

self_t; - typedef self_t const & embed_t; - typedef typename P::parser_category_t parser_category_t; - - template struct result - { typedef typename P::BOOST_NESTED_TEMPLATE result::type type; }; - - template - typename result::type - parse(ScannerT const & scan) const - { return this->ref_that.parse(scan); } - }; - - template parser_reference

- embed_by_reference(::BOOST_SPIRIT_CLASSIC_NS::parser

& p) - { return p; } - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -} } // namespace ::BOOST_SPIRIT_CLASSIC_NS - -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::parser_reference, 1) - -//------------------------------------------------------------------------------ -// Expression templates for action placeholders. -//------------------------------------------------------------------------------ - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -namespace type_of { - - // No-operation functor - - struct nop_functor - { - template - bool operator()(T const &) const - { return false; } - template - bool operator()(T const &, U const &) const - { return false; } - - typedef bool result_type; - }; - - // Composite action - - template - class composite_action - { - Action1 fnc_a1; - Action2 fnc_a2; - public: - composite_action(Action1 const & a1, Action2 const & a2) - : fnc_a1(a1), fnc_a2(a2) - { } - - template - void operator()(T const & inp) const - { fnc_a1(inp); fnc_a2(inp); } - - template - void operator()(T const & inp1, U const inp2) const - { fnc_a1(inp1, inp2); fnc_a2(inp1, inp2); } - }; - - // Action concatenation (and optimize away nop_functorS) - - template - struct action_concatenator - { - typedef composite_action type; - - static type concatenate(Action1 const & a1, Action2 const & a2) - { return composite_action(a1,a2); } - }; - template struct action_concatenator - { - typedef Action type; - - static type concatenate(nop_functor const &, Action const & a) - { return a; } - }; - template struct action_concatenator - { - typedef Action type; - - static type concatenate(Action const & a, nop_functor const &) - { return a; } - }; - template<> struct action_concatenator - { - typedef nop_functor type; - - static type concatenate(nop_functor const &, nop_functor const &) - { return nop_functor(); } - }; - - template - typename action_concatenator::type - concatenate_actions(Action1 const & a1, Action2 const & a2) - { - return action_concatenator::concatenate(a1,a2); - } - - // Action chains - - enum action_chain_mode { replace, append }; - - template - class action_chain - { - Action fnc_action; - public: - action_chain(Action const & a) - : fnc_action(a) - { } - - typedef Action action_type; - - Action const & action() const { return fnc_action; } - }; - - // This operator adds actions to an action chain definition - template - action_chain::type> - operator, (action_chain const & chain, A2 const & a) - { - return action_chain::type> - ( concatenate_actions(chain.action(), a) ); - } - - // Expression template for multiple action chain assignments - template - class action_chains - { - ChainOrChains obj_head; - LastChain obj_tail; - public: - action_chains(ChainOrChains const & head, LastChain const & tail) - : obj_head(head), obj_tail(tail) - { } - - typedef ChainOrChains head_type; - typedef LastChain tail_type; - - head_type const & head() const { return obj_head; } - tail_type const & tail() const { return obj_tail; } - }; - - // Action chain concatenation - template - action_chains make_chain(Head const & h, Tail const & t) - { return action_chains(h,t); } - - template - action_chains< action_chain, action_chain > - operator, (action_chain const & h, - action_chain const & t) - { return make_chain(h,t); } - - template - action_chains< action_chains, action_chain > - operator, (action_chains const & h, action_chain const & t) - { return make_chain(h,t); } - - - // Extract the (maybe composite) action associated with an action - // placeholders from the chains with a fold algorithm. - template - struct placeholdee - { - typedef StartAction type; - - static type get(StartAction const & a, NewChainOrChains const &) - { return a; } - }; - - template - typename placeholdee::type - get_placeholdee(StartAction const & a, NewChainOrChains const & c) - { return placeholdee::get(a,c); } - - template - struct placeholdee - < Placeholder, StartAction, action_chains > - { - typedef typename placeholdee::type, Tail >::type - type; - - static type get(StartAction const & a, action_chains const & c) - { - return get_placeholdee( - get_placeholdee(a,c.head()), c.tail() ); - } - }; - - template - struct placeholdee - < Placeholder, StartAction, action_chain > - { - typedef A type; - - static type get(StartAction const &, - action_chain const & c) - { return c.action(); } - }; - - template - struct placeholdee - < Placeholder, StartAction, action_chain > - { - typedef typename action_concatenator::type type; - - static type get(StartAction const & a, - action_chain const & c) - { return concatenate_actions(a,c.action()); } - }; - -} - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -} } // namespace ::BOOST_SPIRIT_CLASSIC_NS::type_of - -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::type_of::nop_functor) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::type_of::composite_action,2) - -//------------------------------------------------------------------------------ -// Misc.utilities -//------------------------------------------------------------------------------ - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - -namespace type_of { - - // Utility function to create a dependency to a template argument. - - template - X const & depend_on_type(X const & x) - { return x; } - - // Utility to allow use parenthesized type expressions with commas inside - // as a type within macros. Thanks to Dave Abrahams for telling me this nice - // trick. - - #define BOOST_SPIRIT_RP_TYPE(x) \ - ::BOOST_SPIRIT_CLASSIC_NS::type_of::remove_special_fptr \ - < ::BOOST_SPIRIT_CLASSIC_NS::type_of::special_result & (*) x >::type - - struct special_result; - - template struct remove_special_fptr { }; - template struct remove_special_fptr< special_result & (*)(T) > - { typedef T type; }; - -} - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -} } // namespace ::BOOST_SPIRIT_CLASSIC_NS::type_of - -//------------------------------------------------------------------------------ -#endif -//------------------------------------------------------------------------------ - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/utility/scoped_lock.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/utility/scoped_lock.hpp deleted file mode 100644 index 3d6bc50c2c96..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/utility/scoped_lock.hpp +++ /dev/null @@ -1,111 +0,0 @@ -/*============================================================================= - Copyright (c) 2003 Martin Wille - http://spirit.sourceforge.net/ - - 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) - =============================================================================*/ -#ifndef BOOST_SPIRIT_UTILITY_SCOPED_LOCK_HPP -#define BOOST_SPIRIT_UTILITY_SCOPED_LOCK_HPP - -/////////////////////////////////////////////////////////////////////////////// -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - /////////////////////////////////////////////////////////////////////////// - // - // scoped_lock_parser class - // - // implements locking of a mutex during execution of - // the parse method of an embedded parser - // - /////////////////////////////////////////////////////////////////////////// - template - struct scoped_lock_parser - : public unary< ParserT, parser< scoped_lock_parser > > - { - typedef scoped_lock_parser self_t; - typedef MutexT mutex_t; - typedef ParserT parser_t; - - template - struct result - { - typedef typename parser_result::type type; - }; - - scoped_lock_parser(mutex_t &m, parser_t const &p) - : unary< ParserT, parser< scoped_lock_parser > >(p) - , mutex(m) - {} - - - template - typename parser_result::type - parse(ScannerT const &scan) const - { - typedef boost::unique_lock scoped_lock_t; - scoped_lock_t lock(mutex); - return this->subject().parse(scan); - } - - mutex_t &mutex; - }; - - /////////////////////////////////////////////////////////////////////////// - // - // scoped_lock_parser_gen - // - // generator for scoped_lock_parser objects - // operator[] returns scoped_lock_parser according to its argument - // - /////////////////////////////////////////////////////////////////////////// - template - struct scoped_lock_parser_gen - { - typedef MutexT mutex_t; - explicit scoped_lock_parser_gen(mutex_t &m) : mutex(m) {} - - template - scoped_lock_parser - < - MutexT, - typename as_parser::type - > - operator[](ParserT const &p) const - { - typedef ::BOOST_SPIRIT_CLASSIC_NS::as_parser as_parser_t; - typedef typename as_parser_t::type parser_t; - - return scoped_lock_parser - (mutex, as_parser_t::convert(p)); - } - - mutex_t &mutex; - }; - - - /////////////////////////////////////////////////////////////////////////// - // - // scoped_lock_d parser directive - // - // constructs a scoped_lock_parser generator from its argument - // - /////////////////////////////////////////////////////////////////////////// - template - scoped_lock_parser_gen - scoped_lock_d(MutexT &mutex) - { - return scoped_lock_parser_gen(mutex); - } - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS -#endif // BOOST_SPIRIT_UTILITY_SCOPED_LOCK_HPP diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/utility/typeof.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/utility/typeof.hpp deleted file mode 100644 index 9c70619b52c0..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/utility/typeof.hpp +++ /dev/null @@ -1,150 +0,0 @@ -/*============================================================================= - Copyright (c) 2006 Tobias Schwinger - http://spirit.sourceforge.net/ - - 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_UTILITY_TYPEOF_HPP) -#define BOOST_SPIRIT_UTILITY_TYPEOF_HPP - -#include - -#include -#include - -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - // chset.hpp - template class chset; - - // functor_parser.hpp - template struct functor_parser; - - // loops.hpp - template class fixed_loop; - template class finite_loop; - template class infinite_loop; - - // regex.hpp - template struct rxstrlit; - - // flush_multi_pass.hpp - class flush_multi_pass_parser; - - // scoped_lock.hpp - template struct scoped_lock_parser; - -BOOST_SPIRIT_CLASSIC_NAMESPACE_END - -}} // namespace BOOST_SPIRIT_CLASSIC_NS - - -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() - - -// chset.hpp - -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::chset,1) - -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::chset) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::chset) - - -// escape_char.hpp (has forward header) - -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::escape_char_parser,(BOOST_TYPEOF_INTEGRAL(unsigned long))(typename)) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::escape_char_action,(class)(typename)(BOOST_TYPEOF_INTEGRAL(unsigned long))(typename)) - -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::escape_char_parser,(BOOST_TYPEOF_INTEGRAL(unsigned long))) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::escape_char_action,(class)(typename)(BOOST_TYPEOF_INTEGRAL(unsigned long))) - - -// functor_parser.hpp - -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::functor_parser,1) - - -// loops.hpp - -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::fixed_loop,2) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::finite_loop,3) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::infinite_loop,2) - - -// regex.hpp - -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::rxstrlit,1) - -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::rxstrlit) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::rxstrlit) - - -// confix.hpp (has forward header) - -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::confix_parser, 6) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::confix_parser, 5) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::confix_parser, 4) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::confix_parser, 3) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::comment_nest_parser, 2) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::is_nested) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::non_nested) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::is_lexeme) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::non_lexeme) - - -// lists.hpp (has forward header) - -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::list_parser,4) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::list_parser,3) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::list_parser,2) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::no_list_endtoken) - - -// distinct.hpp (has forward header) - -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::distinct_parser,2) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::distinct_parser,1) -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::dynamic_distinct_parser,1) -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::distinct_parser<>) - - -// flush_multi_pass.hpp - -BOOST_TYPEOF_REGISTER_TYPE(BOOST_SPIRIT_CLASSIC_NS::flush_multi_pass_parser) - - -// scoped_lock.hpp - -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::scoped_lock_parser,2) - - -// grammar_gen.hpp (has forward header) - -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::grammar_def,BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT) - -#if BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT > 12 -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::grammar_def,12) -#endif -#if BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT > 9 -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::grammar_def, 9) -#endif -#if BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT > 6 -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::grammar_def, 6) -#endif -#if BOOST_SPIRIT_GRAMMAR_STARTRULE_TYPE_LIMIT > 3 -BOOST_TYPEOF_REGISTER_TEMPLATE(BOOST_SPIRIT_CLASSIC_NS::grammar_def, 3) -#endif - - -#endif - - diff --git a/framework/contrib/boost/include/boost/spirit/home/classic/version.hpp b/framework/contrib/boost/include/boost/spirit/home/classic/version.hpp deleted file mode 100644 index 545e0ce38975..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/classic/version.hpp +++ /dev/null @@ -1,19 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2003 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_CLASSIC_VERSION_HPP -#define BOOST_SPIRIT_CLASSIC_VERSION_HPP - -/////////////////////////////////////////////////////////////////////////////// -// -// This is the version of the current Spirit distribution -// -/////////////////////////////////////////////////////////////////////////////// -#define SPIRIT_VERSION 0x1811 -#define SPIRIT_PIZZA_VERSION SPIRIT_MEGA_VEGGI // :-) - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma.hpp b/framework/contrib/boost/include/boost/spirit/home/karma.hpp deleted file mode 100644 index d691f203d55e..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// 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) - -#ifndef BOOST_SPIRIT_KARMA_HPP -#define BOOST_SPIRIT_KARMA_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/action.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/action.hpp deleted file mode 100644 index dd6208e8cce0..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/action.hpp +++ /dev/null @@ -1,15 +0,0 @@ -// 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_ACTION_MAR_04_2007_0912AM) -#define BOOST_SPIRIT_KARMA_ACTION_MAR_04_2007_0912AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/action/action.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/action/action.hpp deleted file mode 100644 index a20ee1cedbe2..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/action/action.hpp +++ /dev/null @@ -1,135 +0,0 @@ -// 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_ACTION_MAR_07_2007_0851AM) -#define BOOST_SPIRIT_KARMA_ACTION_MAR_07_2007_0851AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace karma -{ - /////////////////////////////////////////////////////////////////////////// - BOOST_PP_REPEAT(SPIRIT_ARGUMENTS_LIMIT, SPIRIT_USING_ARGUMENT, _) - - template - struct action : unary_generator > - { - typedef Subject subject_type; - typedef typename subject_type::properties properties; - - template - struct attribute - : traits::attribute_of - {}; - - action(Subject const& subject, Action f) - : subject(subject), f(f) {} - - template < - typename OutputIterator, typename Context, typename Delimiter - , typename Attribute> - bool generate(OutputIterator& sink, Context& ctx, Delimiter const& d - , Attribute const& attr_) const - { - typedef typename attribute::type attr_type; - - // create a attribute if none is supplied - // this creates a _copy_ of the attribute because the semantic - // action will likely change parts of this - typedef traits::transform_attribute< - Attribute const, attr_type, domain> transform; - - attr_type attr = transform::pre(attr_); - - // call the function, passing the attribute, the context and a bool - // flag that the client can set to false to fail generating. - return traits::action_dispatch()(f, attr, ctx) && - subject.generate(sink, ctx, d, attr); - } - - template - info what(Context& context) const - { - // the action is transparent (does not add any info) - return subject.what(context); - } - - subject_type subject; - Action f; - }; - -}}} - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Karma action meta-compiler - template <> - struct make_component - { - template - struct result; - - template - struct result - { - typedef typename - remove_const::type - subject_type; - - typedef typename - remove_const::type - action_type; - - typedef karma::action type; - }; - - template - typename result::type - operator()(Elements const& elements, unused_type) const - { - typename result::type - result(elements.car, elements.cdr.car); - return result; - } - }; -}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct has_semantic_action > - : mpl::true_ {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container, Attribute - , Context, Iterator> - : unary_handles_container {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/auto.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/auto.hpp deleted file mode 100644 index 0996306bdf69..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/auto.hpp +++ /dev/null @@ -1,16 +0,0 @@ -// 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_AUTO_NOV_29_2009_0324PM) -#define BOOST_SPIRIT_KARMA_AUTO_NOV_29_2009_0324PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/auto/auto.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/auto/auto.hpp deleted file mode 100644 index c36ef09de142..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/auto/auto.hpp +++ /dev/null @@ -1,184 +0,0 @@ -// 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_AUTO_NOV_29_2009_0339PM) -#define BOOST_SPIRIT_KARMA_AUTO_NOV_29_2009_0339PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_terminal // enables auto_ - : mpl::true_ {}; - - template - struct use_terminal > - > : mpl::true_ {}; - - template <> // enables auto_(f) - struct use_lazy_terminal< - karma::domain, tag::auto_, 1 /*arity*/ - > : mpl::true_ {}; - -}} - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace karma -{ -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using spirit::auto_; -#endif - using spirit::auto_type; - - /////////////////////////////////////////////////////////////////////////// - template - struct auto_generator - : generator > - { - typedef mpl::int_ properties; - - template - struct attribute - { - typedef spirit::basic_hold_any type; - }; - - auto_generator(Modifiers const& modifiers) - : modifiers_(modifiers) {} - - // auto_generator has an attached attribute - template < - typename OutputIterator, typename Context, typename Delimiter - , typename Attribute> - bool generate(OutputIterator& sink, Context& context - , Delimiter const& d, Attribute const& attr) const - { - return compile(create_generator(), modifiers_) - .generate(sink, context, d, attr); - } - - // this auto_generator has no attribute attached, it needs to have been - // initialized from a value/variable - template - static bool - generate(OutputIterator&, Context&, Delimiter const&, unused_type) - { - // It is not possible (doesn't make sense) to use auto_ generators - // without providing any attribute, as the generator doesn't 'know' - // what to output. The following assertion fires if this situation - // is detected in your code. - BOOST_SPIRIT_ASSERT_FAIL(OutputIterator, auto_not_usable_without_attribute, ()); - return false; - } - - template - info what(Context& /*context*/) const - { - return info("auto_"); - } - - Modifiers modifiers_; - }; - - /////////////////////////////////////////////////////////////////////////// - template - struct lit_auto_generator - : generator > - { - typedef mpl::int_ properties; - - template - struct attribute - { - typedef unused_type type; - }; - - lit_auto_generator(typename add_reference::type t, Modifiers const& modifiers) - : t_(t) - , generator_(compile(create_generator(), modifiers)) - {} - - // auto_generator has an attached attribute - template < - typename OutputIterator, typename Context, typename Delimiter - , typename Attribute> - bool generate(OutputIterator& sink, Context& context - , Delimiter const& d, Attribute const&) const - { - return generator_.generate(sink, context, d, t_); - } - - template - info what(Context& /*context*/) const - { - return info("auto_"); - } - - typedef typename spirit::result_of::create_generator::type - generator_type; - - typedef typename spirit::result_of::compile< - karma::domain, generator_type, Modifiers>::type generator_impl_type; - - T t_; - generator_impl_type generator_; - }; - - /////////////////////////////////////////////////////////////////////////// - // Generator generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - - // auto_ - template - struct make_primitive - { - typedef auto_generator result_type; - - result_type operator()(unused_type, Modifiers const& modifiers) const - { - return result_type(modifiers); - } - }; - - // auto_(...) - template - struct make_primitive< - terminal_ex >, Modifiers> - { - typedef typename add_const::type const_attribute; - - typedef lit_auto_generator result_type; - - template - result_type operator()(Terminal const& term, Modifiers const& modifiers) const - { - return result_type(fusion::at_c<0>(term.args), modifiers); - } - }; - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/auto/create_generator.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/auto/create_generator.hpp deleted file mode 100644 index 7c2551b1be99..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/auto/create_generator.hpp +++ /dev/null @@ -1,46 +0,0 @@ -// 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_CREATE_NOV_21_2009_0340PM) -#define BOOST_SPIRIT_KARMA_CREATE_NOV_21_2009_0340PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace result_of -{ - /////////////////////////////////////////////////////////////////////////// - template - struct create_generator - : spirit::traits::meta_create {}; -}}} - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace karma -{ - // Main API function for generator creation from data type - template - typename result_of::create_generator::type - create_generator() - { - return spirit::traits::meta_create::call(); - } -}}} - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace traits -{ - // Meta function returning true if create_generator does return a valid - // generator for the given type T. - template - struct create_generator_exists - : meta_create_exists {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/auto/meta_create.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/auto/meta_create.hpp deleted file mode 100644 index add6c2ceef8d..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/auto/meta_create.hpp +++ /dev/null @@ -1,340 +0,0 @@ -// 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_META_CREATE_NOV_21_2009_0425PM) -#define BOOST_SPIRIT_KARMA_META_CREATE_NOV_21_2009_0425PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace karma -{ - /////////////////////////////////////////////////////////////////////////// - // compatible STL containers - template - struct meta_create_container - { - typedef make_unary_proto_expr< - typename Container::value_type - , proto::tag::dereference, karma::domain - > make_proto_expr; - - typedef typename make_proto_expr::type type; - - static type call() - { - return make_proto_expr::call(); - } - }; - - /////////////////////////////////////////////////////////////////////////// - // String types - template - struct meta_create_string - { - typedef spirit::standard::string_type type; - static type const call() { return type(); } - }; - - template <> - struct meta_create_string - { - typedef spirit::standard_wide::string_type type; - static type const call() { return type(); } - }; - - template <> - struct meta_create_string - { - typedef spirit::standard_wide::string_type type; - static type const call() { return type(); } - }; - - template - struct meta_create_string - { - typedef spirit::standard_wide::string_type type; - static type const call() { return type(); } - }; - - template - struct meta_create_string - { - typedef spirit::standard_wide::string_type type; - static type const call() { return type(); } - }; - - template - struct meta_create_string - { - typedef spirit::standard_wide::string_type type; - static type const call() { return type(); } - }; - - template - struct meta_create_string - { - typedef spirit::standard_wide::string_type type; - static type const call() { return type(); } - }; - - template - struct meta_create_string > - { - typedef spirit::standard_wide::string_type type; - static type const call() { return type(); } - }; - - /////////////////////////////////////////////////////////////////////////// - // Fusion sequences - template - struct meta_create_sequence - { - // create a mpl sequence from the given fusion sequence - typedef typename mpl::fold< - typename fusion::result_of::as_vector::type - , mpl::vector<>, mpl::push_back - >::type sequence_type; - - typedef make_nary_proto_expr< - sequence_type, proto::tag::shift_left, karma::domain - > make_proto_expr; - - typedef typename make_proto_expr::type type; - - static type call() - { - return make_proto_expr::call(); - } - }; - - /////////////////////////////////////////////////////////////////////////// - // the default is to use the standard streaming operator unless it's a - // STL container or a fusion sequence - - // The default implementation will be chosen if no predefined mapping of - // the data type T to a Karma component is defined. - struct no_auto_mapping_exists {}; - - template - struct meta_create_impl : mpl::identity {}; - - template - struct meta_create_impl - , mpl::not_ > - , mpl::not_ > - > >::type> - : meta_create_container {}; - - template - struct meta_create_impl >::type> - : meta_create_string {}; - - template - struct meta_create_impl - >::type> - : meta_create_sequence {}; - - template - struct meta_create : meta_create_impl {}; - - /////////////////////////////////////////////////////////////////////////// - // optional - template - struct meta_create > - { - typedef make_unary_proto_expr< - T, proto::tag::negate, karma::domain - > make_proto_expr; - - typedef typename make_proto_expr::type type; - - static type call() - { - return make_proto_expr::call(); - } - }; - - /////////////////////////////////////////////////////////////////////////// - // alternatives - template - struct meta_create > - { - typedef make_nary_proto_expr< - typename boost::variant::types - , proto::tag::bitwise_or, karma::domain - > make_proto_expr; - - typedef typename make_proto_expr::type type; - - static type call() - { - return make_proto_expr::call(); - } - }; - - /////////////////////////////////////////////////////////////////////////// - // predefined specializations for primitive components - - // character generator - template <> - struct meta_create - { - typedef spirit::standard::char_type type; - static type const call() { return type(); } - }; - template <> - struct meta_create - { - typedef spirit::standard::char_type type; - static type const call() { return type(); } - }; - template <> - struct meta_create - { - typedef spirit::standard_wide::char_type type; - static type const call() { return type(); } - }; - - template <> - struct meta_create - { - typedef spirit::standard::char_type type; - static type const call() { return type(); } - }; - - // boolean generator - template <> - struct meta_create - { - typedef spirit::bool_type type; - static type call() { return type(); } - }; - - // integral generators - template <> - struct meta_create - { - typedef spirit::int_type type; - static type call() { return type(); } - }; - template <> - struct meta_create - { - typedef spirit::short_type type; - static type call() { return type(); } - }; - template <> - struct meta_create - { - typedef spirit::long_type type; - static type call() { return type(); } - }; - template <> - struct meta_create - { - typedef spirit::uint_type type; - static type call() { return type(); } - }; -#if !defined(BOOST_NO_INTRINSIC_WCHAR_T) - template <> - struct meta_create - { - typedef spirit::ushort_type type; - static type call() { return type(); } - }; -#endif - template <> - struct meta_create - { - typedef spirit::ulong_type type; - static type call() { return type(); } - }; - -#ifdef BOOST_HAS_LONG_LONG - template <> - struct meta_create - { - typedef spirit::long_long_type type; - static type call() { return type(); } - }; - template <> - struct meta_create - { - typedef spirit::ulong_long_type type; - static type call() { return type(); } - }; -#endif - - // floating point generators - template <> - struct meta_create - { - typedef spirit::float_type type; - static type call() { return type(); } - }; - template <> - struct meta_create - { - typedef spirit::double_type type; - static type call() { return type(); } - }; - template <> - struct meta_create - { - typedef spirit::long_double_type type; - static type call() { return type(); } - }; -}}} - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - // main customization point for create_generator - template - struct create_generator : karma::meta_create {}; - - /////////////////////////////////////////////////////////////////////////// - // dispatch this to the karma related specializations - template - struct meta_create - : create_generator::type> {}; - - /////////////////////////////////////////////////////////////////////////// - // Check whether a valid mapping exits for the given data type to a Karma - // component - template - struct meta_create_exists - : mpl::not_::type - > > {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/auxiliary.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/auxiliary.hpp deleted file mode 100644 index da116c545712..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/auxiliary.hpp +++ /dev/null @@ -1,18 +0,0 @@ -// 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_AUXILIARY_MAR_26_2007_1225PM) -#define BOOST_SPIRIT_KARMA_AUXILIARY_MAR_26_2007_1225PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/auxiliary/attr_cast.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/auxiliary/attr_cast.hpp deleted file mode 100644 index eda4b9594f67..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/auxiliary/attr_cast.hpp +++ /dev/null @@ -1,118 +0,0 @@ -// 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) - -#ifndef BOOST_SPIRIT_KARMA_AUXILIARY_ATTR_CAST_HPP -#define BOOST_SPIRIT_KARMA_AUXILIARY_ATTR_CAST_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // enables attr_cast<>() pseudo generator - template - struct use_terminal > - : mpl::true_ {}; -}} - -namespace boost { namespace spirit { namespace karma -{ - using spirit::attr_cast; - - /////////////////////////////////////////////////////////////////////////// - // attr_cast_generator consumes the attribute of subject generator without - // generating anything - /////////////////////////////////////////////////////////////////////////// - template - struct attr_cast_generator - : unary_generator > - { - typedef typename result_of::compile::type - subject_type; - - typedef mpl::int_ properties; - - typedef typename mpl::eval_if< - traits::not_is_unused - , mpl::identity - , traits::attribute_of >::type - transformed_attribute_type; - - attr_cast_generator(Subject const& subject) - : subject(subject) - { - // If you got an error_invalid_expression error message here, - // then the expression (Subject) is not a valid spirit karma - // expression. - BOOST_SPIRIT_ASSERT_MATCH(karma::domain, Subject); - } - - // If Exposed is given, we use the given type, otherwise all we can do - // is to guess, so we expose our inner type as an attribute and - // deal with the passed attribute inside the parse function. - template - struct attribute - : mpl::if_, Exposed - , transformed_attribute_type> - {}; - - template - bool generate(OutputIterator& sink, Context& ctx, Delimiter const& d - , Attribute const& attr) const - { - typedef traits::transform_attribute< - Attribute const, transformed_attribute_type, domain> - transform; - - return compile(subject).generate( - sink, ctx, d, transform::pre(attr)); - } - - template - info what(Context& context) const - { - return info("attr_cast" - , compile(subject).what(context)); - } - - Subject subject; - }; - - /////////////////////////////////////////////////////////////////////////// - // Generator generator: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_primitive< - tag::stateful_tag, Modifiers> - { - typedef attr_cast_generator result_type; - - template - result_type operator()(Terminal const& term, unused_type) const - { - typedef tag::stateful_tag< - Expr, tag::attr_cast, Exposed, Transformed> tag_type; - using spirit::detail::get_stateful_data; - return result_type(get_stateful_data::call(term)); - } - }; - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/auxiliary/eol.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/auxiliary/eol.hpp deleted file mode 100644 index 3aba64bc7579..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/auxiliary/eol.hpp +++ /dev/null @@ -1,81 +0,0 @@ -// 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_EOL_JUL_08_2008_1014AM) -#define BOOST_SPIRIT_KARMA_EOL_JUL_08_2008_1014AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_terminal // enables eol - : mpl::true_ {}; - -}} - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace karma -{ -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using boost::spirit::eol; -#endif - using boost::spirit::eol_type; - - struct eol_generator : primitive_generator - { - template - struct attribute - { - typedef unused_type type; - }; - - template < - typename OutputIterator, typename Context, typename Delimiter - , typename Attribute> - static bool generate(OutputIterator& sink, Context&, Delimiter const& d - , Attribute const& /*attr*/) - { - return detail::generate_to(sink, '\n') && - karma::delimit_out(sink, d); // always do post-delimiting - } - - template - info what(Context const& /*context*/) const - { - return info("eol"); - } - }; - - /////////////////////////////////////////////////////////////////////////// - // Generator generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_primitive - { - typedef eol_generator result_type; - result_type operator()(unused_type, unused_type) const - { - return result_type(); - } - }; - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/auxiliary/eps.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/auxiliary/eps.hpp deleted file mode 100644 index a8c57b3f7c25..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/auxiliary/eps.hpp +++ /dev/null @@ -1,137 +0,0 @@ -// 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_EPS_APRIL_21_2007_0246PM) -#define BOOST_SPIRIT_KARMA_EPS_APRIL_21_2007_0246PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - - // enables eps - template <> - struct use_terminal - : mpl::true_ {}; - - // enables eps(bool-condition) - template - struct use_terminal > > - : is_convertible {}; - - // enables lazy eps(f) - template <> - struct use_lazy_terminal - : mpl::true_ {}; - -}} - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace karma -{ -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using boost::spirit::eps; -#endif - using boost::spirit::eps_type; - - struct eps_generator : primitive_generator - { - template - struct attribute - { - typedef unused_type type; - }; - - template < - typename OutputIterator, typename Context, typename Delimiter - , typename Attribute> - static bool generate(OutputIterator& sink, Context&, Delimiter const& d - , Attribute const& /*attr*/) - { - return karma::delimit_out(sink, d); // always do post-delimiting - } - - template - info what(Context const& /*context*/) const - { - return info("eps"); - } - }; - - struct semantic_predicate : primitive_generator - { - template - struct attribute - { - typedef unused_type type; - }; - - semantic_predicate(bool predicate) - : predicate_(predicate) - {} - - template < - typename OutputIterator, typename Context, typename Delimiter - , typename Attribute> - bool generate(OutputIterator& sink, Context&, Delimiter const& d - , Attribute const& /*attr*/) const - { - // only do post-delimiting when predicate is true - return predicate_ && karma::delimit_out(sink, d); - } - - template - info what(Context const& /*context*/) const - { - return info("semantic-predicate"); - } - - bool predicate_; - }; - - /////////////////////////////////////////////////////////////////////////// - // Generator generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_primitive - { - typedef eps_generator result_type; - result_type operator()(unused_type, unused_type) const - { - return result_type(); - } - }; - - template - struct make_primitive< - terminal_ex > - , Modifiers> - { - typedef semantic_predicate result_type; - - template - result_type operator()(Terminal const& term, unused_type) const - { - return result_type(fusion::at_c<0>(term.args)); - } - }; - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/auxiliary/lazy.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/auxiliary/lazy.hpp deleted file mode 100644 index e8b511be6c28..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/auxiliary/lazy.hpp +++ /dev/null @@ -1,269 +0,0 @@ -// Copyright (c) 2001-2011 Hartmut Kaiser -// Copyright (c) 2001-2011 Joel de Guzman -// -// 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_LAZY_MARCH_27_2007_1231PM) -#define BOOST_SPIRIT_KARMA_LAZY_MARCH_27_2007_1231PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace phoenix -{ - template - struct actor; -}} - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template - struct use_terminal > // enables phoenix actors - : mpl::true_ {}; - - // forward declaration - template - struct lazy_terminal; - -}} - -namespace boost { namespace spirit { namespace karma -{ - using spirit::lazy; - typedef modify karma_modify; - - namespace detail - { - template - bool lazy_generate_impl(Generator const& g, OutputIterator& sink - , Context& context, Delimiter const& delim - , Attribute const& attr, mpl::false_) - { - return g.generate(sink, context, delim, attr); - } - - template - bool lazy_generate_impl(Generator const& g, OutputIterator& sink - , Context& context, Delimiter const& delim - , Attribute const& /* attr */, mpl::true_) - { - // If DeducedAuto is false (semantic actions is present), the - // component's attribute is unused. - return g.generate(sink, context, delim, unused); - } - - template - bool lazy_generate_impl_main(Generator const& g, OutputIterator& sink - , Context& context, Delimiter const& delim, Attribute const& attr) - { - // If DeducedAuto is true (no semantic action), we pass the parser's - // attribute on to the component. - typedef typename traits::has_semantic_action::type auto_rule; - return lazy_generate_impl(g, sink, context, delim, attr, auto_rule()); - } - } - - template - struct lazy_generator : generator > - { - typedef mpl::int_ properties; - - template - struct attribute - { - typedef typename - boost::result_of::type - modifier; - - typedef typename - remove_reference< - typename boost::result_of::type - >::type - expr_type; - - // If you got an error_invalid_expression error message here, - // then the expression (expr_type) is not a valid spirit karma - // expression. - BOOST_SPIRIT_ASSERT_MATCH(karma::domain, expr_type); - - typedef typename - result_of::compile::type - generator_type; - - typedef typename - traits::attribute_of::type - type; - }; - - lazy_generator(Function const& func, Modifiers const& modifiers) - : func(func), modifiers(modifiers) {} - - template < - typename OutputIterator, typename Context, - typename Delimiter, typename Attribute - > - bool generate(OutputIterator& sink, Context& context, - Delimiter const& d, Attribute const& attr) const - { - return detail::lazy_generate_impl_main( - compile(func(unused, context) - , karma_modify()(tag::lazy_eval(), modifiers)) - , sink, context, d, attr); - } - - template - info what(Context& context) const - { - return info("lazy" - , compile(func(unused, context) - , karma_modify()(tag::lazy_eval(), modifiers)) - .what(context) - ); - } - - Function func; - Modifiers modifiers; - }; - - /////////////////////////////////////////////////////////////////////////// - template - struct lazy_directive - : unary_generator > - { - typedef mpl::int_ properties; - - typedef Subject subject_type; - - template - struct attribute - { - typedef typename - boost::result_of::type - modifier; - - typedef typename - remove_reference< - typename boost::result_of::type - >::type - directive_expr_type; - - typedef typename - proto::result_of::make_expr< - proto::tag::subscript - , directive_expr_type - , Subject - >::type - expr_type; - - // If you got an error_invalid_expression error message here, - // then the expression (expr_type) is not a valid spirit karma - // expression. - BOOST_SPIRIT_ASSERT_MATCH(karma::domain, expr_type); - - typedef typename - result_of::compile::type - generator_type; - - typedef typename - traits::attribute_of::type - type; - }; - - lazy_directive(Function const& function, Subject const& subject - , Modifiers const& modifiers) - : function(function), subject(subject), modifiers(modifiers) {} - - template - bool generate(OutputIterator& sink, Context& ctx, Delimiter const& d - , Attribute const& attr) const - { - return detail::lazy_generate_impl_main(compile( - proto::make_expr( - function(unused, ctx), subject) - , karma_modify()(tag::lazy_eval(), modifiers)) - , sink, ctx, d, attr); - } - - template - info what(Context& ctx) const - { - return info("lazy-directive" - , compile( - proto::make_expr( - function(unused, ctx), subject) - , karma_modify()(tag::lazy_eval(), modifiers)) - .what(ctx) - ); - } - - Function function; - Subject subject; - Modifiers modifiers; - }; - - /////////////////////////////////////////////////////////////////////////// - // Generator generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_primitive, Modifiers> - { - typedef lazy_generator, Modifiers> result_type; - result_type operator()(phoenix::actor const& f - , Modifiers const& modifiers) const - { - return result_type(f, modifiers); - } - }; - - template - struct make_primitive, Modifiers> - { - typedef lazy_generator result_type; - result_type operator()( - lazy_terminal const& lt - , Modifiers const& modifiers) const - { - return result_type(lt.actor, modifiers); - } - }; - - template < - typename Terminal, typename Actor, int Arity, typename Subject - , typename Modifiers> - struct make_directive - , Subject, Modifiers> - { - typedef lazy_directive result_type; - result_type operator()( - lazy_terminal const& lt - , Subject const& subject, Modifiers const& modifiers) const - { - return result_type(lt.actor, subject, modifiers); - } - }; - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/binary.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/binary.hpp deleted file mode 100644 index 50b8e70fec03..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/binary.hpp +++ /dev/null @@ -1,16 +0,0 @@ -// 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_BINARY_MAY_04_2007_0859AM) -#define BOOST_SPIRIT_KARMA_BINARY_MAY_04_2007_0859AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/binary/binary.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/binary/binary.hpp deleted file mode 100644 index 02418f31b1d6..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/binary/binary.hpp +++ /dev/null @@ -1,420 +0,0 @@ -// 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_BINARY_MAY_04_2007_0904AM) -#define BOOST_SPIRIT_KARMA_BINARY_MAY_04_2007_0904AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -#define BOOST_SPIRIT_ENABLE_BINARY(name) \ - template <> \ - struct use_terminal \ - : mpl::true_ {}; \ - \ - template \ - struct use_terminal > > \ - : mpl::or_, is_enum > {}; \ - \ - template <> \ - struct use_lazy_terminal : mpl::true_ {}; \ - \ -/***/ - -#define BOOST_SPIRIT_ENABLE_BINARY_IEEE754(name) \ - template<> \ - struct use_terminal: mpl::true_ {}; \ - \ - template \ - struct use_terminal > >: is_floating_point {}; \ - \ - template<> \ - struct use_lazy_terminal : mpl::true_ {}; \ - \ -/***/ - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - - BOOST_SPIRIT_ENABLE_BINARY(byte_) // enables byte_ - BOOST_SPIRIT_ENABLE_BINARY(word) // enables word - BOOST_SPIRIT_ENABLE_BINARY(big_word) // enables big_word - BOOST_SPIRIT_ENABLE_BINARY(little_word) // enables little_word - BOOST_SPIRIT_ENABLE_BINARY(dword) // enables dword - BOOST_SPIRIT_ENABLE_BINARY(big_dword) // enables big_dword - BOOST_SPIRIT_ENABLE_BINARY(little_dword) // enables little_dword -#ifdef BOOST_HAS_LONG_LONG - BOOST_SPIRIT_ENABLE_BINARY(qword) // enables qword - BOOST_SPIRIT_ENABLE_BINARY(big_qword) // enables big_qword - BOOST_SPIRIT_ENABLE_BINARY(little_qword) // enables little_qword -#endif - BOOST_SPIRIT_ENABLE_BINARY_IEEE754(bin_float) - BOOST_SPIRIT_ENABLE_BINARY_IEEE754(big_bin_float) - BOOST_SPIRIT_ENABLE_BINARY_IEEE754(little_bin_float) - BOOST_SPIRIT_ENABLE_BINARY_IEEE754(bin_double) - BOOST_SPIRIT_ENABLE_BINARY_IEEE754(big_bin_double) - BOOST_SPIRIT_ENABLE_BINARY_IEEE754(little_bin_double) -}} - -#undef BOOST_SPIRIT_ENABLE_BINARY -#undef BOOST_SPIRIT_ENABLE_BINARY_IEEE754 - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace karma -{ -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using boost::spirit::byte_; - using boost::spirit::word; - using boost::spirit::big_word; - using boost::spirit::little_word; - using boost::spirit::dword; - using boost::spirit::big_dword; - using boost::spirit::little_dword; -#ifdef BOOST_HAS_LONG_LONG - using boost::spirit::qword; - using boost::spirit::big_qword; - using boost::spirit::little_qword; -#endif - using boost::spirit::bin_float; - using boost::spirit::big_bin_float; - using boost::spirit::little_bin_float; - using boost::spirit::bin_double; - using boost::spirit::big_bin_double; - using boost::spirit::little_bin_double; -#endif - - using boost::spirit::byte_type; - using boost::spirit::word_type; - using boost::spirit::big_word_type; - using boost::spirit::little_word_type; - using boost::spirit::dword_type; - using boost::spirit::big_dword_type; - using boost::spirit::little_dword_type; -#ifdef BOOST_HAS_LONG_LONG - using boost::spirit::qword_type; - using boost::spirit::big_qword_type; - using boost::spirit::little_qword_type; -#endif - using boost::spirit::bin_float_type; - using boost::spirit::big_bin_float_type; - using boost::spirit::little_bin_float_type; - using boost::spirit::bin_double_type; - using boost::spirit::big_bin_double_type; - using boost::spirit::little_bin_double_type; - - namespace detail - { - template - struct integer - { -#ifdef BOOST_HAS_LONG_LONG - BOOST_SPIRIT_ASSERT_MSG( - bits == 8 || bits == 16 || bits == 32 || bits == 64, - not_supported_binary_size, ()); -#else - BOOST_SPIRIT_ASSERT_MSG( - bits == 8 || bits == 16 || bits == 32, - not_supported_binary_size, ()); -#endif - }; - - template <> - struct integer<8> - { - typedef uint_least8_t type; - }; - - template <> - struct integer<16> - { - typedef uint_least16_t type; - }; - - template <> - struct integer<32> - { - typedef uint_least32_t type; - }; - -#ifdef BOOST_HAS_LONG_LONG - template <> - struct integer<64> - { - typedef uint_least64_t type; - }; -#endif - - template - struct floating_point - { - BOOST_SPIRIT_ASSERT_MSG( - bits == 32 || bits == 64, - not_supported_binary_size, ()); - }; - - template <> - struct floating_point<32> - { - typedef float type; - }; - - template <> - struct floating_point<64> - { - typedef double type; - }; - - /////////////////////////////////////////////////////////////////////// - template - struct what; - - template <> - struct what - { - static info is() - { - return info("little-endian binary"); - } - }; - - template <> - struct what - { - static info is() - { - return info("big-endian binary"); - } - }; - } - - /////////////////////////////////////////////////////////////////////////// - template - struct any_binary_generator - : primitive_generator > - { - template - struct attribute: T {}; - - template < - typename OutputIterator, typename Context, typename Delimiter - , typename Attribute> - static bool generate(OutputIterator& sink, Context& context - , Delimiter const& d, Attribute const& attr) - { - if (!traits::has_optional_value(attr)) - return false; - - boost::endian::endian_arithmetic p; - -#if defined(BOOST_MSVC) -// warning C4244: 'argument' : conversion from 'const int' to 'foo', possible loss of data -#pragma warning(push) -#pragma warning(disable: 4244) -#endif - typedef typename T::type attribute_type; - p = traits::extract_from(attr, context); -#if defined(BOOST_MSVC) -#pragma warning(pop) -#endif - - unsigned char const* bytes = p.data(); - - for (unsigned int i = 0; i < sizeof(p); ++i) - { - if (!detail::generate_to(sink, *bytes++)) - return false; - } - return karma::delimit_out(sink, d); // always do post-delimiting - } - - // this any_byte_director has no parameter attached, it needs to have - // been initialized from a direct literal - template < - typename OutputIterator, typename Context, typename Delimiter> - static bool generate(OutputIterator&, Context&, Delimiter const& - , unused_type) - { - // It is not possible (doesn't make sense) to use binary generators - // without providing any attribute, as the generator doesn't 'know' - // what to output. The following assertion fires if this situation - // is detected in your code. - BOOST_SPIRIT_ASSERT_FAIL(OutputIterator, - binary_generator_not_usable_without_attribute, ()); - return false; - } - - template - static info what(Context const& /*context*/) - { - return karma::detail::what::is(); - } - }; - - /////////////////////////////////////////////////////////////////////////// - template - struct literal_binary_generator - : primitive_generator > - { - template - struct attribute - { - typedef unused_type type; - }; - - template - literal_binary_generator(V const& v) - { -#if defined(BOOST_MSVC) -// warning C4244: 'argument' : conversion from 'const int' to 'foo', possible loss of data -#pragma warning(push) -#pragma warning(disable: 4244) -#endif - data_ = v; -#if defined(BOOST_MSVC) -#pragma warning(pop) -#endif - } - - template < - typename OutputIterator, typename Context, typename Delimiter - , typename Attribute> - bool generate(OutputIterator& sink, Context&, Delimiter const& d - , Attribute const&) const - { - unsigned char const* bytes = data_.data(); - - for (unsigned int i = 0; i < sizeof(data_type); ++i) - { - if (!detail::generate_to(sink, *bytes++)) - return false; - } - return karma::delimit_out(sink, d); // always do post-delimiting - } - - template - static info what(Context const& /*context*/) - { - return karma::detail::what::is(); - } - - typedef boost::endian::endian_arithmetic data_type; - - data_type data_; - }; - - /////////////////////////////////////////////////////////////////////////// - // Generator generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - namespace detail - { - template - struct basic_binary - { - typedef any_binary_generator result_type; - - result_type operator()(unused_type, unused_type) const - { - return result_type(); - } - }; - - template - struct basic_binary_literal - { - typedef literal_binary_generator result_type; - - template - result_type operator()(Terminal const& term, unused_type) const - { - return result_type(fusion::at_c<0>(term.args)); - } - }; - } - -#define BOOST_SPIRIT_MAKE_BINARY_PRIMITIVE(name, endiantype, bits) \ - template \ - struct make_primitive \ - : detail::basic_binary, \ - boost::endian::order::endiantype, bits> {}; \ - \ - template \ - struct make_primitive > \ - , Modifiers> \ - : detail::basic_binary_literal \ - , boost::endian::order::endiantype, bits> {}; \ - \ - /***/ - - BOOST_SPIRIT_MAKE_BINARY_PRIMITIVE(byte_, native, 8) - BOOST_SPIRIT_MAKE_BINARY_PRIMITIVE(word, native, 16) - BOOST_SPIRIT_MAKE_BINARY_PRIMITIVE(big_word, big, 16) - BOOST_SPIRIT_MAKE_BINARY_PRIMITIVE(little_word, little, 16) - BOOST_SPIRIT_MAKE_BINARY_PRIMITIVE(dword, native, 32) - BOOST_SPIRIT_MAKE_BINARY_PRIMITIVE(big_dword, big, 32) - BOOST_SPIRIT_MAKE_BINARY_PRIMITIVE(little_dword, little, 32) -#ifdef BOOST_HAS_LONG_LONG - BOOST_SPIRIT_MAKE_BINARY_PRIMITIVE(qword, native, 64) - BOOST_SPIRIT_MAKE_BINARY_PRIMITIVE(big_qword, big, 64) - BOOST_SPIRIT_MAKE_BINARY_PRIMITIVE(little_qword, little, 64) -#endif - -#undef BOOST_SPIRIT_MAKE_BINARY_PRIMITIVE - -#define BOOST_SPIRIT_MAKE_BINARY_IEEE754_PRIMITIVE(name, endiantype, bits) \ - template \ - struct make_primitive \ - : detail::basic_binary, \ - boost::endian::order::endiantype, bits> {}; \ - \ - template \ - struct make_primitive > \ - , Modifiers> \ - : detail::basic_binary_literal \ - , boost::endian::order::endiantype, bits> {}; \ - \ - /***/ - - BOOST_SPIRIT_MAKE_BINARY_IEEE754_PRIMITIVE(bin_float, native, 32) - BOOST_SPIRIT_MAKE_BINARY_IEEE754_PRIMITIVE(big_bin_float, big, 32) - BOOST_SPIRIT_MAKE_BINARY_IEEE754_PRIMITIVE(little_bin_float, little, 32) - BOOST_SPIRIT_MAKE_BINARY_IEEE754_PRIMITIVE(bin_double, native, 64) - BOOST_SPIRIT_MAKE_BINARY_IEEE754_PRIMITIVE(big_bin_double, big, 64) - BOOST_SPIRIT_MAKE_BINARY_IEEE754_PRIMITIVE(little_bin_double, little, 64) - -#undef BOOST_SPIRIT_MAKE_BINARY_IEEE754_PRIMITIVE - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/binary/padding.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/binary/padding.hpp deleted file mode 100644 index c5b375cbad5f..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/binary/padding.hpp +++ /dev/null @@ -1,115 +0,0 @@ -// 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_PADDING_MAY_06_2008_0436PM) -#define BOOST_SPIRIT_KARMA_PADDING_MAY_06_2008_0436PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - - // enables pad(...) - template - struct use_terminal > > - : mpl::true_ {}; - - // enables lazy pad(...) - template <> - struct use_lazy_terminal - : mpl::true_ {}; - -}} - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace karma -{ -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using boost::spirit::pad; -#endif - using boost::spirit::pad_type; - - struct binary_padding_generator - : primitive_generator - { - typedef mpl::int_ properties; - - template - struct attribute - { - typedef unused_type type; - }; - - binary_padding_generator(int numpadbytes) - : numpadbytes_(numpadbytes) - {} - - template < - typename OutputIterator, typename Context, typename Delimiter - , typename Attribute> - bool generate(OutputIterator& sink, Context&, Delimiter const& d - , Attribute const& /*attr*/) const - { - std::size_t count = sink.get_out_count() % numpadbytes_; - if (count) - count = numpadbytes_ - count; - - bool result = true; - while (result && count-- != 0) - result = detail::generate_to(sink, '\0'); - - if (result) - result = karma::delimit_out(sink, d); // always do post-delimiting - return result; - } - - template - static info what(Context const&) - { - return info("pad"); - } - - int numpadbytes_; - }; - - /////////////////////////////////////////////////////////////////////////// - // Generator generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_primitive< - terminal_ex > - , Modifiers> - { - typedef binary_padding_generator result_type; - - template - result_type operator()(Terminal const& term, unused_type) const - { - return result_type(fusion::at_c<0>(term.args)); - } - }; - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/char.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/char.hpp deleted file mode 100644 index dd82b7f3197b..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/char.hpp +++ /dev/null @@ -1,16 +0,0 @@ -// 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_CHAR_FEB_21_2007_0547PM) -#define BOOST_SPIRIT_KARMA_CHAR_FEB_21_2007_0547PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/char/char.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/char/char.hpp deleted file mode 100644 index 7992aebbadae..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/char/char.hpp +++ /dev/null @@ -1,547 +0,0 @@ -// Copyright (c) 2001-2011 Hartmut Kaiser -// Copyright (c) 2010 Bryce Lelbach -// -// 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_CHAR_FEB_21_2007_0543PM) -#define BOOST_SPIRIT_KARMA_CHAR_FEB_21_2007_0543PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template - struct use_terminal // enables char_ - > : mpl::true_ {}; - - template - struct use_terminal // enables char_('x'), char_("x") - , fusion::vector1 - > - > : mpl::true_ {}; - - template - struct use_terminal > // enables lit('x') - , typename enable_if >::type> - : mpl::true_ {}; - - template - struct use_terminal // enables char_('a','z') - , fusion::vector2 - > - > : mpl::true_ {}; - - template // enables *lazy* char_('x'), char_("x") - struct use_lazy_terminal< - karma::domain - , tag::char_code - , 1 // arity - > : mpl::true_ {}; - - template <> - struct use_terminal // enables 'x' - : mpl::true_ {}; - - template <> - struct use_terminal // enables "x" - : mpl::true_ {}; - - template <> - struct use_terminal // enables L'x' - : mpl::true_ {}; - - template <> - struct use_terminal // enables L"x" - : mpl::true_ {}; -}} - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace karma -{ -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using spirit::lit; // lit('x') is equivalent to 'x' -#endif - using spirit::lit_type; - - /////////////////////////////////////////////////////////////////////////// - // - // any_char - // generates a single character from the associated attribute - // - // Note: this generator has to have an associated attribute - // - /////////////////////////////////////////////////////////////////////////// - template - struct any_char - : char_generator, CharEncoding, Tag> - { - typedef typename CharEncoding::char_type char_type; - typedef CharEncoding char_encoding; - - template - struct attribute - { - typedef char_type type; - }; - - // any_char has an attached parameter - template - bool test(Attribute const& attr, CharParam& ch, Context&) const - { - ch = CharParam(attr); - return true; - } - - // any_char has no attribute attached, it needs to have been - // initialized from a direct literal - template - bool test(unused_type, CharParam&, Context&) const - { - // It is not possible (doesn't make sense) to use char_ without - // providing any attribute, as the generator doesn't 'know' what - // character to output. The following assertion fires if this - // situation is detected in your code. - BOOST_SPIRIT_ASSERT_FAIL(CharParam, char_not_usable_without_attribute, ()); - return false; - } - - template - static info what(Context const& /*context*/) - { - return info("any-char"); - } - }; - - /////////////////////////////////////////////////////////////////////////// - // - // literal_char - // generates a single character given by a literal it was initialized - // from - // - /////////////////////////////////////////////////////////////////////////// - template - struct literal_char - : char_generator - , CharEncoding, Tag> - { - typedef typename CharEncoding::char_type char_type; - typedef CharEncoding char_encoding; - - literal_char(char_type ch) - : ch (spirit::char_class::convert::to(Tag(), ch)) - {} - - template - struct attribute - : mpl::if_c - {}; - - // A char_('x') which additionally has an associated attribute emits - // its immediate literal only if it matches the attribute, otherwise - // it fails. - // any_char has an attached parameter - template - bool test(Attribute const& attr, CharParam& ch_, Context&) const - { - // fail if attribute isn't matched my immediate literal - ch_ = static_cast(attr); - return attr == ch; - } - - // A char_('x') without any associated attribute just emits its - // immediate literal - template - bool test(unused_type, CharParam& ch_, Context&) const - { - ch_ = ch; - return true; - } - - template - info what(Context const& /*context*/) const - { - return info("literal-char", char_encoding::toucs4(ch)); - } - - char_type ch; - }; - - /////////////////////////////////////////////////////////////////////////// - // char range generator - template - struct char_range - : char_generator, CharEncoding, Tag> - { - typedef typename CharEncoding::char_type char_type; - typedef CharEncoding char_encoding; - - char_range(char_type from, char_type to) - : from(spirit::char_class::convert::to(Tag(), from)) - , to(spirit::char_class::convert::to(Tag(), to)) - {} - - // A char_('a', 'z') which has an associated attribute emits it only if - // it matches the character range, otherwise it fails. - template - bool test(Attribute const& attr, CharParam& ch, Context&) const - { - // fail if attribute doesn't belong to character range - ch = attr; - return (from <= char_type(attr)) && (char_type(attr) <= to); - } - - // A char_('a', 'z') without any associated attribute fails compiling - template - bool test(unused_type, CharParam&, Context&) const - { - // It is not possible (doesn't make sense) to use char_ generators - // without providing any attribute, as the generator doesn't 'know' - // what to output. The following assertion fires if this situation - // is detected in your code. - BOOST_SPIRIT_ASSERT_FAIL(CharParam - , char_range_not_usable_without_attribute, ()); - return false; - } - - template - info what(Context& /*context*/) const - { - info result("char-range", char_encoding::toucs4(from)); - boost::get(result.value) += '-'; - boost::get(result.value) += to_utf8(char_encoding::toucs4(to)); - return result; - } - - char_type from, to; - }; - - /////////////////////////////////////////////////////////////////////////// - // character set generator - template - struct char_set - : char_generator - , CharEncoding, Tag> - { - typedef typename CharEncoding::char_type char_type; - typedef CharEncoding char_encoding; - - template - struct attribute - : mpl::if_c - {}; - - template - char_set(String const& str) - { - typedef typename traits::char_type_of::type in_type; - - BOOST_SPIRIT_ASSERT_MSG(( - (sizeof(char_type) == sizeof(in_type)) - ), cannot_convert_string, (String)); - - typedef spirit::char_class::convert convert_type; - - char_type const* definition = - (char_type const*)traits::get_c_string(str); - char_type ch = convert_type::to(Tag(), *definition++); - while (ch) - { - char_type next = convert_type::to(Tag(), *definition++); - if (next == '-') - { - next = convert_type::to(Tag(), *definition++); - if (next == 0) - { - chset.set(ch); - chset.set('-'); - break; - } - chset.set(ch, next); - } - else - { - chset.set(ch); - } - ch = next; - } - } - - // A char_("a-z") which has an associated attribute emits it only if - // it matches the character set, otherwise it fails. - template - bool test(Attribute const& attr, CharParam& ch, Context&) const - { - // fail if attribute doesn't belong to character set - ch = attr; - return chset.test(char_type(attr)); - } - - // A char_("a-z") without any associated attribute fails compiling - template - bool test(unused_type, CharParam&, Context&) const - { - // It is not possible (doesn't make sense) to use char_ generators - // without providing any attribute, as the generator doesn't 'know' - // what to output. The following assertion fires if this situation - // is detected in your code. - BOOST_SPIRIT_ASSERT_FAIL(CharParam - , char_set_not_usable_without_attribute, ()); - return false; - } - - template - info what(Context& /*context*/) const - { - return info("char-set"); - } - - support::detail::basic_chset chset; - }; - - /////////////////////////////////////////////////////////////////////////// - // Generator generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - namespace detail - { - template - struct basic_literal - { - static bool const lower = - has_modifier >::value; - static bool const upper = - has_modifier >::value; - - typedef literal_char< - typename spirit::detail::get_encoding_with_case< - Modifiers, Encoding, lower || upper>::type - , typename get_casetag::type - , true> - result_type; - - template - result_type operator()(Char ch, unused_type) const - { - return result_type(ch); - } - - template - result_type operator()(Char const* str, unused_type) const - { - return result_type(str[0]); - } - }; - } - - // literals: 'x', "x" - template - struct make_primitive - : detail::basic_literal {}; - - template - struct make_primitive - : detail::basic_literal {}; - - // literals: L'x', L"x" - template - struct make_primitive - : detail::basic_literal {}; - - template - struct make_primitive - : detail::basic_literal {}; - - // char_ - template - struct make_primitive, Modifiers> - { - static bool const lower = - has_modifier >::value; - static bool const upper = - has_modifier >::value; - - typedef any_char< - typename spirit::detail::get_encoding_with_case< - Modifiers, CharEncoding, lower || upper>::type - , typename detail::get_casetag::type - > result_type; - - result_type operator()(unused_type, unused_type) const - { - return result_type(); - } - }; - - /////////////////////////////////////////////////////////////////////////// - namespace detail - { - template - struct make_char_direct - { - static bool const lower = - has_modifier >::value; - static bool const upper = - has_modifier >::value; - - typedef typename spirit::detail::get_encoding_with_case< - Modifiers, CharEncoding, lower || upper>::type encoding; - typedef typename detail::get_casetag< - Modifiers, lower || upper>::type tag; - - typedef typename mpl::if_< - traits::is_string - , char_set - , literal_char - >::type result_type; - - template - result_type operator()(Terminal const& term, unused_type) const - { - return result_type(fusion::at_c<0>(term.args)); - } - }; - } - - // char_(...), lit(...) - template - struct make_primitive< - terminal_ex< - tag::char_code - , fusion::vector1 > - , Modifiers> - : detail::make_char_direct - {}; - - template - struct make_primitive< - terminal_ex > - , Modifiers - , typename enable_if >::type> - : detail::make_char_direct< - typename traits::char_encoding_from_char< - typename traits::char_type_of::type>::type - , Modifiers, A0, true> - {}; - - /////////////////////////////////////////////////////////////////////////// - // char_("x") - template - struct make_primitive< - terminal_ex< - tag::char_code - , fusion::vector1 > // For single char strings - , Modifiers> - { - static bool const lower = - has_modifier >::value; - static bool const upper = - has_modifier >::value; - - typedef literal_char< - typename spirit::detail::get_encoding_with_case< - Modifiers, CharEncoding, lower || upper>::type - , typename detail::get_casetag::type - , false - > result_type; - - template - result_type operator()(Terminal const& term, unused_type) const - { - return result_type(fusion::at_c<0>(term.args)[0]); - } - }; - - /////////////////////////////////////////////////////////////////////////// - // char_('a', 'z') - template - struct make_primitive< - terminal_ex< - tag::char_code - , fusion::vector2 - > - , Modifiers> - { - static bool const lower = - has_modifier >::value; - static bool const upper = - has_modifier >::value; - - typedef char_range< - typename spirit::detail::get_encoding_with_case< - Modifiers, CharEncoding, lower || upper>::type - , typename detail::get_casetag::type - > result_type; - - template - result_type operator()(Terminal const& term, unused_type) const - { - return result_type(fusion::at_c<0>(term.args) - , fusion::at_c<1>(term.args)); - } - }; - - template - struct make_primitive< - terminal_ex< - tag::char_code - , fusion::vector2 // For single char strings - > - , Modifiers> - { - static bool const lower = - has_modifier >::value; - static bool const upper = - has_modifier >::value; - - typedef char_range< - typename spirit::detail::get_encoding_with_case< - Modifiers, CharEncoding, lower || upper>::type - , typename detail::get_casetag::type - > result_type; - - template - result_type operator()(Terminal const& term, unused_type) const - { - return result_type(fusion::at_c<0>(term.args)[0] - , fusion::at_c<1>(term.args)[0]); - } - }; -}}} // namespace boost::spirit::karma - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/char/char_class.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/char/char_class.hpp deleted file mode 100644 index 30858b1691e6..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/char/char_class.hpp +++ /dev/null @@ -1,226 +0,0 @@ -// 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_CHAR_CLASS_AUG_10_2009_0720AM) -#define BOOST_SPIRIT_KARMA_CHAR_CLASS_AUG_10_2009_0720AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - // enables alnum, alpha, graph, etc. - template - struct use_terminal > - : mpl::true_ {}; - -}} - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace karma -{ - // hoist the char classification namespaces into karma sub-namespaces of - // the same name - namespace ascii { using namespace boost::spirit::ascii; } - namespace iso8859_1 { using namespace boost::spirit::iso8859_1; } - namespace standard { using namespace boost::spirit::standard; } - namespace standard_wide { using namespace boost::spirit::standard_wide; } -#if defined(BOOST_SPIRIT_UNICODE) - namespace unicode { using namespace boost::spirit::unicode; } -#endif - - // Import the standard namespace into the karma namespace. This allows - // for default handling of all character/string related operations if not - // prefixed with a character set namespace. - using namespace boost::spirit::standard; - - // Import encoding - using spirit::encoding; - - /////////////////////////////////////////////////////////////////////////// - // - // char_class - // generates a single character if it matches the given character - // class - // - /////////////////////////////////////////////////////////////////////////// - template - struct char_class - : char_generator< - char_class - , CharEncoding, CharClass> - { - typedef typename Tag::char_encoding char_encoding; - typedef typename char_encoding::char_type char_type; - typedef typename Tag::char_class classification; - - template - struct attribute - { - typedef char_type type; - }; - - // char_class needs an attached attribute - template - bool test(Attribute const& attr, CharParam& ch, Context&) const - { - ch = attr; - - using spirit::char_class::classify; - return classify::is(classification(), attr); - } - - // char_class shouldn't be used without any associated attribute - template - bool test(unused_type, CharParam&, Context&) const - { - // It is not possible (doesn't make sense) to use char_ generators - // without providing any attribute, as the generator doesn't 'know' - // what to output. The following assertion fires if this situation - // is detected in your code. - BOOST_SPIRIT_ASSERT_FAIL(CharParam - , char_class_not_usable_without_attribute, ()); - return false; - } - - template - static info what(Context const& /*context*/) - { - typedef spirit::char_class::what what_; - return info(what_::is(classification())); - } - }; - - /////////////////////////////////////////////////////////////////////////// - // - // space - // generates a single character from the associated parameter - // - /////////////////////////////////////////////////////////////////////////// - template - struct any_space - : char_generator, CharEncoding, tag::space> - { - typedef typename CharEncoding::char_type char_type; - typedef CharEncoding char_encoding; - - template - struct attribute - { - typedef char_type type; - }; - - // any_space has an attached parameter - template - bool test(Attribute const& attr, CharParam& ch, Context&) const - { - ch = CharParam(attr); - - using spirit::char_class::classify; - return classify::is(tag::space(), attr); - } - - // any_space has no attribute attached, use single space character - template - bool test(unused_type, CharParam& ch, Context&) const - { - ch = ' '; - return true; - } - - template - static info what(Context const& /*context*/) - { - return info("space"); - } - }; - - /////////////////////////////////////////////////////////////////////////// - // Generator generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - - namespace detail - { - template - struct make_char_class : mpl::identity {}; - - template <> - struct make_char_class - : mpl::identity {}; - - template <> - struct make_char_class - : mpl::identity {}; - - template <> - struct make_char_class - : mpl::identity {}; - - template <> - struct make_char_class - : mpl::identity {}; - } - - // enables alnum, alpha, graph, etc. - template - struct make_primitive, Modifiers> - { - static bool const lower = - has_modifier >::value; - static bool const upper = - has_modifier >::value; - - typedef tag::char_code< - typename detail::make_char_class::type - , CharEncoding> - tag_type; - - typedef char_class< - tag_type - , typename spirit::detail::get_encoding_with_case< - Modifiers, CharEncoding, lower || upper>::type - , typename detail::get_casetag::type - > result_type; - - result_type operator()(unused_type, unused_type) const - { - return result_type(); - } - }; - - // space is special - template - struct make_primitive, Modifiers> - { - typedef any_space result_type; - - result_type operator()(unused_type, unused_type) const - { - return result_type(); - } - }; - -}}} // namespace boost::spirit::karma - -#endif // !defined(BOOST_SPIRIT_KARMA_CHAR_FEB_21_2007_0543PM) diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/char/char_generator.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/char/char_generator.hpp deleted file mode 100644 index 6254fee0893e..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/char/char_generator.hpp +++ /dev/null @@ -1,170 +0,0 @@ -// Copyright (c) 2001-2011 Hartmut Kaiser -// Copyright (c) 2001-2011 Joel de Guzman -// -// 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_CHAR_GENERATOR_SEP_07_2009_0417PM) -#define BOOST_SPIRIT_CHAR_GENERATOR_SEP_07_2009_0417PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_operator // enables ~ - : mpl::true_ {}; - -}} - -namespace boost { namespace spirit { namespace traits // classification -{ - namespace detail - { - BOOST_MPL_HAS_XXX_TRAIT_DEF(char_generator_id) - } - - template - struct is_char_generator : detail::has_char_generator_id {}; -}}} - -namespace boost { namespace spirit { namespace karma -{ - /////////////////////////////////////////////////////////////////////////// - // The base char_parser - /////////////////////////////////////////////////////////////////////////// - template - struct char_generator : primitive_generator - { - typedef CharEncoding char_encoding; - typedef Tag tag; - typedef Char char_type; - struct char_generator_id; - - // if Attr is unused_type, Derived must supply its own attribute - // metafunction - template - struct attribute - { - typedef Attr type; - }; - - template < - typename OutputIterator, typename Context, typename Delimiter - , typename Attribute> - bool generate(OutputIterator& sink, Context& context, Delimiter const& d - , Attribute const& attr) const - { - if (!traits::has_optional_value(attr)) - return false; - - Attr ch = Attr(); - if (!this->derived().test(traits::extract_from(attr, context), ch, context)) - return false; - - return karma::detail::generate_to(sink, ch, char_encoding(), tag()) && - karma::delimit_out(sink, d); // always do post-delimiting - } - - // Requirement: g.test(attr, ch, context) -> bool - // - // attr: associated attribute - // ch: character to be generated (set by test()) - // context: enclosing rule context - }; - - /////////////////////////////////////////////////////////////////////////// - // negated_char_generator handles ~cg expressions (cg is a char_generator) - /////////////////////////////////////////////////////////////////////////// - template - struct negated_char_generator - : char_generator - , typename Positive::char_encoding, typename Positive::tag> - { - negated_char_generator(Positive const& positive) - : positive(positive) {} - - template - bool test(Attribute const& attr, CharParam& ch, Context& context) const - { - return !positive.test(attr, ch, context); - } - - template - info what(Context& context) const - { - return info("not", positive.what(context)); - } - - Positive positive; - }; - - /////////////////////////////////////////////////////////////////////////// - // Generator generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - namespace detail - { - template - struct make_negated_char_generator - { - typedef negated_char_generator result_type; - result_type operator()(Positive const& positive) const - { - return result_type(positive); - } - }; - - template - struct make_negated_char_generator > - { - typedef Positive result_type; - result_type operator()(negated_char_generator const& ncg) const - { - return ncg.positive; - } - }; - } - - template - struct make_composite - { - typedef typename - fusion::result_of::value_at_c::type - subject; - - BOOST_SPIRIT_ASSERT_MSG(( - traits::is_char_generator::value - ), subject_is_not_negatable, (subject)); - - typedef typename - detail::make_negated_char_generator::result_type - result_type; - - result_type operator()(Elements const& elements, unused_type) const - { - return detail::make_negated_char_generator()( - fusion::at_c<0>(elements)); - } - }; - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/delimit_flag.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/delimit_flag.hpp deleted file mode 100644 index ccaf688bc550..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/delimit_flag.hpp +++ /dev/null @@ -1,27 +0,0 @@ -// 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_DELIMIT_FLAG_DEC_02_2009_1201PM) -#define BOOST_SPIRIT_KARMA_DELIMIT_FLAG_DEC_02_2009_1201PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include - -namespace boost { namespace spirit { namespace karma -{ - /////////////////////////////////////////////////////////////////////////// - BOOST_SCOPED_ENUM_START(delimit_flag) - { - predelimit, // force predelimiting in generate_delimited() - dont_predelimit // inhibit predelimiting in generate_delimited() - }; - BOOST_SCOPED_ENUM_END -}}} - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/delimit_out.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/delimit_out.hpp deleted file mode 100644 index e72e219456c0..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/delimit_out.hpp +++ /dev/null @@ -1,45 +0,0 @@ -// 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_DELIMIT_FEB_20_2007_1208PM) -#define BOOST_SPIRIT_KARMA_DELIMIT_FEB_20_2007_1208PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include - -namespace boost { namespace spirit { namespace karma -{ - /////////////////////////////////////////////////////////////////////////// - // Do delimiting. This is equivalent to p << d. The function is a - // no-op if spirit::unused is passed as the delimiter-generator. - /////////////////////////////////////////////////////////////////////////// - template - inline bool delimit_out(OutputIterator& sink, Delimiter const& d) - { - return d.generate(sink, unused, unused, unused); - } - - template - inline bool delimit_out(OutputIterator&, unused_type) - { - return true; - } - - /////////////////////////////////////////////////////////////////////////// - template - inline bool delimit_out(OutputIterator& - , detail::unused_delimiter const&) - { - return true; - } - -}}} - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/detail/alternative_function.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/detail/alternative_function.hpp deleted file mode 100644 index 31c70ae794f6..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/detail/alternative_function.hpp +++ /dev/null @@ -1,249 +0,0 @@ -// Copyright (c) 2001-2011 Hartmut Kaiser -// Copyright (c) 2001-2011 Joel de Guzman -// -// 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) - -#ifndef BOOST_SPIRIT_KARMA_DETAIL_ALTERNATIVE_FUNCTION_HPP -#define BOOST_SPIRIT_KARMA_DETAIL_ALTERNATIVE_FUNCTION_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace karma { namespace detail -{ - /////////////////////////////////////////////////////////////////////////// - // execute a generator if the given Attribute type is compatible - /////////////////////////////////////////////////////////////////////////// - - // this gets instantiated if the Attribute type is _not_ compatible with - // the generator - template - struct alternative_generate - { - template - static bool - call(Component const&, OutputIterator&, Context&, Delimiter const& - , Attribute const&, bool& failed) - { - failed = true; - return false; - } - }; - - template - struct alternative_generate - { - template - static bool - call(Component const& component, OutputIterator& sink, Context& ctx - , Delimiter const& d, unused_type, bool&) - { -#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1600)) - (void)component; // suppresses warning: C4100: 'component' : unreferenced formal parameter -#endif - // return true if any of the generators succeed - return component.generate(sink, ctx, d, unused); - } - }; - - // this gets instantiated if there is no Attribute given for the - // alternative generator - template - struct alternative_generate - : alternative_generate {}; - - // this gets instantiated if the generator does not expect to receive an - // Attribute (the generator is self contained). - template - struct alternative_generate - : alternative_generate {}; - - // this gets instantiated if the Attribute type is compatible to the - // generator - template - struct alternative_generate >::type> - { - template - static bool - call(Component const& component, OutputIterator& sink - , Context& ctx, Delimiter const& d, Attribute const& attr, bool&) - { -#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1600)) - (void)component; // suppresses warning: C4100: 'component' : unreferenced formal parameter -#endif - return call(component, sink, ctx, d, attr - , spirit::traits::not_is_variant_or_variant_in_optional()); - } - - template - static bool - call(Component const& component, OutputIterator& sink - , Context& ctx, Delimiter const& d, Attribute const& attr, mpl::true_) - { -#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1600)) - (void)component; // suppresses warning: C4100: 'component' : unreferenced formal parameter -#endif - return component.generate(sink, ctx, d, attr); - } - - template - static bool - call(Component const& component, OutputIterator& sink - , Context& ctx, Delimiter const& d, Attribute const& attr, mpl::false_) - { -#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1600)) - (void)component; // suppresses warning: C4100: 'component' : unreferenced formal parameter -#endif - typedef - traits::compute_compatible_component - component_type; - - // if we got passed an empty optional, just fail generation - if (!traits::has_optional_value(attr)) - return false; - - // make sure, the content of the passed variant matches our - // expectations - typename traits::optional_attribute::type attr_ = - traits::optional_value(attr); - if (!component_type::is_compatible(spirit::traits::which(attr_))) - return false; - - // returns true if any of the generators succeed - typedef typename component_type::compatible_type compatible_type; - return component.generate(sink, ctx, d - , boost::get(attr_)); - } - }; - - /////////////////////////////////////////////////////////////////////////// - // alternative_generate_function: a functor supplied to fusion::any which - // will be executed for every generator in a given alternative generator - // expression - /////////////////////////////////////////////////////////////////////////// -#ifdef _MSC_VER -# pragma warning(push) -# pragma warning(disable: 4512) // assignment operator could not be generated. -#endif - template - struct alternative_generate_function - { - alternative_generate_function(OutputIterator& sink_, Context& ctx_ - , Delimiter const& d, Attribute const& attr_) - : sink(sink_), ctx(ctx_), delim(d), attr(attr_) {} - - template - bool operator()(Component const& component) - { - typedef - typename traits::attribute_of::type - expected_type; - typedef - alternative_generate - generate; - - // wrap the given output iterator avoid output as long as one - // component fails - detail::enable_buffering buffering(sink); - bool r = false; - bool failed = false; // will be ignored - { - detail::disable_counting nocounting(sink); - r = generate::call(component, sink, ctx, delim, attr, failed); - } - if (r) - buffering.buffer_copy(); - return r; - } - - // avoid double buffering - template - bool operator()(buffer_directive const& component) - { - typedef typename - traits::attribute_of::type - expected_type; - typedef alternative_generate< - buffer_directive, Attribute, expected_type> - generate; - - bool failed = false; // will be ignored - return generate::call(component, sink, ctx, delim, attr, failed); - } - - OutputIterator& sink; - Context& ctx; - Delimiter const& delim; - Attribute const& attr; - }; - - // specialization for strict alternatives - template - struct alternative_generate_function< - OutputIterator, Context, Delimiter, Attribute, mpl::true_> - { - alternative_generate_function(OutputIterator& sink_, Context& ctx_ - , Delimiter const& d, Attribute const& attr_) - : sink(sink_), ctx(ctx_), delim(d), attr(attr_), failed(false) {} - - template - bool operator()(Component const& component) - { - typedef - typename traits::attribute_of::type - expected_type; - typedef - alternative_generate - generate; - - if (failed) - return false; // give up when already failed - - // wrap the given output iterator avoid output as long as one - // component fails - detail::enable_buffering buffering(sink); - bool r = false; - { - detail::disable_counting nocounting(sink); - r = generate::call(component, sink, ctx, delim, attr, failed); - } - if (r && !failed) - { - buffering.buffer_copy(); - return true; - } - return false; - } - - OutputIterator& sink; - Context& ctx; - Delimiter const& delim; - Attribute const& attr; - bool failed; - }; -#ifdef _MSC_VER -# pragma warning(pop) -#endif -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/detail/as.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/detail/as.hpp deleted file mode 100644 index e9dbd8e78b77..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/detail/as.hpp +++ /dev/null @@ -1,74 +0,0 @@ -// 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_AS_STRING_DEC_18_0644PM) -#define BOOST_SPIRIT_KARMA_AS_STRING_DEC_18_0644PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - // This file contains the attribute to string conversion utility. The - // utility provided also accept spirit's unused_type; all no-ops. Compiler - // optimization will easily strip these away. - /////////////////////////////////////////////////////////////////////////// - - /////////////////////////////////////////////////////////////////////////// - template - inline typename spirit::result_of::attribute_as::type - as(Attribute const& attr) - { - return attribute_as::call(attr); - } - - template - inline unused_type as(unused_type) - { - return unused; - } - - /////////////////////////////////////////////////////////////////////////// - template - inline bool valid_as(Attribute const& attr) - { - return attribute_as::is_valid(attr); - } - - template - inline bool valid_as(unused_type) - { - return true; - } -}}} - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace result_of -{ - template - struct attribute_as - : traits::attribute_as - {}; - - template - struct attribute_as - { - typedef unused_type type; - }; - - template - struct attribute_as - { - typedef unused_type type; - }; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/detail/attributes.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/detail/attributes.hpp deleted file mode 100644 index c3630ede2b9a..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/detail/attributes.hpp +++ /dev/null @@ -1,80 +0,0 @@ -// Copyright (c) 2001-2011 Hartmut Kaiser -// Copyright (c) 2001-2011 Joel de Guzman -// -// 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) - -#ifndef BOOST_SPIRIT_KARMA_DETAIL_ATTRIBUTES_HPP -#define BOOST_SPIRIT_KARMA_DETAIL_ATTRIBUTES_HPP - -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace karma -{ - template - struct transform_attribute - { - typedef Transformed type; - static Transformed pre(Exposed& val) - { - return Transformed(traits::extract_from(val, unused)); - } - // Karma only, no post() and no fail() required - }; - - template - struct transform_attribute const, Transformed - , typename disable_if, Transformed> >::type> - { - typedef Transformed const& type; - static Transformed const& pre(boost::optional const& val) - { - return boost::get(val); - } - }; - - template - struct transform_attribute - { - typedef Attribute const& type; - static Attribute const& pre(Attribute const& val) { return val; } - // Karma only, no post() and no fail() required - }; - - // unused_type needs some special handling as well - template <> - struct transform_attribute - { - typedef unused_type type; - static unused_type pre(unused_type) { return unused; } - }; - - template <> - struct transform_attribute - : transform_attribute - {}; - - template - struct transform_attribute - : transform_attribute - {}; - - template - struct transform_attribute - : transform_attribute - {}; -}}} - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace traits { namespace detail -{ - template - struct transform_attribute_base - : karma::transform_attribute - {}; -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/detail/default_width.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/detail/default_width.hpp deleted file mode 100644 index 52f5583d6fd4..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/detail/default_width.hpp +++ /dev/null @@ -1,75 +0,0 @@ -// 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_DEFAULT_WIDTH_APR_07_2009_0912PM) -#define BOOST_SPIRIT_KARMA_DEFAULT_WIDTH_APR_07_2009_0912PM - -#if defined(_MSC_VER) -#pragma once -#endif - -/////////////////////////////////////////////////////////////////////////////// -// -// The BOOST_KARMA_DEFAULT_FIELD_LENGTH specifies the default field length -// to be used for padding. -// -/////////////////////////////////////////////////////////////////////////////// -#if !defined(BOOST_KARMA_DEFAULT_FIELD_LENGTH) -#define BOOST_KARMA_DEFAULT_FIELD_LENGTH 10 -#endif - -/////////////////////////////////////////////////////////////////////////////// -// -// The BOOST_KARMA_DEFAULT_FIELD_MAXWIDTH specifies the default maximal field -// length to be used for the maxwidth directive. -// -/////////////////////////////////////////////////////////////////////////////// -#if !defined(BOOST_KARMA_DEFAULT_FIELD_MAXWIDTH) -#define BOOST_KARMA_DEFAULT_FIELD_MAXWIDTH 10 -#endif - -/////////////////////////////////////////////////////////////////////////////// -// -// The BOOST_KARMA_DEFAULT_COLUMNS specifies the default number of columns to -// be used with the columns directive. -// -/////////////////////////////////////////////////////////////////////////////// -#if !defined(BOOST_KARMA_DEFAULT_COLUMNS) -#define BOOST_KARMA_DEFAULT_COLUMNS 5 -#endif - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace karma { namespace detail -{ - /////////////////////////////////////////////////////////////////////////// - struct default_width - { - operator int() const - { - return BOOST_KARMA_DEFAULT_FIELD_LENGTH; - } - }; - - /////////////////////////////////////////////////////////////////////////// - struct default_max_width - { - operator int() const - { - return BOOST_KARMA_DEFAULT_FIELD_MAXWIDTH; - } - }; - - /////////////////////////////////////////////////////////////////////////// - struct default_columns - { - operator int() const - { - return BOOST_KARMA_DEFAULT_COLUMNS; - } - }; - -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/detail/enable_lit.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/detail/enable_lit.hpp deleted file mode 100644 index 2153582dce33..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/detail/enable_lit.hpp +++ /dev/null @@ -1,30 +0,0 @@ -// 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_DETAIL_ENABLE_LIT_JAN_06_2011_1009PM) -#define BOOST_SPIRIT_KARMA_DETAIL_ENABLE_LIT_JAN_06_2011_1009PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - // enables lazy lit(...) for karma - template <> - struct use_lazy_terminal - : mpl::true_ {}; -}} - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/detail/extract_from.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/detail/extract_from.hpp deleted file mode 100644 index f0ec22d9392f..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/detail/extract_from.hpp +++ /dev/null @@ -1,278 +0,0 @@ -// 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_EXTRACT_FROM_SEP_30_2009_0732AM) -#define BOOST_SPIRIT_KARMA_EXTRACT_FROM_SEP_30_2009_0732AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include - -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - // This file contains attribute extraction utilities. The utilities - // provided also accept spirit's unused_type; all no-ops. Compiler - // optimization will easily strip these away. - /////////////////////////////////////////////////////////////////////////// - - namespace detail - { - /////////////////////////////////////////////////////////////////////// - // extract first and second element of a fusion sequence - template - struct add_const_ref - : add_reference::type> - {}; - - template - struct value_at_c - : add_const_ref::type> - {}; - } - - // This is the default case: the plain attribute values - template ::value> - struct extract_from_attribute_base - { - typedef Attribute const& type; - - template - static type call(Attribute const& attr, Context&) - { - return attr; - } - }; - - // This handles the case where the attribute is a single element fusion - // sequence. We silently extract the only element and treat it as the - // attribute to generate output from. - template - struct extract_from_attribute_base - { - typedef typename remove_const< - typename remove_reference< - typename fusion::result_of::at_c::type - >::type - >::type elem_type; - - typedef typename result_of::extract_from::type type; - - template - static type call(Attribute const& attr, Context& ctx) - { - return extract_from(fusion::at_c<0>(attr), ctx); - } - }; - - template - struct extract_from_attribute - : extract_from_attribute_base - {}; - - // This handles optional attributes. - template - struct extract_from_attribute, Exposed> - { - typedef Attribute const& type; - - template - static type call(boost::optional const& attr, Context& ctx) - { - return extract_from(boost::get(attr), ctx); - } - }; - - template - struct extract_from_attribute, Exposed> - { - typedef Attribute const& type; - - template - static type call(boost::optional const& attr, Context& ctx) - { - return extract_from(boost::get(attr), ctx); - } - }; - - // This handles attributes wrapped inside a boost::ref(). - template - struct extract_from_attribute, Exposed> - { - typedef Attribute const& type; - - template - static type call(reference_wrapper const& attr, Context& ctx) - { - return extract_from(attr.get(), ctx); - } - }; - - /////////////////////////////////////////////////////////////////////////// - template - struct extract_from_container - { - typedef typename traits::container_value::type - value_type; - typedef typename is_convertible::type - is_convertible_to_value_type; - - typedef typename mpl::if_< - mpl::or_< - is_same, is_same > - , Exposed const&, Exposed - >::type type; - - // handle case where container value type is convertible to result type - // we simply return the front element of the container - template - static type call(Attribute const& attr, Context&, mpl::true_, Pred) - { - // return first element from container - typedef typename traits::container_iterator::type - iterator_type; - - iterator_type it = traits::begin(attr); - type result = *it; - ++it; - return result; - } - - // handle strings - template - static void append_to_string(Exposed& result, Iterator begin, Iterator end) - { - for (Iterator i = begin; i != end; ++i) - push_back(result, *i); - } - - template - static type call(Attribute const& attr, Context&, mpl::false_, mpl::true_) - { - typedef typename char_type_of::type char_type; - - Exposed result; - append_to_string(result, traits::get_begin(attr) - , traits::get_end(attr)); - return result; - } - - // everything else gets just passed through - template - static type call(Attribute const& attr, Context&, mpl::false_, mpl::false_) - { - return type(attr); - } - - template - static type call(Attribute const& attr, Context& ctx) - { - typedef typename mpl::and_< - traits::is_string, traits::is_string - >::type handle_strings; - - // return first element from container - return call(attr, ctx, is_convertible_to_value_type() - , handle_strings()); - } - }; - - template - struct extract_from_container - { - typedef Attribute const& type; - - template - static type call(Attribute const& attr, Context&) - { - return attr; - } - }; - - /////////////////////////////////////////////////////////////////////////// - namespace detail - { - // overload for non-container attributes - template - inline typename spirit::result_of::extract_from::type - extract_from(Attribute const& attr, Context& ctx, mpl::false_) - { - return extract_from_attribute::call(attr, ctx); - } - - // overload for containers (but not for variants or optionals - // holding containers) - template - inline typename spirit::result_of::extract_from::type - extract_from(Attribute const& attr, Context& ctx, mpl::true_) - { - return extract_from_container::call(attr, ctx); - } - } - - template - inline typename spirit::result_of::extract_from::type - extract_from(Attribute const& attr, Context& ctx -#if (defined(__GNUC__) && (__GNUC__ < 4)) || \ - (defined(__APPLE__) && defined(__INTEL_COMPILER)) - , typename enable_if >::type* -#endif - ) - { - typedef typename mpl::and_< - traits::is_container - , traits::not_is_variant - , traits::not_is_optional - >::type is_not_wrapped_container; - - return detail::extract_from(attr, ctx - , is_not_wrapped_container()); - } - - template - inline unused_type extract_from(unused_type, Context&) - { - return unused; - } -}}} - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace result_of -{ - template - struct extract_from - : mpl::if_< - mpl::and_< - traits::is_container - , traits::not_is_variant - , traits::not_is_optional > - , traits::extract_from_container - , traits::extract_from_attribute >::type - {}; - - template - struct extract_from - { - typedef unused_type type; - }; - - template - struct extract_from - { - typedef unused_type type; - }; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/detail/fail_function.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/detail/fail_function.hpp deleted file mode 100644 index 3bdab8c662d3..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/detail/fail_function.hpp +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright (c) 2001-2011 Hartmut Kaiser -// Copyright (c) 2001-2011 Joel de Guzman -// -// 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) - -#ifndef BOOST_SPIRIT_KARMA_DETAIL_FAIL_FUNCTION_HPP -#define BOOST_SPIRIT_KARMA_DETAIL_FAIL_FUNCTION_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include - -namespace boost { namespace spirit { namespace karma { namespace detail -{ -#ifdef _MSC_VER -# pragma warning(push) -# pragma warning(disable: 4512) // assignment operator could not be generated. -#endif - template - struct fail_function - { - typedef Context context_type; - - fail_function(OutputIterator& sink_, Context& context_ - , Delimiter const& delim_) - : sink(sink_), ctx(context_), delim(delim_) - {} - - template - bool operator()(Component const& component, Attribute const& attr) const - { -#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1600)) - (void)component; // suppresses warning: C4100: 'component' : unreferenced formal parameter -#endif - // return true if any of the generators fail - return !component.generate(sink, ctx, delim, attr); - } - - template - bool operator()(Component const& component) const - { -#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1600)) - (void)component; // suppresses warning: C4100: 'component' : unreferenced formal parameter -#endif - // return true if any of the generators fail - return !component.generate(sink, ctx, delim, unused); - } - - OutputIterator& sink; - Context& ctx; - Delimiter const& delim; - }; -#ifdef _MSC_VER -# pragma warning(pop) -#endif - -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/detail/generate.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/detail/generate.hpp deleted file mode 100644 index 7c8b9f4d7b0d..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/detail/generate.hpp +++ /dev/null @@ -1,131 +0,0 @@ -// 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_DETAIL_GENERATE_FEB_20_2007_0959AM) -#define BOOST_SPIRIT_KARMA_DETAIL_GENERATE_FEB_20_2007_0959AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace karma { namespace detail -{ - /////////////////////////////////////////////////////////////////////////// - template - struct generate_impl - { - // Report invalid expression error as early as possible. - // If you got an error_invalid_expression error message here, - // then the expression (Expr) is not a valid spirit karma expression. - // Did you intend to use the auto_ facilities while forgetting to - // #include ? - BOOST_SPIRIT_ASSERT_MATCH(karma::domain, Expr); - }; - - template - struct generate_impl >::type> - { - template - static bool call( - OutputIterator& target_sink - , Expr const& expr) - { - typedef traits::properties_of< - typename result_of::compile::type - > properties; - - // wrap user supplied iterator into our own output iterator - output_iterator > sink(target_sink); - return compile(expr). - generate(sink, unused, unused, unused); - } - - template - static bool call( - detail::output_iterator& sink - , Expr const& expr) - { - return compile(expr). - generate(sink, unused, unused, unused); - } - }; - - /////////////////////////////////////////////////////////////////////////// - template - struct generate_delimited_impl - { - // Report invalid expression error as early as possible. - // If you got an error_invalid_expression error message here, - // then the expression (Expr) is not a valid spirit karma expression. - // Did you intend to use the auto_ facilities while forgetting to - // #include ? - BOOST_SPIRIT_ASSERT_MATCH(karma::domain, Expr); - }; - - template - struct generate_delimited_impl >::type> - { - template - static bool call( - OutputIterator& target_sink - , Expr const& expr - , Delimiter const& delimiter - , BOOST_SCOPED_ENUM(delimit_flag) pre_delimit) - { - typedef traits::properties_of< - typename result_of::compile::type - > properties; - typedef traits::properties_of< - typename result_of::compile::type - > delimiter_properties; - - // wrap user supplied iterator into our own output iterator - detail::output_iterator - > sink(target_sink); - return call(sink, expr, delimiter, pre_delimit); - } - - template - static bool call( - detail::output_iterator& sink - , Expr const& expr - , Delimiter const& delimiter - , BOOST_SCOPED_ENUM(delimit_flag) pre_delimit) - { - // Report invalid expression error as early as possible. - // If you got an error_invalid_expression error message here, - // then the delimiter is not a valid spirit karma expression. - BOOST_SPIRIT_ASSERT_MATCH(karma::domain, Delimiter); - - typename result_of::compile::type const - delimiter_ = compile(delimiter); - - if (pre_delimit == delimit_flag::predelimit && - !karma::delimit_out(sink, delimiter_)) - { - return false; - } - return compile(expr). - generate(sink, unused, delimiter_, unused); - } - }; - -}}}} - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/detail/generate_auto.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/detail/generate_auto.hpp deleted file mode 100644 index c11803f7d746..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/detail/generate_auto.hpp +++ /dev/null @@ -1,63 +0,0 @@ -// 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_DETAIL_GENERATE_AUTO_DEC_01_2009_0743PM) -#define BOOST_SPIRIT_KARMA_DETAIL_GENERATE_AUTO_DEC_01_2009_0743PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace karma { namespace detail -{ - /////////////////////////////////////////////////////////////////////////// - template - struct generate_impl - , mpl::not_ > > - >::type> - { - template - static bool call( - OutputIterator& sink - , Expr const& expr) - { - return karma::generate(sink, create_generator(), expr); - } - }; - - /////////////////////////////////////////////////////////////////////////// - template - struct generate_delimited_impl - , mpl::not_ > > - >::type> - { - template - static bool call( - OutputIterator& sink - , Expr const& expr - , Delimiter const& delimiter - , BOOST_SCOPED_ENUM(delimit_flag) pre_delimit) - { - return karma::generate_delimited( - sink, create_generator(), delimiter, pre_delimit, expr); - } - }; - -}}}} - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/detail/generate_to.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/detail/generate_to.hpp deleted file mode 100644 index 05c715713b97..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/detail/generate_to.hpp +++ /dev/null @@ -1,67 +0,0 @@ -// 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_DETAIL_GENERATE_TO_FEB_20_2007_0417PM) -#define BOOST_SPIRIT_KARMA_DETAIL_GENERATE_TO_FEB_20_2007_0417PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include - -namespace boost { namespace spirit { namespace karma { namespace detail -{ - /////////////////////////////////////////////////////////////////////////// - // These utility functions insert the given parameter into the supplied - // output iterator. - // If the attribute is spirit's unused_type, this is a no_op. - /////////////////////////////////////////////////////////////////////////// - template < - typename OutputIterator, typename Attribute, typename CharEncoding - , typename Tag> - inline bool - generate_to(OutputIterator& sink, Attribute const& p, CharEncoding, Tag) - { - *sink = spirit::char_class::convert::to(Tag(), p); - ++sink; - return detail::sink_is_good(sink); - } - - template - inline bool - generate_to(OutputIterator& sink, Attribute const& p, unused_type, unused_type) - { - *sink = p; - ++sink; - return detail::sink_is_good(sink); - } - - template - inline bool generate_to(OutputIterator&, unused_type, CharEncoding, Tag) - { - return true; - } - - template - inline bool - generate_to(OutputIterator& sink, Attribute const& p) - { - *sink = p; - ++sink; - return detail::sink_is_good(sink); - } - - template - inline bool generate_to(OutputIterator&, unused_type) - { - return true; - } - -}}}} // namespace boost::spirit::karma::detail - -#endif // KARMA_CORE_DETAIL_INSERT_TO_HPP diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/detail/get_casetag.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/detail/get_casetag.hpp deleted file mode 100644 index 1d5a464fa4c4..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/detail/get_casetag.hpp +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) 2001-2011 Hartmut Kaiser -// Copyright (c) 2001-2011 Joel de Guzman -// -// 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_GET_CASETAG_JANUARY_19_2009_1107AM) -#define BOOST_SPIRIT_KARMA_GET_CASETAG_JANUARY_19_2009_1107AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include - -namespace boost { namespace spirit { namespace karma { namespace detail -{ - template - struct get_casetag : mpl::identity {}; - - template - struct get_casetag - : mpl::if_ > - , tag::lower, tag::upper> {}; -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/detail/get_stricttag.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/detail/get_stricttag.hpp deleted file mode 100644 index 5f03c210a6ad..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/detail/get_stricttag.hpp +++ /dev/null @@ -1,33 +0,0 @@ -// 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_GET_STRICTTAG_APR_22_2010_1007AM) -#define BOOST_SPIRIT_KARMA_GET_STRICTTAG_APR_22_2010_1007AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include - -namespace boost { namespace spirit { namespace karma { namespace detail -{ - // the default mode for Karma is 'relaxed' - template < - typename Modifiers - , typename StrictModifier = typename mpl::or_< - has_modifier - , has_modifier >::type> - struct get_stricttag : mpl::false_ {}; - - // strict mode is enforced only when tag::strict is on the modifiers list - template - struct get_stricttag - : has_modifier {}; -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/detail/indirect_iterator.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/detail/indirect_iterator.hpp deleted file mode 100644 index 7721540ff89e..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/detail/indirect_iterator.hpp +++ /dev/null @@ -1,99 +0,0 @@ -// 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) - -#ifndef BOOST_SPIRIT_KARMA_DETAIL_INDIRECT_ITERATOR_HPP -#define BOOST_SPIRIT_KARMA_DETAIL_INDIRECT_ITERATOR_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include // for std::iterator_traits - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace karma { namespace detail -{ - /////////////////////////////////////////////////////////////////////// - // This is a wrapper for any iterator allowing to pass a reference of it - // to the components of the sequence - template - class indirect_iterator - : public boost::iterator_facade< - indirect_iterator - , typename std::iterator_traits::value_type - , boost::forward_traversal_tag - , typename std::iterator_traits::reference> - { - typedef typename std::iterator_traits::value_type - base_value_type; - typedef typename std::iterator_traits::reference - base_reference_type; - - typedef boost::iterator_facade< - indirect_iterator, base_value_type - , boost::forward_traversal_tag, base_reference_type - > base_type; - - public: - indirect_iterator(Iterator& iter) - : iter_(&iter) - {} - indirect_iterator(indirect_iterator const& iter) - : iter_(iter.iter_) - {} - - private: - friend class boost::iterator_core_access; - - void increment() - { - ++*iter_; - } - - bool equal(indirect_iterator const& other) const - { - return *iter_ == *other.iter_; - } - - base_reference_type dereference() const - { - return **iter_; - } - - private: - Iterator* iter_; - }; -}}}} - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace traits -{ - template - struct make_indirect_iterator - { - typedef karma::detail::indirect_iterator type; - }; - - template - struct make_indirect_iterator > - { - typedef karma::detail::indirect_iterator type; - }; - - template <> - struct make_indirect_iterator - { - typedef unused_type const* type; - }; - - template - struct make_indirect_iterator - : make_indirect_iterator - {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/detail/output_iterator.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/detail/output_iterator.hpp deleted file mode 100644 index 137e345dd8aa..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/detail/output_iterator.hpp +++ /dev/null @@ -1,650 +0,0 @@ -// 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_OUTPUT_ITERATOR_MAY_26_2007_0506PM) -#define BOOST_SPIRIT_KARMA_OUTPUT_ITERATOR_MAY_26_2007_0506PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include - -#include -#include -#include - -#include -#include -#include - -#if defined(BOOST_MSVC) && defined(BOOST_SPIRIT_UNICODE) -#include -#endif - -namespace boost { namespace spirit { namespace karma { namespace detail -{ - /////////////////////////////////////////////////////////////////////////// - // This class is used to keep track of the current position in the output. - /////////////////////////////////////////////////////////////////////////// - class position_sink - { - public: - position_sink() : count(0), line(1), column(1) {} - void tidy() { count = 0; line = 1; column = 1; } - - template - void output(T const& value) - { - ++count; - if (value == '\n') { - ++line; - column = 1; - } - else { - ++column; - } - } - std::size_t get_count() const { return count; } - std::size_t get_line() const { return line; } - std::size_t get_column() const { return column; } - - private: - std::size_t count; - std::size_t line; - std::size_t column; - }; - - /////////////////////////////////////////////////////////////////////////// - struct position_policy - { - position_policy() {} - position_policy(position_policy const& rhs) - : track_position_data(rhs.track_position_data) {} - - template - void output(T const& value) - { - // track position in the output - track_position_data.output(value); - } - - // return the current count in the output - std::size_t get_out_count() const - { - return track_position_data.get_count(); - } - - // return the current line in the output - std::size_t get_line() const - { - return track_position_data.get_line(); - } - - // return the current column in the output - std::size_t get_column() const - { - return track_position_data.get_column(); - } - - private: - position_sink track_position_data; // for position tracking - }; - - struct no_position_policy - { - no_position_policy() {} - no_position_policy(no_position_policy const&) {} - - template - void output(T const& /*value*/) {} - }; - - /////////////////////////////////////////////////////////////////////////// - // This class is used to count the number of characters streamed into the - // output. - /////////////////////////////////////////////////////////////////////////// - template - class counting_sink : boost::noncopyable - { - public: - counting_sink(OutputIterator& sink_, std::size_t count_ = 0 - , bool enabled = true) - : count(count_), initial_count(count), prev_count(0), sink(sink_) - { - prev_count = sink.chain_counting(enabled ? this : NULL); - } - ~counting_sink() - { - if (prev_count) // propagate count - prev_count->update_count(count-initial_count); - sink.chain_counting(prev_count); - } - - void output() - { - ++count; - } - std::size_t get_count() const { return count; } - - // propagate count from embedded counters - void update_count(std::size_t c) - { - count += c; - } - - private: - std::size_t count; - std::size_t initial_count; - counting_sink* prev_count; // previous counter in chain - OutputIterator& sink; - }; - - /////////////////////////////////////////////////////////////////////////// - template - struct counting_policy - { - public: - counting_policy() : count(NULL) {} - counting_policy(counting_policy const& rhs) : count(rhs.count) {} - - // functions related to counting - counting_sink* chain_counting( - counting_sink* count_data) - { - counting_sink* prev_count = count; - count = count_data; - return prev_count; - } - - template - void output(T const&) - { - // count characters, if appropriate - if (NULL != count) - count->output(); - } - - private: - counting_sink* count; // for counting - }; - - struct no_counting_policy - { - no_counting_policy() {} - no_counting_policy(no_counting_policy const&) {} - - template - void output(T const& /*value*/) {} - }; - - /////////////////////////////////////////////////////////////////////////// - // The following classes are used to intercept the output into a buffer - // allowing to do things like alignment, character escaping etc. - /////////////////////////////////////////////////////////////////////////// - class buffer_sink : boost::noncopyable - { - // wchar_t is only 16-bits on Windows. If BOOST_SPIRIT_UNICODE is - // defined, the character type is 32-bits wide so we need to make - // sure the buffer is at least that wide. -#if (defined(_MSC_VER) || defined(__SIZEOF_WCHAR_T__) && __SIZEOF_WCHAR_T__ == 2) && defined(BOOST_SPIRIT_UNICODE) - typedef spirit::char_encoding::unicode::char_type buffer_char_type; -#else - typedef wchar_t buffer_char_type; -#endif - - public: - buffer_sink() - : width(0) {} - - ~buffer_sink() - { - tidy(); - } - - void enable(std::size_t width_) - { - tidy(); // release existing buffer - width = (width_ == std::size_t(-1)) ? 0 : width_; - buffer.reserve(width); - } - - void tidy() - { - buffer.clear(); - width = 0; - } - - template - void output(T const& value) - { - BOOST_STATIC_ASSERT(sizeof(T) <= sizeof(buffer_char_type)); - buffer.push_back(value); - } - - template - bool copy(OutputIterator_& sink, std::size_t maxwidth) const - { -#if defined(BOOST_MSVC) -#pragma warning(push) -#pragma warning(disable: 4267) -#endif - typename std::basic_string::const_iterator end = - buffer.begin() + (std::min)(buffer.size(), maxwidth); - -#if defined(BOOST_MSVC) -#pragma warning(disable: 4244) // conversion from 'x' to 'y', possible loss of data -#endif - std::copy(buffer.begin(), end, sink); -#if defined(BOOST_MSVC) -#pragma warning(pop) -#endif - return true; - } - template - bool copy_rest(RestIterator& sink, std::size_t start_at) const - { -#if defined(BOOST_MSVC) -#pragma warning(push) -#pragma warning(disable: 4267) -#endif - typename std::basic_string::const_iterator begin = - buffer.begin() + (std::min)(buffer.size(), start_at); - -#if defined(BOOST_MSVC) -#pragma warning(disable: 4244) // conversion from 'x' to 'y', possible loss of data -#endif - std::copy(begin, buffer.end(), sink); -#if defined(BOOST_MSVC) -#pragma warning(pop) -#endif - return true; - } - - std::size_t buffer_size() const - { - return buffer.size(); - } - - private: - std::size_t width; - std::basic_string buffer; - }; - - /////////////////////////////////////////////////////////////////////////// - struct buffering_policy - { - public: - buffering_policy() : buffer(NULL) {} - buffering_policy(buffering_policy const& rhs) : buffer(rhs.buffer) {} - - // functions related to buffering - buffer_sink* chain_buffering(buffer_sink* buffer_data) - { - buffer_sink* prev_buffer = buffer; - buffer = buffer_data; - return prev_buffer; - } - - template - bool output(T const& value) - { - // buffer characters, if appropriate - if (NULL != buffer) { - buffer->output(value); - return false; - } - return true; - } - - bool has_buffer() const { return NULL != buffer; } - - private: - buffer_sink* buffer; - }; - - struct no_buffering_policy - { - no_buffering_policy() {} - no_buffering_policy(no_buffering_policy const&) {} - - template - bool output(T const& /*value*/) - { - return true; - } - - bool has_buffer() const { return false; } - }; - - /////////////////////////////////////////////////////////////////////////// - // forward declaration only - template - struct enable_buffering; - - template - class output_iterator; - - /////////////////////////////////////////////////////////////////////////// - template - struct output_iterator_base : Buffering, Counting, Tracking - { - typedef Buffering buffering_policy; - typedef Counting counting_policy; - typedef Tracking tracking_policy; - - output_iterator_base() {} - output_iterator_base(output_iterator_base const& rhs) - : buffering_policy(rhs), counting_policy(rhs), tracking_policy(rhs) - {} - - template - bool output(T const& value) - { - this->counting_policy::output(value); - this->tracking_policy::output(value); - return this->buffering_policy::output(value); - } - }; - - template - struct disabling_output_iterator : Buffering, Counting, Tracking - { - typedef Buffering buffering_policy; - typedef Counting counting_policy; - typedef Tracking tracking_policy; - - disabling_output_iterator() : do_output(true) {} - disabling_output_iterator(disabling_output_iterator const& rhs) - : buffering_policy(rhs), counting_policy(rhs), tracking_policy(rhs) - , do_output(rhs.do_output) - {} - - template - bool output(T const& value) - { - if (!do_output) - return false; - - this->counting_policy::output(value); - this->tracking_policy::output(value); - return this->buffering_policy::output(value); - } - - bool do_output; - }; - - /////////////////////////////////////////////////////////////////////////// - template - struct make_output_iterator - { - // get the most derived type of this class - typedef typename mpl::if_< - traits::not_is_unused, Derived - , output_iterator - >::type most_derived_type; - - static const generator_properties::enum_type properties = static_cast(Properties::value); - - typedef typename mpl::if_c< - (properties & generator_properties::tracking) ? true : false - , position_policy, no_position_policy - >::type tracking_type; - - typedef typename mpl::if_c< - (properties & generator_properties::buffering) ? true : false - , buffering_policy, no_buffering_policy - >::type buffering_type; - - typedef typename mpl::if_c< - (properties & generator_properties::counting) ? true : false - , counting_policy, no_counting_policy - >::type counting_type; - - typedef typename mpl::if_c< - (properties & generator_properties::disabling) ? true : false - , disabling_output_iterator - , output_iterator_base - >::type type; - }; - - /////////////////////////////////////////////////////////////////////////// - // Karma uses an output iterator wrapper for all output operations. This - // is necessary to avoid the dreaded 'scanner business' problem, i.e. the - // dependency of rules and grammars on the used output iterator. - // - // By default the user supplied output iterator is wrapped inside an - // instance of this internal output_iterator class. - // - // This output_iterator class normally just forwards to the embedded user - // supplied iterator. But it is possible to enable additional functionality - // on demand, such as counting, buffering, and position tracking. - /////////////////////////////////////////////////////////////////////////// - template - class output_iterator - : public make_output_iterator::type - { - private: - // base iterator type - typedef typename make_output_iterator< - OutputIterator, Properties, Derived>::type base_iterator; - - public: - typedef std::output_iterator_tag iterator_category; - typedef void value_type; - typedef void difference_type; - typedef void pointer; - typedef void reference; - - explicit output_iterator(OutputIterator& sink_) - : sink(&sink_) - {} - output_iterator(output_iterator const& rhs) - : base_iterator(rhs), sink(rhs.sink) - {} - - output_iterator& operator*() { return *this; } - output_iterator& operator++() - { - if (!this->base_iterator::has_buffer()) - ++(*sink); // increment only if not buffering - return *this; - } - output_iterator operator++(int) - { - if (!this->base_iterator::has_buffer()) { - output_iterator t(*this); - ++(*sink); - return t; - } - return *this; - } - -#if defined(BOOST_MSVC) -// 'argument' : conversion from '...' to '...', possible loss of data -#pragma warning (push) -#pragma warning (disable: 4244) -#endif - template - void operator=(T const& value) - { - if (this->base_iterator::output(value)) - *(*sink) = value; - } -#if defined(BOOST_MSVC) -#pragma warning (pop) -#endif - - // plain output iterators are considered to be good all the time - bool good() const { return true; } - - // allow to access underlying output iterator - OutputIterator& base() { return *sink; } - - protected: - // this is the wrapped user supplied output iterator - OutputIterator* sink; - }; - - /////////////////////////////////////////////////////////////////////////// - template - class output_iterator, Properties> - : public output_iterator, Properties - , output_iterator, Properties> > - { - private: - typedef output_iterator, Properties - , output_iterator, Properties> - > base_type; - typedef karma::ostream_iterator base_iterator_type; - typedef std::basic_ostream ostream_type; - - public: - output_iterator(base_iterator_type& sink) - : base_type(sink) {} - - ostream_type& get_ostream() { return (*this->sink).get_ostream(); } - ostream_type const& get_ostream() const { return (*this->sink).get_ostream(); } - - // expose good bit of underlying stream object - bool good() const { return (*this->sink).get_ostream().good(); } - }; - - /////////////////////////////////////////////////////////////////////////// - // Helper class for exception safe enabling of character counting in the - // output iterator - /////////////////////////////////////////////////////////////////////////// - template - struct enable_counting - { - enable_counting(OutputIterator& sink_, std::size_t count = 0) - : count_data(sink_, count) {} - - // get number of characters counted since last enable - std::size_t count() const - { - return count_data.get_count(); - } - - private: - counting_sink count_data; // for counting - }; - - template - struct disable_counting - { - disable_counting(OutputIterator& sink_) - : count_data(sink_, 0, false) {} - - private: - counting_sink count_data; - }; - - /////////////////////////////////////////////////////////////////////////// - // Helper class for exception safe enabling of character buffering in the - // output iterator - /////////////////////////////////////////////////////////////////////////// - template - struct enable_buffering - { - enable_buffering(OutputIterator& sink_ - , std::size_t width = std::size_t(-1)) - : sink(sink_), prev_buffer(NULL), enabled(false) - { - buffer_data.enable(width); - prev_buffer = sink.chain_buffering(&buffer_data); - enabled = true; - } - ~enable_buffering() - { - disable(); - } - - // reset buffer chain to initial state - void disable() - { - if (enabled) { - BOOST_VERIFY(&buffer_data == sink.chain_buffering(prev_buffer)); - enabled = false; - } - } - - // copy to the underlying sink whatever is in the local buffer - bool buffer_copy(std::size_t maxwidth = std::size_t(-1) - , bool disable_ = true) - { - if (disable_) - disable(); - return buffer_data.copy(sink, maxwidth) && sink.good(); - } - - // return number of characters stored in the buffer - std::size_t buffer_size() const - { - return buffer_data.buffer_size(); - } - - // copy to the remaining characters to the specified sink - template - bool buffer_copy_rest(RestIterator& sink, std::size_t start_at = 0) const - { - return buffer_data.copy_rest(sink, start_at); - } - - // copy the contents to the given output iterator - template - bool buffer_copy_to(OutputIterator_& sink - , std::size_t maxwidth = std::size_t(-1)) const - { - return buffer_data.copy(sink, maxwidth); - } - - private: - OutputIterator& sink; - buffer_sink buffer_data; // for buffering - buffer_sink* prev_buffer; // previous buffer in chain - bool enabled; - }; - - /////////////////////////////////////////////////////////////////////////// - // Helper class for exception safe disabling of output - /////////////////////////////////////////////////////////////////////////// - template - struct disable_output - { - disable_output(OutputIterator& sink_) - : sink(sink_), prev_do_output(sink.do_output) - { - sink.do_output = false; - } - ~disable_output() - { - sink.do_output = prev_do_output; - } - - OutputIterator& sink; - bool prev_do_output; - }; - - /////////////////////////////////////////////////////////////////////////// - template - bool sink_is_good(Sink const&) - { - return true; // the general case is always good - } - - template - bool sink_is_good(output_iterator const& sink) - { - return sink.good(); // our own output iterators are handled separately - } - -}}}} - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/detail/pass_container.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/detail/pass_container.hpp deleted file mode 100644 index ae99911b1ab4..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/detail/pass_container.hpp +++ /dev/null @@ -1,393 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Hartmut Kaiser - Copyright (c) 2001-2011 Joel de Guzman - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_KARMA_DETAIL_PASS_CONTAINER_HPP -#define BOOST_SPIRIT_KARMA_DETAIL_PASS_CONTAINER_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace karma { namespace detail -{ - // Helper meta-function allowing to evaluate weak substitutability and - // negate the result if the predicate (Sequence) is not true - template - struct negate_weak_substitute_if_not - : mpl::if_< - Sequence - , typename traits::is_weak_substitute::type - , typename mpl::not_< - traits::is_weak_substitute - >::type> - {}; - - // pass_through_container: utility to check decide whether a provided - // container attribute needs to be passed through to the current component - // or of we need to split the container by passing along instances of its - // value type - - // if the expected attribute of the current component is neither a Fusion - // sequence nor a container, we will pass through the provided container - // only if its value type is not compatible with the component - template - struct pass_through_container_base - : negate_weak_substitute_if_not - {}; - - // Specialization for fusion sequences, in this case we check whether all - // the types in the sequence are convertible to the lhs attribute. - // - // We return false if the rhs attribute itself is a fusion sequence, which - // is compatible with the LHS sequence (we want to pass through this - // attribute without it being split apart). - template - struct not_compatible_element - : mpl::and_< - negate_weak_substitute_if_not - , negate_weak_substitute_if_not > - {}; - - // If the value type of the container is not a Fusion sequence, we pass - // through the container if each of the elements of the Attribute - // sequence is compatible with either the container or its value type. - template ::value> - struct pass_through_container_fusion_sequence - { - typedef typename mpl::find_if< - Attribute, not_compatible_element - >::type iter; - typedef typename mpl::end::type end; - - typedef typename is_same::type type; - }; - - // If both, the Attribute and the value type of the provided container - // are Fusion sequences, we pass the container only if the two - // sequences are not compatible. - template - struct pass_through_container_fusion_sequence< - Container, ValueType, Attribute, Sequence, true> - { - typedef typename mpl::find_if< - Attribute - , not_compatible_element - >::type iter; - typedef typename mpl::end::type end; - - typedef typename is_same::type type; - }; - - template - struct pass_through_container_base >::type> - : pass_through_container_fusion_sequence< - Container, ValueType, Attribute, Sequence> - {}; - - // Specialization for containers - // - // If the value type of the attribute of the current component is not - // a Fusion sequence, we have to pass through the provided container if - // both are compatible. - template ::value> - struct pass_through_container_container - : mpl::or_< - traits::is_weak_substitute - , traits::is_weak_substitute > - {}; - - // If the value type of the exposed container attribute is a Fusion - // sequence, we use the already existing logic for those. - template - struct pass_through_container_container< - Container, ValueType, Attribute, Sequence, AttributeValueType, true> - : pass_through_container_fusion_sequence< - Container, ValueType, AttributeValueType, Sequence> - {}; - - template - struct pass_through_container_base >::type> - : detail::pass_through_container_container< - Container, ValueType, Attribute, Sequence - , typename traits::container_value::type> - {}; - - // Specialization for exposed optional attributes - // - // If the type embedded in the exposed optional is not a Fusion - // sequence we pass through the container attribute if it is compatible - // either to the optionals embedded type or to the containers value - // type. - template ::value> - struct pass_through_container_optional - : mpl::or_< - traits::is_weak_substitute - , traits::is_weak_substitute > - {}; - - // If the embedded type of the exposed optional attribute is a Fusion - // sequence, we use the already existing logic for those. - template - struct pass_through_container_optional< - Container, ValueType, Attribute, Sequence, true> - : pass_through_container_fusion_sequence< - Container, ValueType, Attribute, Sequence> - {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct pass_through_container - : pass_through_container_base - {}; - - // Handle optional attributes - template - struct pass_through_container< - Container, ValueType, boost::optional, Sequence> - : pass_through_container_optional< - Container, ValueType, Attribute, Sequence> - {}; - - // If both, the containers value type and the exposed attribute type are - // optionals we are allowed to pass through the container only if the - // embedded types of those optionals are not compatible. - template - struct pass_through_container< - Container, boost::optional, boost::optional - , Sequence> - : mpl::not_ > - {}; - - // Specialization for exposed variant attributes - // - // We pass through the container attribute if at least one of the embedded - // types in the variant requires to pass through the attribute - -#if !defined(BOOST_VARIANT_DO_NOT_USE_VARIADIC_TEMPLATES) - template - struct pass_through_container - , Sequence> - : pass_through_container - {}; - - template - struct pass_through_container, Sequence> - : mpl::bool_::type::value || pass_through_container< - Container, ValueType, boost::variant, Sequence - >::type::value> - {}; -#else -#define BOOST_SPIRIT_PASS_THROUGH_CONTAINER(z, N, _) \ - pass_through_container::type::value || \ - /***/ - - // make sure unused variant parameters do not affect the outcome - template - struct pass_through_container - : mpl::false_ - {}; - - template - struct pass_through_container, Sequence> - : mpl::bool_ - {}; - -#undef BOOST_SPIRIT_PASS_THROUGH_CONTAINER -#endif -}}}} - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - // forwarding customization point for domain karma::domain - template - struct pass_through_container< - Container, ValueType, Attribute, Sequence, karma::domain> - : karma::detail::pass_through_container< - Container, ValueType, Attribute, Sequence> - {}; -}}} - -namespace boost { namespace spirit { namespace karma { namespace detail -{ - template - struct pass_container_base - { - pass_container_base(Iterator begin, Iterator end) - : iter(begin), end(end) - {} - - mutable Iterator iter; - mutable Iterator end; - }; - -#ifdef _MSC_VER -# pragma warning(push) -# pragma warning(disable: 4512) // assignment operator could not be generated. -#endif - template - struct pass_container_base - { - pass_container_base(Iterator& begin, Iterator& end) - : iter(begin), end(end) - {} - - Iterator& iter; - Iterator& end; - }; - - /////////////////////////////////////////////////////////////////////////// - // This function handles the case where the attribute (Attr) given - // to the sequence is an STL container. This is a wrapper around F. - // The function F does the actual generating. - template - struct pass_container : pass_container_base - { - typedef pass_container_base base_type; - typedef typename F::context_type context_type; - - pass_container(F const& f, Iterator begin, Iterator end) - : base_type(begin, end) - , f(f) - {} - - bool is_at_end() const - { - return traits::compare(this->iter, this->end); - } - - void next() - { - traits::next(this->iter); - } - - // this is for the case when the current element expects an attribute - // which is taken from the next entry in the container - template - bool dispatch_container(Component const& component, mpl::false_) const - { - // get the next value to generate from container - if (!is_at_end() && !f(component, traits::deref(this->iter))) - { - // needs to return false as long as everything is ok - traits::next(this->iter); - return false; - } - - // either no elements available any more or generation failed - return true; - } - - // this is for the case when the current element is able to handle an - // attribute which is a container itself, this element will push its - // data directly into the attribute container - template - bool dispatch_container(Component const& component, mpl::true_) const - { - return f(component, make_iterator_range(this->iter, this->end)); - } - - /////////////////////////////////////////////////////////////////////// - // this is for the case when the current element doesn't expect an - // attribute - template - bool dispatch_attribute(Component const& component, mpl::false_) const - { - return f(component, unused); - } - - // the current element expects an attribute - template - bool dispatch_attribute(Component const& component, mpl::true_) const - { - typedef typename traits::container_value::type value_type; - typedef typename - traits::attribute_of::type - lhs_attribute; - - // this predicate detects, whether the value type of the container - // attribute is a substitute for the attribute of the current - // element - typedef mpl::and_< - traits::handles_container - , traits::pass_through_container< - Attr, value_type, lhs_attribute, Sequence, karma::domain> - > predicate; - - return dispatch_container(component, predicate()); - } - - // Dispatches to dispatch_main depending on the attribute type - // of the Component - template - bool operator()(Component const& component) const - { - // we need to dispatch depending on the type of the attribute - // of the current element (component). If this is has no attribute - // we shouldn't use an element of the container but unused_type - // instead - typedef traits::not_is_unused< - typename traits::attribute_of::type - > predicate; - - return dispatch_attribute(component, predicate()); - } - - F f; - }; -#ifdef _MSC_VER -# pragma warning(pop) -#endif -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/detail/string_compare.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/detail/string_compare.hpp deleted file mode 100644 index c638a3d6d65c..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/detail/string_compare.hpp +++ /dev/null @@ -1,74 +0,0 @@ -// 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_STRING_COMPARE_AUG_08_2009_0756PM) -#define BOOST_SPIRIT_KARMA_STRING_COMPARE_AUG_08_2009_0756PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include - -namespace boost { namespace spirit { namespace karma { namespace detail -{ - template - bool string_compare(Char const* attr, Char const* lit) - { - Char ch_attr = *attr; - Char ch_lit = *lit; - - while (!!ch_lit && !!ch_attr) - { - if (ch_attr != ch_lit) - return false; - - ch_attr = *++attr; - ch_lit = *++lit; - } - - return !ch_lit && !ch_attr; - } - - template - bool string_compare(Char const* attr, Char const* lit, unused_type, unused_type) - { - return string_compare(attr, lit); - } - - template - bool string_compare(unused_type, Char const*, unused_type, unused_type) - { - return true; - } - - template - bool string_compare(Char const* attr, Char const* lit, CharEncoding, Tag) - { - Char ch_attr = *attr; - Char ch_lit = spirit::char_class::convert::to(Tag(), *lit); - - while (!!ch_lit && !!ch_attr) - { - if (ch_attr != ch_lit) - return false; - - ch_attr = *++attr; - ch_lit = spirit::char_class::convert::to(Tag(), *++lit); - } - - return !ch_lit && !ch_attr; - } - - template - bool string_compare(unused_type, Char const*, CharEncoding, Tag) - { - return true; - } - -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/detail/string_generate.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/detail/string_generate.hpp deleted file mode 100644 index d37480b436fe..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/detail/string_generate.hpp +++ /dev/null @@ -1,127 +0,0 @@ -// 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_STRING_GENERATE_FEB_23_2007_1232PM) -#define BOOST_SPIRIT_KARMA_STRING_GENERATE_FEB_23_2007_1232PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace karma { namespace detail -{ - /////////////////////////////////////////////////////////////////////////// - // pass through character transformation - struct pass_through_filter - { - template - Char operator()(Char ch) const - { - return ch; - } - }; - - template - struct encoding_filter - { - template - Char operator()(Char ch) const - { - return spirit::char_class::convert::to(Tag(), ch); - } - }; - - /////////////////////////////////////////////////////////////////////////// - // generate a string given by a std::string, applying the given filter - template - inline bool string_generate(OutputIterator& sink, Char const* str - , Filter filter) - { - for (Char ch = *str; ch != 0; ch = *++str) - { - *sink = filter(ch); - ++sink; - } - return detail::sink_is_good(sink); - } - - template - inline bool string_generate(OutputIterator& sink - , Container const& c, Filter filter) - { - typedef typename traits::container_iterator::type - iterator; - - const iterator end = boost::end(c); - for (iterator it = boost::begin(c); it != end; ++it) - { - *sink = filter(*it); - ++sink; - } - return detail::sink_is_good(sink); - } - - /////////////////////////////////////////////////////////////////////////// - // generate a string without any transformation - template - inline bool string_generate(OutputIterator& sink, Char const* str) - { - return string_generate(sink, str, pass_through_filter()); - } - - template - inline bool string_generate(OutputIterator& sink - , Container const& c) - { - return string_generate(sink, c, pass_through_filter()); - } - - /////////////////////////////////////////////////////////////////////////// - // generate a string given by a pointer, converting according using a - // given character class and case tag - template - inline bool string_generate(OutputIterator& sink - , Char const* str - , CharEncoding, Tag) - { - return string_generate(sink, str, encoding_filter()); - } - - template - inline bool - string_generate(OutputIterator& sink - , Container const& c - , CharEncoding, Tag) - { - return string_generate(sink, c, encoding_filter()); - } - - /////////////////////////////////////////////////////////////////////////// - template - inline bool string_generate(OutputIterator& sink - , Char const* str - , unused_type, unused_type) - { - return string_generate(sink, str); - } - - template - inline bool string_generate(OutputIterator& sink - , Container const& c - , unused_type, unused_type) - { - return string_generate(sink, c); - } - -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/detail/unused_delimiter.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/detail/unused_delimiter.hpp deleted file mode 100644 index f82cc35b21d7..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/detail/unused_delimiter.hpp +++ /dev/null @@ -1,54 +0,0 @@ -// 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_UNUSED_DELIMITER_MAR_15_2009_0923PM) -#define BOOST_SPIRIT_KARMA_UNUSED_DELIMITER_MAR_15_2009_0923PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include - -namespace boost { namespace spirit { namespace karma { namespace detail -{ -#ifdef _MSC_VER -# pragma warning(push) -# pragma warning(disable: 4512) // assignment operator could not be generated. -#endif - template - struct unused_delimiter : unused_type - { - unused_delimiter(Delimiter const& delim) - : delimiter(delim) {} - Delimiter const& delimiter; - }; -#ifdef _MSC_VER -# pragma warning(pop) -#endif - - // If a surrounding verbatim[] directive was specified, the current - // delimiter is of the type unused_delimiter. In this case we - // re-activate the delimiter which was active before the verbatim[] - // directive. - template - inline Delimiter const& - get_delimiter(unused_delimiter const& u, Default const&) - { - return u.delimiter; - } - - // If no surrounding verbatim[] directive was specified we activate - // a single space as the delimiter to use. - template - inline Default const& - get_delimiter(Delimiter const&, Default const& d) - { - return d; - } - -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/directive.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/directive.hpp deleted file mode 100644 index 56ef87ce0fba..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/directive.hpp +++ /dev/null @@ -1,75 +0,0 @@ -// 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_DIRECTIVE_FEB_21_2007_0833PM) -#define BOOST_SPIRIT_KARMA_DIRECTIVE_FEB_21_2007_0833PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include - -/////////////////////////////////////////////////////////////////////////////// -// directives related to alignment -// left_align[...], right_align[...], center[...] -/////////////////////////////////////////////////////////////////////////////// -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -// directives related to truncating length -// maxwidth[...], columns[] -/////////////////////////////////////////////////////////////////////////////// -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -// directives related to character case -// lower[...] and upper[...] -/////////////////////////////////////////////////////////////////////////////// -#include - -/////////////////////////////////////////////////////////////////////////////// -// directives related to delimiting generators -// delimit[...] and verbatim[...] -/////////////////////////////////////////////////////////////////////////////// -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -// repeat directives -// repeat[...] -/////////////////////////////////////////////////////////////////////////////// -#include - -/////////////////////////////////////////////////////////////////////////////// -// omit, skip, and duplicate directives -// omit[...], skip[...], duplicate[...] -/////////////////////////////////////////////////////////////////////////////// -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -// buffer directive -// buffer[...] -/////////////////////////////////////////////////////////////////////////////// -#include - -/////////////////////////////////////////////////////////////////////////////// -// strict and relaxed directives -// strict[...], relaxed[...] -/////////////////////////////////////////////////////////////////////////////// -#include - -/////////////////////////////////////////////////////////////////////////////// -// as_string and as_wstring directives -// as_string[...], as_wstring[...] -/////////////////////////////////////////////////////////////////////////////// -#include - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/directive/as.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/directive/as.hpp deleted file mode 100644 index d05315109969..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/directive/as.hpp +++ /dev/null @@ -1,166 +0,0 @@ -// Copyright (c) 2001-2011 Hartmut Kaiser -// Copyright (c) 2010 Bryce Lelbach -// -// 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) - -#ifndef BOOST_SPIRIT_KARMA_DIRECTIVE_AS_HPP -#define BOOST_SPIRIT_KARMA_DIRECTIVE_AS_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace karma -{ - template - struct as - : stateful_tag_type - { - BOOST_SPIRIT_ASSERT_MSG( - (traits::is_container::type::value), - error_type_must_be_a_container, - (T)); - }; -}}} - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - // enables as_string[...] - template <> - struct use_directive - : mpl::true_ {}; - - // enables as_wstring[...] - template <> - struct use_directive - : mpl::true_ {}; - - // enables as[...] - template - struct use_directive > - : mpl::true_ - {}; -}} - -namespace boost { namespace spirit { namespace karma -{ -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using spirit::as_string; - using spirit::as_wstring; -#endif - using spirit::as_string_type; - using spirit::as_wstring_type; - - /////////////////////////////////////////////////////////////////////////// - // as_directive allows to hook custom conversions to string into the - // output generation process - /////////////////////////////////////////////////////////////////////////// - template - struct as_directive - : unary_generator > - { - typedef Subject subject_type; - typedef typename subject_type::properties properties; - - as_directive(Subject const& subject) - : subject(subject) {} - - template - struct attribute - { - typedef T type; - }; - - template - bool generate(OutputIterator& sink, Context& ctx, Delimiter const& d - , Attribute const& attr) const - { - if (!traits::valid_as(attr)) - return false; - - return subject.generate(sink, ctx, d, traits::as(attr)) && - karma::delimit_out(sink, d); // always do post-delimiting - } - - template - info what(Context& context) const - { - return info("as", subject.what(context)); - } - - Subject subject; - }; - - /////////////////////////////////////////////////////////////////////////// - // Generator generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_directive - { - typedef as_directive result_type; - result_type operator()(unused_type, Subject const& subject - , unused_type) const - { - return result_type(subject); - } - }; - - template - struct make_directive - { - typedef as_directive > result_type; - result_type operator()(unused_type, Subject const& subject - , unused_type) const - { - return result_type(subject); - } - }; - - template - struct make_directive, Subject, Modifiers> - { - typedef as_directive result_type; - result_type operator()(unused_type, Subject const& subject - , unused_type) const - { - return result_type(subject); - } - }; -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct has_semantic_action > - : unary_has_semantic_action {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container, Attribute - , Context, Iterator> - : mpl::false_ {}; // always dereference attribute if used in sequences -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/directive/buffer.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/directive/buffer.hpp deleted file mode 100644 index 6ed36faee698..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/directive/buffer.hpp +++ /dev/null @@ -1,132 +0,0 @@ -// 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) - -#ifndef BOOST_SPIRIT_KARMA_DIRECTIVE_BUFFER_HPP -#define BOOST_SPIRIT_KARMA_DIRECTIVE_BUFFER_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_directive // enables buffer - : mpl::true_ {}; - -}} - -namespace boost { namespace spirit { namespace karma -{ -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using spirit::buffer; -#endif - using spirit::buffer_type; - - /////////////////////////////////////////////////////////////////////////// - // buffer_directive buffers all generated output of the embedded generator - // and flushes it only if the whole embedded generator succeeds - /////////////////////////////////////////////////////////////////////////// - template - struct buffer_directive : unary_generator > - { - typedef Subject subject_type; - typedef mpl::int_< - subject_type::properties::value | - generator_properties::countingbuffer - > properties; - - buffer_directive(Subject const& subject) - : subject(subject) {} - - template - struct attribute - : traits::attribute_of - {}; - - template - bool generate(OutputIterator& sink, Context& ctx, Delimiter const& d - , Attribute const& attr) const - { - // wrap the given output iterator to avoid output as long as the - // embedded generator (subject) fails - detail::enable_buffering buffering(sink); - bool r = false; - { - detail::disable_counting nocounting(sink); - r = subject.generate(sink, ctx, d, attr); - } - if (r) - buffering.buffer_copy(); - return r; - } - - template - info what(Context& context) const - { - return info("buffer", subject.what(context)); - } - - Subject subject; - }; - - /////////////////////////////////////////////////////////////////////////// - // Generator generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_directive - { - typedef buffer_directive result_type; - result_type operator()(unused_type, Subject const& subject - , unused_type) const - { - return result_type(subject); - } - }; - - // make sure buffer[buffer[...]] does not result in double buffering - template - struct make_directive, Modifiers> - { - typedef buffer_directive result_type; - result_type operator()(unused_type - , buffer_directive const& subject, unused_type) const - { - return subject; - } - }; -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct has_semantic_action > - : unary_has_semantic_action {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container, Attribute - , Context, Iterator> - : unary_handles_container {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/directive/center_alignment.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/directive/center_alignment.hpp deleted file mode 100644 index 07eeede38ce4..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/directive/center_alignment.hpp +++ /dev/null @@ -1,335 +0,0 @@ -// 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_CENTER_ALIGNMENT_FEB_27_2007_1216PM) -#define BOOST_SPIRIT_KARMA_CENTER_ALIGNMENT_FEB_27_2007_1216PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - - // enables center[] - template <> - struct use_directive - : mpl::true_ {}; - - // enables center(d)[g] and center(w)[g], where d is a generator - // and w is a maximum width - template - struct use_directive > > - : mpl::true_ {}; - - // enables *lazy* center(d)[g], where d provides a generator - template <> - struct use_lazy_directive - : mpl::true_ {}; - - // enables center(w, d)[g], where d is a generator and w is a maximum - // width - template - struct use_directive > > - : spirit::traits::matches {}; - - // enables *lazy* center(w, d)[g], where d provides a generator and w is - // a maximum width - template <> - struct use_lazy_directive - : mpl::true_ {}; - -}} - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace karma -{ -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using spirit::center; -#endif - using spirit::center_type; - - namespace detail - { - /////////////////////////////////////////////////////////////////////// - // The center_generate template function is used for all the - // different flavors of the center[] directive. - /////////////////////////////////////////////////////////////////////// - template - inline static bool - center_generate(OutputIterator& sink, Context& ctx, - Delimiter const& d, Attribute const& attr, Embedded const& e, - unsigned int const width, Padding const& p) - { -#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1600)) - (void)e; // suppresses warning: C4100: 'e' : unreferenced formal parameter -#endif - // wrap the given output iterator to allow left padding - detail::enable_buffering buffering(sink, width); - bool r = false; - - // first generate the embedded output - { - detail::disable_counting nocounting(sink); - r = e.generate(sink, ctx, d, attr); - } // re-enable counting - - buffering.disable(); // do not perform buffering any more - - // generate the left padding - detail::enable_counting counting(sink); - - std::size_t const pre = width - (buffering.buffer_size() + width)/2; - while (r && counting.count() < pre) - r = p.generate(sink, ctx, unused, unused); - - if (r) { - // copy the embedded output to the target output iterator - buffering.buffer_copy(); - - // generate the right padding - while (r && counting.count() < width) - r = p.generate(sink, ctx, unused, unused); - } - return r; - } - } - - /////////////////////////////////////////////////////////////////////////// - // The simple left alignment directive is used for center[...] - // generators. It uses default values for the generated width (defined via - // the BOOST_KARMA_DEFAULT_FIELD_LENGTH constant) and for the padding - // generator (always spaces). - /////////////////////////////////////////////////////////////////////////// - template - struct simple_center_alignment - : unary_generator > - { - typedef Subject subject_type; - - typedef mpl::int_< - generator_properties::countingbuffer | subject_type::properties::value - > properties; - - template - struct attribute - : traits::attribute_of - {}; - - simple_center_alignment(Subject const& subject, Width width = Width()) - : subject(subject), width(width) {} - - template - bool generate(OutputIterator& sink, Context& ctx, Delimiter const& d - , Attribute const& attr) const - { - return detail::center_generate(sink, ctx, d, attr, - subject, width, compile(' ')); - } - - template - info what(Context& context) const - { - return info("center", subject.what(context)); - } - - Subject subject; - Width width; - }; - - /////////////////////////////////////////////////////////////////////////// - // The left alignment directive with padding, is used for generators like - // center(padding)[...], where padding is a arbitrary generator - // expression. It uses a default value for the generated width (defined - // via the BOOST_KARMA_DEFAULT_FIELD_LENGTH constant). - /////////////////////////////////////////////////////////////////////////// - template - struct padding_center_alignment - : unary_generator > - { - typedef Subject subject_type; - typedef Padding padding_type; - - typedef mpl::int_< - generator_properties::countingbuffer | - subject_type::properties::value | padding_type::properties::value - > properties; - - template - struct attribute - : traits::attribute_of - {}; - - padding_center_alignment(Subject const& subject, Padding const& padding - , Width width = Width()) - : subject(subject), padding(padding), width(width) {} - - template - bool generate(OutputIterator& sink, Context& ctx, Delimiter const& d - , Attribute const& attr) const - { - return detail::center_generate(sink, ctx, d, attr, - subject, width, padding); - } - - template - info what(Context& context) const - { - return info("center", subject.what(context)); - } - - Subject subject; - Padding padding; - Width width; - }; - - /////////////////////////////////////////////////////////////////////////// - // Generator generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - - // creates center[] directive generator - template - struct make_directive - { - typedef simple_center_alignment result_type; - result_type operator()(unused_type, Subject const& subject - , unused_type) const - { - return result_type(subject); - } - }; - - // creates center(width)[] directive generator - template - struct make_directive< - terminal_ex > - , Subject, Modifiers - , typename enable_if_c< integer_traits::is_integral >::type> - { - typedef simple_center_alignment result_type; - - template - result_type operator()(Terminal const& term, Subject const& subject - , unused_type) const - { - return result_type(subject, fusion::at_c<0>(term.args)); - } - }; - - // creates center(pad)[] directive generator - template - struct make_directive< - terminal_ex > - , Subject, Modifiers - , typename enable_if< - mpl::and_< - spirit::traits::matches, - mpl::not_::is_integral> > - > - >::type> - { - typedef typename - result_of::compile::type - padding_type; - - typedef padding_center_alignment result_type; - - template - result_type operator()(Terminal const& term, Subject const& subject - , Modifiers const& modifiers) const - { - return result_type(subject - , compile(fusion::at_c<0>(term.args), modifiers)); - } - }; - - // creates center(width, pad)[] directive generator - template - struct make_directive< - terminal_ex > - , Subject, Modifiers> - { - typedef typename - result_of::compile::type - padding_type; - - typedef padding_center_alignment result_type; - - template - result_type operator()(Terminal const& term, Subject const& subject - , Modifiers const& modifiers) const - { - return result_type(subject - , compile(fusion::at_c<1>(term.args), modifiers) - , fusion::at_c<0>(term.args)); - } - }; - -}}} // namespace boost::spirit::karma - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct has_semantic_action > - : unary_has_semantic_action {}; - - template - struct has_semantic_action< - karma::padding_center_alignment > - : unary_has_semantic_action {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container< - karma::simple_center_alignment, Attribute - , Context, Iterator> - : unary_handles_container {}; - - template - struct handles_container< - karma::padding_center_alignment - , Attribute, Context, Iterator> - : unary_handles_container {}; -}}} - -#endif - - diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/directive/columns.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/directive/columns.hpp deleted file mode 100644 index d2df2f550220..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/directive/columns.hpp +++ /dev/null @@ -1,296 +0,0 @@ -// 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_COLUMNS_DEC_03_2009_0736AM) -#define BOOST_SPIRIT_KARMA_COLUMNS_DEC_03_2009_0736AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_directive // enables columns[] - : mpl::true_ {}; - - // enables columns(c)[g], where c provides the number of require columns - template - struct use_directive > > - : mpl::true_ {}; - - // enables *lazy* columns(c)[g] - template <> - struct use_lazy_directive - : mpl::true_ {}; - - // enables columns(c, d)[g], where c provides the number of require columns - // and d is the custom column-delimiter (default is karma::endl) - template - struct use_directive > > - : boost::spirit::traits::matches {}; - - // enables *lazy* columns(c, d)[g] - template <> - struct use_lazy_directive - : mpl::true_ {}; - -}} - -namespace boost { namespace spirit { namespace karma -{ -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using spirit::columns; -#endif - using spirit::columns_type; - - namespace detail - { -#ifdef _MSC_VER -# pragma warning(push) -# pragma warning(disable: 4512) // assignment operator could not be generated. -#endif - template - struct columns_delimiter - { - columns_delimiter(Delimiter const& delim - , ColumnDelimiter const& cdelim, unsigned int const numcols) - : delimiter(delim), column_delimiter(cdelim) - , numcolumns(numcols), count(0) {} - - template - bool generate(OutputIterator& sink, Context&, Delimiter_ const& - , Attribute const&) const - { - // first invoke the embedded delimiter - if (!karma::delimit_out(sink, delimiter)) - return false; - - // now we count the number of invocations and emit the column - // delimiter if needed - if ((++count % numcolumns) == 0) - return karma::delimit_out(sink, column_delimiter); - return true; - } - - // generate a final column delimiter if the last invocation didn't - // emit one - template - bool delimit_out(OutputIterator& sink) const - { - if (count % numcolumns) - return karma::delimit_out(sink, column_delimiter); - return true; - } - - Delimiter const& delimiter; - ColumnDelimiter const& column_delimiter; - unsigned int const numcolumns; - mutable unsigned int count; - }; -#ifdef _MSC_VER -# pragma warning(pop) -#endif - } - - /////////////////////////////////////////////////////////////////////////// - // The columns_generator is used for columns(c, d)[...] directives. - /////////////////////////////////////////////////////////////////////////// - template - struct columns_generator - : unary_generator > - { - typedef Subject subject_type; - typedef ColumnsDelimiter delimiter_type; - - typedef mpl::int_< - subject_type::properties::value | delimiter_type::properties::value - > properties; - - template - struct attribute - : traits::attribute_of - {}; - - columns_generator(Subject const& subject, NumColumns const& cols - , ColumnsDelimiter const& cdelimiter) - : subject(subject), numcolumns(cols), column_delimiter(cdelimiter) - { - // having zero number of columns doesn't make any sense - BOOST_ASSERT(numcolumns > 0); - } - - template - bool generate(OutputIterator& sink, Context& ctx - , Delimiter const& delimiter, Attribute const& attr) const - { - // The columns generator dispatches to the embedded generator - // while supplying a new delimiter to use, wrapping the outer - // delimiter. - typedef detail::columns_delimiter< - Delimiter, ColumnsDelimiter - > columns_delimiter_type; - - columns_delimiter_type d(delimiter, column_delimiter, numcolumns); - return subject.generate(sink, ctx, d, attr) && d.delimit_out(sink); - } - - template - info what(Context& context) const - { - return info("columns", subject.what(context)); - } - - Subject subject; - NumColumns numcolumns; - ColumnsDelimiter column_delimiter; - }; - - /////////////////////////////////////////////////////////////////////////// - // Generator generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - - // creates columns[] directive - template - struct make_directive - { - typedef typename - result_of::compile::type - columns_delimiter_type; - typedef columns_generator< - Subject, detail::default_columns, columns_delimiter_type> - result_type; - - result_type operator()(unused_type, Subject const& subject - , unused_type) const - { -#if defined(BOOST_SPIRIT_NO_PREDEFINED_TERMINALS) - eol_type const eol = eol_type(); -#endif - return result_type(subject, detail::default_columns() - , compile(eol)); - } - }; - - // creates columns(c)[] directive generator (c is the number of columns) - template - struct make_directive< - terminal_ex > - , Subject, Modifiers - , typename enable_if_c::is_integral>::type> - { - typedef typename - result_of::compile::type - columns_delimiter_type; - typedef columns_generator< - Subject, T, columns_delimiter_type - > result_type; - - template - result_type operator()(Terminal const& term, Subject const& subject - , unused_type) const - { -#if defined(BOOST_SPIRIT_NO_PREDEFINED_TERMINALS) - eol_type const eol = eol_type(); -#endif - return result_type(subject, fusion::at_c<0>(term.args) - , compile(eol)); - } - }; - - // creates columns(d)[] directive generator (d is the column delimiter) - template - struct make_directive< - terminal_ex > - , Subject, Modifiers - , typename enable_if< - mpl::and_< - spirit::traits::matches, - mpl::not_::is_integral> > - > - >::type> - { - typedef typename - result_of::compile::type - columns_delimiter_type; - typedef columns_generator< - Subject, detail::default_columns, columns_delimiter_type - > result_type; - - template - result_type operator()(Terminal const& term, Subject const& subject - , unused_type) const - { - return result_type(subject, detail::default_columns() - , compile(fusion::at_c<0>(term.args))); - } - }; - - // creates columns(c, d)[] directive generator (c is the number of columns - // and d is the column delimiter) - template - struct make_directive< - terminal_ex > - , Subject, Modifiers> - { - typedef typename - result_of::compile::type - columns_delimiter_type; - typedef columns_generator< - Subject, T1, columns_delimiter_type - > result_type; - - template - result_type operator()(Terminal const& term, Subject const& subject - , unused_type) const - { - return result_type (subject, fusion::at_c<0>(term.args) - , compile(fusion::at_c<1>(term.args))); - } - }; - -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct has_semantic_action > - : unary_has_semantic_action {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container< - karma::columns_generator, Attribute - , Context, Iterator> - : unary_handles_container {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/directive/delimit.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/directive/delimit.hpp deleted file mode 100644 index 08fbd9eb796b..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/directive/delimit.hpp +++ /dev/null @@ -1,201 +0,0 @@ -// 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_DELIMIT_MAR_02_2007_0217PM) -#define BOOST_SPIRIT_KARMA_DELIMIT_MAR_02_2007_0217PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_directive // enables delimit[] - : mpl::true_ {}; - - // enables delimit(d)[g], where d is a generator - template - struct use_directive > > - : boost::spirit::traits::matches {}; - - // enables *lazy* delimit(d)[g] - template <> - struct use_lazy_directive - : mpl::true_ {}; - -}} - -namespace boost { namespace spirit { namespace karma -{ -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using spirit::delimit; -#endif - using spirit::delimit_type; - - /////////////////////////////////////////////////////////////////////////// - // The redelimit_generator generator is used for delimit[...] directives. - /////////////////////////////////////////////////////////////////////////// - template - struct redelimit_generator : unary_generator > - { - typedef Subject subject_type; - - typedef typename subject_type::properties properties; - - template - struct attribute - : traits::attribute_of - {}; - - redelimit_generator(Subject const& subject) - : subject(subject) {} - - template - bool generate(OutputIterator& sink, Context& ctx, Delimiter const& d - , Attribute const& attr) const - { - // The delimit_space generator simply dispatches to the embedded - // generator while supplying either the delimiter which has been - // used before a surrounding verbatim[] directive or a single - // space as the new delimiter to use (if no surrounding verbatim[] - // was specified). - return subject.generate(sink, ctx - , detail::get_delimiter(d, compile(' ')), attr); - } - - template - info what(Context& context) const - { - return info("delimit", subject.what(context)); - } - - Subject subject; - }; - - /////////////////////////////////////////////////////////////////////////// - // The delimit_generator is used for delimit(d)[...] directives. - /////////////////////////////////////////////////////////////////////////// - template - struct delimit_generator - : unary_generator > - { - typedef Subject subject_type; - typedef Delimiter delimiter_type; - - typedef typename subject_type::properties properties; - - template - struct attribute - : traits::attribute_of - {}; - - delimit_generator(Subject const& subject, Delimiter const& delimiter) - : subject(subject), delimiter(delimiter) {} - - template - bool generate(OutputIterator& sink, Context& ctx, Delimiter_ const& - , Attribute const& attr) const - { - // the delimit generator simply dispatches to the embedded - // generator while supplying it's argument as the new delimiter - // to use - return subject.generate(sink, ctx, delimiter, attr); - } - - template - info what(Context& context) const - { - return info("delimit", subject.what(context)); - } - - Subject subject; - Delimiter delimiter; - }; - - /////////////////////////////////////////////////////////////////////////// - // Generator generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_directive - { - typedef redelimit_generator result_type; - result_type operator()(unused_type, Subject const& subject - , unused_type) const - { - return result_type(subject); - } - }; - - template - struct make_directive< - terminal_ex > - , Subject, Modifiers> - { - typedef typename - result_of::compile::type - delimiter_type; - - typedef delimit_generator result_type; - - template - result_type operator()(Terminal const& term, Subject const& subject - , unused_type) const - { - return result_type(subject - , compile(fusion::at_c<0>(term.args))); - } - }; - -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct has_semantic_action > - : unary_has_semantic_action {}; - - template - struct has_semantic_action > - : unary_has_semantic_action {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container, Attribute - , Context, Iterator> - : unary_handles_container {}; - - template - struct handles_container - , Attribute, Context, Iterator> - : unary_handles_container {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/directive/duplicate.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/directive/duplicate.hpp deleted file mode 100644 index 8be14f8da297..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/directive/duplicate.hpp +++ /dev/null @@ -1,230 +0,0 @@ -// 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) - -#ifndef BOOST_SPIRIT_KARMA_DIRECTIVE_DUPLICATE_HPP -#define BOOST_SPIRIT_KARMA_DIRECTIVE_DUPLICATE_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_directive // enables duplicate - : mpl::true_ {}; -}} - -namespace boost { namespace spirit { namespace karma -{ -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using spirit::duplicate; -#endif - using spirit::duplicate_type; - - /////////////////////////////////////////////////////////////////////////// - namespace detail - { - /////////////////////////////////////////////////////////////////////// - template ::value> - struct attribute_count - : fusion::result_of::size - {}; - - template <> - struct attribute_count - : mpl::int_<0> - {}; - - template - struct attribute_count - : mpl::int_<1> - {}; - - /////////////////////////////////////////////////////////////////////// - template ::value> - struct first_attribute_of_subject - : remove_reference::type> - {}; - - template - struct first_attribute_of_subject - : mpl::identity - {}; - - template - struct first_attribute_of - : first_attribute_of_subject< - typename traits::attribute_of::type> - {}; - - /////////////////////////////////////////////////////////////////////// - template - struct duplicate_sequence_attribute - { - typedef typename fusion::result_of::make_cons< - reference_wrapper - , typename duplicate_sequence_attribute::type - >::type type; - - static type call(T const& t) - { - return fusion::make_cons(boost::cref(t) - , duplicate_sequence_attribute::call(t)); - } - }; - - template - struct duplicate_sequence_attribute - { - typedef typename fusion::result_of::make_cons< - reference_wrapper >::type type; - - static type call(T const& t) - { - return fusion::make_cons(boost::cref(t)); - } - }; - - /////////////////////////////////////////////////////////////////////// - template ::value - , bool IsSequence = fusion::traits::is_sequence::value> - struct duplicate_attribute - { - BOOST_SPIRIT_ASSERT_MSG(N > 0, invalid_duplication_count, (Attribute)); - - typedef typename duplicate_sequence_attribute::type - cons_type; - typedef typename fusion::result_of::as_vector::type type; - - static type call(T const& t) - { - return fusion::as_vector( - duplicate_sequence_attribute::call(t)); - } - }; - - template - struct duplicate_attribute - { - typedef unused_type type; - - static type call(T const&) - { - return unused; - } - }; - - template - struct duplicate_attribute - { - typedef Attribute const& type; - - static type call(T const& t) - { - return t; - } - }; - } - - template - inline typename detail::duplicate_attribute::type - duplicate_attribute(T const& t) - { - return detail::duplicate_attribute::call(t); - } - - /////////////////////////////////////////////////////////////////////////// - // duplicate_directive duplicate its attribute for all elements of the - // subject generator without generating anything itself - /////////////////////////////////////////////////////////////////////////// - template - struct duplicate_directive : unary_generator > - { - typedef Subject subject_type; - typedef typename subject_type::properties properties; - - duplicate_directive(Subject const& subject) - : subject(subject) {} - - template - struct attribute - : detail::first_attribute_of - {}; - - template - bool generate(OutputIterator& sink, Context& ctx, Delimiter const& d - , Attribute const& attr) const - { - typedef typename traits::attribute_of::type - subject_attr_type; - return subject.generate(sink, ctx, d - , duplicate_attribute(attr)); - } - - template - info what(Context& context) const - { - return info("duplicate", subject.what(context)); - } - - Subject subject; - }; - - /////////////////////////////////////////////////////////////////////////// - // Generator generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_directive - { - typedef duplicate_directive result_type; - result_type operator()(unused_type, Subject const& subject - , unused_type) const - { - return result_type(subject); - } - }; -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct has_semantic_action > - : unary_has_semantic_action {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container, Attribute - , Context, Iterator> - : unary_handles_container {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/directive/encoding.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/directive/encoding.hpp deleted file mode 100644 index d2f1b93efa4e..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/directive/encoding.hpp +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright (c) 2001-2011 Joel de Guzman -// 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) - -#ifndef BOOST_SPIRIT_KARMA_DIRECTIVE_ENCODING_HPP -#define BOOST_SPIRIT_KARMA_DIRECTIVE_ENCODING_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - - // enables encoding - template - struct use_directive< - karma::domain, tag::char_code > - : mpl::true_ {}; - - template - struct is_modifier_directive< - karma::domain, tag::char_code > - : mpl::true_ {}; -}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/directive/left_alignment.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/directive/left_alignment.hpp deleted file mode 100644 index dd05e2e06c70..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/directive/left_alignment.hpp +++ /dev/null @@ -1,318 +0,0 @@ -// 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_LEFT_ALIGNMENT_FEB_27_2007_1216PM) -#define BOOST_SPIRIT_KARMA_LEFT_ALIGNMENT_FEB_27_2007_1216PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - - // enables left_align[] - template <> - struct use_directive - : mpl::true_ {}; - - // enables left_align(d)[g] and left_align(w)[g], where d is a generator - // and w is a maximum width - template - struct use_directive > > - : mpl::true_ {}; - - // enables *lazy* left_align(d)[g], where d provides a generator - template <> - struct use_lazy_directive - : mpl::true_ {}; - - // enables left_align(w, d)[g], where d is a generator and w is a maximum - // width - template - struct use_directive > > - : spirit::traits::matches {}; - - // enables *lazy* left_align(w, d)[g], where d provides a generator and w - // is a maximum width - template <> - struct use_lazy_directive - : mpl::true_ {}; - -}} - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace karma -{ -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using spirit::left_align; -#endif - using spirit::left_align_type; - - namespace detail - { - /////////////////////////////////////////////////////////////////////// - // The left_align_generate template function is used for all the - // different flavors of the left_align[] directive. - /////////////////////////////////////////////////////////////////////// - template - inline static bool - left_align_generate(OutputIterator& sink, Context& ctx, - Delimiter const& d, Attribute const& attr, Embedded const& e, - unsigned int const width, Padding const& p) - { -#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1600)) - (void)e; // suppresses warning: C4100: 'e' : unreferenced formal parameter -#endif - // wrap the given output iterator to allow counting - detail::enable_counting counting(sink); - - // first generate the underlying output - bool r = e.generate(sink, ctx, d, attr); - - // pad the output until the max width is reached - while(r && counting.count() < width) - r = p.generate(sink, ctx, unused, unused); - - return r; - } - } - - /////////////////////////////////////////////////////////////////////////// - // The simple left alignment directive is used for left_align[...] - // generators. It uses default values for the generated width (defined via - // the BOOST_KARMA_DEFAULT_FIELD_LENGTH constant) and for the padding - // generator (always spaces). - /////////////////////////////////////////////////////////////////////////// - template - struct simple_left_alignment - : unary_generator > - { - typedef Subject subject_type; - - typedef mpl::int_< - generator_properties::counting | subject_type::properties::value - > properties; - - template - struct attribute - : traits::attribute_of - {}; - - simple_left_alignment(Subject const& subject, Width width = Width()) - : subject(subject), width(width) {} - - template - bool generate(OutputIterator& sink, Context& ctx, Delimiter const& d - , Attribute const& attr) const - { - return detail::left_align_generate(sink, ctx, d, attr, - subject, width, compile(' ')); - } - - template - info what(Context& context) const - { - return info("left_align", subject.what(context)); - } - - Subject subject; - Width width; - }; - - /////////////////////////////////////////////////////////////////////////// - // The left alignment directive with padding, is used for generators like - // left_align(padding)[...], where padding is a arbitrary generator - // expression. It uses a default value for the generated width (defined - // via the BOOST_KARMA_DEFAULT_FIELD_LENGTH constant). - /////////////////////////////////////////////////////////////////////////// - template - struct padding_left_alignment - : unary_generator > - { - typedef Subject subject_type; - typedef Padding padding_type; - - typedef mpl::int_< - generator_properties::counting | - subject_type::properties::value | padding_type::properties::value - > properties; - - template - struct attribute - : traits::attribute_of - {}; - - padding_left_alignment(Subject const& subject, Padding const& padding - , Width width = Width()) - : subject(subject), padding(padding), width(width) {} - - template - bool generate(OutputIterator& sink, Context& ctx, Delimiter const& d - , Attribute const& attr) const - { - return detail::left_align_generate(sink, ctx, d, attr, - subject, width, padding); - } - - template - info what(Context& context) const - { - return info("left_align", subject.what(context)); - } - - Subject subject; - Padding padding; - Width width; - }; - - /////////////////////////////////////////////////////////////////////////// - // Generator generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - - // creates left_align[] directive generator - template - struct make_directive - { - typedef simple_left_alignment result_type; - result_type operator()(unused_type, Subject const& subject - , unused_type) const - { - return result_type(subject); - } - }; - - // creates left_align(width)[] directive generator - template - struct make_directive< - terminal_ex > - , Subject, Modifiers - , typename enable_if_c< integer_traits::is_integral >::type> - { - typedef simple_left_alignment result_type; - - template - result_type operator()(Terminal const& term, Subject const& subject - , unused_type) const - { - return result_type(subject, fusion::at_c<0>(term.args)); - } - }; - - // creates left_align(pad)[] directive generator - template - struct make_directive< - terminal_ex > - , Subject, Modifiers - , typename enable_if< - mpl::and_< - spirit::traits::matches, - mpl::not_::is_integral> > - > - >::type> - { - typedef typename - result_of::compile::type - padding_type; - - typedef padding_left_alignment result_type; - - template - result_type operator()(Terminal const& term, Subject const& subject - , Modifiers const& modifiers) const - { - return result_type(subject - , compile(fusion::at_c<0>(term.args), modifiers)); - } - }; - - // creates left_align(width, pad)[] directive generator - template - struct make_directive< - terminal_ex > - , Subject, Modifiers> - { - typedef typename - result_of::compile::type - padding_type; - - typedef padding_left_alignment result_type; - - template - result_type operator()(Terminal const& term, Subject const& subject - , Modifiers const& modifiers) const - { - return result_type(subject - , compile(fusion::at_c<1>(term.args), modifiers) - , fusion::at_c<0>(term.args)); - } - }; - -}}} // namespace boost::spirit::karma - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct has_semantic_action > - : unary_has_semantic_action {}; - - template - struct has_semantic_action< - karma::padding_left_alignment > - : unary_has_semantic_action {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container< - karma::simple_left_alignment, Attribute - , Context, Iterator> - : unary_handles_container {}; - - template - struct handles_container< - karma::padding_left_alignment - , Attribute, Context, Iterator> - : unary_handles_container {}; -}}} - -#endif - - diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/directive/maxwidth.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/directive/maxwidth.hpp deleted file mode 100644 index bf8b5c82c308..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/directive/maxwidth.hpp +++ /dev/null @@ -1,245 +0,0 @@ -// 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_MAXWIDTH_MAR_18_2009_0827AM) -#define BOOST_SPIRIT_KARMA_MAXWIDTH_MAR_18_2009_0827AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - - // enables maxwidth[] - template <> - struct use_directive - : mpl::true_ {}; - - // enables maxwidth(w)[g], where w provides a maxwidth - template - struct use_directive > > - : mpl::true_ {}; - - // enables *lazy* maxwidth(w)[g], where w provides a maxwidth - template <> - struct use_lazy_directive - : mpl::true_ {}; - - // enables maxwidth(w, r)[g], where w provides a maxwidth and r is an output - // iterator used to receive the rest of the output not fitting into the - // maxwidth limit - template - struct use_directive > > - : mpl::true_ {}; - - // enables *lazy* maxwidth(w, r)[g], where w provides a maxwidth and r is - // an output iterator used to receive the rest of the output not fitting - // into the maxwidth limit - template <> - struct use_lazy_directive - : mpl::true_ {}; - -}} - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace karma -{ -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using spirit::maxwidth; -#endif - using spirit::maxwidth_type; - - namespace detail - { - /////////////////////////////////////////////////////////////////////// - template - bool buffer_copy_rest(detail::enable_buffering& buff - , std::size_t start_at, RestIterator& dest) - { - return buff.buffer_copy_rest(dest, start_at); - } - - template - bool buffer_copy_rest(detail::enable_buffering& - , std::size_t, unused_type) - { - return true; - } - - /////////////////////////////////////////////////////////////////////// - // The maxwidth_generate template function is used for all the - // different flavors of the maxwidth[] directive. - /////////////////////////////////////////////////////////////////////// - template - inline static bool - maxwidth_generate(OutputIterator& sink, Context& ctx, - Delimiter const& d, Attribute const& attr, Embedded const& e, - unsigned int const maxwidth, Rest& restdest) - { -#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1600)) - (void)e; // suppresses warning: C4100: 'e' : unreferenced formal parameter -#endif - // wrap the given output iterator to allow buffering, but disable - // counting - detail::enable_buffering buffering(sink); - - // generate the underlying output and copy the embedded - // output to the target output iterator applying the given - // maxwidth - bool r = false; - { - detail::disable_counting nocounting(sink); - r = e.generate(sink, ctx, d, attr); - } // re-enable counting - - return r && buffering.buffer_copy(maxwidth) && - buffer_copy_rest(buffering, maxwidth, restdest); - } - } - - /////////////////////////////////////////////////////////////////////////// - // The maxwidth directive is used for maxwidth[...] - // generators. It uses default values for the generated width (defined via - // the BOOST_KARMA_DEFAULT_FIELD_MAXWIDTH constant). - // - // The maxwidth with width directive, is used for generators - // like maxwidth(width)[...]. - /////////////////////////////////////////////////////////////////////////// - template - struct maxwidth_width - : unary_generator > - { - typedef Subject subject_type; - - typedef mpl::int_< - generator_properties::countingbuffer | subject_type::properties::value - > properties; - - template - struct attribute - : traits::attribute_of - {}; - - maxwidth_width(Subject const& subject, Width const& w = Width() - , Rest const& r = Rest()) - : subject(subject), width(w), rest(r) {} - - template - bool generate(OutputIterator& sink, Context& ctx, Delimiter const& d - , Attribute const& attr) const - { - return detail::maxwidth_generate(sink, ctx, d, attr, subject - , width, rest); - } - - template - info what(Context& context) const - { - return info("maxwidth", subject.what(context)); - } - - Subject subject; - Width width; - Rest rest; - }; - - /////////////////////////////////////////////////////////////////////////// - // Generator generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - - // creates maxwidth[] directive generator - template - struct make_directive - { - typedef maxwidth_width result_type; - result_type operator()(unused_type, Subject const& subject - , unused_type) const - { - return result_type(subject); - } - }; - - // creates maxwidth(width)[] directive generator - template - struct make_directive< - terminal_ex > - , Subject, Modifiers> - { - typedef maxwidth_width result_type; - - template - result_type operator()(Terminal const& term, Subject const& subject - , unused_type) const - { - return result_type(subject, fusion::at_c<0>(term.args), unused); - } - }; - - // creates maxwidth(width, restiter)[] directive generator - template < - typename T, typename RestIter, typename Subject, typename Modifiers> - struct make_directive< - terminal_ex > - , Subject, Modifiers> - { - typedef maxwidth_width result_type; - - template - result_type operator()(Terminal const& term, Subject const& subject - , unused_type) const - { - return result_type(subject, fusion::at_c<0>(term.args) - , fusion::at_c<1>(term.args)); - } - }; - -}}} // namespace boost::spirit::karma - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct has_semantic_action > - : unary_has_semantic_action {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container, Attribute - , Context, Iterator> - : unary_handles_container {}; -}}} - -#endif - - diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/directive/no_delimit.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/directive/no_delimit.hpp deleted file mode 100644 index a1c81269bffe..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/directive/no_delimit.hpp +++ /dev/null @@ -1,116 +0,0 @@ -// 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_NO_DELIMIT_JAN_19_2010_0920AM) -#define BOOST_SPIRIT_KARMA_NO_DELIMIT_JAN_19_2010_0920AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_directive // enables no_delimit[] - : mpl::true_ {}; - -}} - -namespace boost { namespace spirit { namespace karma -{ -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using spirit::no_delimit; -#endif - using spirit::no_delimit_type; - - /////////////////////////////////////////////////////////////////////////// - // The no_delimit generator is used for no_delimit[...] directives. - /////////////////////////////////////////////////////////////////////////// - template - struct no_delimit_generator - : unary_generator > - { - typedef Subject subject_type; - typedef typename subject_type::properties properties; - - template - struct attribute - : traits::attribute_of - {}; - - no_delimit_generator(Subject const& subject) - : subject(subject) {} - - template - bool generate(OutputIterator& sink, Context& ctx, Delimiter const& d - , Attribute const& attr) const - { - // the no_delimit generator simply dispatches to the embedded - // generator while supplying unused_delimiter as the new delimiter - // to avoid delimiting down the generator stream - typedef detail::unused_delimiter unused_delimiter; - - // the difference to verbatim[] is that this does not post-delimit - return subject.generate(sink, ctx, unused_delimiter(d), attr); - } - - template - info what(Context& context) const - { - return info("no_delimit", subject.what(context)); - } - - Subject subject; - }; - - /////////////////////////////////////////////////////////////////////////// - // Generator generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_directive - { - typedef no_delimit_generator result_type; - - result_type - operator()(unused_type, Subject const& subject, unused_type) const - { - return result_type(subject); - } - }; - -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct has_semantic_action > - : unary_has_semantic_action {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container, Attribute - , Context, Iterator> - : unary_handles_container {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/directive/omit.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/directive/omit.hpp deleted file mode 100644 index 55633b6744fc..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/directive/omit.hpp +++ /dev/null @@ -1,143 +0,0 @@ -// 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) - -#ifndef BOOST_SPIRIT_KARMA_DIRECTIVE_OMIT_HPP -#define BOOST_SPIRIT_KARMA_DIRECTIVE_OMIT_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_directive // enables omit - : mpl::true_ {}; - - template <> - struct use_directive // enables skip - : mpl::true_ {}; -}} - -namespace boost { namespace spirit { namespace karma -{ -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using spirit::omit; - using spirit::skip; -#endif - using spirit::omit_type; - using spirit::skip_type; - - /////////////////////////////////////////////////////////////////////////// - // omit_directive consumes the attribute of subject generator without - // generating anything - /////////////////////////////////////////////////////////////////////////// - template - struct omit_directive : unary_generator > - { - typedef Subject subject_type; - - typedef mpl::int_< - generator_properties::disabling | subject_type::properties::value - > properties; - - omit_directive(Subject const& subject) - : subject(subject) {} - - template - struct attribute - : traits::attribute_of - {}; - - template - bool generate(OutputIterator& sink, Context& ctx, Delimiter const& d - , Attribute const& attr) const - { - // We need to actually compile the output operation as we don't - // have any other means to verify, whether the passed attribute is - // compatible with the subject. - -#if defined(_MSC_VER) && _MSC_VER < 1900 -# pragma warning(push) -# pragma warning(disable: 4127) // conditional expression is constant -#endif - // omit[] will execute the code, while skip[] doesn't execute it - if (Execute) { -#if defined(_MSC_VER) && _MSC_VER < 1900 -# pragma warning(pop) -#endif - // wrap the given output iterator to avoid output - detail::disable_output disable(sink); - return subject.generate(sink, ctx, d, attr); - } - return true; - } - - template - info what(Context& context) const - { - return info(Execute ? "omit" : "skip", subject.what(context)); - } - - Subject subject; - }; - - /////////////////////////////////////////////////////////////////////////// - // Generator generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_directive - { - typedef omit_directive result_type; - result_type operator()(unused_type, Subject const& subject - , unused_type) const - { - return result_type(subject); - } - }; - - template - struct make_directive - { - typedef omit_directive result_type; - result_type operator()(unused_type, Subject const& subject - , unused_type) const - { - return result_type(subject); - } - }; -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct has_semantic_action > - : unary_has_semantic_action {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container, Attribute - , Context, Iterator> - : unary_handles_container {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/directive/repeat.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/directive/repeat.hpp deleted file mode 100644 index b2fd2e684d3d..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/directive/repeat.hpp +++ /dev/null @@ -1,392 +0,0 @@ -// Copyright (c) 2001-2011 Hartmut Kaiser -// Copyright (c) 2001-2011 Joel de Guzman -// -// 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) - -#ifndef BOOST_SPIRIT_KARMA_DIRECTIVE_REPEAT_HPP -#define BOOST_SPIRIT_KARMA_DIRECTIVE_REPEAT_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_directive // enables repeat[p] - : mpl::true_ {}; - - template - struct use_directive > - > : mpl::true_ {}; - - template - struct use_directive > - > : mpl::true_ {}; - - template - struct use_directive > - > : mpl::true_ {}; - - template <> // enables *lazy* repeat(exact)[p] - struct use_lazy_directive< - karma::domain - , tag::repeat - , 1 // arity - > : mpl::true_ {}; - - template <> // enables *lazy* repeat(min, max)[p] - struct use_lazy_directive< // and repeat(min, inf)[p] - karma::domain - , tag::repeat - , 2 // arity - > : mpl::true_ {}; -}} - -namespace boost { namespace spirit { namespace karma -{ -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using spirit::repeat; - using spirit::inf; -#endif - using spirit::repeat_type; - using spirit::inf_type; - - /////////////////////////////////////////////////////////////////////////// -#ifdef _MSC_VER -# pragma warning(push) -# pragma warning(disable: 4512) // assignment operator could not be generated. -#endif - // handles repeat(exact)[p] - template - struct exact_iterator - { - exact_iterator(T const exact) - : exact(exact) {} - - typedef T type; - T start() const { return 0; } - bool got_max(T i) const { return i >= exact; } - bool got_min(T i) const { return i >= exact; } - - T const exact; - }; - - // handles repeat(min, max)[p] - template - struct finite_iterator - { - finite_iterator(T const min, T const max) - : min BOOST_PREVENT_MACRO_SUBSTITUTION (min) - , max BOOST_PREVENT_MACRO_SUBSTITUTION (max) {} - - typedef T type; - T start() const { return 0; } - bool got_max(T i) const { return i >= max; } - bool got_min(T i) const { return i >= min; } - - T const min; - T const max; - }; - - // handles repeat(min, inf)[p] - template - struct infinite_iterator - { - infinite_iterator(T const min) - : min BOOST_PREVENT_MACRO_SUBSTITUTION (min) {} - - typedef T type; - T start() const { return 0; } - bool got_max(T /*i*/) const { return false; } - bool got_min(T i) const { return i >= min; } - - T const min; - }; -#ifdef _MSC_VER -# pragma warning(pop) -#endif - - /////////////////////////////////////////////////////////////////////////// - template - struct base_repeat_generator : unary_generator - { - private: - // iterate over the given container until its exhausted or the embedded - // generator succeeds - template - bool generate_subject(F f, Attribute const&, mpl::false_) const - { - // Failing subject generators are just skipped. This allows to - // selectively generate items in the provided attribute. - while (!f.is_at_end()) - { - bool r = !f(subject); - if (r) - return true; - if (!f.is_at_end()) - f.next(); - } - return false; - } - - template - bool generate_subject(F f, Attribute const&, mpl::true_) const - { - return !f(subject); - } - - // There is no way to distinguish a failed generator from a - // generator to be skipped. We assume the user takes responsibility - // for ending the loop if no attribute is specified. - template - bool generate_subject(F f, unused_type, mpl::false_) const - { - return !f(subject); - } - - public: - typedef Subject subject_type; - - typedef mpl::int_ properties; - - // Build a std::vector from the subject's attribute. Note - // that build_std_vector may return unused_type if the - // subject's attribute is an unused_type. - template - struct attribute - : traits::build_std_vector< - typename traits::attribute_of::type - > - {}; - - base_repeat_generator(Subject const& subject, LoopIter const& iter) - : subject(subject), iter(iter) {} - - template - bool generate(OutputIterator& sink, Context& ctx, Delimiter const& d - , Attribute const& attr) const - { - typedef detail::fail_function< - OutputIterator, Context, Delimiter - > fail_function; - - typedef typename traits::container_iterator< - typename add_const::type - >::type iterator_type; - - typedef - typename traits::make_indirect_iterator::type - indirect_iterator_type; - - typedef detail::pass_container< - fail_function, Attribute, indirect_iterator_type, mpl::false_> - pass_container; - - iterator_type it = traits::begin(attr); - iterator_type end = traits::end(attr); - - pass_container pass(fail_function(sink, ctx, d), - indirect_iterator_type(it), indirect_iterator_type(end)); - - // generate the minimal required amount of output - typename LoopIter::type i = iter.start(); - for (/**/; !pass.is_at_end() && !iter.got_min(i); ++i) - { - if (!generate_subject(pass, attr, Strict())) - { - // if we fail before reaching the minimum iteration - // required, do not output anything and return false - return false; - } - } - - if (pass.is_at_end() && !iter.got_min(i)) - return false; // insufficient attribute elements - - // generate some more up to the maximum specified - for (/**/; !pass.is_at_end() && !iter.got_max(i); ++i) - { - if (!generate_subject(pass, attr, Strict())) - break; - } - return detail::sink_is_good(sink); - } - - template - info what(Context& context) const - { - return info("repeat", subject.what(context)); - } - - Subject subject; - LoopIter iter; - }; - - template - struct repeat_generator - : base_repeat_generator< - Subject, LoopIter, mpl::false_ - , repeat_generator > - { - typedef base_repeat_generator< - Subject, LoopIter, mpl::false_, repeat_generator - > base_repeat_generator_; - - repeat_generator(Subject const& subject, LoopIter const& iter) - : base_repeat_generator_(subject, iter) {} - }; - - template - struct strict_repeat_generator - : base_repeat_generator< - Subject, LoopIter, mpl::true_ - , strict_repeat_generator > - { - typedef base_repeat_generator< - Subject, LoopIter, mpl::true_, strict_repeat_generator - > base_repeat_generator_; - - strict_repeat_generator(Subject const& subject, LoopIter const& iter) - : base_repeat_generator_(subject, iter) {} - }; - - /////////////////////////////////////////////////////////////////////////// - // Generator generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_directive - { - typedef typename mpl::if_< - detail::get_stricttag - , strict_kleene, kleene - >::type result_type; - - result_type operator()(unused_type, Subject const& subject - , unused_type) const - { - return result_type(subject); - } - }; - - template - struct make_directive< - terminal_ex >, Subject, Modifiers> - { - typedef exact_iterator iterator_type; - - typedef typename mpl::if_< - detail::get_stricttag - , strict_repeat_generator - , repeat_generator - >::type result_type; - - template - result_type operator()( - Terminal const& term, Subject const& subject, unused_type) const - { - return result_type(subject, fusion::at_c<0>(term.args)); - } - }; - - template - struct make_directive< - terminal_ex >, Subject, Modifiers> - { - typedef finite_iterator iterator_type; - - typedef typename mpl::if_< - detail::get_stricttag - , strict_repeat_generator - , repeat_generator - >::type result_type; - - template - result_type operator()( - Terminal const& term, Subject const& subject, unused_type) const - { - return result_type(subject, - iterator_type( - fusion::at_c<0>(term.args) - , fusion::at_c<1>(term.args) - ) - ); - } - }; - - template - struct make_directive< - terminal_ex >, Subject, Modifiers> - { - typedef infinite_iterator iterator_type; - - typedef typename mpl::if_< - detail::get_stricttag - , strict_repeat_generator - , repeat_generator - >::type result_type; - - template - result_type operator()( - Terminal const& term, Subject const& subject, unused_type) const - { - return result_type(subject, fusion::at_c<0>(term.args)); - } - }; -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct has_semantic_action > - : unary_has_semantic_action {}; - - template - struct has_semantic_action > - : unary_has_semantic_action {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container< - karma::repeat_generator, Attribute - , Context, Iterator> - : mpl::true_ {}; - - template - struct handles_container< - karma::strict_repeat_generator, Attribute - , Context, Iterator> - : mpl::true_ {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/directive/right_alignment.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/directive/right_alignment.hpp deleted file mode 100644 index dbb07aea5cc2..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/directive/right_alignment.hpp +++ /dev/null @@ -1,327 +0,0 @@ -// 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_RIGHT_ALIGNMENT_FEB_27_2007_1216PM) -#define BOOST_SPIRIT_KARMA_RIGHT_ALIGNMENT_FEB_27_2007_1216PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - - // enables right_align[] - template <> - struct use_directive - : mpl::true_ {}; - - // enables right_align(d)[g] and right_align(w)[g], where d is a generator - // and w is a maximum width - template - struct use_directive > > - : mpl::true_ {}; - - // enables *lazy* right_align(d)[g], where d provides a generator - template <> - struct use_lazy_directive - : mpl::true_ {}; - - // enables right_align(w, d)[g], where d is a generator and w is a maximum - // width - template - struct use_directive > > - : spirit::traits::matches {}; - - // enables *lazy* right_align(w, d)[g], where d provides a generator and w - // is a maximum width - template <> - struct use_lazy_directive - : mpl::true_ {}; - -}} - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace karma -{ -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using spirit::right_align; -#endif - using spirit::right_align_type; - - namespace detail - { - /////////////////////////////////////////////////////////////////////// - // The right_align_generate template function is used for all the - // different flavors of the right_align[] directive. - /////////////////////////////////////////////////////////////////////// - template - inline static bool - right_align_generate(OutputIterator& sink, Context& ctx, - Delimiter const& d, Attribute const& attr, Embedded const& e, - unsigned int const width, Padding const& p) - { -#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1600)) - (void)e; // suppresses warning: C4100: 'e' : unreferenced formal parameter -#endif - // wrap the given output iterator to allow left padding - detail::enable_buffering buffering(sink, width); - bool r = false; - - // first generate the embedded output - { - detail::disable_counting nocounting(sink); - r = e.generate(sink, ctx, d, attr); - } // re-enable counting - - buffering.disable(); // do not perform buffering any more - - // generate the left padding - detail::enable_counting counting(sink, buffering.buffer_size()); - while(r && counting.count() < width) - r = p.generate(sink, ctx, unused, unused); - - // copy the buffered output to the target output iterator - if (r) - buffering.buffer_copy(); - return r; - } - } - - /////////////////////////////////////////////////////////////////////////// - // The simple left alignment directive is used for right_align[...] - // generators. It uses default values for the generated width (defined via - // the BOOST_KARMA_DEFAULT_FIELD_LENGTH constant) and for the padding - // generator (always spaces). - /////////////////////////////////////////////////////////////////////////// - template - struct simple_right_alignment - : unary_generator > - { - typedef Subject subject_type; - - typedef mpl::int_< - generator_properties::countingbuffer | subject_type::properties::value - > properties; - - template - struct attribute - : traits::attribute_of - {}; - - simple_right_alignment(Subject const& subject, Width width = Width()) - : subject(subject), width(width) {} - - template - bool generate(OutputIterator& sink, Context& ctx, Delimiter const& d - , Attribute const& attr) const - { - return detail::right_align_generate(sink, ctx, d, attr, - subject, width, compile(' ')); - } - - template - info what(Context& context) const - { - return info("right_align", subject.what(context)); - } - - Subject subject; - Width width; - }; - - /////////////////////////////////////////////////////////////////////////// - // The left alignment directive with padding, is used for generators like - // right_align(padding)[...], where padding is a arbitrary generator - // expression. It uses a default value for the generated width (defined - // via the BOOST_KARMA_DEFAULT_FIELD_LENGTH constant). - /////////////////////////////////////////////////////////////////////////// - template - struct padding_right_alignment - : unary_generator > - { - typedef Subject subject_type; - typedef Padding padding_type; - - typedef mpl::int_< - generator_properties::countingbuffer | - subject_type::properties::value | padding_type::properties::value - > properties; - - template - struct attribute - : traits::attribute_of - {}; - - padding_right_alignment(Subject const& subject, Padding const& padding - , Width width = Width()) - : subject(subject), padding(padding), width(width) {} - - template - bool generate(OutputIterator& sink, Context& ctx, Delimiter const& d - , Attribute const& attr) const - { - return detail::right_align_generate(sink, ctx, d, attr, - subject, width, padding); - } - - template - info what(Context& context) const - { - return info("right_align", subject.what(context)); - } - - Subject subject; - Padding padding; - Width width; - }; - - /////////////////////////////////////////////////////////////////////////// - // Generator generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - - // creates right_align[] directive generator - template - struct make_directive - { - typedef simple_right_alignment result_type; - result_type operator()(unused_type, Subject const& subject - , unused_type) const - { - return result_type(subject); - } - }; - - // creates right_align(width)[] directive generator - template - struct make_directive< - terminal_ex > - , Subject, Modifiers - , typename enable_if_c< integer_traits::is_integral >::type> - { - typedef simple_right_alignment result_type; - - template - result_type operator()(Terminal const& term, Subject const& subject - , unused_type) const - { - return result_type(subject, fusion::at_c<0>(term.args)); - } - }; - - // creates right_align(pad)[] directive generator - template - struct make_directive< - terminal_ex > - , Subject, Modifiers - , typename enable_if< - mpl::and_< - spirit::traits::matches, - mpl::not_::is_integral> > - > - >::type> - { - typedef typename - result_of::compile::type - padding_type; - - typedef padding_right_alignment result_type; - - template - result_type operator()(Terminal const& term, Subject const& subject - , Modifiers const& modifiers) const - { - return result_type(subject - , compile(fusion::at_c<0>(term.args), modifiers)); - } - }; - - // creates right_align(width, pad)[] directive generator - template - struct make_directive< - terminal_ex > - , Subject, Modifiers> - { - typedef typename - result_of::compile::type - padding_type; - - typedef padding_right_alignment result_type; - - template - result_type operator()(Terminal const& term, Subject const& subject - , Modifiers const& modifiers) const - { - return result_type(subject - , compile(fusion::at_c<1>(term.args), modifiers) - , fusion::at_c<0>(term.args)); - } - }; - -}}} // namespace boost::spirit::karma - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct has_semantic_action > - : unary_has_semantic_action {}; - - template - struct has_semantic_action< - karma::padding_right_alignment > - : unary_has_semantic_action {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container< - karma::simple_right_alignment - , Attribute, Context, Iterator> - : unary_handles_container {}; - - template - struct handles_container< - karma::padding_right_alignment - , Attribute, Context, Iterator> - : unary_handles_container {}; -}}} - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/directive/strict_relaxed.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/directive/strict_relaxed.hpp deleted file mode 100644 index d99ce77fa178..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/directive/strict_relaxed.hpp +++ /dev/null @@ -1,78 +0,0 @@ -// 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) - -#ifndef BOOST_SPIRIT_KARMA_DIRECTIVE_STRICT_RELAXED_HPP -#define BOOST_SPIRIT_KARMA_DIRECTIVE_STRICT_RELAXED_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_directive // enables strict[] - : mpl::true_ {}; - - template <> - struct use_directive // enables relaxed[] - : mpl::true_ {}; - - /////////////////////////////////////////////////////////////////////////// - template <> - struct is_modifier_directive - : mpl::true_ {}; - - template <> - struct is_modifier_directive - : mpl::true_ {}; - - /////////////////////////////////////////////////////////////////////////// - // Don't add tag::strict or tag::relaxed if there is already one of those - // in the modifier list - template - struct compound_modifier >::type> - : Current - { - compound_modifier() - : Current() {} - - compound_modifier(Current const& current, tag::strict const&) - : Current(current) {} - }; - - template - struct compound_modifier >::type> - : Current - { - compound_modifier() - : Current() {} - - compound_modifier(Current const& current, tag::relaxed const&) - : Current(current) {} - }; - - namespace karma - { -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using boost::spirit::strict; - using boost::spirit::relaxed; -#endif - using boost::spirit::strict_type; - using boost::spirit::relaxed_type; - } -}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/directive/upper_lower_case.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/directive/upper_lower_case.hpp deleted file mode 100644 index 2edbb6b4bfa4..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/directive/upper_lower_case.hpp +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright (c) 2001-2011 Hartmut Kaiser -// Copyright (c) 2001-2011 Joel de Guzman -// -// 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) - -#ifndef BOOST_SPIRIT_KARMA_DIRECTIVE_UPPER_LOWER_CASE_HPP -#define BOOST_SPIRIT_KARMA_DIRECTIVE_UPPER_LOWER_CASE_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template - struct use_directive< - karma::domain, tag::char_code > // enables upper - : mpl::true_ {}; - - template - struct use_directive< - karma::domain, tag::char_code > // enables lower - : mpl::true_ {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct is_modifier_directive > - : mpl::true_ {}; - - template - struct is_modifier_directive > - : mpl::true_ {}; - - /////////////////////////////////////////////////////////////////////////// - // Don't add tag::upper or tag::lower if there is already one of those in - // the modifier list - template - struct compound_modifier< - Current - , tag::char_code - , typename enable_if< - has_modifier > - >::type - > - : Current - { - compound_modifier() - : Current() {} - - compound_modifier(Current const& current, - tag::char_code const&) - : Current(current) {} - }; - - template - struct compound_modifier< - Current - , tag::char_code - , typename enable_if< - has_modifier > - >::type - > - : Current - { - compound_modifier() - : Current() {} - - compound_modifier(Current const& current, - tag::char_code const&) - : Current(current) {} - }; -}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/directive/verbatim.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/directive/verbatim.hpp deleted file mode 100644 index b6b16806da53..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/directive/verbatim.hpp +++ /dev/null @@ -1,114 +0,0 @@ -// 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_VERBATIM_MAR_02_2007_0303PM) -#define BOOST_SPIRIT_KARMA_VERBATIM_MAR_02_2007_0303PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_directive // enables verbatim[] - : mpl::true_ {}; - -}} - -namespace boost { namespace spirit { namespace karma -{ -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using spirit::verbatim; -#endif - using spirit::verbatim_type; - - /////////////////////////////////////////////////////////////////////////// - // The verbatim generator is used for verbatim[...] directives. - /////////////////////////////////////////////////////////////////////////// - template - struct verbatim_generator : unary_generator > - { - typedef Subject subject_type; - typedef typename subject_type::properties properties; - - template - struct attribute - : traits::attribute_of - {}; - - verbatim_generator(Subject const& subject) - : subject(subject) {} - - template - bool generate(OutputIterator& sink, Context& ctx, Delimiter const& d - , Attribute const& attr) const - { - // the verbatim generator simply dispatches to the embedded - // generator while supplying unused_delimiter as the new delimiter - // to avoid delimiting down the generator stream - typedef detail::unused_delimiter unused_delimiter; - - return subject.generate(sink, ctx, unused_delimiter(d), attr) && - karma::delimit_out(sink, d); // always do post-delimiting - } - - template - info what(Context& context) const - { - return info("verbatim", subject.what(context)); - } - - Subject subject; - }; - - /////////////////////////////////////////////////////////////////////////// - // Generator generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_directive - { - typedef verbatim_generator result_type; - result_type operator()(unused_type, Subject const& subject, unused_type) const - { - return result_type(subject); - } - }; - -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct has_semantic_action > - : unary_has_semantic_action {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container, Attribute - , Context, Iterator> - : unary_handles_container {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/domain.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/domain.hpp deleted file mode 100644 index 8ef771dd383a..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/domain.hpp +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright (c) 2001-2011 Hartmut Kaiser -// Copyright (c) 2001-2011 Joel de Guzman -// -// 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_DOMAIN_FEB_20_2007_0943AM) -#define BOOST_SPIRIT_KARMA_DOMAIN_FEB_20_2007_0943AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include - -#include -#include - -namespace boost { namespace spirit { namespace karma -{ - // karma's domain - struct domain {}; - - // bring in some of spirit parts into spirit::karma - using spirit::unused; - using spirit::unused_type; - using spirit::compile; - using spirit::info; - - // You can bring these in with the using directive - // without worrying about bringing in too much. - namespace labels - { - BOOST_PP_REPEAT(SPIRIT_ARGUMENTS_LIMIT, SPIRIT_USING_ARGUMENT, _) - BOOST_PP_REPEAT(SPIRIT_ATTRIBUTES_LIMIT, SPIRIT_USING_ATTRIBUTE, _) - - using spirit::_pass_type; - using spirit::_val_type; - using spirit::_a_type; - using spirit::_b_type; - using spirit::_c_type; - using spirit::_d_type; - using spirit::_e_type; - using spirit::_f_type; - using spirit::_g_type; - using spirit::_h_type; - using spirit::_i_type; - using spirit::_j_type; - -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - - using spirit::_pass; - using spirit::_val; - using spirit::_a; - using spirit::_b; - using spirit::_c; - using spirit::_d; - using spirit::_e; - using spirit::_f; - using spirit::_g; - using spirit::_h; - using spirit::_i; - using spirit::_j; - -#endif - } - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/format.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/format.hpp deleted file mode 100644 index a6aaa3fe8c1a..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/format.hpp +++ /dev/null @@ -1,16 +0,0 @@ -// 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_FORMAT_DEC_01_2009_0716AM) -#define BOOST_SPIRIT_KARMA_FORMAT_DEC_01_2009_0716AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/format_auto.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/format_auto.hpp deleted file mode 100644 index 183ea7ed48a6..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/format_auto.hpp +++ /dev/null @@ -1,16 +0,0 @@ -// 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_FORMAT_AUTO_DEC_02_2009_1248PM) -#define BOOST_SPIRIT_KARMA_FORMAT_AUTO_DEC_02_2009_1248PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/generate.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/generate.hpp deleted file mode 100644 index 68f9b1883ea9..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/generate.hpp +++ /dev/null @@ -1,232 +0,0 @@ -// 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_GENERATE_DEC_01_2009_0734PM) -#define BOOST_SPIRIT_KARMA_GENERATE_DEC_01_2009_0734PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include - -namespace boost { namespace spirit { namespace karma -{ - /////////////////////////////////////////////////////////////////////////// - template - inline bool - generate( - OutputIterator& sink - , Expr const& expr) - { - return detail::generate_impl::call(sink, expr); - } - - template - inline bool - generate( - OutputIterator const& sink_ - , Expr const& expr) - { - OutputIterator sink = sink_; - return karma::generate(sink, expr); - } - - /////////////////////////////////////////////////////////////////////////// - namespace detail - { - template - struct make_context - { - typedef context, locals<> > type; - }; - - template <> - struct make_context - { - typedef unused_type type; - }; - } - - template - inline bool - generate( - detail::output_iterator& sink - , Expr const& expr - , Attr const& attr) - { - // Report invalid expression error as early as possible. - // If you got an error_invalid_expression error message here, - // then the expression (expr) is not a valid spirit karma expression. - BOOST_SPIRIT_ASSERT_MATCH(karma::domain, Expr); - - typename detail::make_context::type context(attr); - return compile(expr).generate(sink, context, unused, attr); - } - - template - inline bool - generate( - OutputIterator& sink_ - , Expr const& expr - , Attr const& attr) - { - // Report invalid expression error as early as possible. - // If you got an error_invalid_expression error message here, - // then the expression (expr) is not a valid spirit karma expression. - BOOST_SPIRIT_ASSERT_MATCH(karma::domain, Expr); - - typedef traits::properties_of< - typename result_of::compile::type - > properties; - - // wrap user supplied iterator into our own output iterator - detail::output_iterator > sink(sink_); - return karma::generate(sink, expr, attr); - } - - template - inline bool - generate( - OutputIterator const& sink_ - , Expr const& expr - , Attr const& attr) - { - OutputIterator sink = sink_; - return karma::generate(sink, expr, attr); - } - - /////////////////////////////////////////////////////////////////////////// - template - inline bool - generate_delimited( - OutputIterator& sink - , Expr const& expr - , Delimiter const& delimiter - , BOOST_SCOPED_ENUM(delimit_flag) pre_delimit = - delimit_flag::dont_predelimit) - { - return detail::generate_delimited_impl::call( - sink, expr, delimiter, pre_delimit); - } - - template - inline bool - generate_delimited( - OutputIterator const& sink_ - , Expr const& expr - , Delimiter const& delimiter - , BOOST_SCOPED_ENUM(delimit_flag) pre_delimit = - delimit_flag::dont_predelimit) - { - OutputIterator sink = sink_; - return karma::generate_delimited(sink, expr, delimiter, pre_delimit); - } - - /////////////////////////////////////////////////////////////////////////// - template - inline bool - generate_delimited( - detail::output_iterator& sink - , Expr const& expr - , Delimiter const& delimiter - , BOOST_SCOPED_ENUM(delimit_flag) pre_delimit - , Attribute const& attr) - { - // Report invalid expression error as early as possible. - // If you got an error_invalid_expression error message here, - // then either the expression (expr) or skipper is not a valid - // spirit karma expression. - BOOST_SPIRIT_ASSERT_MATCH(karma::domain, Expr); - BOOST_SPIRIT_ASSERT_MATCH(karma::domain, Delimiter); - - typename result_of::compile::type const - delimiter_ = compile(delimiter); - - if (pre_delimit == delimit_flag::predelimit && - !karma::delimit_out(sink, delimiter_)) - { - return false; - } - - typename detail::make_context::type context(attr); - return compile(expr). - generate(sink, context, delimiter_, attr); - } - - template - inline bool - generate_delimited( - OutputIterator& sink_ - , Expr const& expr - , Delimiter const& delimiter - , BOOST_SCOPED_ENUM(delimit_flag) pre_delimit - , Attribute const& attr) - { - typedef traits::properties_of< - typename result_of::compile::type - > properties; - typedef traits::properties_of< - typename result_of::compile::type - > delimiter_properties; - - // wrap user supplied iterator into our own output iterator - detail::output_iterator - > sink(sink_); - return karma::generate_delimited(sink, expr, delimiter, pre_delimit, attr); - } - - template - inline bool - generate_delimited( - OutputIterator const& sink_ - , Expr const& expr - , Delimiter const& delimiter - , BOOST_SCOPED_ENUM(delimit_flag) pre_delimit - , Attribute const& attr) - { - OutputIterator sink = sink_; - return karma::generate_delimited(sink, expr, delimiter, pre_delimit, attr); - } - - /////////////////////////////////////////////////////////////////////////// - template - inline bool - generate_delimited( - OutputIterator& sink - , Expr const& expr - , Delimiter const& delimiter - , Attribute const& attr) - { - return karma::generate_delimited(sink, expr, delimiter - , delimit_flag::dont_predelimit, attr); - } - - template - inline bool - generate_delimited( - OutputIterator const& sink_ - , Expr const& expr - , Delimiter const& delimiter - , Attribute const& attr) - { - OutputIterator sink = sink_; - return karma::generate_delimited(sink, expr, delimiter - , delimit_flag::dont_predelimit, attr); - } -}}} - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/generate_attr.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/generate_attr.hpp deleted file mode 100644 index e2b6e18cdcb4..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/generate_attr.hpp +++ /dev/null @@ -1,212 +0,0 @@ -// 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_PP_IS_ITERATING) - -#if !defined(BOOST_SPIRIT_KARMA_GENERATE_ATTR_APR_23_2009_0541PM) -#define BOOST_SPIRIT_KARMA_GENERATE_ATTR_APR_23_2009_0541PM - -#include - -#include -#include -#include -#include -#include -#include - -#define BOOST_PP_FILENAME_1 -#define BOOST_PP_ITERATION_LIMITS (2, SPIRIT_ARGUMENTS_LIMIT) -#include BOOST_PP_ITERATE() - -#endif - -/////////////////////////////////////////////////////////////////////////////// -// -// Preprocessor vertical repetition code -// -/////////////////////////////////////////////////////////////////////////////// -#else // defined(BOOST_PP_IS_ITERATING) - -#define N BOOST_PP_ITERATION() -#define BOOST_SPIRIT_KARMA_ATTRIBUTE_REFERENCE(z, n, A) \ - BOOST_PP_CAT(A, n) const& - -namespace boost { namespace spirit { namespace karma -{ - /////////////////////////////////////////////////////////////////////////// - template - inline bool - generate( - detail::output_iterator& sink - , Expr const& expr - , BOOST_PP_ENUM_BINARY_PARAMS(N, A, const& attr)) - { - // Report invalid expression error as early as possible. - // If you got an error_invalid_expression error message here, - // then the expression (expr) is not a valid spirit karma expression. - BOOST_SPIRIT_ASSERT_MATCH(karma::domain, Expr); - - typedef fusion::vector< - BOOST_PP_ENUM(N, BOOST_SPIRIT_KARMA_ATTRIBUTE_REFERENCE, A) - > vector_type; - - vector_type attr (BOOST_PP_ENUM_PARAMS(N, attr)); - return compile(expr).generate(sink, unused, unused, attr); - } - - template - inline bool - generate( - OutputIterator& sink_ - , Expr const& expr - , BOOST_PP_ENUM_BINARY_PARAMS(N, A, const& attr)) - { - typedef traits::properties_of< - typename result_of::compile::type - > properties; - - // wrap user supplied iterator into our own output iterator - detail::output_iterator > sink(sink_); - return karma::generate(sink, expr, BOOST_PP_ENUM_PARAMS(N, attr)); - } - - template - inline bool - generate( - OutputIterator const& sink_ - , Expr const& expr - , BOOST_PP_ENUM_BINARY_PARAMS(N, A, const& attr)) - { - OutputIterator sink = sink_; - return karma::generate(sink, expr, BOOST_PP_ENUM_PARAMS(N, attr)); - } - - /////////////////////////////////////////////////////////////////////////// - template - inline bool - generate_delimited( - detail::output_iterator& sink - , Expr const& expr - , Delimiter const& delimiter - , BOOST_SCOPED_ENUM(delimit_flag) pre_delimit - , BOOST_PP_ENUM_BINARY_PARAMS(N, A, const& attr)) - { - // Report invalid expression error as early as possible. - // If you got an error_invalid_expression error message here, - // then either the expression (expr) or skipper is not a valid - // spirit karma expression. - BOOST_SPIRIT_ASSERT_MATCH(karma::domain, Expr); - BOOST_SPIRIT_ASSERT_MATCH(karma::domain, Delimiter); - - typename result_of::compile::type const - delimiter_ = compile(delimiter); - - if (pre_delimit == delimit_flag::predelimit && - !karma::delimit_out(sink, delimiter_)) - { - return false; - } - - typedef fusion::vector< - BOOST_PP_ENUM(N, BOOST_SPIRIT_KARMA_ATTRIBUTE_REFERENCE, A) - > vector_type; - - vector_type attr (BOOST_PP_ENUM_PARAMS(N, attr)); - return compile(expr). - generate(sink, unused, delimiter_, attr); - } - - template - inline bool - generate_delimited( - OutputIterator& sink_ - , Expr const& expr - , Delimiter const& delimiter - , BOOST_SCOPED_ENUM(delimit_flag) pre_delimit - , BOOST_PP_ENUM_BINARY_PARAMS(N, A, const& attr)) - { - typedef traits::properties_of< - typename result_of::compile::type - > properties; - typedef traits::properties_of< - typename result_of::compile::type - > delimiter_properties; - - // wrap user supplied iterator into our own output iterator - detail::output_iterator - > sink(sink_); - return karma::generate_delimited(sink, expr, delimiter, pre_delimit - , BOOST_PP_ENUM_PARAMS(N, attr)); - } - - template - inline bool - generate_delimited( - OutputIterator const& sink_ - , Expr const& expr - , Delimiter const& delimiter - , BOOST_SCOPED_ENUM(delimit_flag) pre_delimit - , BOOST_PP_ENUM_BINARY_PARAMS(N, A, const& attr)) - { - OutputIterator sink = sink_; - return karma::generate_delimited(sink, expr, delimiter, pre_delimit - , BOOST_PP_ENUM_PARAMS(N, attr)); - } - - /////////////////////////////////////////////////////////////////////////// - template - inline bool - generate_delimited( - OutputIterator& sink_ - , Expr const& expr - , Delimiter const& delimiter - , BOOST_PP_ENUM_BINARY_PARAMS(N, A, const& attr)) - { - typedef traits::properties_of< - typename result_of::compile::type - > properties; - typedef traits::properties_of< - typename result_of::compile::type - > delimiter_properties; - - // wrap user supplied iterator into our own output iterator - detail::output_iterator - > sink(sink_); - return karma::generate_delimited(sink, expr, delimiter - , delimit_flag::dont_predelimit, BOOST_PP_ENUM_PARAMS(N, attr)); - } - - template - inline bool - generate_delimited( - OutputIterator const& sink_ - , Expr const& expr - , Delimiter const& delimiter - , BOOST_PP_ENUM_BINARY_PARAMS(N, A, const& attr)) - { - OutputIterator sink = sink_; - return karma::generate_delimited(sink, expr, delimiter - , delimit_flag::dont_predelimit, BOOST_PP_ENUM_PARAMS(N, attr)); - } - -}}} - -#undef BOOST_SPIRIT_KARMA_ATTRIBUTE_REFERENCE -#undef N - -#endif // defined(BOOST_PP_IS_ITERATING) - diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/generator.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/generator.hpp deleted file mode 100644 index a8f06c616e36..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/generator.hpp +++ /dev/null @@ -1,159 +0,0 @@ -// Copyright (c) 2001-2011 Hartmut Kaiser -// Copyright (c) 2001-2011 Joel de Guzman -// -// 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_GENERATOR_JANUARY_13_2009_1002AM) -#define BOOST_SPIRIT_GENERATOR_JANUARY_13_2009_1002AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include - -namespace boost { namespace spirit { namespace karma -{ - struct generator_properties - { - enum enum_type { - no_properties = 0, - buffering = 0x01, // generator requires buffering - counting = 0x02, // generator requires counting - tracking = 0x04, // generator requires position tracking - disabling = 0x08, // generator requires disabling of output - - countingbuffer = 0x03, // buffering | counting - all_properties = 0x0f // buffering | counting | tracking | disabling - }; - }; - - template - struct generator - { - struct generator_id; - typedef mpl::int_ properties; - typedef Derived derived_type; - typedef karma::domain domain; - - // Requirement: g.generate(o, context, delimiter, attr) -> bool - // - // g: a generator - // o: output iterator - // context: enclosing rule context (can be unused_type) - // delimit: delimiter (can be unused_type) - // attr: attribute (can be unused_type) - - // Requirement: g.what(context) -> info - // - // g: a generator - // context: enclosing rule context (can be unused_type) - - // Requirement: G::template attribute::type - // - // G: a generator type - // Ctx: A context type (can be unused_type) - // Iter: An iterator type (always unused_type) - - Derived const& derived() const - { - return *static_cast(this); - } - }; - - template - struct primitive_generator : generator - { - struct primitive_generator_id; - }; - - template - struct nary_generator : generator - { - struct nary_generator_id; - - // Requirement: g.elements -> fusion sequence - // - // g: a composite generator - - // Requirement: G::elements_type -> fusion sequence - // - // G: a composite generator type - }; - - template - struct unary_generator : generator - { - struct unary_generator_id; - - // Requirement: g.subject -> subject generator - // - // g: a unary generator - - // Requirement: G::subject_type -> subject generator type - // - // G: a unary generator type - }; - - template - struct binary_generator : generator - { - struct binary_generator_id; - - // Requirement: g.left -> left generator - // - // g: a binary generator - - // Requirement: G::left_type -> left generator type - // - // G: a binary generator type - - // Requirement: g.right -> right generator - // - // g: a binary generator - - // Requirement: G::right_type -> right generator type - // - // G: a binary generator type - }; - -}}} - -namespace boost { namespace spirit { namespace traits // classification -{ - namespace detail - { - // generator tags - BOOST_MPL_HAS_XXX_TRAIT_DEF(generator_id) - BOOST_MPL_HAS_XXX_TRAIT_DEF(primitive_generator_id) - BOOST_MPL_HAS_XXX_TRAIT_DEF(nary_generator_id) - BOOST_MPL_HAS_XXX_TRAIT_DEF(unary_generator_id) - BOOST_MPL_HAS_XXX_TRAIT_DEF(binary_generator_id) - } - - // check for generator tags - template - struct is_generator : detail::has_generator_id {}; - - template - struct is_primitive_generator : detail::has_primitive_generator_id {}; - - template - struct is_nary_generator : detail::has_nary_generator_id {}; - - template - struct is_unary_generator : detail::has_unary_generator_id {}; - - template - struct is_binary_generator : detail::has_binary_generator_id {}; - - // check for generator properties - template - struct properties_of : T::properties {}; - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/meta_compiler.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/meta_compiler.hpp deleted file mode 100644 index 3b8ea5e2124c..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/meta_compiler.hpp +++ /dev/null @@ -1,178 +0,0 @@ -// Copyright (c) 2001-2011 Hartmut Kaiser -// Copyright (c) 2001-2011 Joel de Guzman -// -// 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_META_COMPILER_JANUARY_13_2009_1011AM) -#define BOOST_SPIRIT_KARMA_META_COMPILER_JANUARY_13_2009_1011AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - template - struct use_terminal >::type> // enables generators - : mpl::true_ {}; - - namespace karma - { - template - struct make_primitive // by default, return it as-is - { - typedef T result_type; - - template - T_& operator()(T_& val, unused_type) const - { - return val; - } - - template - T_ const& operator()(T_ const& val, unused_type) const - { - return val; - } - }; - - template - struct make_composite; - - template - struct make_directive - { - typedef Body result_type; - result_type operator()(unused_type, Body const& body, unused_type) const - { - return body; // By default, a directive simply returns its subject - } - }; - } - - // Karma primitive meta-compiler - template <> - struct make_component - { - template - struct result; - - template - struct result - { - typedef typename karma::make_primitive< - typename remove_const::type - , typename remove_reference::type - >::result_type type; - }; - - template - typename result::type - operator()(Elements const& elements, Modifiers const& modifiers) const - { - typedef typename remove_const::type term; - return karma::make_primitive()(elements.car, modifiers); - } - }; - - // Karma composite meta-compiler - template - struct make_component - { - template - struct result; - - template - struct result - { - typedef typename - karma::make_composite::type>::result_type - type; - }; - - template - typename result::type - operator()(Elements const& elements, Modifiers const& modifiers) const - { - return karma::make_composite()( - elements, modifiers); - } - }; - - // Karma function meta-compiler - template <> - struct make_component - { - template - struct result; - - template - struct result - { - typedef typename - karma::make_composite< - typename remove_const::type, - typename Elements::cdr_type, - typename remove_reference::type - >::result_type - type; - }; - - template - typename result::type - operator()(Elements const& elements, Modifiers const& modifiers) const - { - return karma::make_composite< - typename remove_const::type, - typename Elements::cdr_type, - Modifiers>()(elements.cdr, modifiers); - } - }; - - // Karma directive meta-compiler - template <> - struct make_component - { - template - struct result; - - template - struct result - { - typedef typename - karma::make_directive< - typename remove_const::type, - typename remove_const::type, - typename remove_reference::type - >::result_type - type; - }; - - template - typename result::type - operator()(Elements const& elements, Modifiers const& modifiers) const - { - return karma::make_directive< - typename remove_const::type, - typename remove_const::type, - Modifiers>()(elements.car, elements.cdr.car, modifiers); - } - }; - -}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/nonterminal.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/nonterminal.hpp deleted file mode 100644 index 3425bf37d5da..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/nonterminal.hpp +++ /dev/null @@ -1,18 +0,0 @@ -// 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_NONTERMINAL_MAR_05_2007_0539PM) -#define BOOST_SPIRIT_KARMA_NONTERMINAL_MAR_05_2007_0539PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/nonterminal/debug_handler.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/nonterminal/debug_handler.hpp deleted file mode 100644 index 6454eecf7e5a..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/nonterminal/debug_handler.hpp +++ /dev/null @@ -1,130 +0,0 @@ -// Copyright (c) 2001-2011 Hartmut Kaiser -// Copyright (c) 2001-2011 Joel de Guzman -// -// 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_DEBUG_HANDLER_APR_21_2010_0148PM) -#define BOOST_SPIRIT_KARMA_DEBUG_HANDLER_APR_21_2010_0148PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace karma -{ - template < - typename OutputIterator, typename Context, typename Delimiter - , typename Properties, typename F> - struct debug_handler - { - typedef detail::output_iterator - output_iterator; - typedef detail::enable_buffering buffer_type; - - typedef function - function_type; - - debug_handler(function_type subject, F f, std::string const& rule_name) - : subject(subject) - , f(f) - , rule_name(rule_name) - {} - - bool operator()(output_iterator& sink, Context& context - , Delimiter const& delim) const - { - buffer_type buffer(sink); - bool r = false; - - f (sink, context, pre_generate, rule_name, buffer); - { - detail::disable_counting nocount(sink); - r = subject(sink, context, delim); - } - - if (r) - { - f (sink, context, successful_generate, rule_name, buffer); - buffer.buffer_copy(); - return true; - } - f (sink, context, failed_generate, rule_name, buffer); - return false; - } - - function_type subject; - F f; - std::string rule_name; - }; - - template - void debug(rule& r, F f) - { - typedef rule rule_type; - - typedef - debug_handler< - OutputIterator - , typename rule_type::context_type - , typename rule_type::delimiter_type - , typename rule_type::properties - , F> - debug_handler; - r.f = debug_handler(r.f, f, r.name()); - } - - struct simple_trace; - - namespace detail - { - // This class provides an extra level of indirection through a - // template to produce the simple_trace type. This way, the use - // of simple_trace below is hidden behind a dependent type, so - // that compilers eagerly type-checking template definitions - // won't complain that simple_trace is incomplete. - template - struct get_simple_trace - { - typedef simple_trace type; - }; - } - - template - void debug(rule& r) - { - typedef rule rule_type; - - typedef - debug_handler< - OutputIterator - , typename rule_type::context_type - , typename rule_type::delimiter_type - , typename rule_type::properties - , simple_trace> - debug_handler; - typedef typename karma::detail::get_simple_trace::type - trace; - r.f = debug_handler(r.f, trace(), r.name()); - } - -}}} - -/////////////////////////////////////////////////////////////////////////////// -// Utility macro for easy enabling of rule and grammar debugging -#if !defined(BOOST_SPIRIT_DEBUG_NODE) - #if defined(BOOST_SPIRIT_KARMA_DEBUG) - #define BOOST_SPIRIT_DEBUG_NODE(r) r.name(#r); debug(r) - #else - #define BOOST_SPIRIT_DEBUG_NODE(r) r.name(#r); - #endif -#endif - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/nonterminal/debug_handler_state.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/nonterminal/debug_handler_state.hpp deleted file mode 100644 index cffe9d1ffaf1..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/nonterminal/debug_handler_state.hpp +++ /dev/null @@ -1,23 +0,0 @@ -// 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_DEBUG_HANDLER_STATE_APR_21_2010_0736PM) -#define BOOST_SPIRIT_KARMA_DEBUG_HANDLER_STATE_APR_21_2010_0736PM - -#if defined(_MSC_VER) -#pragma once -#endif - -namespace boost { namespace spirit { namespace karma -{ - enum debug_handler_state - { - pre_generate - , successful_generate - , failed_generate - }; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/nonterminal/detail/fcall.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/nonterminal/detail/fcall.hpp deleted file mode 100644 index 8a5cf173ee9d..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/nonterminal/detail/fcall.hpp +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright (c) 2001-2011 Joel de Guzman -// 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) - -#ifndef BOOST_PP_IS_ITERATING - -#include -#include -#include - -#define BOOST_PP_FILENAME_1 \ - -#define BOOST_PP_ITERATION_LIMITS (1, SPIRIT_ARGUMENTS_LIMIT) -#include BOOST_PP_ITERATE() - -/////////////////////////////////////////////////////////////////////////////// -// -// Preprocessor vertical repetition code -// -/////////////////////////////////////////////////////////////////////////////// -#else // defined(BOOST_PP_IS_ITERATING) - -#define N BOOST_PP_ITERATION() - - template - typename lazy_enable_if_c< - (params_size == N) - , proto::terminal< - spirit::karma::parameterized_nonterminal< - parameterized_subject_type - , fusion::vector > - > - >::type - operator()(BOOST_PP_ENUM_BINARY_PARAMS(N, A, const& f)) const - { - typedef fusion::vector vector_type; - typedef spirit::karma::parameterized_nonterminal< - parameterized_subject_type, vector_type> parameterized_type; - typedef typename proto::terminal::type result_type; - - return result_type::make( - parameterized_type( - this->get_parameterized_subject() - , fusion::make_vector(BOOST_PP_ENUM_PARAMS(N, f))) - ); - } - -#undef N -#endif // defined(BOOST_PP_IS_ITERATING) - - diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/nonterminal/detail/generator_binder.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/nonterminal/detail/generator_binder.hpp deleted file mode 100644 index ea9516f2ac65..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/nonterminal/detail/generator_binder.hpp +++ /dev/null @@ -1,86 +0,0 @@ -// Copyright (c) 2001-2011 Joel de Guzman -// 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_GENERATOR_BINDER_APR_17_2009_0952PM) -#define BOOST_SPIRIT_GENERATOR_BINDER_APR_17_2009_0952PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include - -namespace boost { namespace spirit { namespace karma { namespace detail -{ - // generator_binder for plain rules - template - struct generator_binder - { - generator_binder(Generator const& g) - : g(g) {} - - template - bool call(OutputIterator& sink, Context& context - , Delimiter const& delim, mpl::true_) const - { - // If DeducedAuto is false (semantic actions is present), the - // component's attribute is unused. - return g.generate(sink, context, delim, unused); - } - - template - bool call(OutputIterator& sink, Context& context - , Delimiter const& delim, mpl::false_) const - { - // If DeducedAuto is true (no semantic action), we pass the rule's - // attribute on to the component. - return g.generate(sink, context, delim - , fusion::at_c<0>(context.attributes)); - } - - template - bool operator()(OutputIterator& sink, Context& context - , Delimiter const& delim) const - { - // If Auto is false, we need to deduce whether to apply auto rule - typedef typename traits::has_semantic_action::type auto_rule; - return call(sink, context, delim, auto_rule()); - } - - Generator g; - }; - - // generator_binder for auto rules - template - struct generator_binder - { - generator_binder(Generator const& g) - : g(g) {} - - template - bool operator()(OutputIterator& sink, Context& context - , Delimiter const& delim) const - { - // If Auto is true, the component's attribute is unused. - return g.generate(sink, context, delim - , fusion::at_c<0>(context.attributes)); - } - - Generator g; - }; - - template - inline generator_binder - bind_generator(Generator const& g) - { - return generator_binder(g); - } - -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/nonterminal/detail/parameterized.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/nonterminal/detail/parameterized.hpp deleted file mode 100644 index 1d708089c5a5..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/nonterminal/detail/parameterized.hpp +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright (c) 2001-2011 Joel de Guzman -// Copyright (c) 2001-2011 Hartmut Kaiser -// Copyright (c) 2009 Francois Barel -// -// 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_PARAMETERIZED_AUGUST_09_2009_0601AM) -#define BOOST_SPIRIT_KARMA_PARAMETERIZED_AUGUST_09_2009_0601AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include - -#include -#include - -namespace boost { namespace spirit { namespace karma -{ - /////////////////////////////////////////////////////////////////////////// - // parameterized_nonterminal: generator representing the invocation of a - // nonterminal, passing inherited attributes - /////////////////////////////////////////////////////////////////////////// - template - struct parameterized_nonterminal - : generator > - { - typedef mpl::int_ properties; - - parameterized_nonterminal(Subject const& subject, Params const& params) - : ref(subject), params(params) - { - } - - template - struct attribute - // Forward to subject. - : Subject::template attribute {}; - - template - bool generate(OutputIterator& sink, Context& context - , Delimiter const& delim, Attribute const& attr) const - { - // Forward to subject, passing the additional - // params argument to generate. - return ref.get().generate(sink, context, delim, attr, params); - } - - template - info what(Context& context) const - { - // Forward to subject. - return ref.get().what(context); - } - - boost::reference_wrapper ref; - Params params; - }; -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container - , Attribute, Context, Iterator> - : handles_container::type - , Attribute, Context, Iterator> - {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/nonterminal/grammar.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/nonterminal/grammar.hpp deleted file mode 100644 index f71cadbd3fc4..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/nonterminal/grammar.hpp +++ /dev/null @@ -1,136 +0,0 @@ -// Copyright (c) 2001-2011 Joel de Guzman -// 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_GRAMMAR_MAR_05_2007_0542PM) -#define BOOST_SPIRIT_KARMA_GRAMMAR_MAR_05_2007_0542PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace karma -{ - template < - typename OutputIterator, typename T1, typename T2, typename T3 - , typename T4> - struct grammar - : proto::extends< - typename proto::terminal< - reference const> - >::type - , grammar - > - , generator > - , noncopyable - { - typedef OutputIterator iterator_type; - typedef rule start_type; - typedef typename start_type::properties properties; - typedef typename start_type::sig_type sig_type; - typedef typename start_type::locals_type locals_type; - typedef typename start_type::delimiter_type delimiter_type; - typedef typename start_type::encoding_type encoding_type; - typedef grammar base_type; - typedef reference reference_; - typedef typename proto::terminal::type terminal; - - static size_t const params_size = start_type::params_size; - - template - struct attribute - { - typedef typename start_type::attr_type type; - }; - - // the output iterator is always wrapped by karma - typedef detail::output_iterator - output_iterator; - - grammar(start_type const& start - , std::string const& name_ = "unnamed-grammar") - : proto::extends(terminal::make(reference_(start))) - , name_(name_) - {} - - // This constructor is used to catch if the start rule is not - // compatible with the grammar. - template - grammar(rule const& - , std::string const& = "unnamed-grammar") - { - // If you see the assertion below failing then the start rule - // passed to the constructor of the grammar is not compatible with - // the grammar (i.e. it uses different template parameters). - BOOST_SPIRIT_ASSERT_MSG( - (is_same >::value) - , incompatible_start_rule, (rule)); - } - - std::string name() const - { - return name_; - } - - void name(std::string const& str) - { - name_ = str; - } - - template - bool generate(output_iterator& sink, Context& context - , Delimiter const& delim, Attribute const& attr) const - { - return this->proto_base().child0.generate( - sink, context, delim, attr); - } - - template - info what(Context&) const - { - return info(name_); - } - - // bring in the operator() overloads - start_type const& get_parameterized_subject() const - { return this->proto_base().child0.ref.get(); } - typedef start_type parameterized_subject_type; - #include - - std::string name_; - }; -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template < - typename IteratorA, typename IteratorB, typename Attribute - , typename Context, typename T1, typename T2, typename T3, typename T4> - struct handles_container< - karma::grammar, Attribute, Context - , IteratorB> - : detail::nonterminal_handles_container< - typename attribute_of< - karma::grammar - , Context, IteratorB - >::type, Attribute> - {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/nonterminal/nonterminal_fwd.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/nonterminal/nonterminal_fwd.hpp deleted file mode 100644 index bc974f2e0f55..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/nonterminal/nonterminal_fwd.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// 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_NONTERMINAL_FWD_DEC_18_2010_0913PM) -#define BOOST_SPIRIT_KARMA_NONTERMINAL_FWD_DEC_18_2010_0913PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include - -namespace boost { namespace spirit { namespace karma -{ - // forward declaration only - template < - typename OutputIterator, typename T1 = unused_type - , typename T2 = unused_type, typename T3 = unused_type - , typename T4 = unused_type> - struct rule; - - template < - typename OutputIterator, typename T1 = unused_type - , typename T2 = unused_type, typename T3 = unused_type - , typename T4 = unused_type> - struct grammar; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/nonterminal/rule.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/nonterminal/rule.hpp deleted file mode 100644 index 5c2da461c36e..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/nonterminal/rule.hpp +++ /dev/null @@ -1,445 +0,0 @@ -// Copyright (c) 2001-2011 Joel de Guzman -// 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_RULE_MAR_05_2007_0455PM) -#define BOOST_SPIRIT_KARMA_RULE_MAR_05_2007_0455PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -#if defined(BOOST_MSVC) -# pragma warning(push) -# pragma warning(disable: 4127) // conditional expression is constant -# pragma warning(disable: 4355) // 'this' : used in base member initializer list warning -#endif - -namespace boost { namespace spirit { namespace karma -{ - BOOST_PP_REPEAT(SPIRIT_ATTRIBUTES_LIMIT, SPIRIT_USING_ATTRIBUTE, _) - - using spirit::_pass_type; - using spirit::_val_type; - using spirit::_a_type; - using spirit::_b_type; - using spirit::_c_type; - using spirit::_d_type; - using spirit::_e_type; - using spirit::_f_type; - using spirit::_g_type; - using spirit::_h_type; - using spirit::_i_type; - using spirit::_j_type; - -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - - using spirit::_pass; - using spirit::_val; - using spirit::_a; - using spirit::_b; - using spirit::_c; - using spirit::_d; - using spirit::_e; - using spirit::_f; - using spirit::_g; - using spirit::_h; - using spirit::_i; - using spirit::_j; - -#endif - - using spirit::info; - using spirit::locals; - - template < - typename OutputIterator, typename T1, typename T2, typename T3 - , typename T4> - struct rule - : proto::extends< - typename proto::terminal< - reference const> - >::type - , rule - > - , generator > - { - typedef mpl::int_ properties; - - typedef OutputIterator iterator_type; - typedef rule this_type; - typedef reference reference_; - typedef typename proto::terminal::type terminal; - typedef proto::extends base_type; - typedef mpl::vector template_params; - - // the output iterator is always wrapped by karma - typedef detail::output_iterator - output_iterator; - - // locals_type is a sequence of types to be used as local variables - typedef typename - spirit::detail::extract_locals::type - locals_type; - - // The delimiter-generator type - typedef typename - spirit::detail::extract_component< - karma::domain, template_params>::type - delimiter_type; - - // The rule's encoding type - typedef typename - spirit::detail::extract_encoding::type - encoding_type; - - // The rule's signature - typedef typename - spirit::detail::extract_sig::type - sig_type; - - // This is the rule's attribute type - typedef typename - spirit::detail::attr_from_sig::type - attr_type; - BOOST_STATIC_ASSERT_MSG( - !is_reference::value && !is_const::value, - "Const/reference qualifiers on Karma rule attribute are meaningless"); - typedef attr_type const& attr_reference_type; - - // parameter_types is a sequence of types passed as parameters to the rule - typedef typename - spirit::detail::params_from_sig::type - parameter_types; - - static size_t const params_size = - fusion::result_of::size::type::value; - - // the context passed to the right hand side of a rule contains - // the attribute and the parameters for this particular rule invocation - typedef context< - fusion::cons - , locals_type> - context_type; - - typedef function< - bool(output_iterator&, context_type&, delimiter_type const&)> - function_type; - - typedef typename - mpl::if_< - is_same - , unused_type - , tag::char_code - >::type - encoding_modifier_type; - - explicit rule(std::string const& name_ = "unnamed-rule") - : base_type(terminal::make(reference_(*this))) - , name_(name_) - { - } - - rule(rule const& rhs) - : base_type(terminal::make(reference_(*this))) - , name_(rhs.name_) - , f(rhs.f) - { - } - - template - static void define(rule& /* lhs */, Expr const& /* expr */, mpl::false_) - { - // Report invalid expression error as early as possible. - // If you got an error_invalid_expression error message here, - // then the expression (expr) is not a valid spirit karma expression. - BOOST_SPIRIT_ASSERT_MATCH(karma::domain, Expr); - } - - template - static void define(rule& lhs, Expr const& expr, mpl::true_) - { - lhs.f = detail::bind_generator( - compile(expr, encoding_modifier_type())); - } - - template - rule (Expr const& expr, std::string const& name_ = "unnamed-rule") - : base_type(terminal::make(reference_(*this))) - , name_(name_) - { - define(*this, expr, traits::matches()); - } - - rule& operator=(rule const& rhs) - { - // The following assertion fires when you try to initialize a rule - // from an uninitialized one. Did you mean to refer to the right - // hand side rule instead of assigning from it? In this case you - // should write lhs = rhs.alias(); - BOOST_ASSERT(rhs.f && "Did you mean rhs.alias() instead of rhs?"); - - f = rhs.f; - name_ = rhs.name_; - return *this; - } - - std::string const& name() const - { - return name_; - } - - void name(std::string const& str) - { - name_ = str; - } - - template - rule& operator=(Expr const& expr) - { - define(*this, expr, traits::matches()); - return *this; - } - -// VC7.1 has problems to resolve 'rule' without explicit template parameters -#if !BOOST_WORKAROUND(BOOST_MSVC, < 1400) - // g++ 3.3 barfs if this is a member function :( - template - friend rule& operator%=(rule& r, Expr const& expr) - { - define(r, expr, traits::matches()); - return r; - } - -#if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) - // non-const version needed to suppress proto's %= kicking in - template - friend rule& operator%=(rule& r, Expr& expr) - { - return r %= static_cast(expr); - } -#else - // for rvalue references - template - friend rule& operator%=(rule& r, Expr&& expr) - { - define(r, expr, traits::matches()); - return r; - } -#endif - -#else - // both friend functions have to be defined out of class as VC7.1 - // will complain otherwise - template - friend rule& operator%=( - rule&r, Expr const& expr); - - // non-const version needed to suppress proto's %= kicking in - template - friend rule& operator%=( - rule& r, Expr& expr); -#endif - - template - struct attribute - { - typedef attr_type type; - }; - - template - bool generate(output_iterator& sink, Context&, Delimiter const& delim - , Attribute const& attr) const - { - if (f) - { - // Create an attribute if none is supplied. - typedef traits::transform_attribute< - Attribute const, attr_type, domain> - transform; - - typename transform::type attr_ = transform::pre(attr); - - // If you are seeing a compilation error here, you are probably - // trying to use a rule or a grammar which has inherited - // attributes, without passing values for them. - context_type context(attr_); - - // If you are seeing a compilation error here stating that the - // third parameter can't be converted to a karma::reference - // then you are probably trying to use a rule or a grammar with - // an incompatible delimiter type. - if (f(sink, context, delim)) - { - // do a post-delimit if this is an implied verbatim - if (is_same::value) - karma::delimit_out(sink, delim); - - return true; - } - } - return false; - } - - template - bool generate(output_iterator& sink, Context& caller_context - , Delimiter const& delim, Attribute const& attr - , Params const& params) const - { - if (f) - { - // Create an attribute if none is supplied. - typedef traits::transform_attribute< - Attribute const, attr_type, domain> - transform; - - typename transform::type attr_ = transform::pre(attr); - - // If you are seeing a compilation error here, you are probably - // trying to use a rule or a grammar which has inherited - // attributes, passing values of incompatible types for them. - context_type context(attr_, params, caller_context); - - // If you are seeing a compilation error here stating that the - // third parameter can't be converted to a karma::reference - // then you are probably trying to use a rule or a grammar with - // an incompatible delimiter type. - if (f(sink, context, delim)) - { - // do a post-delimit if this is an implied verbatim - if (is_same::value) - karma::delimit_out(sink, delim); - - return true; - } - } - return false; - } - - template - info what(Context& /*context*/) const - { - return info(name_); - } - - reference_ alias() const - { - return reference_(*this); - } - - typename proto::terminal::type copy() const - { - typename proto::terminal::type result = {*this}; - return result; - } - - // bring in the operator() overloads - rule const& get_parameterized_subject() const { return *this; } - typedef rule parameterized_subject_type; - #include - - std::string name_; - function_type f; - }; - -#if BOOST_WORKAROUND(BOOST_MSVC, < 1400) - template - rule& operator%=( - rule&r, Expr const& expr) - { - // Report invalid expression error as early as possible. - // If you got an error_invalid_expression error message here, then - // the expression (expr) is not a valid spirit karma expression. - BOOST_SPIRIT_ASSERT_MATCH(karma::domain, Expr); - - typedef typename - rule::encoding_modifier_type - encoding_modifier_type; - - r.f = detail::bind_generator( - compile(expr, encoding_modifier_type())); - return r; - } - - // non-const version needed to suppress proto's %= kicking in - template - rule& operator%=( - rule& r, Expr& expr) - { - return r %= static_cast(expr); - } -#endif -}}} - -namespace boost { namespace spirit { namespace traits -{ - namespace detail - { - template - struct nonterminal_handles_container - : mpl::and_< - traits::is_container - , is_convertible > - {}; - } - - /////////////////////////////////////////////////////////////////////////// - template < - typename IteratorA, typename IteratorB, typename Attribute - , typename Context, typename T1, typename T2, typename T3, typename T4> - struct handles_container< - karma::rule, Attribute, Context - , IteratorB> - : detail::nonterminal_handles_container< - typename attribute_of< - karma::rule - , Context, IteratorB - >::type, Attribute> - {}; -}}} - -#if defined(BOOST_MSVC) -# pragma warning(pop) -#endif - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/nonterminal/simple_trace.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/nonterminal/simple_trace.hpp deleted file mode 100644 index 97c768f894eb..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/nonterminal/simple_trace.hpp +++ /dev/null @@ -1,134 +0,0 @@ -// Copyright (c) 2001-2011 Hartmut Kaiser -// Copyright (c) 2001-2011 Joel de Guzman -// -// 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_SIMPLE_TRACE_APR_21_2010_0155PM) -#define BOOST_SPIRIT_KARMA_SIMPLE_TRACE_APR_21_2010_0155PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include - -// The stream to use for debug output -#if !defined(BOOST_SPIRIT_DEBUG_OUT) -#define BOOST_SPIRIT_DEBUG_OUT std::cerr -#endif - -// number of tokens to print while debugging -#if !defined(BOOST_SPIRIT_DEBUG_PRINT_SOME) -#define BOOST_SPIRIT_DEBUG_PRINT_SOME 20 -#endif - -// number of spaces to indent -#if !defined(BOOST_SPIRIT_DEBUG_INDENT) -#define BOOST_SPIRIT_DEBUG_INDENT 2 -#endif - -namespace boost { namespace spirit { namespace karma -{ - struct simple_trace - { - int& get_indent() const - { - static int indent = 0; - return indent; - } - - void print_indent() const - { - int n = get_indent(); - n *= BOOST_SPIRIT_DEBUG_INDENT; - for (int i = 0; i != n; ++i) - BOOST_SPIRIT_DEBUG_OUT << ' '; - } - - template - void print_some(char const* tag, Buffer const& buffer) const - { - print_indent(); - BOOST_SPIRIT_DEBUG_OUT << '<' << tag << '>' << std::flush; - { - std::ostreambuf_iterator out(BOOST_SPIRIT_DEBUG_OUT); - buffer.buffer_copy_to(out, BOOST_SPIRIT_DEBUG_PRINT_SOME); - } - BOOST_SPIRIT_DEBUG_OUT << "' << std::endl; - } - - template - void operator()( - OutputIterator&, Context const& context - , State state, std::string const& rule_name - , Buffer const& buffer) const - { - switch (state) - { - case pre_generate: - print_indent(); - ++get_indent(); - BOOST_SPIRIT_DEBUG_OUT - << '<' << rule_name << '>' << std::endl; - print_indent(); - ++get_indent(); - BOOST_SPIRIT_DEBUG_OUT << "" << std::endl;; - print_indent(); - BOOST_SPIRIT_DEBUG_OUT << ""; - traits::print_attribute( - BOOST_SPIRIT_DEBUG_OUT, - context.attributes - ); - BOOST_SPIRIT_DEBUG_OUT << "" << std::endl; - if (!fusion::empty(context.locals)) - { - print_indent(); - BOOST_SPIRIT_DEBUG_OUT - << "" << context.locals << "" - << std::endl; - } - --get_indent(); - print_indent(); - BOOST_SPIRIT_DEBUG_OUT << "" << std::endl;; - break; - - case successful_generate: - print_indent(); - ++get_indent(); - BOOST_SPIRIT_DEBUG_OUT << "" << std::endl; - print_some("result", buffer); - if (!fusion::empty(context.locals)) - { - print_indent(); - BOOST_SPIRIT_DEBUG_OUT - << "" << context.locals << "" - << std::endl; - } - --get_indent(); - print_indent(); - BOOST_SPIRIT_DEBUG_OUT << "" << std::endl; - --get_indent(); - print_indent(); - BOOST_SPIRIT_DEBUG_OUT - << "' << std::endl; - break; - - case failed_generate: - print_indent(); - BOOST_SPIRIT_DEBUG_OUT << "" << std::endl; - --get_indent(); - print_indent(); - BOOST_SPIRIT_DEBUG_OUT - << "' << std::endl; - break; - } - } - }; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/numeric.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/numeric.hpp deleted file mode 100644 index 474fe8edcb6c..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/numeric.hpp +++ /dev/null @@ -1,18 +0,0 @@ -// 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_NUMERIC_FEB_23_2007_0507PM) -#define BOOST_SPIRIT_KARMA_NUMERIC_FEB_23_2007_0507PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/numeric/bool.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/numeric/bool.hpp deleted file mode 100644 index bb041802a452..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/numeric/bool.hpp +++ /dev/null @@ -1,424 +0,0 @@ -// 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_SEP_28_2009_1113AM) -#define BOOST_SPIRIT_KARMA_BOOL_SEP_28_2009_1113AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit -{ - namespace karma - { - /////////////////////////////////////////////////////////////////////// - // forward declaration only - template - struct bool_policies; - - /////////////////////////////////////////////////////////////////////// - // This is the class that the user can instantiate directly in - // order to create a customized bool generator - template > - struct bool_generator - : spirit::terminal > - { - typedef tag::stateful_tag tag_type; - - bool_generator() {} - bool_generator(Policies const& data) - : spirit::terminal(data) {} - }; - } - - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_terminal // enables bool_ - : mpl::true_ {}; - - template <> - struct use_terminal // enables true_ - : mpl::true_ {}; - - template <> - struct use_terminal // enables false_ - : mpl::true_ {}; - - template <> - struct use_terminal // enables lit(true) - : mpl::true_ {}; - - template - struct use_terminal > - > : mpl::true_ {}; - - template <> // enables *lazy* bool_(...) - struct use_lazy_terminal - : mpl::true_ {}; - - /////////////////////////////////////////////////////////////////////////// - // enables any custom bool_generator - template - struct use_terminal > - : mpl::true_ {}; - - // enables any custom bool_generator(...) - template - struct use_terminal - , fusion::vector1 > > - : mpl::true_ {}; - - // enables *lazy* custom bool_generator - template - struct use_lazy_terminal, 1> - : mpl::true_ {}; - - // enables lit(bool) - template - struct use_terminal > - , typename enable_if >::type> - : mpl::true_ {}; -}} - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace karma -{ -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using spirit::bool_; - using spirit::true_; - using spirit::false_; - using spirit::lit; // lit(true) is equivalent to true -#endif - - using spirit::bool_type; - using spirit::true_type; - using spirit::false_type; - using spirit::lit_type; - - /////////////////////////////////////////////////////////////////////////// - // This specialization is used for bool generators not having a direct - // initializer: bool_. These generators must be used in conjunction with - // an Attribute. - /////////////////////////////////////////////////////////////////////////// - template - struct any_bool_generator - : primitive_generator > - { - public: - any_bool_generator(Policies const& p = Policies()) - : p_(p) {} - - typedef typename Policies::properties properties; - - template - struct attribute - { - typedef T type; - }; - - // bool_ has a Attribute attached - template - bool - generate(OutputIterator& sink, Context& context, Delimiter const& d - , Attribute const& attr) const - { - if (!traits::has_optional_value(attr)) - return false; // fail if it's an uninitialized optional - - return bool_inserter::call( - sink, traits::extract_from(attr, context), p_) && - delimit_out(sink, d); // always do post-delimiting - } - - // this bool_ has no Attribute attached, it needs to have been - // initialized from a direct literal - template - static bool - generate(OutputIterator&, Context&, Delimiter const&, unused_type) - { - // It is not possible (doesn't make sense) to use boolean generators - // without providing any attribute, as the generator doesn't 'know' - // what to output. The following assertion fires if this situation - // is detected in your code. - BOOST_SPIRIT_ASSERT_FAIL(OutputIterator, bool_not_usable_without_attribute, ()); - return false; - } - - template - static info what(Context const& /*context*/) - { - return info("bool"); - } - - Policies p_; - }; - - /////////////////////////////////////////////////////////////////////////// - // This specialization is used for bool generators having a direct - // initializer: bool_(true), bool_(0) etc. - /////////////////////////////////////////////////////////////////////////// - template - struct literal_bool_generator - : primitive_generator > - { - public: - typedef typename Policies::properties properties; - - template - struct attribute - : mpl::if_c - {}; - - literal_bool_generator(typename add_const::type n - , Policies const& p = Policies()) - : n_(n), p_(p) {} - - // A bool_() which additionally has an associated attribute emits - // its immediate literal only if it matches the attribute, otherwise - // it fails. - template - bool generate(OutputIterator& sink, Context& context - , Delimiter const& d, Attribute const& attr) const - { - typedef typename attribute::type attribute_type; - if (!traits::has_optional_value(attr) || - bool(n_) != bool(traits::extract_from(attr, context))) - { - return false; - } - return bool_inserter:: - call(sink, n_, p_) && delimit_out(sink, d); - } - - // A bool_() without any associated attribute just emits its - // immediate literal - template - bool generate(OutputIterator& sink, Context&, Delimiter const& d - , unused_type) const - { - return bool_inserter:: - call(sink, n_) && delimit_out(sink, d); - } - - template - static info what(Context const& /*context*/) - { - return info("bool"); - } - - T n_; - Policies p_; - }; - - /////////////////////////////////////////////////////////////////////////// - // Generator generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - namespace detail - { - template > - struct make_bool - { - static bool const lower = - has_modifier >::value; - static bool const upper = - has_modifier >::value; - - typedef any_bool_generator< - T - , typename spirit::detail::get_encoding_with_case< - Modifiers, unused_type, lower || upper>::type - , typename detail::get_casetag::type - , Policies - > result_type; - - template - result_type operator()(Terminal const& term, unused_type) const - { - typedef tag::stateful_tag tag_type; - using spirit::detail::get_stateful_data; - return result_type(get_stateful_data::call(term)); - } - }; - - template - struct make_bool_literal - { - static bool const lower = - has_modifier >::value; - static bool const upper = - has_modifier >::value; - - typedef literal_bool_generator< - bool - , typename spirit::detail::get_encoding_with_case< - Modifiers, unused_type, lower || upper>::type - , typename detail::get_casetag::type - , bool_policies<>, false - > result_type; - - result_type operator()(unused_type, unused_type) const - { - return result_type(b); - } - }; - } - - /////////////////////////////////////////////////////////////////////////// - template - struct make_primitive - : detail::make_bool {}; - - template - struct make_primitive - : detail::make_bool_literal {}; - - template - struct make_primitive - : detail::make_bool_literal {}; - - template - struct make_primitive< - tag::stateful_tag, Modifiers> - : detail::make_bool::type, Policies> {}; - - /////////////////////////////////////////////////////////////////////////// - namespace detail - { - template > - struct make_bool_direct - { - static bool const lower = - has_modifier >::value; - static bool const upper = - has_modifier >::value; - - typedef literal_bool_generator< - T - , typename spirit::detail::get_encoding_with_case< - Modifiers, unused_type, lower || upper>::type - , typename detail::get_casetag::type - , Policies, false - > result_type; - - template - result_type operator()(Terminal const& term, unused_type) const - { - typedef tag::stateful_tag tag_type; - using spirit::detail::get_stateful_data; - return result_type(fusion::at_c<0>(term.args) - , get_stateful_data::call(term.term)); - } - }; - } - - /////////////////////////////////////////////////////////////////////////// - template - struct make_primitive< - terminal_ex >, Modifiers> - : detail::make_bool_direct {}; - - template - struct make_primitive< - terminal_ex - , fusion::vector1 > - , Modifiers> - : detail::make_bool_direct::type, Policies> {}; - - /////////////////////////////////////////////////////////////////////////// - namespace detail - { - template - struct basic_bool_literal - { - static bool const lower = - has_modifier >::value; - static bool const upper = - has_modifier >::value; - - typedef literal_bool_generator< - bool - , typename spirit::detail::get_encoding_with_case< - Modifiers, unused_type, lower || upper>::type - , typename detail::get_casetag::type - , bool_policies<>, true - > result_type; - - template - result_type operator()(T_ i, unused_type) const - { - return result_type(i); - } - }; - } - - template - struct make_primitive - : detail::basic_bool_literal {}; - - template - struct make_primitive< - terminal_ex > - , Modifiers - , typename enable_if >::type> - : detail::basic_bool_literal - { - static bool const lower = - has_modifier >::value; - static bool const upper = - has_modifier >::value; - - typedef literal_bool_generator< - bool - , typename spirit::detail::get_encoding_with_case< - Modifiers, unused_type, lower || upper>::type - , typename detail::get_casetag::type - , bool_policies<>, true - > result_type; - - template - result_type operator()(Terminal const& term, unused_type) const - { - return result_type(fusion::at_c<0>(term.args)); - } - }; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/numeric/bool_policies.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/numeric/bool_policies.hpp deleted file mode 100644 index 5afc0b8a6aea..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/numeric/bool_policies.hpp +++ /dev/null @@ -1,117 +0,0 @@ -// 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_POLICIES_SEP_28_2009_1203PM) -#define BOOST_SPIRIT_KARMA_BOOL_POLICIES_SEP_28_2009_1203PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace karma -{ - /////////////////////////////////////////////////////////////////////////// - // - // bool_policies, if you need special handling of your boolean output - // just overload this policy class and use it as a template - // parameter to the karma::bool_generator boolean generator - // - // struct special_bool_policy : karma::bool_policies<> - // { - // // we want to spell the names of false as eurt (true backwards) - // template - // static bool generate_false(OutputIterator& sink, bool) - // { - // return string_inserter::call(sink, "eurt"); - // } - // }; - // - // typedef karma::bool_generator backwards_bool; - // - // karma::generate(sink, backwards_bool(), false); // will output: eurt - // - /////////////////////////////////////////////////////////////////////////// - template - struct bool_policies - { - /////////////////////////////////////////////////////////////////////// - // Expose the data type the generator is targeted at - /////////////////////////////////////////////////////////////////////// - typedef T value_type; - - /////////////////////////////////////////////////////////////////////// - // By default the policy doesn't require any special iterator - // functionality. The boolean generator exposes its properties - // from here, so this needs to be updated in case other properties - // need to be implemented. - /////////////////////////////////////////////////////////////////////// - typedef mpl::int_ properties; - - /////////////////////////////////////////////////////////////////////// - // This is the main function used to generate the output for a - // boolean. It is called by the boolean generator in order - // to perform the conversion. In theory all of the work can be - // implemented here, but it is the easiest to use existing - // functionality provided by the type specified by the template - // parameter `Inserter`. - // - // sink: the output iterator to use for generation - // n: the floating point number to convert - // p: the instance of the policy type used to instantiate this - // floating point generator. - /////////////////////////////////////////////////////////////////////// - template - static bool - call (OutputIterator& sink, T n, Policies const& p) - { - return Inserter::call_n(sink, n, p); - } - - /////////////////////////////////////////////////////////////////////// - // Print the textual representations of a true boolean value - // - // sink The output iterator to use for generation - // b The boolean value to convert. - // - // The CharEncoding and Tag template parameters are either of the type - // unused_type or describes the character class and conversion to be - // applied to any output possibly influenced by either the lower[...] - // or upper[...] directives. - // - /////////////////////////////////////////////////////////////////////// - template - static bool generate_true(OutputIterator& sink, T) - { - return string_inserter::call(sink, "true"); - } - - /////////////////////////////////////////////////////////////////////// - // Print the textual representations of a false boolean value - // - // sink The output iterator to use for generation - // b The boolean value to convert. - // - // The CharEncoding and Tag template parameters are either of the type - // unused_type or describes the character class and conversion to be - // applied to any output possibly influenced by either the lower[...] - // or upper[...] directives. - // - /////////////////////////////////////////////////////////////////////// - template - static bool generate_false(OutputIterator& sink, T) - { - return string_inserter::call(sink, "false"); - } - }; - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/numeric/detail/bool_utils.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/numeric/detail/bool_utils.hpp deleted file mode 100644 index e5fa6b46d12a..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/numeric/detail/bool_utils.hpp +++ /dev/null @@ -1,67 +0,0 @@ -// 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 -#include -#include -#include -#include -#include - -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 - struct bool_policies; - - template - , typename CharEncoding = unused_type - , typename Tag = unused_type> - struct bool_inserter - { - template - 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(sink, T(b), p); - } - - /////////////////////////////////////////////////////////////////////// - // This is the workhorse behind the real generator - /////////////////////////////////////////////////////////////////////// - template - 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(sink, b); - return p.template generate_false(sink, b); - } - }; - -}}} - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/numeric/detail/numeric_utils.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/numeric/detail/numeric_utils.hpp deleted file mode 100644 index 77cfba40cd0c..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/numeric/detail/numeric_utils.hpp +++ /dev/null @@ -1,786 +0,0 @@ -// 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_NUMERIC_UTILS_FEB_23_2007_0841PM) -#define BOOST_SPIRIT_KARMA_NUMERIC_UTILS_FEB_23_2007_0841PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include - -/////////////////////////////////////////////////////////////////////////////// -// -// The value BOOST_KARMA_NUMERICS_LOOP_UNROLL specifies, how to unroll the -// integer string generation loop (see below). -// -// Set the value to some integer in between 0 (no unrolling) and the -// largest expected generated integer string length (complete unrolling). -// If not specified, this value defaults to 6. -// -/////////////////////////////////////////////////////////////////////////////// -#if !defined(BOOST_KARMA_NUMERICS_LOOP_UNROLL) -#define BOOST_KARMA_NUMERICS_LOOP_UNROLL 6 -#endif - -#if BOOST_KARMA_NUMERICS_LOOP_UNROLL < 0 -#error "Please set the BOOST_KARMA_NUMERICS_LOOP_UNROLL to a non-negative value!" -#endif - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////// - // - // return the absolute value from a given number, avoiding over- and - // underflow - // - /////////////////////////////////////////////////////////////////////// - template - struct absolute_value - { - typedef T type; - static T call (T n) - { - // allow for ADL to find the correct overloads for fabs - using namespace std; - return fabs(n); - } - }; - -#define BOOST_SPIRIT_ABSOLUTE_VALUE(signedtype, unsignedtype) \ - template <> \ - struct absolute_value \ - { \ - typedef unsignedtype type; \ - static type call(signedtype n) \ - { \ - /* implementation is well-defined for one's complement, */ \ - /* two's complement, and signed magnitude architectures */ \ - /* by the C++ Standard. [conv.integral] [expr.unary.op] */ \ - return (n >= 0) ? static_cast(n) \ - : -static_cast(n); \ - } \ - } \ - /**/ -#define BOOST_SPIRIT_ABSOLUTE_VALUE_UNSIGNED(unsignedtype) \ - template <> \ - struct absolute_value \ - { \ - typedef unsignedtype type; \ - static type call(unsignedtype n) \ - { \ - return n; \ - } \ - } \ - /**/ - -#if defined(BOOST_MSVC) -# pragma warning(push) -// unary minus operator applied to unsigned type, result still unsigned -# pragma warning(disable: 4146) -#endif - BOOST_SPIRIT_ABSOLUTE_VALUE(signed char, unsigned char); - BOOST_SPIRIT_ABSOLUTE_VALUE(char, unsigned char); - BOOST_SPIRIT_ABSOLUTE_VALUE(short, unsigned short); - BOOST_SPIRIT_ABSOLUTE_VALUE(int, unsigned int); - BOOST_SPIRIT_ABSOLUTE_VALUE(long, unsigned long); - BOOST_SPIRIT_ABSOLUTE_VALUE_UNSIGNED(unsigned char); - BOOST_SPIRIT_ABSOLUTE_VALUE_UNSIGNED(unsigned short); - BOOST_SPIRIT_ABSOLUTE_VALUE_UNSIGNED(unsigned int); - BOOST_SPIRIT_ABSOLUTE_VALUE_UNSIGNED(unsigned long); -#ifdef BOOST_HAS_LONG_LONG - BOOST_SPIRIT_ABSOLUTE_VALUE(boost::long_long_type, boost::ulong_long_type); - BOOST_SPIRIT_ABSOLUTE_VALUE_UNSIGNED(boost::ulong_long_type); -#endif -#if defined(BOOST_MSVC) -# pragma warning(pop) -#endif - -#undef BOOST_SPIRIT_ABSOLUTE_VALUE -#undef BOOST_SPIRIT_ABSOLUTE_VALUE_UNSIGNED - - template <> - struct absolute_value - { - typedef float type; - static type call(float n) - { - return (std::fabs)(n); - } - }; - - template <> - struct absolute_value - { - typedef double type; - static type call(double n) - { - return (std::fabs)(n); - } - }; - - template <> - struct absolute_value - { - typedef long double type; - static type call(long double n) - { - return (std::fabs)(n); - } - }; - - // specialization for pointers - template - struct absolute_value - { - typedef std::size_t type; - static type call (T* p) - { - return std::size_t(p); - } - }; - - template - inline typename absolute_value::type - get_absolute_value(T n) - { - return absolute_value::call(n); - } - - /////////////////////////////////////////////////////////////////////// - template - struct is_negative - { - static bool call(T n) - { - return (n < 0) ? true : false; - } - }; - - template <> - struct is_negative - { - static bool call(float n) - { - return (core::signbit)(n) ? true : false; - } - }; - - template <> - struct is_negative - { - static bool call(double n) - { - return (core::signbit)(n) ? true : false; - } - }; - - template <> - struct is_negative - { - static bool call(long double n) - { - return (core::signbit)(n) ? true : false; - } - }; - - template - inline bool test_negative(T n) - { - return is_negative::call(n); - } - - /////////////////////////////////////////////////////////////////////// - template - struct is_zero - { - static bool call(T n) - { - return (n == 0) ? true : false; - } - }; - - template <> - struct is_zero - { - static bool call(float n) - { - return (core::fpclassify)(n) == core::fp_zero; - } - }; - - template <> - struct is_zero - { - static bool call(double n) - { - return (core::fpclassify)(n) == core::fp_zero; - } - }; - - template <> - struct is_zero - { - static bool call(long double n) - { - return (core::fpclassify)(n) == core::fp_zero; - } - }; - - template - inline bool test_zero(T n) - { - return is_zero::call(n); - } - - /////////////////////////////////////////////////////////////////////// - template - struct is_nan - { - static bool call(T n) - { - // NaN numbers are not equal to anything - return (n != n) ? true : false; - } - }; - - template <> - struct is_nan - { - static bool call(float n) - { - return (core::fpclassify)(n) == core::fp_nan; - } - }; - - template <> - struct is_nan - { - static bool call(double n) - { - return (core::fpclassify)(n) == core::fp_nan; - } - }; - - template <> - struct is_nan - { - static bool call(long double n) - { - return (core::fpclassify)(n) == core::fp_nan; - } - }; - - template - inline bool test_nan(T n) - { - return is_nan::call(n); - } - - /////////////////////////////////////////////////////////////////////// - template - struct is_infinite - { - static bool call(T n) - { - return std::numeric_limits::has_infinity - && n == std::numeric_limits::infinity(); - } - }; - - template <> - struct is_infinite - { - static bool call(float n) - { - return (core::fpclassify)(n) == core::fp_infinite; - } - }; - - template <> - struct is_infinite - { - static bool call(double n) - { - return (core::fpclassify)(n) == core::fp_infinite; - } - }; - - template <> - struct is_infinite - { - static bool call(long double n) - { - return (core::fpclassify)(n) == core::fp_infinite; - } - }; - - template - inline bool test_infinite(T n) - { - return is_infinite::call(n); - } - - /////////////////////////////////////////////////////////////////////// - struct cast_to_long - { - static long call(float n, mpl::false_) - { - return static_cast(std::floor(n)); - } - - static long call(double n, mpl::false_) - { - return static_cast(std::floor(n)); - } - - static long call(long double n, mpl::false_) - { - return static_cast(std::floor(n)); - } - - template - static long call(T n, mpl::false_) - { - // allow for ADL to find the correct overload for floor and - // lround - using namespace std; - return lround(floor(n)); - } - - template - static long call(T n, mpl::true_) - { - return static_cast(n); - } - - template - static long call(T n) - { - return call(n, mpl::bool_::value>()); - } - }; - - /////////////////////////////////////////////////////////////////////// - struct truncate_to_long - { - static long call(float n, mpl::false_) - { - return test_negative(n) ? static_cast(std::ceil(n)) : - static_cast(std::floor(n)); - } - - static long call(double n, mpl::false_) - { - return test_negative(n) ? static_cast(std::ceil(n)) : - static_cast(std::floor(n)); - } - - static long call(long double n, mpl::false_) - { - return test_negative(n) ? static_cast(std::ceil(n)) : - static_cast(std::floor(n)); - } - - template - static long call(T n, mpl::false_) - { - // allow for ADL to find the correct overloads for ltrunc - using namespace std; - return ltrunc(n); - } - - template - static long call(T n, mpl::true_) - { - return static_cast(n); - } - - template - static long call(T n) - { - return call(n, mpl::bool_::value>()); - } - }; - - /////////////////////////////////////////////////////////////////////// - // - // Traits class for radix specific number conversion - // - // Convert a digit from binary representation to character - // representation: - // - // static int call(unsigned n); - // - /////////////////////////////////////////////////////////////////////// - namespace detail - { - template - struct convert_digit - { - static int call(unsigned n) - { - if (n <= 9) - return n + '0'; - - using spirit::char_class::convert; - return convert::to(Tag(), n - 10 + 'a'); - } - }; - - template <> - struct convert_digit - { - static int call(unsigned n) - { - if (n <= 9) - return n + '0'; - return n - 10 + 'a'; - } - }; - - template - struct convert_digit - { - static int call(unsigned n) - { - return n + '0'; - } - }; - } - - template - struct convert_digit - : detail::convert_digit - {}; - - /////////////////////////////////////////////////////////////////////// - template - struct divide - { - template - static T call(T& n, mpl::true_) - { - return n / Radix; - } - - template - static T call(T& n, mpl::false_) - { - // Allow ADL to find the correct overload for floor - using namespace std; - return floor(n / Radix); - } - - template - static T call(T& n, T const&, int) - { - return call(n, mpl::bool_::value>()); - } - - template - static T call(T& n) - { - return call(n, mpl::bool_::value>()); - } - }; - - // specialization for division by 10 - template <> - struct divide<10> - { - template - static T call(T& n, T, int, mpl::true_) - { - return n / 10; - } - - template - static T call(T, T& num, int exp, mpl::false_) - { - // Allow ADL to find the correct overload for floor - using namespace std; - return floor(num / spirit::traits::pow10(exp)); - } - - template - static T call(T& n, T& num, int exp) - { - return call(n, num, exp, mpl::bool_::value>()); - } - - template - static T call(T& n) - { - return call(n, n, 1, mpl::bool_::value>()); - } - }; - - /////////////////////////////////////////////////////////////////////// - template - struct remainder - { - template - static long call(T n, mpl::true_) - { - // this cast is safe since we know the result is not larger - // than Radix - return static_cast(n % Radix); - } - - template - static long call(T n, mpl::false_) - { - // Allow ADL to find the correct overload for fmod - using namespace std; - return cast_to_long::call(fmod(n, T(Radix))); - } - - template - static long call(T n) - { - return call(n, mpl::bool_::value>()); - } - }; -}}} - -namespace boost { namespace spirit { namespace karma -{ - /////////////////////////////////////////////////////////////////////////// - // - // The int_inserter template takes care of the integer to string - // conversion. If specified, the loop is unrolled for better performance. - // - // Set the value BOOST_KARMA_NUMERICS_LOOP_UNROLL to some integer in - // between 0 (no unrolling) and the largest expected generated integer - // string length (complete unrolling). - // If not specified, this value defaults to 6. - // - /////////////////////////////////////////////////////////////////////////// -#define BOOST_KARMA_NUMERICS_INNER_LOOP_PREFIX(z, x, data) \ - if (!traits::test_zero(n)) { \ - int ch_##x = radix_type::call(remainder_type::call(n)); \ - n = divide_type::call(n, num, ++exp); \ - /**/ - -#define BOOST_KARMA_NUMERICS_INNER_LOOP_SUFFIX(z, x, n_rolls_sub1) \ - *sink = char(BOOST_PP_CAT(ch_, BOOST_PP_SUB(n_rolls_sub1, x))); \ - ++sink; \ - } \ - /**/ - - template < - unsigned Radix, typename CharEncoding = unused_type - , typename Tag = unused_type> - struct int_inserter - { - typedef traits::convert_digit radix_type; - typedef traits::divide divide_type; - typedef traits::remainder remainder_type; - - template - static bool - call(OutputIterator& sink, T n, T& num, int exp) - { - // remainder_type::call returns n % Radix - int ch = radix_type::call(remainder_type::call(n)); - n = divide_type::call(n, num, ++exp); - - BOOST_PP_REPEAT( - BOOST_KARMA_NUMERICS_LOOP_UNROLL, - BOOST_KARMA_NUMERICS_INNER_LOOP_PREFIX, _); - - if (!traits::test_zero(n)) - call(sink, n, num, exp); - - BOOST_PP_REPEAT( - BOOST_KARMA_NUMERICS_LOOP_UNROLL, - BOOST_KARMA_NUMERICS_INNER_LOOP_SUFFIX, - BOOST_PP_DEC(BOOST_KARMA_NUMERICS_LOOP_UNROLL)); - - *sink = char(ch); - ++sink; - return true; - } - - // Common code for integer string representations - template - static bool - call(OutputIterator& sink, T n) - { - return call(sink, n, n, 0); - } - - private: - // helper function returning the biggest number representable either in - // a boost::long_long_type (if this does exist) or in a plain long - // otherwise -#if defined(BOOST_HAS_LONG_LONG) - typedef boost::long_long_type biggest_long_type; -#else - typedef long biggest_long_type; -#endif - - static biggest_long_type max_long() - { - return (std::numeric_limits::max)(); - } - - public: - // Specialization for doubles and floats, falling back to long integers - // for representable values. These specializations speed up formatting - // of floating point numbers considerably as all the required - // arithmetics will be executed using integral data types. - template - static bool - call(OutputIterator& sink, long double n) - { - if (std::fabs(n) < max_long()) - { - biggest_long_type l((biggest_long_type)n); - return call(sink, l, l, 0); - } - return call(sink, n, n, 0); - } - template - static bool - call(OutputIterator& sink, double n) - { - if (std::fabs(n) < max_long()) - { - biggest_long_type l((biggest_long_type)n); - return call(sink, l, l, 0); - } - return call(sink, n, n, 0); - } - template - static bool - call(OutputIterator& sink, float n) - { - if (std::fabs(n) < max_long()) - { - biggest_long_type l((biggest_long_type)n); - return call(sink, l, l, 0); - } - return call(sink, n, n, 0); - } - }; - -#undef BOOST_KARMA_NUMERICS_INNER_LOOP_PREFIX -#undef BOOST_KARMA_NUMERICS_INNER_LOOP_SUFFIX - - /////////////////////////////////////////////////////////////////////////// - // - // The uint_inserter template takes care of the conversion of any integer - // to a string, while interpreting the number as an unsigned type. - // - /////////////////////////////////////////////////////////////////////////// - template < - unsigned Radix, typename CharEncoding = unused_type - , typename Tag = unused_type> - struct uint_inserter : int_inserter - { - typedef int_inserter base_type; - - // Common code for integer string representations - template - static bool - call(OutputIterator& sink, T const& n) - { - typedef typename traits::absolute_value::type type; - type un = type(n); - return base_type::call(sink, un, un, 0); - } - }; - - /////////////////////////////////////////////////////////////////////////// - // - // The sign_inserter template generates a sign for a given numeric value. - // - // The parameter forcesign allows to generate a sign even for positive - // numbers. - // - /////////////////////////////////////////////////////////////////////////// - struct sign_inserter - { - template - static bool - call_noforce(OutputIterator& sink, bool is_zero, bool is_negative, - bool sign_if_zero) - { - // generate a sign for negative numbers only - if (is_negative || (is_zero && sign_if_zero)) { - *sink = '-'; - ++sink; - } - return true; - } - - template - static bool - call_force(OutputIterator& sink, bool is_zero, bool is_negative, - bool sign_if_zero) - { - // generate a sign for all numbers except zero - if (!is_zero || sign_if_zero) - *sink = is_negative ? '-' : '+'; - else - *sink = ' '; - - ++sink; - return true; - } - - template - static bool - call(OutputIterator& sink, bool is_zero, bool is_negative - , bool forcesign, bool sign_if_zero = false) - { - return forcesign ? - call_force(sink, is_zero, is_negative, sign_if_zero) : - call_noforce(sink, is_zero, is_negative, sign_if_zero); - } - }; - - /////////////////////////////////////////////////////////////////////////// - // These are helper functions for the real policies allowing to generate - // a single character and a string - /////////////////////////////////////////////////////////////////////////// - template - struct char_inserter - { - template - static bool call(OutputIterator& sink, Char c) - { - return detail::generate_to(sink, c, CharEncoding(), Tag()); - } - }; - - template - struct string_inserter - { - template - static bool call(OutputIterator& sink, String str) - { - return detail::string_generate(sink, str, CharEncoding(), Tag()); - } - }; - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/numeric/detail/real_utils.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/numeric/detail/real_utils.hpp deleted file mode 100644 index 0a0c2085670a..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/numeric/detail/real_utils.hpp +++ /dev/null @@ -1,209 +0,0 @@ -// Copyright (c) 2001-2020 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_REAL_UTILS_FEB_23_2007_0841PM) -#define BOOST_SPIRIT_KARMA_REAL_UTILS_FEB_23_2007_0841PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace karma -{ - /////////////////////////////////////////////////////////////////////////// - // - // The real_inserter template takes care of the floating point number to - // string conversion. The Policies template parameter is used to allow - // customization of the formatting process - // - /////////////////////////////////////////////////////////////////////////// - template - struct real_policies; - - template - , typename CharEncoding = unused_type - , typename Tag = unused_type> - struct real_inserter - { - template - static bool - call (OutputIterator& sink, U n, Policies const& p = Policies()) - { - if (traits::test_nan(n)) { - return p.template nan( - sink, n, p.force_sign(n)); - } - else if (traits::test_infinite(n)) { - return p.template inf( - sink, n, p.force_sign(n)); - } - return p.template call(sink, n, p); - } - -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -# pragma warning(push) -# pragma warning(disable: 4100) // 'p': unreferenced formal parameter -# pragma warning(disable: 4127) // conditional expression is constant -# pragma warning(disable: 4267) // conversion from 'size_t' to 'unsigned int', possible loss of data -#endif - /////////////////////////////////////////////////////////////////////// - // This is the workhorse behind the real generator - /////////////////////////////////////////////////////////////////////// - template - static bool - call_n (OutputIterator& sink, U n, Policies const& p) - { - // prepare sign and get output format - bool force_sign = p.force_sign(n); - bool sign_val = false; - int flags = p.floatfield(n); - if (traits::test_negative(n)) - { - n = -n; - sign_val = true; - } - - // The scientific representation requires the normalization of the - // value to convert. - - // get correct precision for generated number - unsigned precision = p.precision(n); - - // allow for ADL to find the correct overloads for log10 et.al. - using namespace std; - - bool precexp_offset = false; - U dim = 0; - if (0 == (Policies::fmtflags::fixed & flags) && !traits::test_zero(n)) - { - dim = log10(n); - if (dim > 0) - n /= spirit::traits::pow10(traits::truncate_to_long::call(dim)); - else if (n < 1.) { - long exp = traits::truncate_to_long::call(-dim); - - dim = static_cast(-exp); - - // detect and handle denormalized numbers to prevent overflow in pow10 - if (exp > std::numeric_limits::max_exponent10) - { - n *= spirit::traits::pow10(std::numeric_limits::max_exponent10); - n *= spirit::traits::pow10(exp - std::numeric_limits::max_exponent10); - } - else - n *= spirit::traits::pow10(exp); - - if (n < 1.) - { - n *= 10.; - --dim; - precexp_offset = true; - } - } - } - - // prepare numbers (sign, integer and fraction part) - U integer_part; - U precexp = spirit::traits::pow10(precision); - U fractional_part = modf(n, &integer_part); - - if (precexp_offset) - { - fractional_part = - floor((fractional_part * precexp + U(0.5)) * U(10.)) / U(10.); - } - else - { - fractional_part = floor(fractional_part * precexp + U(0.5)); - } - - if (fractional_part >= precexp) - { - fractional_part = floor(fractional_part - precexp); - integer_part += 1; // handle rounding overflow - if (integer_part >= 10. && 0 == (Policies::fmtflags::fixed & flags)) - { - integer_part /= 10.; - ++dim; - } - } - - // if trailing zeros are to be omitted, normalize the precision and`` - // fractional part - U long_int_part = floor(integer_part); - U long_frac_part = fractional_part; - unsigned prec = precision; - if (!p.trailing_zeros(n)) - { - U frac_part_floor = long_frac_part; - if (0 != long_frac_part) { - // remove the trailing zeros - while (0 != prec && - 0 == traits::remainder<10>::call(long_frac_part)) - { - long_frac_part = traits::divide<10>::call(long_frac_part); - --prec; - } - } - else { - // if the fractional part is zero, we don't need to output - // any additional digits - prec = 0; - } - - if (precision != prec) - { - long_frac_part = frac_part_floor / - spirit::traits::pow10(precision-prec); - } - } - - // call the actual generating functions to output the different parts - if ((force_sign || sign_val) && - traits::test_zero(long_int_part) && - traits::test_zero(long_frac_part)) - { - sign_val = false; // result is zero, no sign please - force_sign = false; - } - - // generate integer part - bool r = p.integer_part(sink, long_int_part, sign_val, force_sign); - - // generate decimal point - r = r && p.dot(sink, long_frac_part, precision); - - // generate fractional part with the desired precision - r = r && p.fraction_part(sink, long_frac_part, prec, precision); - - if (r && 0 == (Policies::fmtflags::fixed & flags)) { - return p.template exponent(sink, - traits::truncate_to_long::call(dim)); - } - return r; - } - -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -# pragma warning(pop) -#endif - - }; -}}} - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/numeric/int.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/numeric/int.hpp deleted file mode 100644 index 39878e1f97a9..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/numeric/int.hpp +++ /dev/null @@ -1,525 +0,0 @@ -// Copyright (c) 2001-2012 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_INT_FEB_23_2007_0840PM) -#define BOOST_SPIRIT_KARMA_INT_FEB_23_2007_0840PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit -{ - namespace tag - { - template - struct int_generator - { - BOOST_SPIRIT_IS_TAG() - }; - } - - namespace karma - { - /////////////////////////////////////////////////////////////////////// - // This one is the class that the user can instantiate directly in - // order to create a customized int generator - template - struct int_generator - : spirit::terminal > - {}; - } - - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_terminal // enables short_ - : mpl::true_ {}; - - template <> - struct use_terminal // enables int_ - : mpl::true_ {}; - - template <> - struct use_terminal // enables long_ - : mpl::true_ {}; - -#ifdef BOOST_HAS_LONG_LONG - template <> - struct use_terminal // enables long_long - : mpl::true_ {}; -#endif - - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_terminal // enables lit(short(0)) - : mpl::true_ {}; - - template <> - struct use_terminal // enables lit(0) - : mpl::true_ {}; - - template <> - struct use_terminal // enables lit(0L) - : mpl::true_ {}; - -#ifdef BOOST_HAS_LONG_LONG - template <> - struct use_terminal // enables lit(0LL) - : mpl::true_ {}; -#endif - - /////////////////////////////////////////////////////////////////////////// - template - struct use_terminal > - > : mpl::true_ {}; - - template - struct use_terminal > - > : mpl::true_ {}; - - template - struct use_terminal > - > : mpl::true_ {}; - -#ifdef BOOST_HAS_LONG_LONG - template - struct use_terminal > - > : mpl::true_ {}; -#endif - - /////////////////////////////////////////////////////////////////////////// - template <> // enables *lazy* short_(...) - struct use_lazy_terminal - : mpl::true_ {}; - - template <> // enables *lazy* int_(...) - struct use_lazy_terminal - : mpl::true_ {}; - - template <> // enables *lazy* long_(...) - struct use_lazy_terminal - : mpl::true_ {}; - -#ifdef BOOST_HAS_LONG_LONG - template <> // enables *lazy* long_long(...) - struct use_lazy_terminal - : mpl::true_ {}; -#endif - - /////////////////////////////////////////////////////////////////////////// - // enables any custom int_generator - template - struct use_terminal > - : mpl::true_ {}; - - // enables any custom int_generator(...) - template - struct use_terminal - , fusion::vector1 > - > : mpl::true_ {}; - - // enables *lazy* custom int_generator - template - struct use_lazy_terminal< - karma::domain - , tag::int_generator - , 1 // arity - > : mpl::true_ {}; - - // enables lit(int) - template - struct use_terminal > - , typename enable_if >::type> - : mpl::true_ {}; -}} - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace karma -{ -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using spirit::short_; - using spirit::int_; - using spirit::long_; -#ifdef BOOST_HAS_LONG_LONG - using spirit::long_long; -#endif - using spirit::lit; // lit(1) is equivalent to 1 -#endif - - using spirit::short_type; - using spirit::int_type; - using spirit::long_type; -#ifdef BOOST_HAS_LONG_LONG - using spirit::long_long_type; -#endif - - using spirit::lit_type; - - /////////////////////////////////////////////////////////////////////////// - // This specialization is used for int generators not having a direct - // initializer: int_, long_ etc. These generators must be used in - // conjunction with an Attribute. - /////////////////////////////////////////////////////////////////////////// - template < - typename T, typename CharEncoding, typename Tag, unsigned Radix - , bool force_sign> - struct any_int_generator - : primitive_generator > - { - private: - template - static bool insert_int(OutputIterator& sink, Attribute const& attr) - { - return sign_inserter::call(sink, traits::test_zero(attr) - , traits::test_negative(attr), force_sign) && - int_inserter::call(sink - , traits::get_absolute_value(attr)); - } - - public: - template - struct attribute - { - typedef T type; - }; - - // check template Attribute 'Radix' for validity - BOOST_SPIRIT_ASSERT_MSG( - Radix == 2 || Radix == 8 || Radix == 10 || Radix == 16, - not_supported_radix, ()); - - BOOST_SPIRIT_ASSERT_MSG(std::numeric_limits::is_signed, - signed_unsigned_mismatch, ()); - - // int has a Attribute attached - template - static bool - generate(OutputIterator& sink, Context& context, Delimiter const& d - , Attribute const& attr) - { - if (!traits::has_optional_value(attr)) - return false; // fail if it's an uninitialized optional - - return insert_int(sink, traits::extract_from(attr, context)) && - delimit_out(sink, d); // always do post-delimiting - } - - // this int has no Attribute attached, it needs to have been - // initialized from a direct literal - template - static bool - generate(OutputIterator&, Context&, Delimiter const&, unused_type) - { - // It is not possible (doesn't make sense) to use numeric generators - // without providing any attribute, as the generator doesn't 'know' - // what to output. The following assertion fires if this situation - // is detected in your code. - BOOST_SPIRIT_ASSERT_FAIL(OutputIterator, int_not_usable_without_attribute, ()); - return false; - } - - template - static info what(Context const& /*context*/) - { - return info("integer"); - } - }; - - /////////////////////////////////////////////////////////////////////////// - // This specialization is used for int generators having a direct - // initializer: int_(10), long_(20) etc. - /////////////////////////////////////////////////////////////////////////// - template < - typename T, typename CharEncoding, typename Tag, unsigned Radix - , bool force_sign, bool no_attribute> - struct literal_int_generator - : primitive_generator > - { - private: - template - static bool insert_int(OutputIterator& sink, Attribute const& attr) - { - return sign_inserter::call(sink, traits::test_zero(attr) - , traits::test_negative(attr), force_sign) && - int_inserter::call(sink - , traits::get_absolute_value(attr)); - } - - public: - template - struct attribute - : mpl::if_c - {}; - - literal_int_generator(typename add_const::type n) - : n_(n) {} - - // check template Attribute 'Radix' for validity - BOOST_SPIRIT_ASSERT_MSG( - Radix == 2 || Radix == 8 || Radix == 10 || Radix == 16, - not_supported_radix, ()); - - BOOST_SPIRIT_ASSERT_MSG(std::numeric_limits::is_signed, - signed_unsigned_mismatch, ()); - - // A int_(1) which additionally has an associated attribute emits - // its immediate literal only if it matches the attribute, otherwise - // it fails. - template - bool generate(OutputIterator& sink, Context& context - , Delimiter const& d, Attribute const& attr) const - { - typedef typename attribute::type attribute_type; - if (!traits::has_optional_value(attr) || - n_ != traits::extract_from(attr, context)) - { - return false; - } - return insert_int(sink, n_) && delimit_out(sink, d); - } - - // A int_(1) without any associated attribute just emits its - // immediate literal - template - bool generate(OutputIterator& sink, Context&, Delimiter const& d - , unused_type) const - { - return insert_int(sink, n_) && delimit_out(sink, d); - } - - template - static info what(Context const& /*context*/) - { - return info("integer"); - } - - T n_; - }; - - /////////////////////////////////////////////////////////////////////////// - // Generator generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - namespace detail - { - template - struct make_int - { - static bool const lower = - has_modifier >::value; - static bool const upper = - has_modifier >::value; - - typedef any_int_generator< - T - , typename spirit::detail::get_encoding_with_case< - Modifiers, unused_type, lower || upper>::type - , typename detail::get_casetag::type - , Radix - , force_sign - > result_type; - - result_type operator()(unused_type, unused_type) const - { - return result_type(); - } - }; - } - - /////////////////////////////////////////////////////////////////////////// - template - struct make_primitive - : detail::make_int {}; - - template - struct make_primitive - : detail::make_int {}; - - template - struct make_primitive - : detail::make_int {}; - -#ifdef BOOST_HAS_LONG_LONG - template - struct make_primitive - : detail::make_int {}; -#endif - - template - struct make_primitive, Modifiers> - : detail::make_int::type - , Modifiers, Radix, force_sign> {}; - - /////////////////////////////////////////////////////////////////////////// - namespace detail - { - template - struct make_int_direct - { - static bool const lower = - has_modifier >::value; - static bool const upper = - has_modifier >::value; - - typedef literal_int_generator< - T - , typename spirit::detail::get_encoding_with_case< - Modifiers, unused_type, lower || upper>::type - , typename detail::get_casetag::type - , Radix, force_sign, false - > result_type; - - template - result_type operator()(Terminal const& term, unused_type) const - { - return result_type(fusion::at_c<0>(term.args)); - } - }; - } - - /////////////////////////////////////////////////////////////////////////// - template - struct make_primitive< - terminal_ex >, Modifiers> - : detail::make_int_direct {}; - - template - struct make_primitive< - terminal_ex >, Modifiers> - : detail::make_int_direct {}; - - template - struct make_primitive< - terminal_ex >, Modifiers> - : detail::make_int_direct {}; - -#ifdef BOOST_HAS_LONG_LONG - template - struct make_primitive< - terminal_ex >, Modifiers> - : detail::make_int_direct {}; -#endif - - template - struct make_primitive< - terminal_ex - , fusion::vector1 >, Modifiers> - : detail::make_int_direct::type - , Modifiers, Radix, force_sign> {}; - - /////////////////////////////////////////////////////////////////////////// - namespace detail - { - template - struct basic_int_literal - { - static bool const lower = - has_modifier >::value; - static bool const upper = - has_modifier >::value; - - typedef literal_int_generator< - T - , typename spirit::detail::get_encoding_with_case< - Modifiers, unused_type, lower || upper>::type - , typename detail::get_casetag::type - , 10, false, true - > result_type; - - template - result_type operator()(T_ i, unused_type) const - { - return result_type(i); - } - }; - } - - template - struct make_primitive - : detail::basic_int_literal {}; - - template - struct make_primitive - : detail::basic_int_literal {}; - - template - struct make_primitive - : detail::basic_int_literal {}; - -#ifdef BOOST_HAS_LONG_LONG - template - struct make_primitive - : detail::basic_int_literal {}; -#endif - - // lit(int) - template - struct make_primitive< - terminal_ex > - , Modifiers - , typename enable_if >::type> - { - static bool const lower = - has_modifier >::value; - static bool const upper = - has_modifier >::value; - - typedef literal_int_generator< - typename remove_const::type - , typename spirit::detail::get_encoding_with_case< - Modifiers, unused_type, lower || upper>::type - , typename detail::get_casetag::type - , 10, false, true - > result_type; - - template - result_type operator()(Terminal const& term, unused_type) const - { - return result_type(fusion::at_c<0>(term.args)); - } - }; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/numeric/real.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/numeric/real.hpp deleted file mode 100644 index 597ec4e46fd9..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/numeric/real.hpp +++ /dev/null @@ -1,454 +0,0 @@ -// 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_REAL_FEB_26_2007_0512PM) -#define BOOST_SPIRIT_KARMA_REAL_FEB_26_2007_0512PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - namespace karma - { - /////////////////////////////////////////////////////////////////////// - // forward declaration only - template - struct real_policies; - - /////////////////////////////////////////////////////////////////////// - // This is the class that the user can instantiate directly in - // order to create a customized real generator - template > - struct real_generator - : spirit::terminal > - { - typedef tag::stateful_tag tag_type; - - real_generator() {} - real_generator(Policies const& p) - : spirit::terminal(p) {} - }; - } - - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_terminal // enables float_ - : mpl::true_ {}; - - template <> - struct use_terminal // enables double_ - : mpl::true_ {}; - - template <> - struct use_terminal // enables long_double - : mpl::true_ {}; - - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_terminal // enables lit(1.0f) - : mpl::true_ {}; - - template <> - struct use_terminal // enables lit(1.0) - : mpl::true_ {}; - - template <> - struct use_terminal // enables lit(1.0l) - : mpl::true_ {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct use_terminal > - > : mpl::true_ {}; - - template - struct use_terminal > - > : mpl::true_ {}; - - template - struct use_terminal > - > : mpl::true_ {}; - - // lazy float_(...), double_(...), long_double(...) - template <> - struct use_lazy_terminal - : mpl::true_ {}; - - template <> - struct use_lazy_terminal - : mpl::true_ {}; - - template <> - struct use_lazy_terminal - : mpl::true_ {}; - - /////////////////////////////////////////////////////////////////////////// - // enables custom real generator - template - struct use_terminal > - : mpl::true_ {}; - - template - struct use_terminal - , fusion::vector1 > > - : mpl::true_ {}; - - // enables *lazy* custom real generator - template - struct use_lazy_terminal< - karma::domain - , tag::stateful_tag - , 1 // arity - > : mpl::true_ {}; - - // enables lit(double) - template - struct use_terminal > - , typename enable_if >::type> - : mpl::true_ {}; -}} - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace karma -{ -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using spirit::float_; - using spirit::double_; - using spirit::long_double; -#endif - - using spirit::float_type; - using spirit::double_type; - using spirit::long_double_type; - - /////////////////////////////////////////////////////////////////////////// - // This specialization is used for real generators not having a direct - // initializer: float_, double_ etc. These generators must be used in - // conjunction with an attribute. - /////////////////////////////////////////////////////////////////////////// - template < - typename T, typename Policies, typename CharEncoding, typename Tag> - struct any_real_generator - : primitive_generator > - { - typedef typename Policies::properties properties; - - template - struct attribute - { - typedef T type; - }; - - any_real_generator(Policies const& policies = Policies()) - : p_(policies) {} - - // double_/float_/etc. has an attached attribute - template - bool generate(OutputIterator& sink, Context& context - , Delimiter const& d, Attribute const& attr) const - { - if (!traits::has_optional_value(attr)) - return false; // fail if it's an uninitialized optional - - typedef real_inserter inserter_type; - return inserter_type::call(sink, traits::extract_from(attr, context), p_) && - karma::delimit_out(sink, d); // always do post-delimiting - } - - // this double_/float_/etc. has no attribute attached, it needs to have - // been initialized from a direct literal - template - static bool generate(OutputIterator&, Context&, Delimiter const& - , unused_type) - { - // It is not possible (doesn't make sense) to use numeric generators - // without providing any attribute, as the generator doesn't 'know' - // what to output. The following assertion fires if this situation - // is detected in your code. - BOOST_SPIRIT_ASSERT_FAIL(OutputIterator, real_not_usable_without_attribute, ()); - return false; - } - - template - static info what(Context const& /*context*/) - { - return info("real"); - } - - Policies p_; - }; - - /////////////////////////////////////////////////////////////////////////// - // This specialization is used for real generators having a direct - // initializer: float_(10.), double_(20.) etc. - /////////////////////////////////////////////////////////////////////////// - template < - typename T, typename Policies, typename CharEncoding, typename Tag - , bool no_attribute> - struct literal_real_generator - : primitive_generator > - { - typedef typename Policies::properties properties; - - template - struct attribute - : mpl::if_c - {}; - - literal_real_generator(typename add_const::type n - , Policies const& policies = Policies()) - : n_(n), p_(policies) {} - - // A double_(1.0) which additionally has an associated attribute emits - // its immediate literal only if it matches the attribute, otherwise - // it fails. - template - bool generate(OutputIterator& sink, Context& context - , Delimiter const& d, Attribute const& attr) const - { - typedef typename attribute::type attribute_type; - if (!traits::has_optional_value(attr) || - n_ != traits::extract_from(attr, context)) - { - return false; - } - - typedef real_inserter inserter_type; - return inserter_type::call(sink, n_, p_) && - karma::delimit_out(sink, d); // always do post-delimiting - } - - // A double_(1.0) without any associated attribute just emits its - // immediate literal - template - bool generate(OutputIterator& sink, Context&, Delimiter const& d - , unused_type) const - { - typedef real_inserter inserter_type; - return inserter_type::call(sink, n_, p_) && - karma::delimit_out(sink, d); // always do post-delimiting - } - - template - static info what(Context const& /*context*/) - { - return info("real"); - } - - T n_; - Policies p_; - }; - - /////////////////////////////////////////////////////////////////////////// - // Generator generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - namespace detail - { - template > - struct make_real - { - static bool const lower = - has_modifier >::value; - static bool const upper = - has_modifier >::value; - - typedef any_real_generator< - T, Policies - , typename spirit::detail::get_encoding_with_case< - Modifiers, unused_type, lower || upper>::type - , typename detail::get_casetag::type - > result_type; - - template - result_type operator()(Terminal const& term, unused_type) const - { - typedef tag::stateful_tag tag_type; - using spirit::detail::get_stateful_data; - return result_type(get_stateful_data::call(term)); - } - }; - } - - template - struct make_primitive - : detail::make_real {}; - - template - struct make_primitive - : detail::make_real {}; - - template - struct make_primitive - : detail::make_real {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct make_primitive< - tag::stateful_tag, Modifiers> - : detail::make_real::type - , Modifiers, Policies> {}; - - /////////////////////////////////////////////////////////////////////////// - namespace detail - { - template > - struct make_real_direct - { - static bool const lower = - has_modifier >::value; - static bool const upper = - has_modifier >::value; - - typedef literal_real_generator< - T, Policies - , typename spirit::detail::get_encoding_with_case< - Modifiers, unused_type, lower || upper>::type - , typename detail::get_casetag::type - , false - > result_type; - - template - result_type operator()(Terminal const& term, unused_type) const - { - typedef tag::stateful_tag tag_type; - using spirit::detail::get_stateful_data; - return result_type(T(fusion::at_c<0>(term.args)) - , get_stateful_data::call(term.term)); - } - }; - } - - template - struct make_primitive< - terminal_ex >, Modifiers> - : detail::make_real_direct {}; - - template - struct make_primitive< - terminal_ex >, Modifiers> - : detail::make_real_direct {}; - - template - struct make_primitive< - terminal_ex >, Modifiers> - : detail::make_real_direct {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct make_primitive< - terminal_ex - , fusion::vector1 > - , Modifiers> - : detail::make_real_direct::type - , Modifiers, Policies> {}; - - /////////////////////////////////////////////////////////////////////////// - namespace detail - { - template - struct basic_real_literal - { - static bool const lower = - has_modifier >::value; - static bool const upper = - has_modifier >::value; - - typedef literal_real_generator< - T, real_policies - , typename spirit::detail::get_encoding_with_case< - Modifiers, unused_type, lower || upper>::type - , typename detail::get_casetag::type - , true - > result_type; - - template - result_type operator()(T_ i, unused_type) const - { - return result_type(T(i)); - } - }; - } - - template - struct make_primitive - : detail::basic_real_literal {}; - - template - struct make_primitive - : detail::basic_real_literal {}; - - template - struct make_primitive - : detail::basic_real_literal {}; - - // lit(double) - template - struct make_primitive< - terminal_ex > - , Modifiers - , typename enable_if >::type> - { - static bool const lower = - has_modifier >::value; - static bool const upper = - has_modifier >::value; - - typedef literal_real_generator< - typename remove_const::type, real_policies - , typename spirit::detail::get_encoding_with_case< - Modifiers, unused_type, lower || upper>::type - , typename detail::get_casetag::type - , true - > result_type; - - template - result_type operator()(Terminal const& term, unused_type) const - { - return result_type(fusion::at_c<0>(term.args)); - } - }; -}}} - -#endif // defined(BOOST_SPIRIT_KARMA_REAL_FEB_26_2007_0512PM) diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/numeric/real_policies.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/numeric/real_policies.hpp deleted file mode 100644 index a5c7099fba09..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/numeric/real_policies.hpp +++ /dev/null @@ -1,332 +0,0 @@ -// 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_REAL_POLICIES_MAR_02_2007_0936AM) -#define BOOST_SPIRIT_KARMA_REAL_POLICIES_MAR_02_2007_0936AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include - -#include -#include -#include -#include -#include - -#include - -namespace boost { namespace spirit { namespace karma -{ - /////////////////////////////////////////////////////////////////////////// - // - // real_policies, if you need special handling of your floating - // point numbers, just overload this policy class and use it as a template - // parameter to the karma::real_generator floating point specifier: - // - // template - // struct scientific_policy : karma::real_policies - // { - // // we want the numbers always to be in scientific format - // static int floatfield(T n) { return fmtflags::scientific; } - // }; - // - // typedef - // karma::real_generator > - // science_type; - // - // karma::generate(sink, science_type(), 1.0); // will output: 1.0e00 - // - /////////////////////////////////////////////////////////////////////////// - template - struct real_policies - { - /////////////////////////////////////////////////////////////////////// - // Expose the data type the generator is targeted at - /////////////////////////////////////////////////////////////////////// - typedef T value_type; - - /////////////////////////////////////////////////////////////////////// - // By default the policy doesn't require any special iterator - // functionality. The floating point generator exposes its properties - // from here, so this needs to be updated in case other properties - // need to be implemented. - /////////////////////////////////////////////////////////////////////// - typedef mpl::int_ properties; - - /////////////////////////////////////////////////////////////////////// - // Specifies, which representation type to use during output - // generation. - /////////////////////////////////////////////////////////////////////// - struct fmtflags - { - enum { - scientific = 0, // Generate floating-point values in scientific - // format (with an exponent field). - fixed = 1 // Generate floating-point values in fixed-point - // format (with no exponent field). - }; - }; - - /////////////////////////////////////////////////////////////////////// - // This is the main function used to generate the output for a - // floating point number. It is called by the real generator in order - // to perform the conversion. In theory all of the work can be - // implemented here, but it is the easiest to use existing - // functionality provided by the type specified by the template - // parameter `Inserter`. - // - // sink: the output iterator to use for generation - // n: the floating point number to convert - // p: the instance of the policy type used to instantiate this - // floating point generator. - /////////////////////////////////////////////////////////////////////// - template - static bool - call (OutputIterator& sink, T n, Policies const& p) - { - return Inserter::call_n(sink, n, p); - } - - /////////////////////////////////////////////////////////////////////// - // The default behavior is to not to require generating a sign. If - // 'force_sign()' returns true, then all generated numbers will - // have a sign ('+' or '-', zeros will have a space instead of a sign) - // - // n The floating point number to output. This can be used to - // adjust the required behavior depending on the value of - // this number. - /////////////////////////////////////////////////////////////////////// - static bool force_sign(T) - { - return false; - } - - /////////////////////////////////////////////////////////////////////// - // Return whether trailing zero digits have to be emitted in the - // fractional part of the output. If set, this flag instructs the - // floating point generator to emit trailing zeros up to the required - // precision digits (as returned by the precision() function). - // - // n The floating point number to output. This can be used to - // adjust the required behavior depending on the value of - // this number. - /////////////////////////////////////////////////////////////////////// - static bool trailing_zeros(T) - { - // the default behavior is not to generate trailing zeros - return false; - } - - /////////////////////////////////////////////////////////////////////// - // Decide, which representation type to use in the generated output. - // - // By default all numbers having an absolute value of zero or in - // between 0.001 and 100000 will be generated using the fixed format, - // all others will be generated using the scientific representation. - // - // The function trailing_zeros() can be used to force the output of - // trailing zeros in the fractional part up to the number of digits - // returned by the precision() member function. The default is not to - // generate the trailing zeros. - // - // n The floating point number to output. This can be used to - // adjust the formatting flags depending on the value of - // this number. - /////////////////////////////////////////////////////////////////////// - static int floatfield(T n) - { - if (traits::test_zero(n)) - return fmtflags::fixed; - - T abs_n = traits::get_absolute_value(n); - return (abs_n >= 1e5 || abs_n < 1e-3) - ? fmtflags::scientific : fmtflags::fixed; - } - - /////////////////////////////////////////////////////////////////////// - // Return the maximum number of decimal digits to generate in the - // fractional part of the output. - // - // n The floating point number to output. This can be used to - // adjust the required precision depending on the value of - // this number. If the trailing zeros flag is specified the - // fractional part of the output will be 'filled' with - // zeros, if appropriate - // - // Note: If the trailing_zeros flag is not in effect additional - // comments apply. See the comment for the fraction_part() - // function below. - /////////////////////////////////////////////////////////////////////// - static unsigned precision(T) - { - // by default, generate max. 3 fractional digits - return 3; - } - - /////////////////////////////////////////////////////////////////////// - // Generate the integer part of the number. - // - // sink The output iterator to use for generation - // n The absolute value of the integer part of the floating - // point number to convert (always non-negative). - // sign The sign of the overall floating point number to - // convert. - // force_sign Whether a sign has to be generated even for - // non-negative numbers. Note, that force_sign will be - // set to false for zero floating point values. - /////////////////////////////////////////////////////////////////////// - template - static bool integer_part (OutputIterator& sink, T n, bool sign - , bool force_sign) - { - return sign_inserter::call( - sink, traits::test_zero(n), sign, force_sign, force_sign) && - int_inserter<10>::call(sink, n); - } - - /////////////////////////////////////////////////////////////////////// - // Generate the decimal point. - // - // sink The output iterator to use for generation - // n The fractional part of the floating point number to - // convert. Note that this number is scaled such, that - // it represents the number of units which correspond - // to the value returned from the precision() function - // earlier. I.e. a fractional part of 0.01234 is - // represented as 1234 when the 'Precision' is 5. - // precision The number of digits to emit as returned by the - // function 'precision()' above - // - // This is given to allow to decide, whether a decimal point - // has to be generated at all. - // - // Note: If the trailing_zeros flag is not in effect additional - // comments apply. See the comment for the fraction_part() - // function below. - /////////////////////////////////////////////////////////////////////// - template - static bool dot (OutputIterator& sink, T /*n*/, unsigned /*precision*/) - { - return char_inserter<>::call(sink, '.'); // generate the dot by default - } - - /////////////////////////////////////////////////////////////////////// - // Generate the fractional part of the number. - // - // sink The output iterator to use for generation - // n The fractional part of the floating point number to - // convert. This number is scaled such, that it represents - // the number of units which correspond to the 'Precision'. - // I.e. a fractional part of 0.01234 is represented as 1234 - // when the 'precision_' parameter is 5. - // precision_ The corrected number of digits to emit (see note - // below) - // precision The number of digits to emit as returned by the - // function 'precision()' above - // - // Note: If trailing_zeros() does not return true the 'precision_' - // parameter will have been corrected from the value the - // precision() function returned earlier (defining the maximal - // number of fractional digits) in the sense, that it takes into - // account trailing zeros. I.e. a floating point number 0.0123 - // and a value of 5 returned from precision() will result in: - // - // trailing_zeros is not specified: - // n 123 - // precision_ 4 - // - // trailing_zeros is specified: - // n 1230 - // precision_ 5 - // - /////////////////////////////////////////////////////////////////////// - template - static bool fraction_part (OutputIterator& sink, T n - , unsigned precision_, unsigned precision) - { - // allow for ADL to find the correct overload for floor and log10 - using namespace std; - - // The following is equivalent to: - // generate(sink, right_align(precision, '0')[ulong], n); - // but it's spelled out to avoid inter-modular dependencies. - - typename remove_const::type digits = - (traits::test_zero(n) ? 1 : ceil(log10(n + T(1.)))); - bool r = true; - for (/**/; r && digits < precision_; digits = digits + 1) - r = char_inserter<>::call(sink, '0'); - if (precision && r) - r = int_inserter<10>::call(sink, n); - return r; - } - - /////////////////////////////////////////////////////////////////////// - // Generate the exponential part of the number (this is called only - // if the floatfield() function returned the 'scientific' flag). - // - // sink The output iterator to use for generation - // n The (signed) exponential part of the floating point - // number to convert. - // - // The Tag template parameter is either of the type unused_type or - // describes the character class and conversion to be applied to any - // output possibly influenced by either the lower[...] or upper[...] - // directives. - /////////////////////////////////////////////////////////////////////// - template - static bool exponent (OutputIterator& sink, long n) - { - long abs_n = traits::get_absolute_value(n); - bool r = char_inserter::call(sink, 'e') && - sign_inserter::call(sink, traits::test_zero(n) - , traits::test_negative(n), false); - - // the C99 Standard requires at least two digits in the exponent - if (r && abs_n < 10) - r = char_inserter::call(sink, '0'); - return r && int_inserter<10>::call(sink, abs_n); - } - - /////////////////////////////////////////////////////////////////////// - // Print the textual representations for non-normal floats (NaN and - // Inf) - // - // sink The output iterator to use for generation - // n The (signed) floating point number to convert. - // force_sign Whether a sign has to be generated even for - // non-negative numbers - // - // The Tag template parameter is either of the type unused_type or - // describes the character class and conversion to be applied to any - // output possibly influenced by either the lower[...] or upper[...] - // directives. - // - // Note: These functions get called only if fpclassify() returned - // FP_INFINITY or FP_NAN. - /////////////////////////////////////////////////////////////////////// - template - static bool nan (OutputIterator& sink, T n, bool force_sign) - { - return sign_inserter::call( - sink, false, traits::test_negative(n), force_sign) && - string_inserter::call(sink, "nan"); - } - - template - static bool inf (OutputIterator& sink, T n, bool force_sign) - { - return sign_inserter::call( - sink, false, traits::test_negative(n), force_sign) && - string_inserter::call(sink, "inf"); - } - }; -}}} - -#endif // defined(BOOST_SPIRIT_KARMA_REAL_POLICIES_MAR_02_2007_0936AM) diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/numeric/uint.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/numeric/uint.hpp deleted file mode 100644 index 1a34b8d18bf2..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/numeric/uint.hpp +++ /dev/null @@ -1,576 +0,0 @@ -// 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_UINT_FEB_23_2007_0840PM) -#define BOOST_SPIRIT_KARMA_UINT_FEB_23_2007_0840PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - namespace tag - { - template - struct uint_generator - { - BOOST_SPIRIT_IS_TAG() - }; - } - - namespace karma - { - /////////////////////////////////////////////////////////////////////// - // This one is the class that the user can instantiate directly in - // order to create a customized int generator - template - struct uint_generator - : spirit::terminal > - {}; - } - - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_terminal // enables ushort_ - : mpl::true_ {}; - - template <> - struct use_terminal // enables uint_ - : mpl::true_ {}; - - template <> - struct use_terminal // enables ulong_ - : mpl::true_ {}; - - template <> - struct use_terminal // enables bin - : mpl::true_ {}; - - template <> - struct use_terminal // enables oct - : mpl::true_ {}; - - template <> - struct use_terminal // enables hex - : mpl::true_ {}; - -#ifdef BOOST_HAS_LONG_LONG - template <> - struct use_terminal // enables ulong_long - : mpl::true_ {}; -#endif - - /////////////////////////////////////////////////////////////////////////// -#if !defined(BOOST_NO_INTRINSIC_WCHAR_T) - template <> // enables lit(unsigned short(0)) - struct use_terminal - : mpl::true_ {}; -#endif - - template <> // enables lit(0U) - struct use_terminal - : mpl::true_ {}; - - template <> // enables lit(0UL) - struct use_terminal - : mpl::true_ {}; - -#ifdef BOOST_HAS_LONG_LONG - template <> // enables lit(0ULL) - struct use_terminal - : mpl::true_ {}; -#endif - - /////////////////////////////////////////////////////////////////////////// - template - struct use_terminal > - > : mpl::true_ {}; - - template - struct use_terminal > - > : mpl::true_ {}; - - template - struct use_terminal > - > : mpl::true_ {}; - - template - struct use_terminal > - > : mpl::true_ {}; - - template - struct use_terminal > - > : mpl::true_ {}; - - template - struct use_terminal > - > : mpl::true_ {}; - -#ifdef BOOST_HAS_LONG_LONG - template - struct use_terminal > - > : mpl::true_ {}; -#endif - - /////////////////////////////////////////////////////////////////////////// - template <> // enables *lazy* ushort_(...) - struct use_lazy_terminal - : mpl::true_ {}; - - template <> // enables *lazy* uint_(...) - struct use_lazy_terminal - : mpl::true_ {}; - - template <> // enables *lazy* ulong_(...) - struct use_lazy_terminal - : mpl::true_ {}; - - template <> // enables *lazy* bin(...) - struct use_lazy_terminal - : mpl::true_ {}; - - template <> // enables *lazy* oct(...) - struct use_lazy_terminal - : mpl::true_ {}; - - template <> // enables *lazy* hex(...) - struct use_lazy_terminal - : mpl::true_ {}; - -#ifdef BOOST_HAS_LONG_LONG - template <> // enables *lazy* ulong_long(...) - struct use_lazy_terminal - : mpl::true_ {}; -#endif - - /////////////////////////////////////////////////////////////////////////// - // enables any custom uint_generator - template - struct use_terminal > - : mpl::true_ {}; - - // enables any custom uint_generator(...) - template - struct use_terminal, fusion::vector1 > - > : mpl::true_ {}; - - // enables *lazy* custom uint_generator - template - struct use_lazy_terminal< - karma::domain - , tag::uint_generator - , 1 // arity - > : mpl::true_ {}; - - // enables lit(uint) - template - struct use_terminal > - , typename enable_if >::type> - : mpl::true_ {}; -}} - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace karma -{ -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using spirit::ushort_; - using spirit::uint_; - using spirit::ulong_; -#ifdef BOOST_HAS_LONG_LONG - using spirit::ulong_long; -#endif - using spirit::bin; - using spirit::oct; - using spirit::hex; - - using spirit::lit; // lit(1U) is equivalent to 1U -#endif - - using spirit::ushort_type; - using spirit::uint_type; - using spirit::ulong_type; -#ifdef BOOST_HAS_LONG_LONG - using spirit::ulong_long_type; -#endif - using spirit::bin_type; - using spirit::oct_type; - using spirit::hex_type; - - using spirit::lit_type; - - /////////////////////////////////////////////////////////////////////////// - // This specialization is used for unsigned int generators not having a - // direct initializer: uint_, ulong_ etc. These generators must be used in - // conjunction with an Attribute. - /////////////////////////////////////////////////////////////////////////// - template - struct any_uint_generator - : primitive_generator > - { - template - struct attribute - { - typedef T type; - }; - - // check template Attribute 'Radix' for validity - BOOST_SPIRIT_ASSERT_MSG( - Radix >= 2 && Radix <= 36, not_supported_radix, ()); - - BOOST_SPIRIT_ASSERT_MSG( - // the following is a workaround for STLPort, where the simpler - // `!std::numeric_limits::is_signed` wouldn't compile - mpl::not_::is_signed> >::value, - signed_unsigned_mismatch, ()); - - // int has a Attribute attached - template - static bool - generate(OutputIterator& sink, Context& context, Delimiter const& d - , Attribute const& attr) - { - if (!traits::has_optional_value(attr)) - return false; // fail if it's an uninitialized optional - - return uint_inserter:: - call(sink, traits::extract_from(attr, context)) && - delimit_out(sink, d); // always do post-delimiting - } - - // this int has no Attribute attached, it needs to have been - // initialized from a direct literal - template - static bool - generate(OutputIterator&, Context&, Delimiter const&, unused_type) - { - // It is not possible (doesn't make sense) to use numeric generators - // without providing any attribute, as the generator doesn't 'know' - // what to output. The following assertion fires if this situation - // is detected in your code. - BOOST_SPIRIT_ASSERT_FAIL(OutputIterator, uint_not_usable_without_attribute, ()); - return false; - } - - template - static info what(Context const& /*context*/) - { - return info("unsigned-integer"); - } - }; - - /////////////////////////////////////////////////////////////////////////// - // This specialization is used for unsigned int generators having a direct - // initializer: uint_(10), ulong_(20) etc. - /////////////////////////////////////////////////////////////////////////// - template < - typename T, typename CharEncoding, typename Tag, unsigned Radix - , bool no_attribute> - struct literal_uint_generator - : primitive_generator > - { - template - struct attribute - : mpl::if_c - {}; - - literal_uint_generator(typename add_const::type n) - : n_(n) {} - - // check template Attribute 'Radix' for validity - BOOST_SPIRIT_ASSERT_MSG( - Radix >= 2 && Radix <= 36, not_supported_radix, ()); - - BOOST_SPIRIT_ASSERT_MSG( - // the following is a workaround for STLPort, where the simpler - // `!std::numeric_limits::is_signed wouldn't` compile - mpl::not_::is_signed> >::value, - signed_unsigned_mismatch, ()); - - // A uint(1U) which additionally has an associated attribute emits - // its immediate literal only if it matches the attribute, otherwise - // it fails. - template - bool generate(OutputIterator& sink, Context& context - , Delimiter const& d, Attribute const& attr) const - { - typedef typename attribute::type attribute_type; - if (!traits::has_optional_value(attr) || - n_ != traits::extract_from(attr, context)) - { - return false; - } - return uint_inserter::call(sink, n_) && - delimit_out(sink, d); // always do post-delimiting - } - - // A uint(1U) without any associated attribute just emits its - // immediate literal - template - bool generate(OutputIterator& sink, Context&, Delimiter const& d - , unused_type) const - { - return uint_inserter::call(sink, n_) && - delimit_out(sink, d); // always do post-delimiting - } - - template - static info what(Context const& /*context*/) - { - return info("unsigned-integer"); - } - - T n_; - }; - - /////////////////////////////////////////////////////////////////////////// - // Generator generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - namespace detail - { - template - struct make_uint - { - static bool const lower = - has_modifier >::value; - static bool const upper = - has_modifier >::value; - - typedef any_uint_generator< - T - , typename spirit::detail::get_encoding_with_case< - Modifiers, unused_type, lower || upper>::type - , typename detail::get_casetag::type - , Radix - > result_type; - - result_type operator()(unused_type, unused_type) const - { - return result_type(); - } - }; - } - - /////////////////////////////////////////////////////////////////////////// - template - struct make_primitive - : detail::make_uint {}; - - template - struct make_primitive - : detail::make_uint {}; - - template - struct make_primitive - : detail::make_uint {}; - - template - struct make_primitive - : detail::make_uint {}; - - template - struct make_primitive - : detail::make_uint {}; - - template - struct make_primitive - : detail::make_uint {}; - -#ifdef BOOST_HAS_LONG_LONG - template - struct make_primitive - : detail::make_uint {}; -#endif - - template - struct make_primitive, Modifiers> - : detail::make_uint::type, Modifiers, Radix> {}; - - /////////////////////////////////////////////////////////////////////////// - namespace detail - { - template - struct make_uint_direct - { - static bool const lower = - has_modifier >::value; - static bool const upper = - has_modifier >::value; - - typedef literal_uint_generator< - T - , typename spirit::detail::get_encoding_with_case< - Modifiers, unused_type, lower || upper>::type - , typename detail::get_casetag::type - , Radix, false - > result_type; - - template - result_type operator()(Terminal const& term, unused_type) const - { - return result_type(fusion::at_c<0>(term.args)); - } - }; - } - - template - struct make_primitive< - terminal_ex >, Modifiers> - : detail::make_uint_direct {}; - - template - struct make_primitive< - terminal_ex >, Modifiers> - : detail::make_uint_direct {}; - - template - struct make_primitive< - terminal_ex >, Modifiers> - : detail::make_uint_direct {}; - - template - struct make_primitive< - terminal_ex >, Modifiers> - : detail::make_uint_direct {}; - - template - struct make_primitive< - terminal_ex >, Modifiers> - : detail::make_uint_direct {}; - - template - struct make_primitive< - terminal_ex >, Modifiers> - : detail::make_uint_direct {}; - -#ifdef BOOST_HAS_LONG_LONG - template - struct make_primitive< - terminal_ex >, Modifiers> - : detail::make_uint_direct {}; -#endif - - template - struct make_primitive< - terminal_ex, fusion::vector1 > - , Modifiers> - : detail::make_uint_direct::type, Modifiers, Radix> - {}; - - /////////////////////////////////////////////////////////////////////////// - namespace detail - { - template - struct basic_uint_literal - { - static bool const lower = - has_modifier >::value; - static bool const upper = - has_modifier >::value; - - typedef literal_uint_generator< - T - , typename spirit::detail::get_encoding_with_case< - Modifiers, unused_type, lower || upper>::type - , typename detail::get_casetag::type - , 10, true - > result_type; - - template - result_type operator()(T_ i, unused_type) const - { - return result_type(i); - } - }; - } - -#if !defined(BOOST_NO_INTRINSIC_WCHAR_T) - template - struct make_primitive - : detail::basic_uint_literal {}; -#endif - - template - struct make_primitive - : detail::basic_uint_literal {}; - - template - struct make_primitive - : detail::basic_uint_literal {}; - -#ifdef BOOST_HAS_LONG_LONG - template - struct make_primitive - : detail::basic_uint_literal {}; -#endif - - // lit(uint) - template - struct make_primitive< - terminal_ex > - , Modifiers - , typename enable_if >::type> - { - static bool const lower = - has_modifier >::value; - static bool const upper = - has_modifier >::value; - - typedef literal_uint_generator< - typename remove_const::type - , typename spirit::detail::get_encoding_with_case< - Modifiers, unused_type, lower || upper>::type - , typename detail::get_casetag::type - , 10, true - > result_type; - - template - result_type operator()(Terminal const& term, unused_type) const - { - return result_type(fusion::at_c<0>(term.args)); - } - }; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/operator.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/operator.hpp deleted file mode 100644 index 0f76299af9cb..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/operator.hpp +++ /dev/null @@ -1,22 +0,0 @@ -// 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_OPERATOR_FEB_28_2007_0351PM) -#define BOOST_SPIRIT_KARMA_OPERATOR_FEB_28_2007_0351PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/operator/alternative.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/operator/alternative.hpp deleted file mode 100644 index 076754942ea8..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/operator/alternative.hpp +++ /dev/null @@ -1,209 +0,0 @@ -// Copyright (c) 2001-2011 Hartmut Kaiser -// Copyright (c) 2001-2011 Joel de Guzman -// -// 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) - -#ifndef BOOST_SPIRIT_KARMA_OPERATOR_ALTERNATIVE_HPP -#define BOOST_SPIRIT_KARMA_OPERATOR_ALTERNATIVE_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_operator // enables | - : mpl::true_ {}; - - template <> - struct flatten_tree // flattens | - : mpl::true_ {}; - -}} - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace traits -{ - // specialization for sequences - template - struct alternative_properties - { - struct element_properties - { - template - struct result; - - template - struct result - { - typedef properties_of type; - }; - - // never called, but needed for decltype-based result_of (C++0x) -#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES - template - typename result::type - operator()(Element&&) const; -#endif - }; - - typedef typename mpl::accumulate< - typename fusion::result_of::transform< - Elements, element_properties>::type - , mpl::int_ - , mpl::bitor_ - >::type type; - }; - -}}} - -namespace boost { namespace spirit { namespace karma -{ - template - struct base_alternative : nary_generator - { - typedef typename traits::alternative_properties::type - properties; - - template - struct attribute - { - // Put all the element attributes in a tuple - typedef typename traits::build_attribute_sequence< - Elements, Context, traits::alternative_attribute_transform - , Iterator, karma::domain - >::type all_attributes; - - // Ok, now make a variant over the attribute sequence. Note that - // build_variant makes sure that 1) all attributes in the variant - // are unique 2) puts the unused attribute, if there is any, to - // the front and 3) collapses single element variants, variant - // to T. - typedef typename traits::build_variant::type type; - }; - - base_alternative(Elements const& elements) - : elements(elements) {} - - template < - typename OutputIterator, typename Context, typename Delimiter - , typename Attribute> - bool generate(OutputIterator& sink, Context& ctx - , Delimiter const& d, Attribute const& attr) const - { - typedef detail::alternative_generate_function< - OutputIterator, Context, Delimiter, Attribute, Strict - > functor; - - // f return true if *any* of the parser succeeds - functor f (sink, ctx, d, attr); - return fusion::any(elements, f); - } - - template - info what(Context& context) const - { - info result("alternative"); - fusion::for_each(elements, - spirit::detail::what_function(result, context)); - return result; - } - - Elements elements; - }; - - template - struct alternative - : base_alternative > - { - typedef base_alternative - base_alternative_; - - alternative(Elements const& elements) - : base_alternative_(elements) {} - }; - - template - struct strict_alternative - : base_alternative > - { - typedef base_alternative - base_alternative_; - - strict_alternative(Elements const& elements) - : base_alternative_(elements) {} - }; - - /////////////////////////////////////////////////////////////////////////// - // Generator generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - namespace detail - { - template - struct make_alternative - : make_nary_composite - {}; - - template - struct make_alternative - : make_nary_composite - {}; - } - - template - struct make_composite - : detail::make_alternative::value> - {}; - -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct has_semantic_action > - : nary_has_semantic_action {}; - - template - struct has_semantic_action > - : nary_has_semantic_action {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container - , Attribute, Context, Iterator> - : nary_handles_container {}; - - template - struct handles_container - , Attribute, Context, Iterator> - : nary_handles_container {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/operator/and_predicate.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/operator/and_predicate.hpp deleted file mode 100644 index 9d5cddadff3a..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/operator/and_predicate.hpp +++ /dev/null @@ -1,97 +0,0 @@ -// Copyright (c) 2001-2011 Hartmut Kaiser -// Copyright (c) 2001-2011 Joel de Guzman -// -// 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) - -#ifndef BOOST_SPIRIT_KARMA_OPERATOR_AND_PREDICATE_HPP -#define BOOST_SPIRIT_KARMA_OPERATOR_AND_PREDICATE_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_operator // enables &g - : mpl::true_ {}; -}} - -namespace boost { namespace spirit { namespace karma -{ - template - struct and_predicate : unary_generator > - { - typedef Subject subject_type; - typedef mpl::int_< - generator_properties::disabling | subject_type::properties::value - > properties; - - template - struct attribute - : traits::attribute_of - {}; - - and_predicate(Subject const& subject) - : subject(subject) {} - - template < - typename OutputIterator, typename Context, typename Delimiter - , typename Attribute> - bool generate(OutputIterator& sink, Context& ctx, Delimiter const& d - , Attribute const& attr) const - { - // inhibits output - detail::disable_output disable(sink); - return subject.generate(sink, ctx, d, attr); - } - - template - info what(Context& context) const - { - return info("and-predicate", subject.what(context)); - } - - Subject subject; - }; - - /////////////////////////////////////////////////////////////////////////// - // Generator generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_composite - : make_unary_composite {}; - -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct has_semantic_action > - : unary_has_semantic_action {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container, Attribute - , Context, Iterator> - : unary_handles_container {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/operator/kleene.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/operator/kleene.hpp deleted file mode 100644 index 4d9760ac5e4e..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/operator/kleene.hpp +++ /dev/null @@ -1,209 +0,0 @@ -// Copyright (c) 2001-2011 Joel de Guzman -// 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_KLEENE_MAR_03_2007_0337AM) -#define BOOST_SPIRIT_KARMA_KLEENE_MAR_03_2007_0337AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_operator // enables *g - : mpl::true_ {}; -}} - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace karma -{ - template - struct base_kleene : unary_generator - { - private: - // Ignore return value in relaxed mode (failing subject generators - // are just skipped). This allows to selectively generate items in - // the provided attribute. - template - bool generate_subject(F f, Attribute const&, mpl::false_) const - { - bool r = !f(subject); - if (!r && !f.is_at_end()) - f.next(); - return true; - } - - template - bool generate_subject(F f, Attribute const&, mpl::true_) const - { - return !f(subject); - } - - // There is no way to distinguish a failed generator from a - // generator to be skipped. We assume the user takes responsibility - // for ending the loop if no attribute is specified. - template - bool generate_subject(F f, unused_type, mpl::false_) const - { - return !f(subject); - } - -// template -// bool generate_subject(F f, unused_type, mpl::true_) const -// { -// return !f(subject); -// } - - public: - typedef Subject subject_type; - typedef typename subject_type::properties properties; - - // Build a std::vector from the subject's attribute. Note - // that build_std_vector may return unused_type if the - // subject's attribute is an unused_type. - template - struct attribute - : traits::build_std_vector< - typename traits::attribute_of::type - > - {}; - - base_kleene(Subject const& subject) - : subject(subject) {} - - template < - typename OutputIterator, typename Context, typename Delimiter - , typename Attribute> - bool generate(OutputIterator& sink, Context& ctx - , Delimiter const& d, Attribute const& attr) const - { - typedef detail::fail_function< - OutputIterator, Context, Delimiter> fail_function; - - typedef typename traits::container_iterator< - typename add_const::type - >::type iterator_type; - - typedef - typename traits::make_indirect_iterator::type - indirect_iterator_type; - typedef detail::pass_container< - fail_function, Attribute, indirect_iterator_type, mpl::false_> - pass_container; - - iterator_type it = traits::begin(attr); - iterator_type end = traits::end(attr); - - pass_container pass(fail_function(sink, ctx, d), - indirect_iterator_type(it), indirect_iterator_type(end)); - - // kleene fails only if the underlying output fails - while (!pass.is_at_end()) - { - if (!generate_subject(pass, attr, Strict())) - break; - } - return detail::sink_is_good(sink); - } - - template - info what(Context& context) const - { - return info("kleene", subject.what(context)); - } - - Subject subject; - }; - - template - struct kleene - : base_kleene > - { - typedef base_kleene base_kleene_; - - kleene(Subject const& subject) - : base_kleene_(subject) {} - }; - - template - struct strict_kleene - : base_kleene > - { - typedef base_kleene base_kleene_; - - strict_kleene(Subject const& subject) - : base_kleene_(subject) {} - }; - - /////////////////////////////////////////////////////////////////////////// - // Generator generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - namespace detail - { - template - struct make_kleene - : make_unary_composite - {}; - - template - struct make_kleene - : make_unary_composite - {}; - } - - template - struct make_composite - : detail::make_kleene::value> - {}; -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct has_semantic_action > - : unary_has_semantic_action {}; - - template - struct has_semantic_action > - : unary_has_semantic_action {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container, Attribute - , Context, Iterator> - : mpl::true_ {}; - - template - struct handles_container, Attribute - , Context, Iterator> - : mpl::true_ {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/operator/list.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/operator/list.hpp deleted file mode 100644 index 576a03709a76..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/operator/list.hpp +++ /dev/null @@ -1,231 +0,0 @@ -// Copyright (c) 2001-2011 Hartmut Kaiser -// Copyright (c) 2001-2011 Joel de Guzman -// -// 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) - -#ifndef BOOST_SPIRIT_KARMA_OPERATOR_LIST_HPP -#define BOOST_SPIRIT_KARMA_OPERATOR_LIST_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_operator // enables g % d - : mpl::true_ {}; -}} - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace karma -{ - template - struct base_list : binary_generator - { - private: - // iterate over the given container until its exhausted or the embedded - // (left) generator succeeds - template - bool generate_left(F f, Attribute const&, mpl::false_) const - { - // Failing subject generators are just skipped. This allows to - // selectively generate items in the provided attribute. - while (!f.is_at_end()) - { - bool r = !f(left); - if (r) - return true; - if (!f.is_at_end()) - f.next(); - } - return false; - } - - template - bool generate_left(F f, Attribute const&, mpl::true_) const - { - return !f(left); - } - - // There is no way to distinguish a failed generator from a - // generator to be skipped. We assume the user takes responsibility - // for ending the loop if no attribute is specified. - template - bool generate_left(F f, unused_type, mpl::false_) const - { - return !f(left); - } - - public: - typedef Left left_type; - typedef Right right_type; - - typedef mpl::int_< - left_type::properties::value - | right_type::properties::value - | generator_properties::buffering - | generator_properties::counting - > properties; - - // Build a std::vector from the LHS's attribute. Note - // that build_std_vector may return unused_type if the - // subject's attribute is an unused_type. - template - struct attribute - : traits::build_std_vector< - typename traits::attribute_of::type> - {}; - - base_list(Left const& left, Right const& right) - : left(left), right(right) - {} - - template < - typename OutputIterator, typename Context, typename Delimiter - , typename Attribute> - bool generate(OutputIterator& sink, Context& ctx - , Delimiter const& d, Attribute const& attr) const - { - typedef detail::fail_function< - OutputIterator, Context, Delimiter - > fail_function; - - typedef typename traits::container_iterator< - typename add_const::type - >::type iterator_type; - - typedef - typename traits::make_indirect_iterator::type - indirect_iterator_type; - typedef detail::pass_container< - fail_function, Attribute, indirect_iterator_type, mpl::false_> - pass_container; - - iterator_type it = traits::begin(attr); - iterator_type end = traits::end(attr); - - pass_container pass(fail_function(sink, ctx, d), - indirect_iterator_type(it), indirect_iterator_type(end)); - - if (generate_left(pass, attr, Strict())) - { - while (!pass.is_at_end()) - { - // wrap the given output iterator as generate_left might fail - detail::enable_buffering buffering(sink); - { - detail::disable_counting nocounting(sink); - - if (!right.generate(sink, ctx, d, unused)) - return false; // shouldn't happen - - if (!generate_left(pass, attr, Strict())) - break; // return true as one item succeeded - } - buffering.buffer_copy(); - } - return detail::sink_is_good(sink); - } - return false; - } - - template - info what(Context& context) const - { - return info("list", - std::make_pair(left.what(context), right.what(context))); - } - - Left left; - Right right; - }; - - template - struct list - : base_list > - { - typedef base_list base_list_; - - list(Left const& left, Right const& right) - : base_list_(left, right) {} - }; - - template - struct strict_list - : base_list > - { - typedef base_list base_list_; - - strict_list (Left const& left, Right const& right) - : base_list_(left, right) {} - }; - - /////////////////////////////////////////////////////////////////////////// - // Generator generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - namespace detail - { - template - struct make_list - : make_binary_composite - {}; - - template - struct make_list - : make_binary_composite - {}; - } - - template - struct make_composite - : detail::make_list::value> - {}; -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct has_semantic_action > - : binary_has_semantic_action {}; - - template - struct has_semantic_action > - : binary_has_semantic_action {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container, Attribute - , Context, Iterator> - : mpl::true_ {}; - - template - struct handles_container, Attribute - , Context, Iterator> - : mpl::true_ {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/operator/not_predicate.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/operator/not_predicate.hpp deleted file mode 100644 index bef74bc9fc63..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/operator/not_predicate.hpp +++ /dev/null @@ -1,98 +0,0 @@ -// Copyright (c) 2001-2011 Hartmut Kaiser -// Copyright (c) 2001-2011 Joel de Guzman -// -// 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) - -#ifndef BOOST_SPIRIT_KARMA_OPERATOR_NOT_PREDICATE_HPP -#define BOOST_SPIRIT_KARMA_OPERATOR_NOT_PREDICATE_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_operator // enables !g - : mpl::true_ {}; -}} - -namespace boost { namespace spirit { namespace karma -{ - template - struct not_predicate : unary_generator > - { - typedef Subject subject_type; - - typedef mpl::int_< - generator_properties::disabling | subject_type::properties::value - > properties; - - template - struct attribute - : traits::attribute_of - {}; - - not_predicate(Subject const& subject) - : subject(subject) {} - - template < - typename OutputIterator, typename Context, typename Delimiter - , typename Attribute> - bool generate(OutputIterator& sink, Context& ctx, Delimiter const& d - , Attribute const& attr) const - { - // inhibits output - detail::disable_output disable(sink); - return !subject.generate(sink, ctx, d, attr); - } - - template - info what(Context& context) const - { - return info("not-predicate", subject.what(context)); - } - - Subject subject; - }; - - /////////////////////////////////////////////////////////////////////////// - // Generator generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_composite - : make_unary_composite {}; - -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct has_semantic_action > - : unary_has_semantic_action {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container, Attribute - , Context, Iterator> - : unary_handles_container {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/operator/optional.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/operator/optional.hpp deleted file mode 100644 index b04672f172ff..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/operator/optional.hpp +++ /dev/null @@ -1,107 +0,0 @@ -// Copyright (c) 2001-2011 Joel de Guzman -// 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) - -#ifndef BOOST_SPIRIT_KARMA_OPERATOR_OPTIONAL_HPP -#define BOOST_SPIRIT_KARMA_OPERATOR_OPTIONAL_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_operator // enables -g - : mpl::true_ {}; - -}} - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace karma -{ - /////////////////////////////////////////////////////////////////////////// - template - struct optional : unary_generator > - { - typedef Subject subject_type; - typedef typename subject_type::properties properties; - - // Build a boost::optional from the subject's attribute. Note - // that boost::optional may return unused_type if the - // subject's attribute is an unused_type. - template - struct attribute - : traits::build_optional< - typename traits::attribute_of::type - > - {}; - - optional(Subject const& subject) - : subject(subject) {} - - template < - typename OutputIterator, typename Context, typename Delimiter - , typename Attribute> - bool generate(OutputIterator& sink, Context& ctx - , Delimiter const& d, Attribute const& attr) const - { - if (traits::has_optional_value(attr)) - subject.generate(sink, ctx, d, traits::optional_value(attr)); - return sink_is_good(sink); - } - - template - info what(Context& context) const - { - return info("optional", subject.what(context)); - } - - Subject subject; - }; - - /////////////////////////////////////////////////////////////////////////// - // Generator generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_composite - : make_unary_composite {}; - -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct has_semantic_action > - : unary_has_semantic_action {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container, Attribute, Context - , Iterator> - : mpl::true_ {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/operator/plus.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/operator/plus.hpp deleted file mode 100644 index e58d2f09865a..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/operator/plus.hpp +++ /dev/null @@ -1,227 +0,0 @@ -// Copyright (c) 2001-2011 Joel de Guzman -// 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_POSITIVE_MAR_03_2007_0945PM) -#define BOOST_SPIRIT_KARMA_POSITIVE_MAR_03_2007_0945PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_operator // enables +g - : mpl::true_ {}; -}} - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace karma -{ - template - struct base_plus : unary_generator - { - private: - // Ignore return value in relaxed mode (failing subject generators - // are just skipped). This allows to selectively generate items in - // the provided attribute. - template - bool generate_subject(F f, Attribute const&, bool& result, mpl::false_) const - { - bool r = !f(subject); - if (r) - result = true; - else if (!f.is_at_end()) - f.next(); - return true; - } - - template - bool generate_subject(F f, Attribute const&, bool& result, mpl::true_) const - { - bool r = !f(subject); - if (r) - result = true; - return r; - } - - // There is no way to distinguish a failed generator from a - // generator to be skipped. We assume the user takes responsibility - // for ending the loop if no attribute is specified. - template - bool generate_subject(F f, unused_type, bool& result, mpl::false_) const - { - bool r = f(subject); - if (!r) - result = true; - return !r; - } - -// template -// bool generate_subject(F f, unused_type, bool& result, mpl::true_) const -// { -// bool r = f(subject); -// if (!r) -// result = true; -// return !r; -// } - - public: - typedef Subject subject_type; - typedef typename subject_type::properties properties; - - // Build a std::vector from the subjects attribute. Note - // that build_std_vector may return unused_type if the - // subject's attribute is an unused_type. - template - struct attribute - : traits::build_std_vector< - typename traits::attribute_of::type - > - {}; - - base_plus(Subject const& subject) - : subject(subject) {} - - template < - typename OutputIterator, typename Context, typename Delimiter - , typename Attribute> - bool generate(OutputIterator& sink, Context& ctx - , Delimiter const& d, Attribute const& attr) const - { - typedef detail::fail_function< - OutputIterator, Context, Delimiter> fail_function; - - typedef typename traits::container_iterator< - typename add_const::type - >::type iterator_type; - - typedef - typename traits::make_indirect_iterator::type - indirect_iterator_type; - typedef detail::pass_container< - fail_function, Attribute, indirect_iterator_type, mpl::false_> - pass_container; - - iterator_type it = traits::begin(attr); - iterator_type end = traits::end(attr); - - // plus fails if the parameter is empty - if (traits::compare(it, end)) - return false; - - pass_container pass(fail_function(sink, ctx, d), - indirect_iterator_type(it), indirect_iterator_type(end)); - - // from now on plus fails if the underlying output fails or overall - // no subject generators succeeded - bool result = false; - while (!pass.is_at_end()) - { - if (!generate_subject(pass, attr, result, Strict())) - break; - } - return result && detail::sink_is_good(sink); - } - - template - info what(Context& context) const - { - return info("plus", subject.what(context)); - } - - Subject subject; - }; - - template - struct plus - : base_plus > - { - typedef base_plus base_plus_; - - plus(Subject const& subject) - : base_plus_(subject) {} - }; - - template - struct strict_plus - : base_plus > - { - typedef base_plus base_plus_; - - strict_plus(Subject const& subject) - : base_plus_(subject) {} - }; - - /////////////////////////////////////////////////////////////////////////// - // Generator generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - namespace detail - { - template - struct make_plus - : make_unary_composite - {}; - - template - struct make_plus - : make_unary_composite - {}; - } - - template - struct make_composite - : detail::make_plus::value> - {}; -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct has_semantic_action > - : unary_has_semantic_action {}; - - template - struct has_semantic_action > - : unary_has_semantic_action {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container, Attribute - , Context, Iterator> - : mpl::true_ {}; - - template - struct handles_container, Attribute - , Context, Iterator> - : mpl::true_ {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/operator/sequence.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/operator/sequence.hpp deleted file mode 100644 index 2a1a81461cd6..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/operator/sequence.hpp +++ /dev/null @@ -1,315 +0,0 @@ -// Copyright (c) 2001-2011 Hartmut Kaiser -// Copyright (c) 2001-2011 Joel de Guzman -// -// 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) - -#ifndef BOOST_SPIRIT_KARMA_OPERATOR_SEQUENCE_HPP -#define BOOST_SPIRIT_KARMA_OPERATOR_SEQUENCE_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_operator // enables << - : mpl::true_ {}; - - template <> - struct flatten_tree // flattens << - : mpl::true_ {}; -}} - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace traits -{ - // specialization for sequences - template - struct sequence_properties - { - struct element_properties - { - template - struct result; - - template - struct result - { - typedef properties_of type; - }; - - // never called, but needed for decltype-based result_of (C++0x) -#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES - template - typename result::type - operator()(Element&&) const; -#endif - }; - - typedef typename mpl::accumulate< - typename fusion::result_of::transform< - Elements, element_properties>::type - , mpl::int_ - , mpl::bitor_ - >::type type; - }; -}}} - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace karma -{ - template - struct base_sequence : nary_generator - { - typedef typename traits::sequence_properties::type properties; - - base_sequence(Elements const& elements) - : elements(elements) {} - - typedef Elements elements_type; - struct sequence_base_id; - - template - struct attribute - { - // Put all the element attributes in a tuple - typedef typename traits::build_attribute_sequence< - Elements, Context, traits::sequence_attribute_transform - , Iterator, karma::domain - >::type all_attributes; - - // Now, build a fusion vector over the attributes. Note - // that build_fusion_vector 1) removes all unused attributes - // and 2) may return unused_type if all elements have - // unused_type(s). - typedef typename - traits::build_fusion_vector::type - type_; - - // Finally, strip single element vectors into its - // naked form: vector1 --> T - typedef typename - traits::strip_single_element_vector::type - type; - }; - - // standard case. Attribute is a fusion tuple - template < - typename OutputIterator, typename Context, typename Delimiter - , typename Attribute, typename Pred1, typename Pred2> - bool generate_impl(OutputIterator& sink, Context& ctx - , Delimiter const& d, Attribute& attr_, Pred1, Pred2) const - { - typedef detail::fail_function< - OutputIterator, Context, Delimiter> fail_function; - typedef traits::attribute_not_unused predicate; - - // wrap the attribute in a tuple if it is not a tuple or if the - // attribute of this sequence is a single element tuple - typedef typename attribute::type_ attr_type_; - typename traits::wrap_if_not_tuple - , mpl::not_ > - >::type - >::type attr(attr_); - - // return false if *any* of the generators fail - bool r = spirit::any_if(elements, attr - , fail_function(sink, ctx, d), predicate()); - - typedef typename traits::attribute_size::type size_type; - - // fail generating if sequences have not the same (logical) length - return !r && (!Strict::value || - // This ignores container element count (which is not good), - // but allows valid attributes to succeed. This will lead to - // false positives (failing generators, even if they shouldn't) - // if the embedded component is restricting the number of - // container elements it consumes (i.e. repeat). This solution - // is not optimal but much better than letting _all_ repetitive - // components fail. - Pred1::value || - size_type(traits::sequence_size::value) == traits::size(attr_)); - } - - // Special case when Attribute is an stl container and the sequence's - // attribute is not a one element sequence - template < - typename OutputIterator, typename Context, typename Delimiter - , typename Attribute> - bool generate_impl(OutputIterator& sink, Context& ctx - , Delimiter const& d, Attribute const& attr_ - , mpl::true_, mpl::false_) const - { - // return false if *any* of the generators fail - typedef detail::fail_function< - OutputIterator, Context, Delimiter> fail_function; - - typedef typename traits::container_iterator< - typename add_const::type - >::type iterator_type; - - typedef - typename traits::make_indirect_iterator::type - indirect_iterator_type; - typedef detail::pass_container< - fail_function, Attribute, indirect_iterator_type, mpl::true_> - pass_container; - - iterator_type begin = traits::begin(attr_); - iterator_type end = traits::end(attr_); - - pass_container pass(fail_function(sink, ctx, d), - indirect_iterator_type(begin), indirect_iterator_type(end)); - bool r = fusion::any(elements, pass); - - // fail generating if sequences have not the same (logical) length - return !r && (!Strict::value || begin == end); - } - - // main generate function. Dispatches to generate_impl depending - // on the Attribute type. - template < - typename OutputIterator, typename Context, typename Delimiter - , typename Attribute> - bool generate(OutputIterator& sink, Context& ctx, Delimiter const& d - , Attribute const& attr) const - { - typedef typename traits::is_container::type - is_container; - - typedef typename attribute::type_ attr_type_; - typedef typename traits::one_element_sequence::type - is_one_element_sequence; - - return generate_impl(sink, ctx, d, attr, is_container() - , is_one_element_sequence()); - } - - template - info what(Context& context) const - { - info result("sequence"); - fusion::for_each(elements, - spirit::detail::what_function(result, context)); - return result; - } - - Elements elements; - }; - - template - struct sequence - : base_sequence > - { - typedef base_sequence base_sequence_; - - sequence(Elements const& subject) - : base_sequence_(subject) {} - }; - - template - struct strict_sequence - : base_sequence > - { - typedef base_sequence - base_sequence_; - - strict_sequence(Elements const& subject) - : base_sequence_(subject) {} - }; - - /////////////////////////////////////////////////////////////////////////// - // Generator generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - namespace detail - { - template - struct make_sequence - : make_nary_composite - {}; - - template - struct make_sequence - : make_nary_composite - {}; - } - - template - struct make_composite - : detail::make_sequence::value> - {}; - - /////////////////////////////////////////////////////////////////////////// - // Helper template allowing to get the required container type for a rule - // attribute, which is part of a sequence. - template - struct make_sequence_iterator_range - { - typedef iterator_range > type; - }; -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct has_semantic_action > - : nary_has_semantic_action {}; - - template - struct has_semantic_action > - : nary_has_semantic_action {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container, Attribute, Context - , Iterator> - : mpl::true_ {}; - - template - struct handles_container, Attribute - , Context, Iterator> - : mpl::true_ {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/phoenix_attributes.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/phoenix_attributes.hpp deleted file mode 100644 index ac1572ad506e..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/phoenix_attributes.hpp +++ /dev/null @@ -1,124 +0,0 @@ -// 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_PHOENIX_ATTRIBUTES_OCT_01_2009_1128AM) -#define BOOST_SPIRIT_KARMA_PHOENIX_ATTRIBUTES_OCT_01_2009_1128AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include - -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace phoenix -{ - template - struct actor; -}} - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - // Provide customization points allowing the use of phoenix expressions as - // generator functions in the context of generators expecting a container - // attribute (Kleene, plus, list, repeat, etc.) - /////////////////////////////////////////////////////////////////////////// - template - struct is_container const> - : is_container()>::type> - {}; - - template - struct container_iterator const> - { - typedef phoenix::actor const& type; - }; - - template - struct begin_container const> - { - typedef phoenix::actor const& type; - static type call(phoenix::actor const& f) - { - return f; - } - }; - - template - struct end_container const> - { - typedef phoenix::actor const& type; - static type call(phoenix::actor const& f) - { - return f; - } - }; - - template - struct deref_iterator const> - { - typedef typename boost::result_of()>::type type; - static type call(phoenix::actor const& f) - { - return f(); - } - }; - - template - struct next_iterator const> - { - typedef phoenix::actor const& type; - static type call(phoenix::actor const& f) - { - return f; - } - }; - - template - struct compare_iterators const> - { - static bool - call(phoenix::actor const&, phoenix::actor const&) - { - return false; - } - }; - - template - struct container_value > - { - typedef phoenix::actor const& type; - }; - - template - struct make_indirect_iterator const> - { - typedef phoenix::actor const& type; - }; - - /////////////////////////////////////////////////////////////////////////// - // Handle Phoenix actors as attributes, just invoke the function object - // and deal with the result as the attribute. - /////////////////////////////////////////////////////////////////////////// - template - struct extract_from_attribute, Exposed> - { - typedef typename boost::result_of()>::type type; - - template - static type call(phoenix::actor const& f, Context& context) - { - return f(unused, context); - } - }; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/reference.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/reference.hpp deleted file mode 100644 index 4ee5a78659d7..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/reference.hpp +++ /dev/null @@ -1,91 +0,0 @@ -// Copyright (c) 2001-2011 Joel de Guzman -// 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_REFERENCE_APR_17_2009_1057PM) -#define BOOST_SPIRIT_KARMA_REFERENCE_APR_17_2009_1057PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace karma -{ - /////////////////////////////////////////////////////////////////////////// - // reference is a generator that references another generator (its Subject) - /////////////////////////////////////////////////////////////////////////// - template - struct reference : generator > - { - typedef mpl::int_ properties; - - typedef Subject subject_type; - - reference(Subject& subject) - : ref(subject) {} - - template - struct attribute : Subject::template attribute {}; - - // Default overload, used whenever the attribute is not unused and not - // used from an aliased rule. - template - bool generate(OutputIterator& sink, Context& context - , Delimiter const& delim, Attribute const& attr) const - { - return ref.get().generate(sink, context, delim, attr); - } - - // This overload gets called from an aliased rule only, we take the - // attribute from the context provided from the wrapper rule. - template - bool generate(OutputIterator& sink, Context& context - , Delimiter const& delim, unused_type) const - { - return ref.get().generate(sink, context, delim, context.attributes); - } - - // This overload is used whenever no attribute is given and it is used - // not from an aliased rule. - template - bool generate(OutputIterator& sink, unused_type - , Delimiter const& delim, unused_type) const - { - return ref.get().generate(sink, unused, delim, unused); - } - - template - info what(Context& context) const - { - // the reference is transparent (does not add any info) - return ref.get().what(context); - } - - boost::reference_wrapper ref; - }; -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container, Attribute - , Context, Iterator> - : handles_container::type, Attribute - , Context, Iterator> - {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/stream.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/stream.hpp deleted file mode 100644 index 77636f82969e..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/stream.hpp +++ /dev/null @@ -1,16 +0,0 @@ -// 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_STREAM_MAY_01_2007_1254AM) -#define BOOST_SPIRIT_KARMA_STREAM_MAY_01_2007_1254AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/stream/detail/format_manip.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/stream/detail/format_manip.hpp deleted file mode 100644 index 4e226ada163d..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/stream/detail/format_manip.hpp +++ /dev/null @@ -1,204 +0,0 @@ -// 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_FORMAT_MANIP_MAY_03_2007_1424PM) -#define BOOST_SPIRIT_KARMA_FORMAT_MANIP_MAY_03_2007_1424PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace karma { namespace detail -{ - /////////////////////////////////////////////////////////////////////////// -#ifdef _MSC_VER -# pragma warning(push) -# pragma warning(disable: 4512) // assignment operator could not be generated. -#endif - template - struct format_manip - { - // This assertion makes sure we don't hit the only code path which is - // not implemented (because it isn't needed), where both, the - // expression and the attribute need to be held as a copy. - BOOST_SPIRIT_ASSERT_MSG(!CopyExpr::value || !CopyAttr::value - , error_invalid_should_not_happen, ()); - - format_manip(Expr const& xpr, Delimiter const& d, Attribute const& a) - : expr(xpr), delim(d), pre(delimit_flag::dont_predelimit), attr(a) {} - - format_manip(Expr const& xpr, Delimiter const& d - , BOOST_SCOPED_ENUM(delimit_flag) pre_delimit, Attribute const& a) - : expr(xpr), delim(d), pre(pre_delimit), attr(a) {} - - Expr const& expr; - Delimiter const& delim; - BOOST_SCOPED_ENUM(delimit_flag) const pre; - Attribute const& attr; - }; - - template - struct format_manip - { - format_manip(Expr const& xpr, Delimiter const& d, Attribute const& a) - : expr(xpr), delim(d), pre(delimit_flag::dont_predelimit), attr(a) {} - - format_manip(Expr const& xpr, Delimiter const& d - , BOOST_SCOPED_ENUM(delimit_flag) pre_delimit, Attribute const& a) - : expr(xpr), delim(d), pre(pre_delimit), attr(a) {} - - Expr const& expr; - Delimiter const& delim; - BOOST_SCOPED_ENUM(delimit_flag) const pre; - Attribute attr; - }; - - template - struct format_manip - { - format_manip(Expr const& xpr, Delimiter const& d, Attribute const& a) - : expr(xpr), delim(d), pre(delimit_flag::dont_predelimit), attr(a) {} - - format_manip(Expr const& xpr, Delimiter const& d - , BOOST_SCOPED_ENUM(delimit_flag) pre_delimit, Attribute const& a) - : expr(xpr), delim(d), pre(pre_delimit), attr(a) {} - - Expr expr; - Delimiter const& delim; - BOOST_SCOPED_ENUM(delimit_flag) const pre; - Attribute const& attr; - }; -#ifdef _MSC_VER -# pragma warning(pop) -#endif - - /////////////////////////////////////////////////////////////////////////// - template - struct format - { - // Report invalid expression error as early as possible. - // If you got an error_invalid_expression error message here, - // then the expression (Expr) is not a valid spirit karma expression. - // Did you intend to use the auto_ facilities while forgetting to - // #include ? - BOOST_SPIRIT_ASSERT_MATCH(karma::domain, Expr); - }; - - template - struct format >::type> - { - typedef format_manip type; - - static type call(Expr const& expr) - { - return type(expr, unused, unused); - } - }; - - /////////////////////////////////////////////////////////////////////////// - template - struct format_delimited - { - // Report invalid expression error as early as possible. - // If you got an error_invalid_expression error message here, - // then the expression (Expr) is not a valid spirit karma expression. - // Did you intend to use the auto_ facilities while forgetting to - // #include ? - BOOST_SPIRIT_ASSERT_MATCH(karma::domain, Expr); - }; - - template - struct format_delimited >::type> - { - typedef format_manip type; - - static type call( - Expr const& expr - , Delimiter const& delimiter - , BOOST_SCOPED_ENUM(delimit_flag) pre_delimit) - { - // Report invalid expression error as early as possible. - // If you got an error_invalid_expression error message here, - // then the delimiter is not a valid spirit karma expression. - BOOST_SPIRIT_ASSERT_MATCH(karma::domain, Delimiter); - return type(expr, delimiter, pre_delimit, unused); - } - }; - - /////////////////////////////////////////////////////////////////////////// - template - inline std::basic_ostream & - operator<< (std::basic_ostream &os - , format_manip const& fm) - { - karma::ostream_iterator sink(os); - if (!karma::generate (sink, fm.expr)) - { - os.setstate(std::basic_ostream::failbit); - } - return os; - } - - /////////////////////////////////////////////////////////////////////////// - template - inline std::basic_ostream & - operator<< (std::basic_ostream &os - , format_manip const& fm) - { - karma::ostream_iterator sink(os); - if (!karma::generate(sink, fm.expr, fm.attr)) - { - os.setstate(std::basic_ostream::failbit); - } - return os; - } - - template - inline std::basic_ostream & - operator<< (std::basic_ostream &os - , format_manip const& fm) - { - karma::ostream_iterator sink(os); - if (!karma::generate_delimited(sink, fm.expr, fm.delim, fm.pre)) - { - os.setstate(std::basic_ostream::failbit); - } - return os; - } - - /////////////////////////////////////////////////////////////////////////// - template - inline std::basic_ostream & - operator<< (std::basic_ostream &os - , format_manip const& fm) - { - karma::ostream_iterator sink(os); - if (!karma::generate_delimited(sink, fm.expr, fm.delim, fm.pre, fm.attr)) - { - os.setstate(std::basic_ostream::failbit); - } - return os; - } -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/stream/detail/format_manip_auto.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/stream/detail/format_manip_auto.hpp deleted file mode 100644 index 569e6cc29793..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/stream/detail/format_manip_auto.hpp +++ /dev/null @@ -1,57 +0,0 @@ -// 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_FORMAT_MANIP_AUTO_DEC_02_2009_1246PM) -#define BOOST_SPIRIT_KARMA_FORMAT_MANIP_AUTO_DEC_02_2009_1246PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace karma { namespace detail -{ - /////////////////////////////////////////////////////////////////////////// - template - struct format >::type> - { - typedef typename result_of::create_generator::type expr_type; - typedef format_manip< - expr_type, mpl::true_, mpl::false_, unused_type, Expr - > type; - - static type call(Expr const& expr) - { - return type(create_generator(), unused, expr); - } - }; - - /////////////////////////////////////////////////////////////////////////// - template - struct format_delimited >::type> - { - typedef typename result_of::create_generator::type expr_type; - typedef format_manip< - expr_type, mpl::true_, mpl::false_, Delimiter, Expr - > type; - - static type call(Expr const& expr - , Delimiter const& delimiter - , BOOST_SCOPED_ENUM(delimit_flag) pre_delimit) - { - return type(create_generator(), delimiter, pre_delimit, expr); - } - }; - -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/stream/format_manip.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/stream/format_manip.hpp deleted file mode 100644 index f34db4b0eff2..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/stream/format_manip.hpp +++ /dev/null @@ -1,119 +0,0 @@ -// 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_FORMAT_MANIP_MAY_01_2007_1211PM) -#define BOOST_SPIRIT_KARMA_FORMAT_MANIP_MAY_01_2007_1211PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace karma -{ - /////////////////////////////////////////////////////////////////////////// - template - inline typename detail::format::type - format(Expr const& expr) - { - return detail::format::call(expr); - } - - template - inline detail::format_manip - format( - Expr const& expr - , Attribute const& attr) - { - using karma::detail::format_manip; - - // Report invalid expression error as early as possible. - // If you got an error_invalid_expression error message here, - // then the expression (expr) is not a valid spirit karma expression. - BOOST_SPIRIT_ASSERT_MATCH(karma::domain, Expr); - return format_manip( - expr, unused, attr); - } - - /////////////////////////////////////////////////////////////////////////// - template - inline typename detail::format_delimited::type - format_delimited( - Expr const& expr - , Delimiter const& d - , BOOST_SCOPED_ENUM(delimit_flag) pre_delimit = - delimit_flag::dont_predelimit) - { - return detail::format_delimited::call(expr, d, pre_delimit); - } - - template - inline detail::format_manip - format_delimited( - Expr const& xpr - , Delimiter const& d - , BOOST_SCOPED_ENUM(delimit_flag) pre_delimit - , Attribute const& attr) - { - using karma::detail::format_manip; - - // Report invalid expression error as early as possible. - // If you got an error_invalid_expression error message here, - // then the expression (expr) is not a valid spirit karma expression. - BOOST_SPIRIT_ASSERT_MATCH(karma::domain, Expr); - BOOST_SPIRIT_ASSERT_MATCH(karma::domain, Delimiter); - return format_manip( - xpr, d, pre_delimit, attr); - } - - template - inline detail::format_manip - format_delimited( - Expr const& xpr - , Delimiter const& d - , Attribute const& attr) - { - using karma::detail::format_manip; - - // Report invalid expression error as early as possible. - // If you got an error_invalid_expression error message here, - // then the expression (expr) is not a valid spirit karma expression. - BOOST_SPIRIT_ASSERT_MATCH(karma::domain, Expr); - BOOST_SPIRIT_ASSERT_MATCH(karma::domain, Delimiter); - return format_manip( - xpr, d, delimit_flag::dont_predelimit, attr); - } - - /////////////////////////////////////////////////////////////////////////// - template - inline std::basic_ostream & - operator<< (std::basic_ostream &os, generator const& g) - { - typedef traits::properties_of< - typename result_of::compile::type - > properties; - typedef karma::ostream_iterator outiter_type; - - outiter_type target_sink(os); - karma::detail::output_iterator sink(target_sink); - - if (!g.derived().generate(sink, unused, unused, unused)) - { - os.setstate(std::basic_ostream::failbit); - } - return os; - } -}}} - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/stream/format_manip_attr.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/stream/format_manip_attr.hpp deleted file mode 100644 index 402cec7e9092..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/stream/format_manip_attr.hpp +++ /dev/null @@ -1,125 +0,0 @@ -// 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_PP_IS_ITERATING) - -#if !defined(BOOST_SPIRIT_KARMA_FORMAT_MANIP_ATTR_APR_24_2009_0734AM) -#define BOOST_SPIRIT_KARMA_FORMAT_MANIP_ATTR_APR_24_2009_0734AM - -#include - -#include -#include -#include -#include -#include -#include -#include - -#define BOOST_PP_FILENAME_1 \ - -#define BOOST_PP_ITERATION_LIMITS (2, SPIRIT_ARGUMENTS_LIMIT) -#include BOOST_PP_ITERATE() - -#endif - -/////////////////////////////////////////////////////////////////////////////// -// -// Preprocessor vertical repetition code -// -/////////////////////////////////////////////////////////////////////////////// -#else // defined(BOOST_PP_IS_ITERATING) - -#define N BOOST_PP_ITERATION() -#define BOOST_SPIRIT_KARMA_ATTRIBUTE_REFERENCE(z, n, A) \ - BOOST_PP_CAT(A, n) const& - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace karma -{ - /////////////////////////////////////////////////////////////////////////// - template - inline detail::format_manip > - format(Expr const& xpr, BOOST_PP_ENUM_BINARY_PARAMS(N, A, const& attr)) - { - using karma::detail::format_manip; - - // Report invalid expression error as early as possible. - // If you got an error_invalid_expression error message here, - // then the expression (expr) is not a valid spirit karma expression. - BOOST_SPIRIT_ASSERT_MATCH(karma::domain, Expr); - - typedef fusion::vector< - BOOST_PP_ENUM(N, BOOST_SPIRIT_KARMA_ATTRIBUTE_REFERENCE, A) - > vector_type; - - vector_type attr (BOOST_PP_ENUM_PARAMS(N, attr)); - return format_manip( - xpr, unused, attr); - } - - /////////////////////////////////////////////////////////////////////////// - template - inline detail::format_manip > - format_delimited(Expr const& xpr, Delimiter const& d - , BOOST_SCOPED_ENUM(delimit_flag) pre_delimit - , BOOST_PP_ENUM_BINARY_PARAMS(N, A, const& attr)) - { - using karma::detail::format_manip; - - // Report invalid expression error as early as possible. - // If you got an error_invalid_expression error message here, - // then the expression (expr) is not a valid spirit karma expression. - BOOST_SPIRIT_ASSERT_MATCH(karma::domain, Expr); - BOOST_SPIRIT_ASSERT_MATCH(karma::domain, Delimiter); - - typedef fusion::vector< - BOOST_PP_ENUM(N, BOOST_SPIRIT_KARMA_ATTRIBUTE_REFERENCE, A) - > vector_type; - - vector_type attr (BOOST_PP_ENUM_PARAMS(N, attr)); - return format_manip( - xpr, d, pre_delimit, attr); - } - - template - inline detail::format_manip > - format_delimited(Expr const& xpr, Delimiter const& d - , BOOST_PP_ENUM_BINARY_PARAMS(N, A, const& attr)) - { - using karma::detail::format_manip; - - // Report invalid expression error as early as possible. - // If you got an error_invalid_expression error message here, - // then the expression (expr) is not a valid spirit karma expression. - BOOST_SPIRIT_ASSERT_MATCH(karma::domain, Expr); - BOOST_SPIRIT_ASSERT_MATCH(karma::domain, Delimiter); - - typedef fusion::vector< - BOOST_PP_ENUM(N, BOOST_SPIRIT_KARMA_ATTRIBUTE_REFERENCE, A) - > vector_type; - - vector_type attr (BOOST_PP_ENUM_PARAMS(N, attr)); - return format_manip( - xpr, d, delimit_flag::dont_predelimit, attr); - } -}}} - -#undef BOOST_SPIRIT_KARMA_ATTRIBUTE_REFERENCE -#undef N - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/stream/ostream_iterator.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/stream/ostream_iterator.hpp deleted file mode 100644 index f63b00bd3eb1..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/stream/ostream_iterator.hpp +++ /dev/null @@ -1,70 +0,0 @@ -// 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_OSTREAM_ITERATOR_MAY_26_2007_1016PM) -#define BOOST_SPIRIT_KARMA_OSTREAM_ITERATOR_MAY_26_2007_1016PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace karma -{ - /////////////////////////////////////////////////////////////////////////// - // We need our own implementation of an ostream_iterator just to be able - // to access the wrapped ostream, which is necessary for the - // stream_generator, where we must generate the output using the original - // ostream to retain possibly registered facets. - /////////////////////////////////////////////////////////////////////////// - template < - typename T, typename Elem = char - , typename Traits = std::char_traits > - class ostream_iterator - { - public: - typedef std::output_iterator_tag iterator_category; - typedef void value_type; - typedef void difference_type; - typedef void pointer; - typedef void reference; - typedef Elem char_type; - typedef Traits traits_type; - typedef std::basic_ostream ostream_type; - typedef ostream_iterator self_type; - - ostream_iterator(ostream_type& os_, Elem const* delim_ = 0) - : os(&os_), delim(delim_) {} - - self_type& operator= (T const& val) - { - *os << val; - if (0 != delim) - *os << delim; - return *this; - } - - self_type& operator*() { return *this; } - self_type& operator++() { return *this; } - self_type operator++(int) { return *this; } - - // expose underlying stream - ostream_type& get_ostream() { return *os; } - ostream_type const& get_ostream() const { return *os; } - - // expose good bit of underlying stream object - bool good() const { return get_ostream().good(); } - - protected: - ostream_type *os; - Elem const* delim; - }; - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/stream/stream.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/stream/stream.hpp deleted file mode 100644 index 69c8dd4b3cab..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/stream/stream.hpp +++ /dev/null @@ -1,395 +0,0 @@ -// 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_STREAM_MAY_01_2007_0310PM) -#define BOOST_SPIRIT_KARMA_STREAM_MAY_01_2007_0310PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit -{ - namespace tag - { - template - struct stream_tag - { - BOOST_SPIRIT_IS_TAG() - }; - } - - namespace karma - { - /////////////////////////////////////////////////////////////////////// - // This one is the class that the user can instantiate directly in - // order to create a customized int generator - template - struct stream_generator - : spirit::terminal > - {}; - } - - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_terminal // enables stream - : mpl::true_ {}; - - template <> - struct use_terminal // enables wstream - : mpl::true_ {}; - - template - struct use_terminal > - > : mpl::true_ {}; - - template - struct use_terminal > - > : mpl::true_ {}; - - template <> // enables stream(f) - struct use_lazy_terminal< - karma::domain, tag::stream, 1 /*arity*/ - > : mpl::true_ {}; - - template <> // enables wstream(f) - struct use_lazy_terminal< - karma::domain, tag::wstream, 1 /*arity*/ - > : mpl::true_ {}; - - // enables stream_generator - template - struct use_terminal > - : mpl::true_ {}; - - template - struct use_terminal, fusion::vector1 > - > : mpl::true_ {}; - - template - struct use_lazy_terminal< - karma::domain, tag::stream_tag, 1 /*arity*/ - > : mpl::true_ {}; - -}} - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace karma -{ -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using spirit::stream; - using spirit::wstream; -#endif - using spirit::stream_type; - using spirit::wstream_type; - -namespace detail -{ -#ifdef _MSC_VER -# pragma warning(push) -# pragma warning(disable: 4512) // assignment operator could not be generated. -#endif - template - struct psbuf : std::basic_streambuf - { - psbuf(OutputIterator& sink) : sink_(sink) {} - - protected: - typename psbuf::int_type overflow(typename psbuf::int_type ch) BOOST_OVERRIDE - { - if (psbuf::traits_type::eq_int_type(ch, psbuf::traits_type::eof())) - return psbuf::traits_type::not_eof(ch); - - return detail::generate_to(sink_, psbuf::traits_type::to_char_type(ch), - CharEncoding(), Tag()) ? ch : psbuf::traits_type::eof(); - } - - private: - OutputIterator& sink_; - }; -#ifdef _MSC_VER -# pragma warning(pop) -#endif -} - - /////////////////////////////////////////////////////////////////////////// - template - struct any_stream_generator - : primitive_generator > - { - template - struct attribute - { - typedef spirit::basic_hold_any type; - }; - - // any_stream_generator has an attached attribute - template < - typename OutputIterator, typename Context, typename Delimiter - , typename Attribute - > - static bool generate(OutputIterator& sink, Context& context - , Delimiter const& d, Attribute const& attr) - { - if (!traits::has_optional_value(attr)) - return false; - - // use existing operator<<() - typedef typename attribute::type attribute_type; - - { - detail::psbuf pseudobuf(sink); - std::basic_ostream ostr(&pseudobuf); - ostr << traits::extract_from(attr, context) << std::flush; - - if (!ostr.good()) - return false; - } - - return karma::delimit_out(sink, d); // always do post-delimiting - } - - // this is a special overload to detect if the output iterator has been - // generated by a format_manip object. - template < - typename T, typename Traits, typename Properties, typename Context - , typename Delimiter, typename Attribute - > - static bool generate( - karma::detail::output_iterator< - karma::ostream_iterator, Properties - >& sink, Context& context, Delimiter const& d - , Attribute const& attr) - { - typedef karma::detail::output_iterator< - karma::ostream_iterator, Properties - > output_iterator; - - if (!traits::has_optional_value(attr)) - return false; - - // use existing operator<<() - typedef typename attribute::type attribute_type; - - { - detail::psbuf pseudobuf(sink); - std::basic_ostream ostr(&pseudobuf); - ostr.imbue(sink.get_ostream().getloc()); - ostr << traits::extract_from(attr, context) - << std::flush; - if (!ostr.good()) - return false; - } - - return karma::delimit_out(sink, d); // always do post-delimiting - } - - // this any_stream has no parameter attached, it needs to have been - // initialized from a value/variable - template - static bool - generate(OutputIterator&, Context&, Delimiter const&, unused_type) - { - // It is not possible (doesn't make sense) to use stream generators - // without providing any attribute, as the generator doesn't 'know' - // what to output. The following assertion fires if this situation - // is detected in your code. - BOOST_SPIRIT_ASSERT_FAIL(OutputIterator, stream_not_usable_without_attribute, ()); - return false; - } - - template - info what(Context& /*context*/) const - { - return info("stream"); - } - }; - - template - struct lit_stream_generator - : primitive_generator > - { - template - struct attribute - { - typedef unused_type type; - }; - - lit_stream_generator(typename add_reference::type t) - : t_(t) - {} - - // lit_stream_generator has an attached parameter - - // this overload will be used in the normal case (not called from - // format_manip). - template < - typename OutputIterator, typename Context, typename Delimiter - , typename Attribute> - bool generate(OutputIterator& sink, Context&, Delimiter const& d - , Attribute const&) const - { - detail::psbuf pseudobuf(sink); - std::basic_ostream ostr(&pseudobuf); - ostr << t_ << std::flush; // use existing operator<<() - - if (ostr.good()) - return karma::delimit_out(sink, d); // always do post-delimiting - return false; - } - - // this is a special overload to detect if the output iterator has been - // generated by a format_manip object. - template < - typename T1, typename Traits, typename Properties - , typename Context, typename Delimiter, typename Attribute> - bool generate( - karma::detail::output_iterator< - karma::ostream_iterator, Properties - >& sink, Context&, Delimiter const& d, Attribute const&) const - { - typedef karma::detail::output_iterator< - karma::ostream_iterator, Properties - > output_iterator; - - { - detail::psbuf pseudobuf(sink); - std::basic_ostream ostr(&pseudobuf); - ostr.imbue(sink.get_ostream().getloc()); - ostr << t_ << std::flush; // use existing operator<<() - - if (!ostr.good()) - return false; - } - - return karma::delimit_out(sink, d); // always do post-delimiting - } - - template - info what(Context& /*context*/) const - { - return info("any-stream"); - } - - T t_; - }; - - /////////////////////////////////////////////////////////////////////////// - // Generator generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_stream - { - static bool const lower = - has_modifier >::value; - - static bool const upper = - has_modifier >::value; - - typedef any_stream_generator< - Char - , typename spirit::detail::get_encoding_with_case< - Modifiers, unused_type, lower || upper>::type - , typename detail::get_casetag::type - > result_type; - - result_type operator()(unused_type, unused_type) const - { - return result_type(); - } - }; - - // stream - template - struct make_primitive - : make_stream {}; - - // wstream - template - struct make_primitive - : make_stream {}; - - // any_stream_generator - template - struct make_primitive, Modifiers> - : make_stream {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct make_any_stream - { - static bool const lower = - has_modifier >::value; - - static bool const upper = - has_modifier >::value; - - typedef typename add_const::type const_attribute; - typedef lit_stream_generator< - const_attribute, Char - , typename spirit::detail::get_encoding_with_case< - Modifiers, unused_type, lower || upper>::type - , typename detail::get_casetag::type - > result_type; - - template - result_type operator()(Terminal const& term, unused_type) const - { - return result_type(fusion::at_c<0>(term.args)); - } - }; - - // stream(...) - template - struct make_primitive< - terminal_ex >, Modifiers> - : make_any_stream {}; - - // wstream(...) - template - struct make_primitive< - terminal_ex >, Modifiers> - : make_any_stream {}; - - // any_stream_generator(...) - template - struct make_primitive< - terminal_ex, fusion::vector1 > - , Modifiers> - : make_any_stream {}; - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/string.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/string.hpp deleted file mode 100644 index 8326a149bdbe..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/string.hpp +++ /dev/null @@ -1,16 +0,0 @@ -// 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_STRING_FEB_23_2007_0156PM) -#define BOOST_SPIRIT_KARMA_STRING_FEB_23_2007_0156PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/string/lit.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/string/lit.hpp deleted file mode 100644 index bd84bb848e1f..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/string/lit.hpp +++ /dev/null @@ -1,331 +0,0 @@ -// Copyright (c) 2001-2011 Hartmut Kaiser -// Copyright (c) 2010 Bryce Lelbach -// -// 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_LIT_FEB_22_2007_0534PM) -#define BOOST_SPIRIT_KARMA_LIT_FEB_22_2007_0534PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template - struct use_terminal > // enables string - : mpl::true_ {}; - - template - struct use_terminal >::type> // enables string literals - : mpl::true_ {}; - - template - struct use_terminal // enables string(str) - , fusion::vector1 > - > : traits::is_string {}; - - template // enables string(f) - struct use_lazy_terminal< - karma::domain - , tag::char_code - , 1 /*arity*/ - > : mpl::true_ {}; - - // enables lit(str) - template - struct use_terminal > - , typename enable_if >::type> - : mpl::true_ {}; -}} - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace karma -{ -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using spirit::lit; -#endif - using spirit::lit_type; - - /////////////////////////////////////////////////////////////////////////// - // generate literal strings from a given parameter - /////////////////////////////////////////////////////////////////////////// - template - struct any_string - : primitive_generator > - { - typedef typename CharEncoding::char_type char_type; - typedef CharEncoding char_encoding; - - template - struct attribute - { - typedef std::basic_string type; - }; - - // lit has an attached attribute - template - static bool - generate(OutputIterator& sink, Context& context, Delimiter const& d, - Attribute const& attr) - { - if (!traits::has_optional_value(attr)) - return false; - - typedef typename attribute::type attribute_type; - return - karma::detail::string_generate(sink - , traits::extract_from(attr, context) - , char_encoding(), Tag()) && - karma::delimit_out(sink, d); // always do post-delimiting - } - - // this lit has no attribute attached, it needs to have been - // initialized from a direct literal - template - static bool generate(OutputIterator&, Context&, Delimiter const&, - unused_type const&) - { - // It is not possible (doesn't make sense) to use string without - // providing any attribute, as the generator doesn't 'know' what - // character to output. The following assertion fires if this - // situation is detected in your code. - BOOST_SPIRIT_ASSERT_FAIL(OutputIterator, string_not_usable_without_attribute, ()); - return false; - } - - template - static info what(Context const& /*context*/) - { - return info("any-string"); - } - }; - - /////////////////////////////////////////////////////////////////////////// - // generate literal strings - /////////////////////////////////////////////////////////////////////////// - template - struct literal_string - : primitive_generator > - { - typedef CharEncoding char_encoding; - typedef typename - remove_const::type>::type - char_type; - typedef std::basic_string string_type; - - template - struct attribute - : mpl::if_c - {}; - - literal_string(typename add_reference::type str) - : str_(str) - {} - - // A string("...") which additionally has an associated attribute emits - // its immediate literal only if it matches the attribute, otherwise - // it fails. - template < - typename OutputIterator, typename Context, typename Delimiter - , typename Attribute> - bool generate(OutputIterator& sink, Context& context - , Delimiter const& d, Attribute const& attr) const - { - if (!traits::has_optional_value(attr)) - return false; - - // fail if attribute isn't matched by immediate literal - typedef typename attribute::type attribute_type; - - using spirit::traits::get_c_string; - if (!detail::string_compare( - get_c_string( - traits::extract_from(attr, context)) - , get_c_string(str_), char_encoding(), Tag())) - { - return false; - } - return detail::string_generate(sink, str_, char_encoding(), Tag()) && - karma::delimit_out(sink, d); // always do post-delimiting - } - - // A string("...") without any associated attribute just emits its - // immediate literal - template - bool generate(OutputIterator& sink, Context&, Delimiter const& d - , unused_type) const - { - return detail::string_generate(sink, str_, char_encoding(), Tag()) && - karma::delimit_out(sink, d); // always do post-delimiting - } - - template - info what(Context const& /*context*/) const - { - return info("literal-string", str_); - } - - string_type str_; - }; - - /////////////////////////////////////////////////////////////////////////// - // Generator generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - - // string - template - struct make_primitive< - tag::char_code - , Modifiers> - { - static bool const lower = - has_modifier >::value; - static bool const upper = - has_modifier >::value; - - typedef any_string< - typename spirit::detail::get_encoding_with_case< - Modifiers, CharEncoding, lower || upper>::type - , typename detail::get_casetag::type - > result_type; - - result_type operator()(unused_type, unused_type) const - { - return result_type(); - } - }; - - // string literal - template - struct make_primitive >::type> - { - static bool const lower = - has_modifier >::value; - - static bool const upper = - has_modifier >::value; - - typedef typename add_const::type const_string; - typedef literal_string< - const_string - , typename spirit::detail::get_encoding_with_case< - Modifiers, unused_type, lower || upper>::type - , typename detail::get_casetag::type - , true - > result_type; - - result_type operator()( - typename add_reference::type str, unused_type) const - { - return result_type(str); - } - }; - - /////////////////////////////////////////////////////////////////////////// - namespace detail - { - template - struct make_string_direct - { - static bool const lower = - has_modifier >::value; - static bool const upper = - has_modifier >::value; - - typedef typename add_const::type const_string; - typedef literal_string< - const_string - , typename spirit::detail::get_encoding_with_case< - Modifiers, unused_type, lower || upper>::type - , typename detail::get_casetag::type - , no_attribute - > result_type; - - template - result_type operator()(Terminal const& term, unused_type) const - { - return result_type(fusion::at_c<0>(term.args)); - } - }; - } - - // string("..."), lit("...") - template - struct make_primitive< - terminal_ex< - tag::char_code - , fusion::vector1 > - , Modifiers> - : detail::make_string_direct - {}; - - template - struct make_primitive< - terminal_ex > - , Modifiers - , typename enable_if >::type> - : detail::make_string_direct< - typename traits::char_encoding_from_char< - typename traits::char_type_of::type>::type - , Modifiers, A0, true> - {}; -}}} // namespace boost::spirit::karma - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container, Attribute - , Context, Iterator> - : mpl::false_ {}; - - template - struct handles_container, Attribute, Context, Iterator> - : mpl::false_ {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/string/symbols.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/string/symbols.hpp deleted file mode 100644 index 2c49ab42839b..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/string/symbols.hpp +++ /dev/null @@ -1,768 +0,0 @@ -// 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_SYMBOLS_NOV_23_2009_1251PM) -#define BOOST_SPIRIT_KARMA_SYMBOLS_NOV_23_2009_1251PM - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if defined(BOOST_MSVC) -# pragma warning(push) -# pragma warning(disable: 4355) // 'this' : used in base member initializer list warning -#endif - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace traits -{ - template - struct symbols_lookup - { - typedef - mpl::eval_if - , traits::detail::value_at_c - , detail::add_const_ref > sequence_type; - typedef typename - mpl::eval_if - , traits::container_value - , sequence_type>::type type; - - // fusion sequence - template - static type call(T_ const& t, mpl::false_, mpl::true_) - { - return fusion::at_c<0>(t); - } - - // container - template - static type call(T_ const& t, mpl::true_, IsSequence) - { - return t[0]; - } - - // not a container and not a fusion sequence - template - static type call(T_ const& t, mpl::false_, mpl::false_) - { - return t; - } - - static type call(T const& t) - { - typedef typename traits::is_container::type is_container; - typedef typename fusion::traits::is_sequence::type is_sequence; - - return call(t, is_container(), is_sequence()); - } - }; - - template - struct symbols_lookup - { - typedef Attribute const& type; - - static type call(Attribute const& t) - { - return t; - } - }; - - template - struct symbols_value - { - typedef - mpl::eval_if - , traits::detail::value_at_c - , mpl::identity > sequence_type; - typedef typename - mpl::eval_if - , traits::container_value - , sequence_type>::type type; - - // fusion sequence - template - static type call(T_ const& t, mpl::false_, mpl::true_) - { - return fusion::at_c<1>(t); - } - - // container - template - static type call(T_ const& t, mpl::true_, IsSequence) - { - return t[1]; - } - - // not a container nor a fusion sequence - template - static type call(T_ const&, mpl::false_, mpl::false_) - { - return unused; - } - - static type call(T const& t) - { - typedef typename traits::is_container::type is_container; - typedef typename fusion::traits::is_sequence::type is_sequence; - - return call(t, is_container(), is_sequence()); - } - }; - - template - struct symbols_value - { - typedef unused_type type; - - static type call(Attribute const&) - { - return unused; - } - }; -}}} - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace karma -{ - /////////////////////////////////////////////////////////////////////////// - template - struct symbols_lookup - : mpl::if_< - traits::not_is_unused - , std::map - , std::set - > - {}; - - /////////////////////////////////////////////////////////////////////////// - namespace detail - { - /////////////////////////////////////////////////////////////////////// - template - struct generate_encoded - { - typedef typename - proto::terminal >::type - encoding_type; - - template - static bool call(OutputIterator& sink, Expr const& expr - , Attribute const& attr) - { - encoding_type const encoding = encoding_type(); - return karma::generate(sink, encoding[expr], attr); - } - }; - - template <> - struct generate_encoded - { - template - static bool call(OutputIterator& sink, Expr const& expr - , Attribute const& attr) - { - return karma::generate(sink, expr, attr); - } - }; - } - - template < - typename Attribute = char, typename T = unused_type - , typename Lookup = typename symbols_lookup::type - , typename CharEncoding = unused_type, typename Tag = unused_type> - struct symbols - : proto::extends< - typename proto::terminal< - reference > - >::type - , symbols > - , primitive_generator< - symbols > - { - typedef T value_type; // the value associated with each entry - - typedef reference reference_; - typedef typename proto::terminal::type terminal; - typedef proto::extends base_type; - - template - struct attribute - { - typedef Attribute type; - }; - - symbols(std::string const& name = "symbols") - : base_type(terminal::make(reference_(*this))) - , add(*this) - , remove(*this) - , lookup(new Lookup()) - , name_(name) - {} - - symbols(symbols const& syms) - : base_type(terminal::make(reference_(*this))) - , add(*this) - , remove(*this) - , lookup(syms.lookup) - , name_(syms.name_) - {} - - template - symbols(symbols const& syms) - : base_type(terminal::make(reference_(*this))) - , add(*this) - , remove(*this) - , lookup(syms.lookup) - , name_(syms.name_) - {} - - template - symbols(Symbols const& syms, Data const& data - , std::string const& name = "symbols") - : base_type(terminal::make(reference_(*this))) - , add(*this) - , remove(*this) - , lookup(new Lookup()) - , name_(name) - { - typename range_const_iterator::type si = boost::begin(syms); - typename range_const_iterator::type di = boost::begin(data); - while (si != boost::end(syms)) - add(*si++, *di++); - } - - symbols& - operator=(symbols const& rhs) - { - *lookup = *rhs.lookup; - name_ = rhs.name_; - return *this; - } - - template - symbols& - operator=(symbols const& rhs) - { - *lookup = *rhs.lookup; - name_ = rhs.name_; - return *this; - } - - void clear() - { - lookup->clear(); - } - - struct adder; - struct remover; - - template - adder const& - operator=(std::pair const& p) - { - lookup->clear(); - return add(p.first, p.second); - } - - template - friend adder const& - operator+= (symbols& sym, std::pair const& p) - { - return sym.add(p.first, p.second); - } - - template - friend remover const& - operator-= (symbols& sym, Attr const& attr) - { - return sym.remove(attr); - } - -#if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) - // non-const version needed to suppress proto's += kicking in - template - friend adder const& - operator+= (symbols& sym, std::pair& p) - { - return sym.add(p.first, p.second); - } - - // non-const version needed to suppress proto's -= kicking in - template - friend remover const& - operator-= (symbols& sym, Attr& attr) - { - return sym.remove(attr); - } -#else - // for rvalue references - template - friend adder const& - operator+= (symbols& sym, std::pair&& p) - { - return sym.add(p.first, p.second); - } - - // for rvalue references - template - friend remover const& - operator-= (symbols& sym, Attr&& attr) - { - return sym.remove(attr); - } -#endif - template - void for_each(F f) const - { - std::for_each(lookup->begin(), lookup->end(), f); - } - - template - value_type* find(Attr const& attr) - { - typename Lookup::iterator it = lookup->find(attr); - return (it != lookup->end()) ? &(*it).second : 0; - } - - template - value_type& at(Attr const& attr) - { - return (*lookup)[attr]; - } - - /////////////////////////////////////////////////////////////////////// - template - bool generate(OutputIterator& sink, Context&, Delimiter const& d - , Attr const& attr) const - { - typename Lookup::iterator it = lookup->find( - traits::symbols_lookup::call(attr)); - if (it == lookup->end()) - return false; - - return karma::detail::generate_encoded::call( - sink, (*it).second - , traits::symbols_value::call(attr)) && - karma::delimit_out(sink, d); - } - - template - info what(Context&) const - { - return info(name_); - } - - void name(std::string const &str) - { - name_ = str; - } - std::string const &name() const - { - return name_; - } - - /////////////////////////////////////////////////////////////////////// -#ifdef _MSC_VER -# pragma warning(push) -# pragma warning(disable: 4512) // assignment operator could not be generated. -#endif - struct adder - { - template - struct result { typedef adder const& type; }; - - adder(symbols& sym) - : sym(sym) - { - } - - template - adder const& - operator()(Attr const& attr, T const& val = T()) const - { - sym.lookup->insert(typename Lookup::value_type(attr, val)); - return *this; - } - - template - adder const& - operator, (Attr const& attr) const - { - sym.lookup->insert(typename Lookup::value_type(attr, T())); - return *this; - } - - symbols& sym; - }; - - struct remover - { - template - struct result { typedef remover const& type; }; - - remover(symbols& sym) - : sym(sym) - { - } - - template - remover const& - operator()(Attr const& attr) const - { - sym.lookup->erase(attr); - return *this; - } - - template - remover const& - operator, (Attr const& attr) const - { - sym.lookup->erase(attr); - return *this; - } - - symbols& sym; - }; -#ifdef _MSC_VER -# pragma warning(pop) -#endif - - adder add; - remover remove; - shared_ptr lookup; - std::string name_; - }; - - /////////////////////////////////////////////////////////////////////////// - // specialization for unused stored type - template < - typename Attribute, typename Lookup - , typename CharEncoding, typename Tag> - struct symbols - : proto::extends< - typename proto::terminal< - spirit::karma::reference< - symbols > - >::type - , symbols - > - , spirit::karma::generator< - symbols > - { - typedef unused_type value_type; // the value associated with each entry - - typedef spirit::karma::reference reference_; - typedef typename proto::terminal::type terminal; - typedef proto::extends base_type; - - template - struct attribute - { - typedef Attribute type; - }; - - symbols(std::string const& name = "symbols") - : base_type(terminal::make(reference_(*this))) - , add(*this) - , remove(*this) - , lookup(new Lookup()) - , name_(name) - {} - - symbols(symbols const& syms) - : base_type(terminal::make(reference_(*this))) - , add(*this) - , remove(*this) - , lookup(syms.lookup) - , name_(syms.name_) - {} - - template - symbols(symbols const& syms) - : base_type(terminal::make(reference_(*this))) - , add(*this) - , remove(*this) - , lookup(syms.lookup) - , name_(syms.name_) - {} - - template - symbols(Symbols const& syms, Data const& data - , std::string const& name = "symbols") - : base_type(terminal::make(reference_(*this))) - , add(*this) - , remove(*this) - , lookup(new Lookup()) - , name_(name) - { - typename range_const_iterator::type si = boost::begin(syms); - typename range_const_iterator::type di = boost::begin(data); - while (si != boost::end(syms)) - add(*si++, *di++); - } - - symbols& - operator=(symbols const& rhs) - { - *lookup = *rhs.lookup; - name_ = rhs.name_; - return *this; - } - - template - symbols& - operator=(symbols const& rhs) - { - *lookup = *rhs.lookup; - name_ = rhs.name_; - return *this; - } - - void clear() - { - lookup->clear(); - } - - struct adder; - struct remover; - - template - adder const& - operator=(Attr const& attr) - { - lookup->clear(); - return add(attr); - } - - template - friend adder const& - operator+= (symbols& sym, Attr const& attr) - { - return sym.add(attr); - } - - template - friend remover const& - operator-= (symbols& sym, Attr const& attr) - { - return sym.remove(attr); - } - - // non-const version needed to suppress proto's += kicking in - template - friend adder const& - operator+= (symbols& sym, Attr& attr) - { - return sym.add(attr); - } - - // non-const version needed to suppress proto's -= kicking in - template - friend remover const& - operator-= (symbols& sym, Attr& attr) - { - return sym.remove(attr); - } - - template - void for_each(F f) const - { - std::for_each(lookup->begin(), lookup->end(), f); - } - - template - value_type const* find(Attr const& attr) - { - typename Lookup::iterator it = lookup->find(attr); - return (it != lookup->end()) ? &unused : 0; - } - - template - value_type at(Attr const& attr) - { - typename Lookup::iterator it = lookup->find(attr); - if (it == lookup->end()) - add(attr); - return unused; - } - - /////////////////////////////////////////////////////////////////////// - template - bool generate(OutputIterator& sink, Context&, Delimiter const& d - , Attr const& attr) const - { - typename Lookup::iterator it = lookup->find( - traits::symbols_lookup::call(attr)); - if (it == lookup->end()) - return false; - - return karma::detail::generate_encoded:: - call(sink - , traits::symbols_lookup::call(attr) - , unused) && - karma::delimit_out(sink, d); - } - - template - info what(Context&) const - { - return info(name_); - } - - void name(std::string const &str) - { - name_ = str; - } - std::string const &name() const - { - return name_; - } - - /////////////////////////////////////////////////////////////////////// -#ifdef _MSC_VER -# pragma warning(push) -# pragma warning(disable: 4512) // assignment operator could not be generated. -#endif - struct adder - { - template - struct result { typedef adder const& type; }; - - adder(symbols& sym) - : sym(sym) - { - } - - template - adder const& - operator()(Attr const& attr) const - { - sym.lookup->insert(attr); - return *this; - } - - template - adder const& - operator, (Attr const& attr) const - { - sym.lookup->insert(attr); - return *this; - } - - symbols& sym; - }; - - struct remover - { - template - struct result { typedef remover const& type; }; - - remover(symbols& sym) - : sym(sym) - { - } - - template - remover const& - operator()(Attr const& attr) const - { - sym.lookup->erase(attr); - return *this; - } - - template - remover const& - operator, (Attr const& attr) const - { - sym.lookup->erase(attr); - return *this; - } - - symbols& sym; - }; -#ifdef _MSC_VER -# pragma warning(pop) -#endif - - adder add; - remover remove; - shared_ptr lookup; - std::string name_; - }; - - /////////////////////////////////////////////////////////////////////////// - // Generator generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_primitive< - reference > - , Modifiers> - { - static bool const lower = - has_modifier >::value; - static bool const upper = - has_modifier >::value; - - typedef reference< - symbols - > reference_; - - typedef typename mpl::if_c< - lower || upper - , symbols< - Attribute, T, Lookup - , typename spirit::detail::get_encoding_with_case< - Modifiers, unused_type, lower || upper>::type - , typename detail::get_casetag::type> - , reference_>::type - result_type; - - result_type operator()(reference_ ref, unused_type) const - { - return result_type(ref.ref.get()); - } - }; -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container - , Attr, Context, Iterator> - : traits::is_container {}; -}}} - -#if defined(BOOST_MSVC) -# pragma warning(pop) -#endif - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/karma/what.hpp b/framework/contrib/boost/include/boost/spirit/home/karma/what.hpp deleted file mode 100644 index c65937e454db..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/karma/what.hpp +++ /dev/null @@ -1,33 +0,0 @@ -// 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_WHAT_MAY_04_2007_0116PM) -#define BOOST_SPIRIT_WHAT_MAY_04_2007_0116PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include - -namespace boost { namespace spirit { namespace karma -{ - template - inline info what(Expr const& xpr) - { - // Report invalid expression error as early as possible. - // If you got an error_invalid_expression - // error message here, then the expression (expr) is not a - // valid spirit karma expression. - BOOST_SPIRIT_ASSERT_MATCH(karma::domain, Expr); - return compile(xpr).what(unused); - } - -}}} - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/lex.hpp b/framework/contrib/boost/include/boost/spirit/home/lex.hpp deleted file mode 100644 index 5d95f5bfc8f7..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/lex.hpp +++ /dev/null @@ -1,18 +0,0 @@ -// 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_LEXER_MARCH_22_2007_0929PM) -#define BOOST_SPIRIT_LEXER_MARCH_22_2007_0929PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/lex/argument.hpp b/framework/contrib/boost/include/boost/spirit/home/lex/argument.hpp deleted file mode 100644 index b1b403696a3a..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/lex/argument.hpp +++ /dev/null @@ -1,265 +0,0 @@ -// Copyright (c) 2001-2011 Hartmut Kaiser -// Copyright (c) 2001-2011 Joel de Guzman -// Copyright (c) 2010 Bryce Lelbach -// Copyright (c) 2011 Thomas Heller -// -// 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_LEX_ARGUMENT_JUNE_07_2009_1106AM) -#define BOOST_SPIRIT_LEX_ARGUMENT_JUNE_07_2009_1106AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace lex -{ - /////////////////////////////////////////////////////////////////////////// - // The state_getter is a Phoenix actor used to access the name of the - // current lexer state by calling get_state_name() on the context (which - // is the 5th parameter to any lexer semantic actions). - // - // This Phoenix actor is invoked whenever the placeholder '_state' is used - // as a rvalue inside a lexer semantic action: - // - // lex::token_def<> identifier = "[a-zA-Z_][a-zA-Z0-9_]*"; - // this->self = identifier [ std::cout << _state ]; - // - // The example shows how to print the lexer state after matching a token - // 'identifier'. - struct state_getter - { - typedef mpl::true_ no_nullary; - - template - struct result - { - typedef - typename remove_reference< - typename remove_const< - typename mpl::at_c::type - >::type - >::type - context_type; - - typedef typename context_type::state_name_type type; - }; - - template - typename result::type - eval(Env const& env) const - { - return fusion::at_c<4>(env.args()).get_state_name(); - } - }; - - /////////////////////////////////////////////////////////////////////////// - // The state_setter is a Phoenix actor used to change the name of the - // current lexer state by calling set_state_name() on the context (which - // is the 5th parameter to any lexer semantic actions). - // - // This Phoenix actor is invoked whenever the placeholder '_state' is used - // as a lvalue inside a lexer semantic action: - // - // lex::token_def<> identifier = "[a-zA-Z_][a-zA-Z0-9_]*"; - // this->self = identifier [ _state = "SOME_LEXER_STATE" ]; - // - // The example shows how to change the lexer state after matching a token - // 'identifier'. - template - struct state_setter - { - typedef mpl::true_ no_nullary; - - template - struct result - { - typedef void type; - }; - - template - void eval(Env const& env) const - { - fusion::at_c<4>(env.args()).set_state_name( - traits::get_c_string(actor_.eval(env))); - } - - state_setter(Actor const& actor) - : actor_(actor) {} - - Actor actor_; - }; - - /////////////////////////////////////////////////////////////////////////// - // The value_getter is used to create the _val placeholder, which is a - // Phoenix actor used to access the value of the current token. - // - // This Phoenix actor is invoked whenever the placeholder '_val' is used - // as a rvalue inside a lexer semantic action: - // - // lex::token_def<> identifier = "[a-zA-Z_][a-zA-Z0-9_]*"; - // this->self = identifier [ std::cout << _val ]; - // - // The example shows how to use _val to print the identifier name (which - // is the initial token value). - struct value_getter - { - typedef mpl::true_ no_nullary; - - template - struct result - { - typedef - typename remove_reference< - typename remove_const< - typename mpl::at_c::type - >::type - >::type - context_type; - - typedef typename context_type::get_value_type type; - }; - - template - typename result::type - eval(Env const& env) const - { - return fusion::at_c<4>(env.args()).get_value(); - } - }; - - /////////////////////////////////////////////////////////////////////////// - // The value_setter is a Phoenix actor used to change the name of the - // current lexer state by calling set_state_name() on the context (which - // is the 5th parameter to any lexer semantic actions). - // - // This Phoenix actor is invoked whenever the placeholder '_val' is used - // as a lvalue inside a lexer semantic action: - // - // lex::token_def<> identifier = "[a-zA-Z_][a-zA-Z0-9_]*"; - // this->self = identifier [ _val = "identifier" ]; - // - // The example shows how to change the token value after matching a token - // 'identifier'. - template - struct value_setter - { - typedef mpl::true_ no_nullary; - - template - struct result - { - typedef void type; - }; - - template - void eval(Env const& env) const - { - fusion::at_c<4>(env.args()).set_value(actor_.eval(env)); - } - - value_setter(Actor const& actor) - : actor_(actor) {} - - Actor actor_; - }; - - /////////////////////////////////////////////////////////////////////////// - // The eoi_getter is used to create the _eoi placeholder, which is a - // Phoenix actor used to access the end of input iterator pointing to the - // end of the underlying input sequence. - // - // This actor is invoked whenever the placeholder '_eoi' is used in a - // lexer semantic action: - // - // lex::token_def<> identifier = "[a-zA-Z_][a-zA-Z0-9_]*"; - // this->self = identifier - // [ std::cout << construct_(_end, _eoi) ]; - // - // The example shows how to use _eoi to print all remaining input after - // matching a token 'identifier'. - struct eoi_getter - { - typedef mpl::true_ no_nullary; - - template - struct result - { - typedef - typename remove_reference< - typename remove_const< - typename mpl::at_c::type - >::type - >::type - context_type; - - typedef typename context_type::base_iterator_type const& type; - }; - - template - typename result::type - eval(Env const& env) const - { - return fusion::at_c<4>(env.args()).get_eoi(); - } - }; - - /////////////////////////////////////////////////////////////////////////// - // '_start' and '_end' may be used to access the start and the end of - // the matched sequence of the current token - typedef phoenix::arg_names::_1_type _start_type; - typedef phoenix::arg_names::_2_type _end_type; -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - _start_type const _start = _start_type(); - _end_type const _end = _end_type(); -#endif - - // We are reusing the placeholder '_pass' to access and change the pass - // status of the current match (see support/argument.hpp for its - // definition). - // typedef phoenix::arg_names::_3_type _pass_type; - using boost::spirit::_pass_type; -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using boost::spirit::_pass; -#endif - - // '_tokenid' may be used to access and change the tokenid of the current - // token - typedef phoenix::arg_names::_4_type _tokenid_type; -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - _tokenid_type const _tokenid = _tokenid_type(); -#endif - - typedef phoenix::actor _val_type; - typedef phoenix::actor _state_type; - typedef phoenix::actor _eoi_type; -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - // '_val' may be used to access and change the token value of the current - // token - _val_type const _val = _val_type(); - // _state may be used to access and change the name of the current lexer - // state - _state_type const _state = _state_type(); - // '_eoi' may be used to access the end of input iterator of the input - // stream used by the lexer to match tokens from - _eoi_type const _eoi = _eoi_type(); -#endif -}}} - - -#undef SPIRIT_DECLARE_ARG -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/lex/argument_phoenix.hpp b/framework/contrib/boost/include/boost/spirit/home/lex/argument_phoenix.hpp deleted file mode 100644 index 9778baecc5d2..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/lex/argument_phoenix.hpp +++ /dev/null @@ -1,254 +0,0 @@ -// Copyright (c) 2001-2011 Hartmut Kaiser -// Copyright (c) 2011 Thomas Heller -// -// 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_LEX_ARGUMENT_PHEONIX_MARCH_25_2011_1841PM) -#define BOOST_SPIRIT_LEX_ARGUMENT_PHEONIX_MARCH_25_2011_1841PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include // includes as_actor specialization -#include -#include // for transform placeholders - -namespace boost { namespace spirit { namespace lex -{ - /////////////////////////////////////////////////////////////////////////// - // The value_context is used as a noop Phoenix actor to create the - // placeholder '_val' (see below). It is a noop actor because it is used - // as a placeholder only, while it is being converted either to a - // value_getter (if used as a rvalue) or to a value_setter (if used as a - // lvalue). The conversion is achieved by specializing and overloading a - // couple of the Phoenix templates from the Phoenix expression composition - // engine (see the end of this file). - struct value_context - { - typedef mpl::true_ no_nullary; - - typedef unused_type result_type; - - template - struct result - { - typedef unused_type type; - }; - - template - unused_type - eval(Env const&) const - { - return unused; - } - }; - - // forward declarations - struct value_getter; - template struct value_setter; - - /////////////////////////////////////////////////////////////////////////// - // The state_context is used as a noop Phoenix actor to create the - // placeholder '_state' (see below). It is a noop actor because it is used - // as a placeholder only, while it is being converted either to a - // state_getter (if used as a rvalue) or to a state_setter (if used as a - // lvalue). The conversion is achieved by specializing and overloading a - // couple of the Phoenix templates from the Phoenix expression composition - // engine (see the end of this file). - struct state_context - { - typedef mpl::true_ no_nullary; - - typedef unused_type result_type; - - template - struct result - { - typedef unused_type type; - }; - - template - unused_type - eval(Env const&) const - { - return unused; - } - }; - - // forward declarations - struct state_getter; - template struct state_setter; - struct eoi_getter; -}}} - -/////////////////////////////////////////////////////////////////////////////// - -BOOST_PHOENIX_DEFINE_EXPRESSION( - (boost)(spirit)(lex)(value_setter) - , (boost::phoenix::meta_grammar) -) - -BOOST_PHOENIX_DEFINE_EXPRESSION( - (boost)(spirit)(lex)(state_setter) - , (boost::phoenix::meta_grammar) -) - -namespace boost { namespace phoenix -{ - namespace result_of - { - template <> - struct is_nullary > - : mpl::false_ - {}; - } - - template - struct is_custom_terminal: mpl::true_ {}; - - template - struct custom_terminal - : proto::call< - v2_eval( - proto::make - , proto::call - ) - > - {}; - - template - struct is_nullary::when - : proto::make - {}; - - template - struct default_actions::when - : proto::call< - v2_eval( - proto::make< - spirit::lex::value_setter( - proto::_child0 - ) - > - , _env - ) - > - {}; - - template <> - struct actor - : boost::phoenix::actor::type> - { - typedef boost::phoenix::actor< - proto::terminal::type - > base_type; - - actor(base_type const & base = base_type()) - : base_type(base) - {} - - template - typename spirit::lex::expression::value_setter< - typename phoenix::as_actor::type>::type const - operator=(Expr const & expr) const - { - return - spirit::lex::expression::value_setter< - typename phoenix::as_actor::type - >::make(phoenix::as_actor::convert(expr)); - } - }; - - namespace result_of - { - template <> - struct is_nullary > - : mpl::false_ - {}; - } - - template - struct is_custom_terminal: mpl::true_ {}; - - template - struct custom_terminal - : proto::call< - v2_eval( - proto::make - , proto::call - ) - > - {}; - - template - struct is_nullary::when - : proto::make - {}; - - template - struct default_actions::when - : proto::call< - v2_eval( - proto::make< - spirit::lex::state_setter( - proto::_child0 - ) - > - , _env - ) - > - {}; - - template <> - struct actor - : boost::phoenix::actor::type> - { - typedef boost::phoenix::actor< - proto::terminal::type - > base_type; - - actor(base_type const & base = base_type()) - : base_type(base) - {} - - template - typename spirit::lex::expression::state_setter< - typename phoenix::as_actor::type>::type const - operator=(Expr const & expr) const - { - return - spirit::lex::expression::state_setter< - typename phoenix::as_actor::type - >::make(phoenix::as_actor::convert(expr)); - } - }; - - namespace result_of - { - template <> - struct is_nullary > - : mpl::false_ - {}; - } - - template - struct is_custom_terminal: mpl::true_ {}; - - template - struct custom_terminal - : proto::call< - v2_eval( - proto::make - , proto::call - ) - > - {}; -}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/lex/detail/sequence_function.hpp b/framework/contrib/boost/include/boost/spirit/home/lex/detail/sequence_function.hpp deleted file mode 100644 index 0c1252231132..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/lex/detail/sequence_function.hpp +++ /dev/null @@ -1,62 +0,0 @@ -// 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_LEX_SEQUENCE_FUNCTION_FEB_28_2007_0249PM) -#define BOOST_SPIRIT_LEX_SEQUENCE_FUNCTION_FEB_28_2007_0249PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include - -namespace boost { namespace spirit { namespace lex { namespace detail -{ -#ifdef _MSC_VER -# pragma warning(push) -# pragma warning(disable: 4512) // assignment operator could not be generated. -#endif - template - struct sequence_collect_function - { - sequence_collect_function(LexerDef& def_, String const& state_ - , String const& targetstate_) - : def(def_), state(state_), targetstate(targetstate_) {} - - template - bool operator()(Component const& component) const - { - component.collect(def, state, targetstate); - return false; // execute for all sequence elements - } - - LexerDef& def; - String const& state; - String const& targetstate; - }; - - template - struct sequence_add_actions_function - { - sequence_add_actions_function(LexerDef& def_) - : def(def_) {} - - template - bool operator()(Component const& component) const - { - component.add_actions(def); - return false; // execute for all sequence elements - } - - LexerDef& def; - }; -#ifdef _MSC_VER -# pragma warning(pop) -#endif - -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/lex/domain.hpp b/framework/contrib/boost/include/boost/spirit/home/lex/domain.hpp deleted file mode 100644 index e5aec86abda4..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/lex/domain.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright (c) 2001-2011 Joel de Guzman -// 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_LEX_DOMAIN_MAR_13_2007_0140PM) -#define BOOST_SPIRIT_LEX_DOMAIN_MAR_13_2007_0140PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include - -namespace boost { namespace spirit { namespace lex -{ - // lex's domain - struct domain {}; - - // bring in some of spirit parts into spirit::lex - using spirit::unused; - using spirit::unused_type; - using spirit::compile; - using spirit::info; - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/lex/lexer.hpp b/framework/contrib/boost/include/boost/spirit/home/lex/lexer.hpp deleted file mode 100644 index 535ec284eaa8..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/lex/lexer.hpp +++ /dev/null @@ -1,21 +0,0 @@ -// 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_LEXER_MAR_22_2007_1008PM) -#define BOOST_SPIRIT_LEXER_MAR_22_2007_1008PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/lex/lexer/action.hpp b/framework/contrib/boost/include/boost/spirit/home/lex/lexer/action.hpp deleted file mode 100644 index 370f7234c603..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/lex/lexer/action.hpp +++ /dev/null @@ -1,93 +0,0 @@ -// 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) - -#ifndef BOOST_SPIRIT_LEX_LEXER_ACTION_HPP -#define BOOST_SPIRIT_LEX_LEXER_ACTION_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace lex -{ - /////////////////////////////////////////////////////////////////////////// - template - struct action : unary_lexer > - { - action(Subject const& subject, Action f) - : subject(subject), f(f) {} - - template - void collect(LexerDef& lexdef, String const& state - , String const& targetstate) const - { - // collect the token definition information for the token_def - // this action is attached to - subject.collect(lexdef, state, targetstate); - } - - template - void add_actions(LexerDef& lexdef) const - { - // call to add all actions attached further down the hierarchy - subject.add_actions(lexdef); - - // retrieve the id of the associated token_def and register the - // given semantic action with the lexer instance - lexdef.add_action(subject.unique_id(), subject.state(), f); - } - - Subject subject; - Action f; - }; - -}}} - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Karma action meta-compiler - template <> - struct make_component - { - template - struct result; - - template - struct result - { - typedef typename - remove_const::type - subject_type; - - typedef typename - remove_const::type - action_type; - - typedef lex::action type; - }; - - template - typename result::type - operator()(Elements const& elements, unused_type) const - { - typename result::type - result(elements.car, elements.cdr.car); - return result; - } - }; -}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/lex/lexer/char_token_def.hpp b/framework/contrib/boost/include/boost/spirit/home/lex/lexer/char_token_def.hpp deleted file mode 100644 index aaba2e1b5ed5..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/lex/lexer/char_token_def.hpp +++ /dev/null @@ -1,242 +0,0 @@ -// 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_LEX_CHAR_TOKEN_DEF_MAR_28_2007_0626PM) -#define BOOST_SPIRIT_LEX_CHAR_TOKEN_DEF_MAR_28_2007_0626PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - - // enables 'x' - template <> - struct use_terminal - : mpl::true_ {}; - - // enables "x" - template <> - struct use_terminal - : mpl::true_ {}; - - // enables wchar_t - template <> - struct use_terminal - : mpl::true_ {}; - - // enables L"x" - template <> - struct use_terminal - : mpl::true_ {}; - - // enables char_('x'), char_("x") - template - struct use_terminal - , fusion::vector1 > > - : mpl::true_ {}; - - // enables char_('x', ID), char_("x", ID) - template - struct use_terminal - , fusion::vector2 > > - : mpl::true_ {}; -}} - -namespace boost { namespace spirit { namespace lex -{ - // use char_ from standard character set by default -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using spirit::standard::char_; -#endif - using spirit::standard::char_type; - - /////////////////////////////////////////////////////////////////////////// - // - // char_token_def - // represents a single character token definition - // - /////////////////////////////////////////////////////////////////////////// - template - struct char_token_def - : primitive_lexer > - { - typedef typename CharEncoding::char_type char_type; - - char_token_def(char_type ch, IdType const& id) - : ch(ch), id_(id), unique_id_(std::size_t(~0)) - , token_state_(std::size_t(~0)) - {} - - template - void collect(LexerDef& lexdef, String const& state - , String const& targetstate) const - { - std::size_t state_id = lexdef.add_state(state.c_str()); - - // If the following assertion fires you are probably trying to use - // a single char_token_def instance in more than one lexer state. - // This is not possible. Please create a separate token_def instance - // from the same regular expression for each lexer state it needs - // to be associated with. - BOOST_ASSERT( - (std::size_t(~0) == token_state_ || state_id == token_state_) && - "Can't use single char_token_def with more than one lexer state"); - - char_type const* target = targetstate.empty() ? 0 : targetstate.c_str(); - if (target) - lexdef.add_state(target); - - token_state_ = state_id; - unique_id_ = lexdef.add_token (state.c_str(), ch, id_, target); - } - - template - void add_actions(LexerDef&) const {} - - IdType id() const { return id_; } - std::size_t unique_id() const { return unique_id_; } - std::size_t state() const { return token_state_; } - - char_type ch; - mutable IdType id_; - mutable std::size_t unique_id_; - mutable std::size_t token_state_; - }; - - /////////////////////////////////////////////////////////////////////////// - // Lexer generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - namespace detail - { - template - struct basic_literal - { - typedef char_token_def result_type; - - template - result_type operator()(Char ch, unused_type) const - { - return result_type(ch, ch); - } - - template - result_type operator()(Char const* str, unused_type) const - { - return result_type(str[0], str[0]); - } - }; - } - - // literals: 'x', "x" - template - struct make_primitive - : detail::basic_literal {}; - - template - struct make_primitive - : detail::basic_literal {}; - - // literals: L'x', L"x" - template - struct make_primitive - : detail::basic_literal {}; - - template - struct make_primitive - : detail::basic_literal {}; - - // handle char_('x') - template - struct make_primitive< - terminal_ex< - tag::char_code - , fusion::vector1 - > - , Modifiers> - { - typedef char_token_def result_type; - - template - result_type operator()(Terminal const& term, unused_type) const - { - return result_type(fusion::at_c<0>(term.args), fusion::at_c<0>(term.args)); - } - }; - - // handle char_("x") - template - struct make_primitive< - terminal_ex< - tag::char_code - , fusion::vector1 // single char strings - > - , Modifiers> - { - typedef char_token_def result_type; - - template - result_type operator()(Terminal const& term, unused_type) const - { - Char ch = fusion::at_c<0>(term.args)[0]; - return result_type(ch, ch); - } - }; - - // handle char_('x', ID) - template - struct make_primitive< - terminal_ex< - tag::char_code - , fusion::vector2 - > - , Modifiers> - { - typedef char_token_def result_type; - - template - result_type operator()(Terminal const& term, unused_type) const - { - return result_type( - fusion::at_c<0>(term.args), fusion::at_c<1>(term.args)); - } - }; - - // handle char_("x", ID) - template - struct make_primitive< - terminal_ex< - tag::char_code - , fusion::vector2 // single char strings - > - , Modifiers> - { - typedef char_token_def result_type; - - template - result_type operator()(Terminal const& term, unused_type) const - { - return result_type( - fusion::at_c<0>(term.args)[0], fusion::at_c<1>(term.args)); - } - }; -}}} // namespace boost::spirit::lex - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/lex/lexer/lexer.hpp b/framework/contrib/boost/include/boost/spirit/home/lex/lexer/lexer.hpp deleted file mode 100644 index c1a9e6ffbf33..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/lex/lexer/lexer.hpp +++ /dev/null @@ -1,410 +0,0 @@ -// 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_LEX_LEXER_MAR_13_2007_0145PM) -#define BOOST_SPIRIT_LEX_LEXER_MAR_13_2007_0145PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include // for std::iterator_traits -#include - -namespace boost { namespace spirit { namespace lex -{ - /////////////////////////////////////////////////////////////////////////// - namespace detail - { - /////////////////////////////////////////////////////////////////////// -#ifdef _MSC_VER -# pragma warning(push) -# pragma warning(disable: 4512) // assignment operator could not be generated. -#endif - template - struct lexer_def_ - : proto::extends< - typename proto::terminal< - lex::reference const> - >::type - , lexer_def_ > - , qi::parser > - , lex::lexer_type > - { - private: - // avoid warnings about using 'this' in constructor - lexer_def_& this_() { return *this; } - - typedef typename LexerDef::char_type char_type; - typedef typename LexerDef::string_type string_type; - typedef typename LexerDef::id_type id_type; - - typedef lex::reference reference_; - typedef typename proto::terminal::type terminal_type; - typedef proto::extends proto_base_type; - - reference_ alias() const - { - return reference_(*this); - } - - public: - // Qi interface: metafunction calculating parser attribute type - template - struct attribute - { - // the return value of a token set contains the matched token - // id, and the corresponding pair of iterators - typedef typename Iterator::base_iterator_type iterator_type; - typedef - fusion::vector2 > - type; - }; - - // Qi interface: parse functionality - template - bool parse(Iterator& first, Iterator const& last - , Context& /*context*/, Skipper const& skipper - , Attribute& attr) const - { - qi::skip_over(first, last, skipper); // always do a pre-skip - - if (first != last) { - typedef typename - std::iterator_traits::value_type - token_type; - - token_type const& t = *first; - if (token_is_valid(t) && t.state() == first.get_state()) { - // any of the token definitions matched - spirit::traits::assign_to(t, attr); - ++first; - return true; - } - } - return false; - } - - // Qi interface: 'what' functionality - template - info what(Context& /*context*/) const - { - return info("lexer"); - } - - private: - // allow to use the lexer.self.add("regex1", id1)("regex2", id2); - // syntax - struct adder - { - adder(lexer_def_& def_) - : def(def_) {} - - // Add a token definition based on a single character as given - // by the first parameter, the second parameter allows to - // specify the token id to use for the new token. If no token - // id is given the character code is used. - adder const& operator()(char_type c - , id_type token_id = id_type()) const - { - if (id_type() == token_id) - token_id = static_cast(c); - def.def.add_token (def.state.c_str(), c, token_id - , def.targetstate.empty() ? 0 : def.targetstate.c_str()); - return *this; - } - - // Add a token definition based on a character sequence as - // given by the first parameter, the second parameter allows to - // specify the token id to use for the new token. If no token - // id is given this function will generate a unique id to be - // used as the token's id. - adder const& operator()(string_type const& s - , id_type token_id = id_type()) const - { - if (id_type() == token_id) - token_id = def.def.get_next_id(); - def.def.add_token (def.state.c_str(), s, token_id - , def.targetstate.empty() ? 0 : def.targetstate.c_str()); - return *this; - } - - template - adder const& operator()( - token_def& tokdef - , id_type token_id = id_type()) const - { - // make sure we have a token id - if (id_type() == token_id) { - if (id_type() == tokdef.id()) { - token_id = def.def.get_next_id(); - tokdef.id(token_id); - } - else { - token_id = tokdef.id(); - } - } - else { - // the following assertion makes sure that the token_def - // instance has not been assigned a different id earlier - BOOST_ASSERT(id_type() == tokdef.id() - || token_id == tokdef.id()); - tokdef.id(token_id); - } - - def.define(tokdef); - return *this; - } - -// template -// adder const& operator()(char_type c, id_type token_id, F act) const -// { -// if (id_type() == token_id) -// token_id = def.def.get_next_id(); -// std::size_t unique_id = -// def.def.add_token (def.state.c_str(), s, token_id); -// def.def.add_action(unique_id, def.state.c_str(), act); -// return *this; -// } - - lexer_def_& def; - }; - friend struct adder; - - // allow to use lexer.self.add_pattern("pattern1", "regex1")(...); - // syntax - struct pattern_adder - { - pattern_adder(lexer_def_& def_) - : def(def_) {} - - pattern_adder const& operator()(string_type const& p - , string_type const& s) const - { - def.def.add_pattern (def.state.c_str(), p, s); - return *this; - } - - lexer_def_& def; - }; - friend struct pattern_adder; - - private: - // Helper function to invoke the necessary 2 step compilation - // process on token definition expressions - template - void compile2pass(TokenExpr const& expr) - { - expr.collect(def, state, targetstate); - expr.add_actions(def); - } - - public: - /////////////////////////////////////////////////////////////////// - template - void define(Expr const& expr) - { - compile2pass(compile(expr)); - } - - lexer_def_(LexerDef& def_, string_type const& state_ - , string_type const& targetstate_ = string_type()) - : proto_base_type(terminal_type::make(alias())) - , add(this_()), add_pattern(this_()), def(def_) - , state(state_), targetstate(targetstate_) - {} - - // allow to switch states - lexer_def_ operator()(char_type const* state_) const - { - return lexer_def_(def, state_); - } - lexer_def_ operator()(char_type const* state_ - , char_type const* targetstate_) const - { - return lexer_def_(def, state_, targetstate_); - } - lexer_def_ operator()(string_type const& state_ - , string_type const& targetstate_ = string_type()) const - { - return lexer_def_(def, state_, targetstate_); - } - - // allow to assign a token definition expression - template - lexer_def_& operator= (Expr const& xpr) - { - // Report invalid expression error as early as possible. - // If you got an error_invalid_expression error message here, - // then the expression (expr) is not a valid spirit lex - // expression. - BOOST_SPIRIT_ASSERT_MATCH(lex::domain, Expr); - - def.clear(state.c_str()); - define(xpr); - return *this; - } - - // explicitly tell the lexer that the given state will be defined - // (useful in conjunction with "*") - std::size_t add_state(char_type const* state_ = 0) - { - return def.add_state(state_ ? state_ : def.initial_state().c_str()); - } - - adder add; - pattern_adder add_pattern; - - private: - LexerDef& def; - string_type state; - string_type targetstate; - }; -#ifdef _MSC_VER -# pragma warning(pop) -#endif - -#if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) - // allow to assign a token definition expression - template - inline lexer_def_& - operator+= (lexer_def_& lexdef, Expr& xpr) - { - // Report invalid expression error as early as possible. - // If you got an error_invalid_expression error message here, - // then the expression (expr) is not a valid spirit lex - // expression. - BOOST_SPIRIT_ASSERT_MATCH(lex::domain, Expr); - - lexdef.define(xpr); - return lexdef; - } -#else - // allow to assign a token definition expression - template - inline lexer_def_& - operator+= (lexer_def_& lexdef, Expr&& xpr) - { - // Report invalid expression error as early as possible. - // If you got an error_invalid_expression error message here, - // then the expression (expr) is not a valid spirit lex - // expression. - BOOST_SPIRIT_ASSERT_MATCH(lex::domain, Expr); - - lexdef.define(xpr); - return lexdef; - } -#endif - - template - inline lexer_def_& - operator+= (lexer_def_& lexdef, Expr const& xpr) - { - // Report invalid expression error as early as possible. - // If you got an error_invalid_expression error message here, - // then the expression (expr) is not a valid spirit lex - // expression. - BOOST_SPIRIT_ASSERT_MATCH(lex::domain, Expr); - - lexdef.define(xpr); - return lexdef; - } - } - - /////////////////////////////////////////////////////////////////////////// - // The match_flags flags are used to influence different matching - // modes of the lexer - struct match_flags - { - enum enum_type - { - match_default = 0, // no flags - match_not_dot_newline = 1, // the regex '.' doesn't match newlines - match_icase = 2 // all matching operations are case insensitive - }; - }; - - /////////////////////////////////////////////////////////////////////////// - // This represents a lexer object - /////////////////////////////////////////////////////////////////////////// - - /////////////////////////////////////////////////////////////////////////// - // This is the first token id automatically assigned by the library - // if needed - enum tokenids - { - min_token_id = 0x10000 - }; - - template - class lexer : public Lexer - { - private: - // avoid warnings about using 'this' in constructor - lexer& this_() { return *this; } - - std::size_t next_token_id; // has to be an integral type - - public: - typedef Lexer lexer_type; - typedef typename Lexer::id_type id_type; - typedef typename Lexer::char_type char_type; - typedef typename Lexer::iterator_type iterator_type; - typedef lexer base_type; - - typedef detail::lexer_def_ lexer_def; - typedef std::basic_string string_type; - - // if `id_type` was specified but `first_id` is not provided - // the `min_token_id` value may be out of range for `id_type`, - // but it will be a problem only if unique ids feature is in use. - lexer(unsigned int flags = match_flags::match_default) - : lexer_type(flags) - , next_token_id(min_token_id) - , self(this_(), lexer_type::initial_state()) - {} - - lexer(unsigned int flags, id_type first_id) - : lexer_type(flags) - , next_token_id(first_id) - , self(this_(), lexer_type::initial_state()) - {} - - // access iterator interface - template - iterator_type begin(Iterator& first, Iterator const& last - , char_type const* initial_state = 0) const - { return this->lexer_type::begin(first, last, initial_state); } - iterator_type end() const - { return this->lexer_type::end(); } - - std::size_t map_state(char_type const* state) - { return this->lexer_type::add_state(state); } - - // create a unique token id - id_type get_next_id() { return id_type(next_token_id++); } - - lexer_def self; // allow for easy token definition - }; - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/lex/lexer/lexertl/functor.hpp b/framework/contrib/boost/include/boost/spirit/home/lex/lexer/lexertl/functor.hpp deleted file mode 100644 index eca5027c221a..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/lex/lexer/lexertl/functor.hpp +++ /dev/null @@ -1,299 +0,0 @@ -// 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_LEX_LEXER_FUNCTOR_NOV_18_2007_1112PM) -#define BOOST_SPIRIT_LEX_LEXER_FUNCTOR_NOV_18_2007_1112PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include // for std::iterator_traits - -#if 0 != __COMO_VERSION__ || !BOOST_WORKAROUND(BOOST_MSVC, <= 1310) -#define BOOST_SPIRIT_STATIC_EOF 1 -#define BOOST_SPIRIT_EOF_PREFIX static -#else -#define BOOST_SPIRIT_EOF_PREFIX -#endif - -namespace boost { namespace spirit { namespace lex { namespace lexertl -{ - /////////////////////////////////////////////////////////////////////////// - // - // functor is a template usable as the functor object for the - // multi_pass iterator allowing to wrap a lexertl based dfa into a - // iterator based interface. - // - // Token: the type of the tokens produced by this functor - // this needs to expose a constructor with the following - // prototype: - // - // Token(std::size_t id, std::size_t state, - // Iterator start, Iterator end) - // - // where 'id' is the token id, state is the lexer state, - // this token has been matched in, and 'first' and 'end' - // mark the start and the end of the token with respect - // to the underlying character stream. - // FunctorData: - // this is expected to encapsulate the shared part of the - // functor (see lex/lexer/lexertl/functor_data.hpp for an - // example and documentation). - // Iterator: the type of the underlying iterator - // SupportsActors: - // this is expected to be a mpl::bool_, if mpl::true_ the - // functor invokes functors which (optionally) have - // been attached to the token definitions. - // SupportState: - // this is expected to be a mpl::bool_, if mpl::true_ the - // functor supports different lexer states, - // otherwise no lexer state is supported. - // - /////////////////////////////////////////////////////////////////////////// - template class FunctorData - , typename Iterator = typename Token::iterator_type - , typename SupportsActors = mpl::false_ - , typename SupportsState = typename Token::has_state> - class functor - { - public: - typedef typename - std::iterator_traits::value_type - char_type; - - private: - // Needed by compilers not implementing the resolution to DR45. For - // reference, see - // http://www.open-std.org/JTC1/SC22/WG21/docs/cwg_defects.html#45. - typedef typename Token::token_value_type token_value_type; - friend class FunctorData; - -#ifdef _MSC_VER -# pragma warning(push) -# pragma warning(disable: 4512) // assignment operator could not be generated. -#endif - // Helper template allowing to assign a value on exit - template - struct assign_on_exit - { - assign_on_exit(T& dst, T const& src) - : dst_(dst), src_(src) {} - - ~assign_on_exit() - { - dst_ = src_; - } - - T& dst_; - T const& src_; - }; -#ifdef _MSC_VER -# pragma warning(pop) -#endif - - public: - functor() {} - -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1310) - // somehow VC7.1 needs this (meaningless) assignment operator - functor& operator=(functor const& rhs) - { - return *this; - } -#endif - - /////////////////////////////////////////////////////////////////////// - // interface to the iterator_policies::split_functor_input policy - typedef Token result_type; - typedef functor unique; - typedef FunctorData shared; - - BOOST_SPIRIT_EOF_PREFIX result_type const eof; - - /////////////////////////////////////////////////////////////////////// - typedef Iterator iterator_type; - typedef typename shared::semantic_actions_type semantic_actions_type; - typedef typename shared::next_token_functor next_token_functor; - typedef typename shared::get_state_name_type get_state_name_type; - - // this is needed to wrap the semantic actions in a proper way - typedef typename shared::wrap_action_type wrap_action_type; - - /////////////////////////////////////////////////////////////////////// - template - static result_type& get_next(MultiPass& mp, result_type& result) - { - typedef typename result_type::id_type id_type; - - shared& data = mp.shared()->ftor; - for(;;) - { - if (data.get_first() == data.get_last()) -#if defined(BOOST_SPIRIT_STATIC_EOF) - return result = eof; -#else - return result = mp.ftor.eof; -#endif - - data.reset_value(); - Iterator end = data.get_first(); - std::size_t unique_id = boost::lexer::npos; - bool prev_bol = false; - - // lexer matching might change state - std::size_t state = data.get_state(); - std::size_t id = data.next(end, unique_id, prev_bol); - - if (boost::lexer::npos == id) { // no match -#if defined(BOOST_SPIRIT_LEXERTL_DEBUG) - std::string next; - Iterator it = data.get_first(); - for (std::size_t i = 0; i < 10 && it != data.get_last(); ++it, ++i) - next += *it; - - std::cerr << "Not matched, in state: " << state - << ", lookahead: >" << next << "<" << std::endl; -#endif - return result = result_type(0); - } - else if (0 == id) { // EOF reached -#if defined(BOOST_SPIRIT_STATIC_EOF) - return result = eof; -#else - return result = mp.ftor.eof; -#endif - } - -#if defined(BOOST_SPIRIT_LEXERTL_DEBUG) - { - std::string next; - Iterator it = end; - for (std::size_t i = 0; i < 10 && it != data.get_last(); ++it, ++i) - next += *it; - - std::cerr << "Matched: " << id << ", in state: " - << state << ", string: >" - << std::basic_string(data.get_first(), end) << "<" - << ", lookahead: >" << next << "<" << std::endl; - if (data.get_state() != state) { - std::cerr << "Switched to state: " - << data.get_state() << std::endl; - } - } -#endif - // account for a possibly pending lex::more(), i.e. moving - // data.first_ back to the start of the previously matched token. - bool adjusted = data.adjust_start(); - - // set the end of the matched input sequence in the token data - data.set_end(end); - - // invoke attached semantic actions, if defined, might change - // state, id, data.first_, and/or end - BOOST_SCOPED_ENUM(pass_flags) pass = - data.invoke_actions(state, id, unique_id, end); - - if (data.has_value()) { - // return matched token using the token value as set before - // using data.set_value(), advancing 'data.first_' past the - // matched sequence - assign_on_exit on_exit(data.get_first(), end); - return result = result_type(id_type(id), state, data.get_value()); - } - else if (pass_flags::pass_normal == pass) { - // return matched token, advancing 'data.first_' past the - // matched sequence - assign_on_exit on_exit(data.get_first(), end); - return result = result_type(id_type(id), state, data.get_first(), end); - } - else if (pass_flags::pass_fail == pass) { -#if defined(BOOST_SPIRIT_LEXERTL_DEBUG) - std::cerr << "Matching forced to fail" << std::endl; -#endif - // if the data.first_ got adjusted above, revert this adjustment - if (adjusted) - data.revert_adjust_start(); - - // one of the semantic actions signaled no-match - data.reset_bol(prev_bol); - if (state != data.get_state()) - continue; // retry matching if state has changed - - // if the state is unchanged repeating the match wouldn't - // move the input forward, causing an infinite loop - return result = result_type(0); - } - -#if defined(BOOST_SPIRIT_LEXERTL_DEBUG) - std::cerr << "Token ignored, continuing matching" << std::endl; -#endif - // if this token needs to be ignored, just repeat the matching, - // while starting right after the current match - data.get_first() = end; - } - } - - // set_state are propagated up to the iterator interface, allowing to - // manipulate the current lexer state through any of the exposed - // iterators. - template - static std::size_t set_state(MultiPass& mp, std::size_t state) - { - std::size_t oldstate = mp.shared()->ftor.get_state(); - mp.shared()->ftor.set_state(state); - -#if defined(BOOST_SPIRIT_LEXERTL_DEBUG) - std::cerr << "Switching state from: " << oldstate - << " to: " << state - << std::endl; -#endif - return oldstate; - } - - template - static std::size_t get_state(MultiPass& mp) - { - return mp.shared()->ftor.get_state(); - } - - template - static std::size_t - map_state(MultiPass const& mp, char_type const* statename) - { - return mp.shared()->ftor.get_state_id(statename); - } - - // we don't need this, but it must be there - template - static void destroy(MultiPass const&) {} - }; - -#if defined(BOOST_SPIRIT_STATIC_EOF) - /////////////////////////////////////////////////////////////////////////// - // eof token - /////////////////////////////////////////////////////////////////////////// - template class FunctorData - , typename Iterator, typename SupportsActors, typename SupportsState> - typename functor::result_type const - functor::eof = - typename functor::result_type(); -#endif - -}}}} - -#undef BOOST_SPIRIT_EOF_PREFIX -#undef BOOST_SPIRIT_STATIC_EOF - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/lex/lexer/lexertl/functor_data.hpp b/framework/contrib/boost/include/boost/spirit/home/lex/lexer/lexertl/functor_data.hpp deleted file mode 100644 index 0fb04601bb73..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/lex/lexer/lexertl/functor_data.hpp +++ /dev/null @@ -1,542 +0,0 @@ -// 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_LEX_LEXER_FUNCTOR_DATA_JUN_10_2009_0954AM) -#define BOOST_SPIRIT_LEX_LEXER_FUNCTOR_DATA_JUN_10_2009_0954AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include // for std::iterator_traits - -#ifdef _MSC_VER -# pragma warning(push) -# pragma warning(disable: 4512) // assignment operator could not be generated. -#endif -namespace boost { namespace spirit { namespace lex { namespace lexertl -{ - namespace detail - { - /////////////////////////////////////////////////////////////////////// - template - class data; // no default specialization - - /////////////////////////////////////////////////////////////////////// - // neither supports state, nor actors - template - class data - { - protected: - typedef typename - std::iterator_traits::value_type - char_type; - - public: - typedef Iterator base_iterator_type; - typedef iterator_range token_value_type; - typedef token_value_type get_value_type; - typedef std::size_t state_type; - typedef char_type const* state_name_type; - typedef unused_type semantic_actions_type; - typedef detail::wrap_action - wrap_action_type; - - typedef unused_type next_token_functor; - typedef unused_type get_state_name_type; - - // initialize the shared data - template - data (IterData const& data_, Iterator& first, Iterator const& last) - : first_(first), last_(last) - , state_machine_(data_.state_machine_) - , rules_(data_.rules_) - , bol_(data_.state_machine_.data()._seen_BOL_assertion) {} - - // The following functions are used by the implementation of the - // placeholder '_state'. - template - void set_state_name (Char const*) - { - // If you see a compile time assertion below you're probably - // using a token type not supporting lexer states (the 3rd - // template parameter of the token is mpl::false_), but your - // code uses state changes anyways. - BOOST_SPIRIT_ASSERT_FAIL(Char, - tried_to_set_state_of_stateless_token, ()); - } - char_type const* get_state_name() const { return rules_.initial(); } - std::size_t get_state_id (char_type const*) const - { - return 0; - } - - // The function get_eoi() is used by the implementation of the - // placeholder '_eoi'. - Iterator const& get_eoi() const { return last_; } - - // The function less() is used by the implementation of the support - // function lex::less(). Its functionality is equivalent to flex' - // function yyless(): it returns an iterator positioned to the - // nth input character beyond the current start iterator (i.e. by - // assigning the return value to the placeholder '_end' it is - // possible to return all but the first n characters of the current - // token back to the input stream. - // - // This function does nothing as long as no semantic actions are - // used. - Iterator const& less(Iterator const& it, int) - { - // The following assertion fires most likely because you are - // using lexer semantic actions without using the actor_lexer - // as the base class for your token definition class. - BOOST_ASSERT(false && - "Are you using lexer semantic actions without using the " - "actor_lexer base?"); - return it; - } - - // The function more() is used by the implementation of the support - // function lex::more(). Its functionality is equivalent to flex' - // function yymore(): it tells the lexer that the next time it - // matches a rule, the corresponding token should be appended onto - // the current token value rather than replacing it. - // - // These functions do nothing as long as no semantic actions are - // used. - void more() - { - // The following assertion fires most likely because you are - // using lexer semantic actions without using the actor_lexer - // as the base class for your token definition class. - BOOST_ASSERT(false && - "Are you using lexer semantic actions without using the " - "actor_lexer base?"); - } - bool adjust_start() { return false; } - void revert_adjust_start() {} - - // The function lookahead() is used by the implementation of the - // support function lex::lookahead. It can be used to implement - // lookahead for lexer engines not supporting constructs like flex' - // a/b (match a, but only when followed by b): - // - // This function does nothing as long as no semantic actions are - // used. - bool lookahead(std::size_t, std::size_t /*state*/ = std::size_t(~0)) - { - // The following assertion fires most likely because you are - // using lexer semantic actions without using the actor_lexer - // as the base class for your token definition class. - BOOST_ASSERT(false && - "Are you using lexer semantic actions without using the " - "actor_lexer base?"); - return false; - } - - // the functions next, invoke_actions, and get_state are used by - // the functor implementation below - - // The function next() tries to match the next token from the - // underlying input sequence. - std::size_t next(Iterator& end, std::size_t& unique_id, bool& prev_bol) - { - prev_bol = bol_; - - typedef basic_iterator_tokeniser tokenizer; - return tokenizer::next(state_machine_, bol_, end, last_ - , unique_id); - } - - // nothing to invoke, so this is empty - BOOST_SCOPED_ENUM(pass_flags) invoke_actions(std::size_t - , std::size_t, std::size_t, Iterator const&) - { - return pass_flags::pass_normal; // always accept - } - - std::size_t get_state() const { return 0; } - void set_state(std::size_t) {} - - void set_end(Iterator const& /*it*/) {} - - Iterator& get_first() { return first_; } - Iterator const& get_first() const { return first_; } - Iterator const& get_last() const { return last_; } - - iterator_range get_value() const - { - return iterator_range(first_, last_); - } - bool has_value() const { return false; } - void reset_value() {} - - void reset_bol(bool bol) { bol_ = bol; } - - protected: - Iterator& first_; - Iterator last_; - - boost::lexer::basic_state_machine const& state_machine_; - boost::lexer::basic_rules const& rules_; - - bool bol_; // helper storing whether last character was \n - }; - - /////////////////////////////////////////////////////////////////////// - // doesn't support lexer semantic actions, but supports state - template - class data - : public data - { - protected: - typedef data base_type; - typedef typename base_type::char_type char_type; - - public: - typedef Iterator base_iterator_type; - typedef iterator_range token_value_type; - typedef token_value_type get_value_type; - typedef typename base_type::state_type state_type; - typedef typename base_type::state_name_type state_name_type; - typedef typename base_type::semantic_actions_type - semantic_actions_type; - - // initialize the shared data - template - data (IterData const& data_, Iterator& first, Iterator const& last) - : base_type(data_, first, last) - , state_(0) {} - - // The following functions are used by the implementation of the - // placeholder '_state'. - void set_state_name (char_type const* new_state) - { - std::size_t state_id = this->rules_.state(new_state); - - // If the following assertion fires you've probably been using - // a lexer state name which was not defined in your token - // definition. - BOOST_ASSERT(state_id != boost::lexer::npos); - - if (state_id != boost::lexer::npos) - state_ = state_id; - } - char_type const* get_state_name() const - { - return this->rules_.state(state_); - } - std::size_t get_state_id (char_type const* state) const - { - return this->rules_.state(state); - } - - // the functions next() and get_state() are used by the functor - // implementation below - - // The function next() tries to match the next token from the - // underlying input sequence. - std::size_t next(Iterator& end, std::size_t& unique_id, bool& prev_bol) - { - prev_bol = this->bol_; - - typedef basic_iterator_tokeniser tokenizer; - return tokenizer::next(this->state_machine_, state_, - this->bol_, end, this->get_eoi(), unique_id); - } - - std::size_t& get_state() { return state_; } - void set_state(std::size_t state) { state_ = state; } - - protected: - std::size_t state_; - }; - - /////////////////////////////////////////////////////////////////////// - // does support lexer semantic actions, may support state - template - class data - : public data - { - public: - typedef semantic_actions - semantic_actions_type; - - protected: - typedef data base_type; - typedef typename base_type::char_type char_type; - typedef typename semantic_actions_type::functor_wrapper_type - functor_wrapper_type; - - public: - typedef Iterator base_iterator_type; - typedef TokenValue token_value_type; - typedef TokenValue const& get_value_type; - typedef typename base_type::state_type state_type; - typedef typename base_type::state_name_type state_name_type; - - typedef detail::wrap_action wrap_action_type; - - template - data (IterData const& data_, Iterator& first, Iterator const& last) - : base_type(data_, first, last) - , actions_(data_.actions_), hold_(), end_() - , value_(iterator_range(last, last)) - , has_value_(false), has_hold_(false) {} - - // invoke attached semantic actions, if defined - BOOST_SCOPED_ENUM(pass_flags) invoke_actions(std::size_t state - , std::size_t& id, std::size_t unique_id, Iterator& end) - { - return actions_.invoke_actions(state, id, unique_id, end, *this); - } - - // The function less() is used by the implementation of the support - // function lex::less(). Its functionality is equivalent to flex' - // function yyless(): it returns an iterator positioned to the - // nth input character beyond the current start iterator (i.e. by - // assigning the return value to the placeholder '_end' it is - // possible to return all but the first n characters of the current - // token back to the input stream). - Iterator const& less(Iterator& it, int n) - { - it = this->get_first(); - std::advance(it, n); - return it; - } - - // The function more() is used by the implementation of the support - // function lex::more(). Its functionality is equivalent to flex' - // function yymore(): it tells the lexer that the next time it - // matches a rule, the corresponding token should be appended onto - // the current token value rather than replacing it. - void more() - { - hold_ = this->get_first(); - has_hold_ = true; - } - - // The function lookahead() is used by the implementation of the - // support function lex::lookahead. It can be used to implement - // lookahead for lexer engines not supporting constructs like flex' - // a/b (match a, but only when followed by b) - bool lookahead(std::size_t id, std::size_t state = std::size_t(~0)) - { - Iterator end = end_; - std::size_t unique_id = boost::lexer::npos; - bool bol = this->bol_; - - if (std::size_t(~0) == state) - state = this->state_; - - typedef basic_iterator_tokeniser tokenizer; - return id == tokenizer::next(this->state_machine_, state, - bol, end, this->get_eoi(), unique_id); - } - - // The adjust_start() and revert_adjust_start() are helper - // functions needed to implement the functionality required for - // lex::more(). It is called from the functor body below. - bool adjust_start() - { - if (!has_hold_) - return false; - - std::swap(this->get_first(), hold_); - has_hold_ = false; - return true; - } - void revert_adjust_start() - { - // this will be called only if adjust_start above returned true - std::swap(this->get_first(), hold_); - has_hold_ = true; - } - - TokenValue const& get_value() const - { - if (!has_value_) { - value_ = iterator_range(this->get_first(), end_); - has_value_ = true; - } - return value_; - } - template - void set_value(Value const& val) - { - value_ = val; - has_value_ = true; - } - void set_end(Iterator const& it) - { - end_ = it; - } - bool has_value() const { return has_value_; } - void reset_value() { has_value_ = false; } - - protected: - semantic_actions_type const& actions_; - Iterator hold_; // iterator needed to support lex::more() - Iterator end_; // iterator pointing to end of matched token - mutable TokenValue value_; // token value to use - mutable bool has_value_; // 'true' if value_ is valid - bool has_hold_; // 'true' if hold_ is valid - }; - - /////////////////////////////////////////////////////////////////////// - // does support lexer semantic actions, may support state, is used for - // position_token exposing exactly one type - template - class data > - : public data - { - public: - typedef semantic_actions - semantic_actions_type; - - protected: - typedef data base_type; - typedef typename base_type::char_type char_type; - typedef typename semantic_actions_type::functor_wrapper_type - functor_wrapper_type; - - public: - typedef Iterator base_iterator_type; - typedef boost::optional token_value_type; - typedef boost::optional const& get_value_type; - typedef typename base_type::state_type state_type; - typedef typename base_type::state_name_type state_name_type; - - typedef detail::wrap_action wrap_action_type; - - template - data (IterData const& data_, Iterator& first, Iterator const& last) - : base_type(data_, first, last) - , actions_(data_.actions_), hold_() - , has_value_(false), has_hold_(false) - { - spirit::traits::assign_to(first, last, value_); - has_value_ = true; - } - - // invoke attached semantic actions, if defined - BOOST_SCOPED_ENUM(pass_flags) invoke_actions(std::size_t state - , std::size_t& id, std::size_t unique_id, Iterator& end) - { - return actions_.invoke_actions(state, id, unique_id, end, *this); - } - - // The function less() is used by the implementation of the support - // function lex::less(). Its functionality is equivalent to flex' - // function yyless(): it returns an iterator positioned to the - // nth input character beyond the current start iterator (i.e. by - // assigning the return value to the placeholder '_end' it is - // possible to return all but the first n characters of the current - // token back to the input stream). - Iterator const& less(Iterator& it, int n) - { - it = this->get_first(); - std::advance(it, n); - return it; - } - - // The function more() is used by the implementation of the support - // function lex::more(). Its functionality is equivalent to flex' - // function yymore(): it tells the lexer that the next time it - // matches a rule, the corresponding token should be appended onto - // the current token value rather than replacing it. - void more() - { - hold_ = this->get_first(); - has_hold_ = true; - } - - // The function lookahead() is used by the implementation of the - // support function lex::lookahead. It can be used to implement - // lookahead for lexer engines not supporting constructs like flex' - // a/b (match a, but only when followed by b) - bool lookahead(std::size_t id, std::size_t state = std::size_t(~0)) - { - Iterator end = end_; - std::size_t unique_id = boost::lexer::npos; - bool bol = this->bol_; - - if (std::size_t(~0) == state) - state = this->state_; - - typedef basic_iterator_tokeniser tokenizer; - return id == tokenizer::next(this->state_machine_, state, - bol, end, this->get_eoi(), unique_id); - } - - // The adjust_start() and revert_adjust_start() are helper - // functions needed to implement the functionality required for - // lex::more(). It is called from the functor body below. - bool adjust_start() - { - if (!has_hold_) - return false; - - std::swap(this->get_first(), hold_); - has_hold_ = false; - return true; - } - void revert_adjust_start() - { - // this will be called only if adjust_start above returned true - std::swap(this->get_first(), hold_); - has_hold_ = true; - } - - token_value_type const& get_value() const - { - if (!has_value_) { - spirit::traits::assign_to(this->get_first(), end_, value_); - has_value_ = true; - } - return value_; - } - template - void set_value(Value const& val) - { - value_ = val; - has_value_ = true; - } - void set_end(Iterator const& it) - { - end_ = it; - } - bool has_value() const { return has_value_; } - void reset_value() { has_value_ = false; } - - protected: - semantic_actions_type const& actions_; - Iterator hold_; // iterator needed to support lex::more() - Iterator end_; // iterator pointing to end of matched token - mutable token_value_type value_; // token value to use - mutable bool has_value_; // 'true' if value_ is valid - bool has_hold_; // 'true' if hold_ is valid - }; - } -}}}} -#ifdef _MSC_VER -# pragma warning(pop) -#endif - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/lex/lexer/lexertl/generate_static.hpp b/framework/contrib/boost/include/boost/spirit/home/lex/lexer/lexertl/generate_static.hpp deleted file mode 100644 index 083fd6789568..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/lex/lexer/lexertl/generate_static.hpp +++ /dev/null @@ -1,1031 +0,0 @@ -// Copyright (c) 2008-2009 Ben Hanson -// Copyright (c) 2008-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_LEX_LEXERTL_GENERATE_CPP_FEB_10_2008_0855PM) -#define BOOST_SPIRIT_LEX_LEXERTL_GENERATE_CPP_FEB_10_2008_0855PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace lex { namespace lexertl -{ - namespace detail - { - - /////////////////////////////////////////////////////////////////////////// - template - struct string_lit; - - template <> - struct string_lit - { - static char get(char c) { return c; } - static std::string get(char const* str = "") { return str; } - }; - - template <> - struct string_lit - { - static wchar_t get(char c) - { - typedef std::ctype ctype_t; - return std::use_facet(std::locale()).widen(c); - } - static std::basic_string get(char const* source = "") - { - using namespace std; // some systems have size_t in ns std - size_t len = strlen(source); - boost::scoped_array result (new wchar_t[len+1]); - result.get()[len] = '\0'; - - // working with wide character streams is supported only if the - // platform provides the std::ctype facet - BOOST_ASSERT(std::has_facet >(std::locale())); - - std::use_facet >(std::locale()) - .widen(source, source + len, result.get()); - return result.get(); - } - }; - - template - inline Char L(char c) - { - return string_lit::get(c); - } - - template - inline std::basic_string L(char const* c = "") - { - return string_lit::get(c); - } - - /////////////////////////////////////////////////////////////////////////// - template - inline bool - generate_delimiter(std::basic_ostream &os_) - { - os_ << std::basic_string(80, '/') << "\n"; - return os_.good(); - } - - /////////////////////////////////////////////////////////////////////////// - // Generate a table of the names of the used lexer states, which is a bit - // tricky, because the table stored with the rules is sorted based on the - // names, but we need it sorted using the state ids. - template - inline bool - generate_cpp_state_info (boost::lexer::basic_rules const& rules_ - , std::basic_ostream &os_, Char const* name_suffix) - { - // we need to re-sort the state names in ascending order of the state - // ids, filling possible gaps in between later - typedef typename - boost::lexer::basic_rules::string_size_t_map::const_iterator - state_iterator; - typedef std::map reverse_state_map_type; - - reverse_state_map_type reverse_state_map; - state_iterator send = rules_.statemap().end(); - for (state_iterator sit = rules_.statemap().begin(); sit != send; ++sit) - { - typedef typename reverse_state_map_type::value_type value_type; - reverse_state_map.insert(value_type((*sit).second, (*sit).first.c_str())); - } - - generate_delimiter(os_); - os_ << "// this table defines the names of the lexer states\n"; - os_ << boost::lexer::detail::strings::char_name() - << " const* const lexer_state_names" - << (name_suffix[0] ? "_" : "") << name_suffix - << "[" << rules_.statemap().size() << "] = \n{\n"; - - typedef typename reverse_state_map_type::iterator iterator; - iterator rend = reverse_state_map.end(); - std::size_t last_id = 0; - for (iterator rit = reverse_state_map.begin(); rit != rend; ++last_id) - { - for (/**/; last_id < (*rit).first; ++last_id) - { - os_ << " 0, // \"\"\n"; - } - os_ << " " - << boost::lexer::detail::strings::char_prefix() - << "\"" << (*rit).second << "\""; - if (++rit != rend) - os_ << ",\n"; - else - os_ << "\n"; // don't generate the final comma - } - os_ << "};\n\n"; - - generate_delimiter(os_); - os_ << "// this variable defines the number of lexer states\n"; - os_ << "std::size_t const lexer_state_count" - << (name_suffix[0] ? "_" : "") << name_suffix - << " = " << rules_.statemap().size() << ";\n\n"; - return os_.good(); - } - - template - inline bool - generate_cpp_state_table (std::basic_ostream &os_ - , Char const* name_suffix, bool bol, bool eol) - { - std::basic_string suffix(L(name_suffix[0] ? "_" : "")); - suffix += name_suffix; - - generate_delimiter(os_); - os_ << "// this defines a generic accessors for the information above\n"; - os_ << "struct lexer" << suffix << "\n{\n"; - os_ << " // version number and feature-set of compatible static lexer engine\n"; - os_ << " enum\n"; - os_ << " {\n static_version = " << SPIRIT_STATIC_LEXER_VERSION << ",\n"; - os_ << " supports_bol = " << std::boolalpha << bol << ",\n"; - os_ << " supports_eol = " << std::boolalpha << eol << "\n"; - os_ << " };\n\n"; - os_ << " // return the number of lexer states\n"; - os_ << " static std::size_t state_count()\n"; - os_ << " {\n return lexer_state_count" << suffix << "; \n }\n\n"; - os_ << " // return the name of the lexer state as given by 'idx'\n"; - os_ << " static " << boost::lexer::detail::strings::char_name() - << " const* state_name(std::size_t idx)\n"; - os_ << " {\n return lexer_state_names" << suffix << "[idx]; \n }\n\n"; - os_ << " // return the next matched token\n"; - os_ << " template\n"; - os_ << " static std::size_t next(std::size_t &start_state_, bool& bol_\n"; - os_ << " , Iterator &start_token_, Iterator const& end_, std::size_t& unique_id_)\n"; - os_ << " {\n return next_token" << suffix - << "(start_state_, bol_, start_token_, end_, unique_id_);\n }\n"; - os_ << "};\n\n"; - return os_.good(); - } - - /////////////////////////////////////////////////////////////////////////// - // generate function body based on traversing the DFA tables - template - bool generate_function_body_dfa(std::basic_ostream& os_ - , boost::lexer::basic_state_machine const &sm_) - { - std::size_t const dfas_ = sm_.data()._dfa->size(); - std::size_t const lookups_ = sm_.data()._lookup->front()->size(); - - os_ << " enum {end_state_index, id_index, unique_id_index, " - "state_index, bol_index,\n"; - os_ << " eol_index, dead_state_index, dfa_offset};\n\n"; - os_ << " static std::size_t const npos = " - "static_cast(~0);\n"; - - if (dfas_ > 1) - { - for (std::size_t state_ = 0; state_ < dfas_; ++state_) - { - std::size_t i_ = 0; - std::size_t j_ = 1; - std::size_t count_ = lookups_ / 8; - std::size_t const* lookup_ = &sm_.data()._lookup[state_]->front(); - std::size_t const* dfa_ = &sm_.data()._dfa[state_]->front(); - - os_ << " static std::size_t const lookup" << state_ - << "_[" << lookups_ << "] = {\n "; - for (/**/; i_ < count_; ++i_) - { - std::size_t const index_ = i_ * 8; - os_ << lookup_[index_]; - for (/**/; j_ < 8; ++j_) - { - os_ << ", " << lookup_[index_ + j_]; - } - if (i_ < count_ - 1) - { - os_ << ",\n "; - } - j_ = 1; - } - os_ << " };\n"; - - count_ = sm_.data()._dfa[state_]->size (); - os_ << " static const std::size_t dfa" << state_ << "_[" - << count_ << "] = {\n "; - count_ /= 8; - for (i_ = 0; i_ < count_; ++i_) - { - std::size_t const index_ = i_ * 8; - os_ << dfa_[index_]; - for (j_ = 1; j_ < 8; ++j_) - { - os_ << ", " << dfa_[index_ + j_]; - } - if (i_ < count_ - 1) - { - os_ << ",\n "; - } - } - - std::size_t const mod_ = sm_.data()._dfa[state_]->size () % 8; - if (mod_) - { - std::size_t const index_ = count_ * 8; - if (count_) - { - os_ << ",\n "; - } - os_ << dfa_[index_]; - for (j_ = 1; j_ < mod_; ++j_) - { - os_ << ", " << dfa_[index_ + j_]; - } - } - os_ << " };\n"; - } - - std::size_t count_ = sm_.data()._dfa_alphabet.size(); - std::size_t i_ = 1; - - os_ << " static std::size_t const* lookup_arr_[" << count_ - << "] = { lookup0_"; - for (i_ = 1; i_ < count_; ++i_) - { - os_ << ", " << "lookup" << i_ << "_"; - } - os_ << " };\n"; - - os_ << " static std::size_t const dfa_alphabet_arr_[" - << count_ << "] = { "; - os_ << sm_.data()._dfa_alphabet.front (); - for (i_ = 1; i_ < count_; ++i_) - { - os_ << ", " << sm_.data()._dfa_alphabet[i_]; - } - os_ << " };\n"; - - os_ << " static std::size_t const* dfa_arr_[" << count_ - << "] = { "; - os_ << "dfa0_"; - for (i_ = 1; i_ < count_; ++i_) - { - os_ << ", " << "dfa" << i_ << "_"; - } - os_ << " };\n"; - } - else - { - std::size_t const* lookup_ = &sm_.data()._lookup[0]->front(); - std::size_t const* dfa_ = &sm_.data()._dfa[0]->front(); - std::size_t i_ = 0; - std::size_t j_ = 1; - std::size_t count_ = lookups_ / 8; - - os_ << " static std::size_t const lookup_["; - os_ << sm_.data()._lookup[0]->size() << "] = {\n "; - for (/**/; i_ < count_; ++i_) - { - const std::size_t index_ = i_ * 8; - os_ << lookup_[index_]; - for (/**/; j_ < 8; ++j_) - { - os_ << ", " << lookup_[index_ + j_]; - } - if (i_ < count_ - 1) - { - os_ << ",\n "; - } - j_ = 1; - } - os_ << " };\n"; - - os_ << " static std::size_t const dfa_alphabet_ = " - << sm_.data()._dfa_alphabet.front () << ";\n"; - os_ << " static std::size_t const dfa_[" - << sm_.data()._dfa[0]->size () << "] = {\n "; - count_ = sm_.data()._dfa[0]->size () / 8; - for (i_ = 0; i_ < count_; ++i_) - { - const std::size_t index_ = i_ * 8; - os_ << dfa_[index_]; - for (j_ = 1; j_ < 8; ++j_) - { - os_ << ", " << dfa_[index_ + j_]; - } - if (i_ < count_ - 1) - { - os_ << ",\n "; - } - } - - const std::size_t mod_ = sm_.data()._dfa[0]->size () % 8; - if (mod_) - { - const std::size_t index_ = count_ * 8; - if (count_) - { - os_ << ",\n "; - } - os_ << dfa_[index_]; - for (j_ = 1; j_ < mod_; ++j_) - { - os_ << ", " << dfa_[index_ + j_]; - } - } - os_ << " };\n"; - } - - os_ << "\n if (start_token_ == end_)\n"; - os_ << " {\n"; - os_ << " unique_id_ = npos;\n"; - os_ << " return 0;\n"; - os_ << " }\n\n"; - if (sm_.data()._seen_BOL_assertion) - { - os_ << " bool bol = bol_;\n\n"; - } - - if (dfas_ > 1) - { - os_ << "again:\n"; - os_ << " std::size_t const* lookup_ = lookup_arr_[start_state_];\n"; - os_ << " std::size_t dfa_alphabet_ = dfa_alphabet_arr_[start_state_];\n"; - os_ << " std::size_t const*dfa_ = dfa_arr_[start_state_];\n"; - } - - os_ << " std::size_t const* ptr_ = dfa_ + dfa_alphabet_;\n"; - os_ << " Iterator curr_ = start_token_;\n"; - os_ << " bool end_state_ = *ptr_ != 0;\n"; - os_ << " std::size_t id_ = *(ptr_ + id_index);\n"; - os_ << " std::size_t uid_ = *(ptr_ + unique_id_index);\n"; - if (dfas_ > 1) - { - os_ << " std::size_t end_start_state_ = start_state_;\n"; - } - if (sm_.data()._seen_BOL_assertion) - { - os_ << " bool end_bol_ = bol_;\n"; - } - os_ << " Iterator end_token_ = start_token_;\n\n"; - - os_ << " while (curr_ != end_)\n"; - os_ << " {\n"; - - if (sm_.data()._seen_BOL_assertion) - { - os_ << " std::size_t const BOL_state_ = ptr_[bol_index];\n\n"; - } - - if (sm_.data()._seen_EOL_assertion) - { - os_ << " std::size_t const EOL_state_ = ptr_[eol_index];\n\n"; - } - - if (sm_.data()._seen_BOL_assertion && sm_.data()._seen_EOL_assertion) - { - os_ << " if (BOL_state_ && bol)\n"; - os_ << " {\n"; - os_ << " ptr_ = &dfa_[BOL_state_ * dfa_alphabet_];\n"; - os_ << " }\n"; - os_ << " else if (EOL_state_ && *curr_ == '\\n')\n"; - os_ << " {\n"; - os_ << " ptr_ = &dfa_[EOL_state_ * dfa_alphabet_];\n"; - os_ << " }\n"; - os_ << " else\n"; - os_ << " {\n"; - if (lookups_ == 256) - { - os_ << " unsigned char index = \n"; - os_ << " static_cast(*curr_++);\n"; - } - else - { - os_ << " std::size_t index = *curr_++\n"; - } - os_ << " bol = (index == '\\n') ? true : false;\n"; - os_ << " std::size_t const state_ = ptr_[\n"; - os_ << " lookup_[static_cast(index)]];\n"; - - os_ << '\n'; - os_ << " if (state_ == 0) break;\n"; - os_ << '\n'; - os_ << " ptr_ = &dfa_[state_ * dfa_alphabet_];\n"; - os_ << " }\n\n"; - } - else if (sm_.data()._seen_BOL_assertion) - { - os_ << " if (BOL_state_ && bol)\n"; - os_ << " {\n"; - os_ << " ptr_ = &dfa_[BOL_state_ * dfa_alphabet_];\n"; - os_ << " }\n"; - os_ << " else\n"; - os_ << " {\n"; - if (lookups_ == 256) - { - os_ << " unsigned char index = \n"; - os_ << " static_cast(*curr_++);\n"; - } - else - { - os_ << " std::size_t index = *curr_++\n"; - } - os_ << " bol = (index == '\\n') ? true : false;\n"; - os_ << " std::size_t const state_ = ptr_[\n"; - os_ << " lookup_[static_cast(index)]];\n"; - - os_ << '\n'; - os_ << " if (state_ == 0) break;\n"; - os_ << '\n'; - os_ << " ptr_ = &dfa_[state_ * dfa_alphabet_];\n"; - os_ << " }\n\n"; - } - else if (sm_.data()._seen_EOL_assertion) - { - os_ << " if (EOL_state_ && *curr_ == '\\n')\n"; - os_ << " {\n"; - os_ << " ptr_ = &dfa_[EOL_state_ * dfa_alphabet_];\n"; - os_ << " }\n"; - os_ << " else\n"; - os_ << " {\n"; - if (lookups_ == 256) - { - os_ << " unsigned char index = \n"; - os_ << " static_cast(*curr_++);\n"; - } - else - { - os_ << " std::size_t index = *curr_++\n"; - } - os_ << " bol = (index == '\\n') ? true : false;\n"; - os_ << " std::size_t const state_ = ptr_[\n"; - os_ << " lookup_[static_cast(index)]];\n"; - - os_ << '\n'; - os_ << " if (state_ == 0) break;\n"; - os_ << '\n'; - os_ << " ptr_ = &dfa_[state_ * dfa_alphabet_];\n"; - os_ << " }\n\n"; - } - else - { - os_ << " std::size_t const state_ =\n"; - - if (lookups_ == 256) - { - os_ << " ptr_[lookup_[" - "static_cast(*curr_++)]];\n"; - } - else - { - os_ << " ptr_[lookup_[*curr_++]];\n"; - } - - os_ << '\n'; - os_ << " if (state_ == 0) break;\n"; - os_ << '\n'; - os_ << " ptr_ = &dfa_[state_ * dfa_alphabet_];\n\n"; - } - - os_ << " if (*ptr_)\n"; - os_ << " {\n"; - os_ << " end_state_ = true;\n"; - os_ << " id_ = *(ptr_ + id_index);\n"; - os_ << " uid_ = *(ptr_ + unique_id_index);\n"; - if (dfas_ > 1) - { - os_ << " end_start_state_ = *(ptr_ + state_index);\n"; - } - if (sm_.data()._seen_BOL_assertion) - { - os_ << " end_bol_ = bol;\n"; - } - os_ << " end_token_ = curr_;\n"; - os_ << " }\n"; - os_ << " }\n\n"; - - if (sm_.data()._seen_EOL_assertion) - { - os_ << " std::size_t const EOL_state_ = ptr_[eol_index];\n\n"; - - os_ << " if (EOL_state_ && curr_ == end_)\n"; - os_ << " {\n"; - os_ << " ptr_ = &dfa_[EOL_state_ * dfa_alphabet_];\n\n"; - - os_ << " if (*ptr_)\n"; - os_ << " {\n"; - os_ << " end_state_ = true;\n"; - os_ << " id_ = *(ptr_ + id_index);\n"; - os_ << " uid_ = *(ptr_ + unique_id_index);\n"; - if (dfas_ > 1) - { - os_ << " end_start_state_ = *(ptr_ + state_index);\n"; - } - if (sm_.data()._seen_BOL_assertion) - { - os_ << " end_bol_ = bol;\n"; - } - os_ << " end_token_ = curr_;\n"; - os_ << " }\n"; - os_ << " }\n\n"; - } - - os_ << " if (end_state_)\n"; - os_ << " {\n"; - os_ << " // return longest match\n"; - os_ << " start_token_ = end_token_;\n"; - - if (dfas_ > 1) - { - os_ << " start_state_ = end_start_state_;\n"; - os_ << " if (id_ == 0)\n"; - os_ << " {\n"; - if (sm_.data()._seen_BOL_assertion) - { - os_ << " bol = end_bol_;\n"; - } - os_ << " goto again;\n"; - os_ << " }\n"; - if (sm_.data()._seen_BOL_assertion) - { - os_ << " else\n"; - os_ << " {\n"; - os_ << " bol_ = end_bol_;\n"; - os_ << " }\n"; - } - } - else if (sm_.data()._seen_BOL_assertion) - { - os_ << " bol_ = end_bol_;\n"; - } - - os_ << " }\n"; - os_ << " else\n"; - os_ << " {\n"; - - if (sm_.data()._seen_BOL_assertion) - { - os_ << " bol_ = (*start_token_ == '\\n') ? true : false;\n"; - } - - os_ << " id_ = npos;\n"; - os_ << " uid_ = npos;\n"; - os_ << " }\n\n"; - - os_ << " unique_id_ = uid_;\n"; - os_ << " return id_;\n"; - return os_.good(); - } - - /////////////////////////////////////////////////////////////////////////// - template - inline std::basic_string get_charlit(Char ch) - { - std::basic_string result; - boost::lexer::basic_string_token::escape_char(ch, result); - return result; - } - - // check whether state0_0 is referenced from any of the other states - template - bool need_label0_0(boost::lexer::basic_state_machine const &sm_) - { - typedef typename boost::lexer::basic_state_machine::iterator - iterator_type; - iterator_type iter_ = sm_.begin(); - std::size_t const states_ = iter_->states; - - for (std::size_t state_ = 0; state_ < states_; ++state_) - { - if (0 == iter_->bol_index || 0 == iter_->eol_index) - { - return true; - } - - std::size_t const transitions_ = iter_->transitions; - for (std::size_t t_ = 0; t_ < transitions_; ++t_) - { - if (0 == iter_->goto_state) - { - return true; - } - ++iter_; - } - if (transitions_ == 0) ++iter_; - } - return false; - } - - /////////////////////////////////////////////////////////////////////////// - template - bool generate_function_body_switch(std::basic_ostream & os_ - , boost::lexer::basic_state_machine const &sm_) - { - typedef typename boost::lexer::basic_state_machine::iterator - iterator_type; - - std::size_t const lookups_ = sm_.data()._lookup->front ()->size (); - iterator_type iter_ = sm_.begin(); - iterator_type labeliter_ = iter_; - iterator_type end_ = sm_.end(); - std::size_t const dfas_ = sm_.data()._dfa->size (); - - os_ << " static std::size_t const npos = " - "static_cast(~0);\n"; - - os_ << "\n if (start_token_ == end_)\n"; - os_ << " {\n"; - os_ << " unique_id_ = npos;\n"; - os_ << " return 0;\n"; - os_ << " }\n\n"; - - if (sm_.data()._seen_BOL_assertion) - { - os_ << " bool bol = bol_;\n"; - } - - if (dfas_ > 1) - { - os_ << "again:\n"; - } - - os_ << " Iterator curr_ = start_token_;\n"; - os_ << " bool end_state_ = false;\n"; - os_ << " std::size_t id_ = npos;\n"; - os_ << " std::size_t uid_ = npos;\n"; - - if (dfas_ > 1) - { - os_ << " std::size_t end_start_state_ = start_state_;\n"; - } - - if (sm_.data()._seen_BOL_assertion) - { - os_ << " bool end_bol_ = bol_;\n"; - } - - os_ << " Iterator end_token_ = start_token_;\n"; - os_ << '\n'; - - os_ << " " << ((lookups_ == 256) ? "char" : "wchar_t") - << " ch_ = 0;\n\n"; - - if (dfas_ > 1) - { - os_ << " switch (start_state_)\n"; - os_ << " {\n"; - - for (std::size_t i_ = 0; i_ < dfas_; ++i_) - { - os_ << " case " << i_ << ":\n"; - os_ << " goto state" << i_ << "_0;\n"; - os_ << " break;\n"; - } - - os_ << " default:\n"; - os_ << " goto end;\n"; - os_ << " break;\n"; - os_ << " }\n"; - } - - bool need_state0_0_label = need_label0_0(sm_); - - for (std::size_t dfa_ = 0; dfa_ < dfas_; ++dfa_) - { - std::size_t const states_ = iter_->states; - for (std::size_t state_ = 0; state_ < states_; ++state_) - { - std::size_t const transitions_ = iter_->transitions; - std::size_t t_ = 0; - - if (dfas_ > 1 || dfa_ != 0 || state_ != 0 || need_state0_0_label) - { - os_ << "\nstate" << dfa_ << '_' << state_ << ":\n"; - } - - if (iter_->end_state) - { - os_ << " end_state_ = true;\n"; - os_ << " id_ = " << iter_->id << ";\n"; - os_ << " uid_ = " << iter_->unique_id << ";\n"; - os_ << " end_token_ = curr_;\n"; - - if (dfas_ > 1) - { - os_ << " end_start_state_ = " << iter_->goto_dfa << - ";\n"; - } - - if (sm_.data()._seen_BOL_assertion) - { - os_ << " end_bol_ = bol;\n"; - } - - if (transitions_) os_ << '\n'; - } - - if (t_ < transitions_ || - iter_->bol_index != boost::lexer::npos || - iter_->eol_index != boost::lexer::npos) - { - os_ << " if (curr_ == end_) goto end;\n"; - os_ << " ch_ = *curr_;\n"; - if (iter_->bol_index != boost::lexer::npos) - { - os_ << "\n if (bol) goto state" << dfa_ << '_' - << iter_->bol_index << ";\n"; - } - if (iter_->eol_index != boost::lexer::npos) - { - os_ << "\n if (ch_ == '\\n') goto state" << dfa_ - << '_' << iter_->eol_index << ";\n"; - } - os_ << " ++curr_;\n"; - } - - for (/**/; t_ < transitions_; ++t_) - { - Char const *ptr_ = iter_->token._charset.c_str(); - Char const *end2_ = ptr_ + iter_->token._charset.size(); - Char start_char_ = 0; - Char curr_char_ = 0; - bool range_ = false; - bool first_char_ = true; - - os_ << "\n if ("; - - while (ptr_ != end2_) - { - curr_char_ = *ptr_++; - - if (*ptr_ == curr_char_ + 1) - { - if (!range_) - { - start_char_ = curr_char_; - } - range_ = true; - } - else - { - if (!first_char_) - { - os_ << ((iter_->token._negated) ? " && " : " || "); - } - else - { - first_char_ = false; - } - if (range_) - { - if (iter_->token._negated) - { - os_ << "!"; - } - os_ << "(ch_ >= '" << get_charlit(start_char_) - << "' && ch_ <= '" - << get_charlit(curr_char_) << "')"; - range_ = false; - } - else - { - os_ << "ch_ " - << ((iter_->token._negated) ? "!=" : "==") - << " '" << get_charlit(curr_char_) << "'"; - } - } - } - - os_ << ") goto state" << dfa_ << '_' << iter_->goto_state - << ";\n"; - ++iter_; - } - - if (!(dfa_ == dfas_ - 1 && state_ == states_ - 1)) - { - os_ << " goto end;\n"; - } - - if (transitions_ == 0) ++iter_; - } - } - - os_ << "\nend:\n"; - os_ << " if (end_state_)\n"; - os_ << " {\n"; - os_ << " // return longest match\n"; - os_ << " start_token_ = end_token_;\n"; - - if (dfas_ > 1) - { - os_ << " start_state_ = end_start_state_;\n"; - os_ << "\n if (id_ == 0)\n"; - os_ << " {\n"; - - if (sm_.data()._seen_BOL_assertion) - { - os_ << " bol = end_bol_;\n"; - } - - os_ << " goto again;\n"; - os_ << " }\n"; - - if (sm_.data()._seen_BOL_assertion) - { - os_ << " else\n"; - os_ << " {\n"; - os_ << " bol_ = end_bol_;\n"; - os_ << " }\n"; - } - } - else if (sm_.data()._seen_BOL_assertion) - { - os_ << " bol_ = end_bol_;\n"; - } - - os_ << " }\n"; - os_ << " else\n"; - os_ << " {\n"; - - if (sm_.data()._seen_BOL_assertion) - { - os_ << " bol_ = (*start_token_ == '\\n') ? true : false;\n"; - } - os_ << " id_ = npos;\n"; - os_ << " uid_ = npos;\n"; - os_ << " }\n\n"; - - os_ << " unique_id_ = uid_;\n"; - os_ << " return id_;\n"; - return os_.good(); - } - - /////////////////////////////////////////////////////////////////////////// - // Generate a tokenizer for the given state machine. - template - inline bool - generate_cpp (boost::lexer::basic_state_machine const& sm_ - , boost::lexer::basic_rules const& rules_ - , std::basic_ostream &os_, Char const* name_suffix - , F generate_function_body) - { - if (sm_.data()._lookup->empty()) - return false; - - std::size_t const dfas_ = sm_.data()._dfa->size(); -// std::size_t const lookups_ = sm_.data()._lookup->front()->size(); - - os_ << "// Copyright (c) 2008-2009 Ben Hanson\n"; - os_ << "// Copyright (c) 2008-2011 Hartmut Kaiser\n"; - os_ << "//\n"; - os_ << "// Distributed under the Boost Software License, " - "Version 1.0. (See accompanying\n"; - os_ << "// file licence_1_0.txt or copy at " - "http://www.boost.org/LICENSE_1_0.txt)\n\n"; - os_ << "// Auto-generated by boost::lexer, do not edit\n\n"; - - std::basic_string guard(name_suffix); - guard += L(name_suffix[0] ? "_" : ""); - guard += L(__DATE__ "_" __TIME__); - typename std::basic_string::size_type p = - guard.find_first_of(L(": ")); - while (std::string::npos != p) - { - guard.replace(p, 1, L("_")); - p = guard.find_first_of(L(": "), p); - } - { // to_upper(guard) - typedef std::ctype facet_t; - facet_t const& facet = std::use_facet(std::locale()); - typedef typename std::basic_string::iterator iter_t; - for (iter_t iter = guard.begin(), - last = guard.end(); iter != last; ++iter) - *iter = facet.toupper(*iter); - } - - os_ << "#if !defined(BOOST_SPIRIT_LEXER_NEXT_TOKEN_" << guard << ")\n"; - os_ << "#define BOOST_SPIRIT_LEXER_NEXT_TOKEN_" << guard << "\n\n"; - - os_ << "#include \n\n"; - - generate_delimiter(os_); - os_ << "// the generated table of state names and the tokenizer have to be\n" - "// defined in the boost::spirit::lex::lexertl::static_ namespace\n"; - os_ << "namespace boost { namespace spirit { namespace lex { " - "namespace lexertl { namespace static_ {\n\n"; - - // generate the lexer state information variables - if (!generate_cpp_state_info(rules_, os_, name_suffix)) - return false; - - generate_delimiter(os_); - os_ << "// this function returns the next matched token\n"; - os_ << "template\n"; - os_ << "std::size_t next_token" << (name_suffix[0] ? "_" : "") - << name_suffix << " ("; - - if (dfas_ > 1) - { - os_ << "std::size_t& start_state_, "; - } - else - { - os_ << "std::size_t& /*start_state_*/, "; - } - if (sm_.data()._seen_BOL_assertion) - { - os_ << "bool& bol_, "; - } - else - { - os_ << "bool& /*bol_*/, "; - } - os_ << "\n "; - - os_ << "Iterator &start_token_, Iterator const& end_, "; - os_ << "std::size_t& unique_id_)\n"; - os_ << "{\n"; - if (!generate_function_body(os_, sm_)) - return false; - os_ << "}\n\n"; - - if (!generate_cpp_state_table(os_, name_suffix - , sm_.data()._seen_BOL_assertion, sm_.data()._seen_EOL_assertion)) - { - return false; - } - - os_ << "}}}}} // namespace boost::spirit::lex::lexertl::static_\n\n"; - - os_ << "#endif\n"; - - return os_.good(); - } - - } // namespace detail - - /////////////////////////////////////////////////////////////////////////// - template - inline bool - generate_static(Lexer const& lexer - , std::basic_ostream& os - , typename Lexer::char_type const* name_suffix, F f) - { - if (!lexer.init_dfa(true)) // always minimize DFA for static lexers - return false; - return detail::generate_cpp(lexer.state_machine_, lexer.rules_, os - , name_suffix, f); - } - - /////////////////////////////////////////////////////////////////////////// - // deprecated function, will be removed in the future (this has been - // replaced by the function generate_static_dfa - see below). - template - inline bool - generate_static(Lexer const& lexer - , std::basic_ostream& os - , typename Lexer::char_type const* name_suffix = - detail::L()) - { - return generate_static(lexer, os, name_suffix - , &detail::generate_function_body_dfa); - } - - /////////////////////////////////////////////////////////////////////////// - template - inline bool - generate_static_dfa(Lexer const& lexer - , std::basic_ostream& os - , typename Lexer::char_type const* name_suffix = - detail::L()) - { - return generate_static(lexer, os, name_suffix - , &detail::generate_function_body_dfa); - } - - /////////////////////////////////////////////////////////////////////////// - template - inline bool - generate_static_switch(Lexer const& lexer - , std::basic_ostream& os - , typename Lexer::char_type const* name_suffix = - detail::L()) - { - return generate_static(lexer, os, name_suffix - , &detail::generate_function_body_switch); - } - -/////////////////////////////////////////////////////////////////////////////// -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/lex/lexer/lexertl/iterator.hpp b/framework/contrib/boost/include/boost/spirit/home/lex/lexer/lexertl/iterator.hpp deleted file mode 100644 index e5fd4127d9f3..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/lex/lexer/lexertl/iterator.hpp +++ /dev/null @@ -1,149 +0,0 @@ -// 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_LEX_LEXER_ITERATOR_MAR_16_2007_0353PM) -#define BOOST_SPIRIT_LEX_LEXER_ITERATOR_MAR_16_2007_0353PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#if defined(BOOST_SPIRIT_DEBUG) -#include -#else -#include -#endif -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace lex { namespace lexertl -{ - /////////////////////////////////////////////////////////////////////////// - template - struct make_multi_pass - { - // Divide the given functor type into its components (unique and - // shared) and build a std::pair from these parts - typedef std::pair functor_data_type; - - // This is the result type returned from the iterator - typedef typename FunctorData::result_type result_type; - - // Compose the multi_pass iterator policy type from the appropriate - // policies - typedef iterator_policies::split_functor_input input_policy; - typedef iterator_policies::ref_counted ownership_policy; -#if defined(BOOST_SPIRIT_DEBUG) - typedef iterator_policies::buf_id_check check_policy; -#else - typedef iterator_policies::no_check check_policy; -#endif - typedef iterator_policies::split_std_deque storage_policy; - - typedef iterator_policies::default_policy< - ownership_policy, check_policy, input_policy, storage_policy> - policy_type; - - // Compose the multi_pass iterator from the policy - typedef spirit::multi_pass type; - }; - - /////////////////////////////////////////////////////////////////////////// - // lexer_iterator exposes an iterator for a lexertl based dfa (lexer) - // The template parameters have the same semantics as described for the - // functor above. - /////////////////////////////////////////////////////////////////////////// - template - class iterator : public make_multi_pass::type - { - public: - typedef typename Functor::unique unique_functor_type; - typedef typename Functor::shared shared_functor_type; - - typedef typename Functor::iterator_type base_iterator_type; - typedef typename Functor::result_type token_type; - - private: - typedef typename make_multi_pass::functor_data_type - functor_type; - typedef typename make_multi_pass::type base_type; - typedef typename Functor::char_type char_type; - - public: - // create a new iterator encapsulating the lexer object to be used - // for tokenization - template - iterator(IteratorData const& iterdata_, base_iterator_type& first - , base_iterator_type const& last, char_type const* state = 0) - : base_type(functor_type(unique_functor_type() - , shared_functor_type(iterdata_, first, last))) - { - set_state(map_state(state)); - } - - // create an end iterator usable for end of range checking - iterator() {} - - // (wash): < mgaunard> T it; T it2 = ++it; doesn't ocmpile - // < mgaunard> this gets fixed by adding - iterator(const base_type& base) - : base_type(base) { } - - // set the new required state for the underlying lexer object - std::size_t set_state(std::size_t state) - { - return unique_functor_type::set_state(*this, state); - } - - // get the current state for the underlying lexer object - std::size_t get_state() - { - return unique_functor_type::get_state(*this); - } - - // map the given state name to a corresponding state id as understood - // by the underlying lexer object - std::size_t map_state(char_type const* statename) - { - return (0 != statename) - ? unique_functor_type::map_state(*this, statename) - : 0; - } - }; -}} - -namespace traits -{ - template - struct is_multi_pass > - : mpl::true_ {}; - - template - void clear_queue(spirit::lex::lexertl::iterator & mp - , BOOST_SCOPED_ENUM(traits::clear_mode) mode) - { - mp.clear_queue(mode); - } - - template - void inhibit_clear_queue(spirit::lex::lexertl::iterator& mp, bool flag) - { - mp.inhibit_clear_queue(flag); - } - - template - bool inhibit_clear_queue(spirit::lex::lexertl::iterator& mp) - { - return mp.inhibit_clear_queue(); - } -} - -}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/lex/lexer/lexertl/iterator_tokenizer.hpp b/framework/contrib/boost/include/boost/spirit/home/lex/lexer/lexertl/iterator_tokenizer.hpp deleted file mode 100644 index 850c55d6ddb4..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/lex/lexer/lexertl/iterator_tokenizer.hpp +++ /dev/null @@ -1,254 +0,0 @@ -// 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_LEXERTL_ITERATOR_TOKENISER_MARCH_22_2007_0859AM) -#define BOOST_SPIRIT_LEXERTL_ITERATOR_TOKENISER_MARCH_22_2007_0859AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include // for std::iterator_traits -#include - -namespace boost { namespace spirit { namespace lex { namespace lexertl -{ - /////////////////////////////////////////////////////////////////////////// - template - class basic_iterator_tokeniser - { - public: - typedef std::vector size_t_vector; - typedef typename std::iterator_traits::value_type char_type; - - static std::size_t next ( - boost::lexer::basic_state_machine const& state_machine_ - , std::size_t &dfa_state_, bool& bol_, Iterator &start_token_ - , Iterator const& end_, std::size_t& unique_id_) - { - if (start_token_ == end_) - { - unique_id_ = boost::lexer::npos; - return 0; - } - - bool bol = bol_; - boost::lexer::detail::internals const& internals_ = - state_machine_.data(); - - again: - std::size_t const* lookup_ = &internals_._lookup[dfa_state_]-> - front (); - std::size_t dfa_alphabet_ = internals_._dfa_alphabet[dfa_state_]; - std::size_t const* dfa_ = &internals_._dfa[dfa_state_]->front (); - - std::size_t const* ptr_ = dfa_ + dfa_alphabet_; - Iterator curr_ = start_token_; - bool end_state_ = *ptr_ != 0; - std::size_t id_ = *(ptr_ + boost::lexer::id_index); - std::size_t uid_ = *(ptr_ + boost::lexer::unique_id_index); - std::size_t end_start_state_ = dfa_state_; - bool end_bol_ = bol_; - Iterator end_token_ = start_token_; - - while (curr_ != end_) - { - std::size_t const BOL_state_ = ptr_[boost::lexer::bol_index]; - std::size_t const EOL_state_ = ptr_[boost::lexer::eol_index]; - - if (BOL_state_ && bol) - { - ptr_ = &dfa_[BOL_state_ * dfa_alphabet_]; - } - else if (EOL_state_ && *curr_ == '\n') - { - ptr_ = &dfa_[EOL_state_ * dfa_alphabet_]; - } - else - { - typedef typename - std::iterator_traits::value_type - value_type; - typedef typename - boost::lexer::char_traits::index_type - index_type; - - index_type index = - boost::lexer::char_traits::call(*curr_++); - bol = (index == '\n') ? true : false; - std::size_t const state_ = ptr_[ - lookup_[static_cast(index)]]; - - if (state_ == 0) - { - break; - } - - ptr_ = &dfa_[state_ * dfa_alphabet_]; - } - - if (*ptr_) - { - end_state_ = true; - id_ = *(ptr_ + boost::lexer::id_index); - uid_ = *(ptr_ + boost::lexer::unique_id_index); - end_start_state_ = *(ptr_ + boost::lexer::state_index); - end_bol_ = bol; - end_token_ = curr_; - } - } - - std::size_t const EOL_state_ = ptr_[boost::lexer::eol_index]; - - if (EOL_state_ && curr_ == end_) - { - ptr_ = &dfa_[EOL_state_ * dfa_alphabet_]; - - if (*ptr_) - { - end_state_ = true; - id_ = *(ptr_ + boost::lexer::id_index); - uid_ = *(ptr_ + boost::lexer::unique_id_index); - end_start_state_ = *(ptr_ + boost::lexer::state_index); - end_bol_ = bol; - end_token_ = curr_; - } - } - - if (end_state_) { - // return longest match - dfa_state_ = end_start_state_; - start_token_ = end_token_; - - if (id_ == 0) - { - bol = end_bol_; - goto again; - } - else - { - bol_ = end_bol_; - } - } - else { - bol_ = (*start_token_ == '\n') ? true : false; - id_ = boost::lexer::npos; - uid_ = boost::lexer::npos; - } - - unique_id_ = uid_; - return id_; - } - - /////////////////////////////////////////////////////////////////////// - static std::size_t next ( - boost::lexer::basic_state_machine const& state_machine_ - , bool& bol_, Iterator &start_token_, Iterator const& end_ - , std::size_t& unique_id_) - { - if (start_token_ == end_) - { - unique_id_ = boost::lexer::npos; - return 0; - } - - bool bol = bol_; - std::size_t const* lookup_ = &state_machine_.data()._lookup[0]->front(); - std::size_t dfa_alphabet_ = state_machine_.data()._dfa_alphabet[0]; - std::size_t const* dfa_ = &state_machine_.data()._dfa[0]->front (); - std::size_t const* ptr_ = dfa_ + dfa_alphabet_; - - Iterator curr_ = start_token_; - bool end_state_ = *ptr_ != 0; - std::size_t id_ = *(ptr_ + boost::lexer::id_index); - std::size_t uid_ = *(ptr_ + boost::lexer::unique_id_index); - bool end_bol_ = bol_; - Iterator end_token_ = start_token_; - - while (curr_ != end_) - { - std::size_t const BOL_state_ = ptr_[boost::lexer::bol_index]; - std::size_t const EOL_state_ = ptr_[boost::lexer::eol_index]; - - if (BOL_state_ && bol) - { - ptr_ = &dfa_[BOL_state_ * dfa_alphabet_]; - } - else if (EOL_state_ && *curr_ == '\n') - { - ptr_ = &dfa_[EOL_state_ * dfa_alphabet_]; - } - else - { - typedef typename - std::iterator_traits::value_type - value_type; - typedef typename - boost::lexer::char_traits::index_type - index_type; - - index_type index = - boost::lexer::char_traits::call(*curr_++); - bol = (index == '\n') ? true : false; - std::size_t const state_ = ptr_[ - lookup_[static_cast(index)]]; - - if (state_ == 0) - { - break; - } - - ptr_ = &dfa_[state_ * dfa_alphabet_]; - } - - if (*ptr_) - { - end_state_ = true; - id_ = *(ptr_ + boost::lexer::id_index); - uid_ = *(ptr_ + boost::lexer::unique_id_index); - end_bol_ = bol; - end_token_ = curr_; - } - } - - std::size_t const EOL_state_ = ptr_[boost::lexer::eol_index]; - - if (EOL_state_ && curr_ == end_) - { - ptr_ = &dfa_[EOL_state_ * dfa_alphabet_]; - - if (*ptr_) - { - end_state_ = true; - id_ = *(ptr_ + boost::lexer::id_index); - uid_ = *(ptr_ + boost::lexer::unique_id_index); - end_bol_ = bol; - end_token_ = curr_; - } - } - - if (end_state_) { - // return longest match - bol_ = end_bol_; - start_token_ = end_token_; - } - else { - bol_ = *start_token_ == '\n'; - id_ = boost::lexer::npos; - uid_ = boost::lexer::npos; - } - - unique_id_ = uid_; - return id_; - } - }; - -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/lex/lexer/lexertl/lexer.hpp b/framework/contrib/boost/include/boost/spirit/home/lex/lexer/lexertl/lexer.hpp deleted file mode 100644 index 7a883deb3424..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/lex/lexer/lexertl/lexer.hpp +++ /dev/null @@ -1,402 +0,0 @@ -// 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_LEX_LEXER_MAR_17_2007_0139PM) -#define BOOST_SPIRIT_LEX_LEXER_MAR_17_2007_0139PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#if defined(BOOST_SPIRIT_LEXERTL_DEBUG) -#include -#endif - -#include // for std::iterator_traits - -namespace boost { namespace spirit { namespace lex { namespace lexertl -{ - /////////////////////////////////////////////////////////////////////////// - namespace detail - { - /////////////////////////////////////////////////////////////////////// - // The must_escape function checks if the given character value needs - // to be preceded by a backslash character to disable its special - // meaning in the context of a regular expression - /////////////////////////////////////////////////////////////////////// - template - inline bool must_escape(Char c) - { - // FIXME: more needed? - switch (c) { - case '+': case '/': case '*': case '?': - case '|': - case '(': case ')': - case '[': case ']': - case '{': case '}': - case '.': - case '^': case '$': - case '\\': - case '"': - return true; - - default: - break; - } - return false; - } - - /////////////////////////////////////////////////////////////////////// - // The escape function returns the string representation of the given - // character value, possibly escaped with a backslash character, to - // allow it being safely used in a regular expression definition. - /////////////////////////////////////////////////////////////////////// - template - inline std::basic_string escape(Char ch) - { - std::basic_string result(1, ch); - if (detail::must_escape(ch)) - { - typedef typename std::basic_string::size_type size_type; - result.insert((size_type)0, 1, '\\'); - } - return result; - } - - /////////////////////////////////////////////////////////////////////// - // - /////////////////////////////////////////////////////////////////////// - inline boost::lexer::regex_flags map_flags(unsigned int flags) - { - unsigned int retval = boost::lexer::none; - if (flags & match_flags::match_not_dot_newline) - retval |= boost::lexer::dot_not_newline; - if (flags & match_flags::match_icase) - retval |= boost::lexer::icase; - - return boost::lexer::regex_flags(retval); - } - } - - /////////////////////////////////////////////////////////////////////////// - template - bool generate_static(Lexer const& - , std::basic_ostream& - , typename Lexer::char_type const*, F); - - /////////////////////////////////////////////////////////////////////////// - // - // Every lexer type to be used as a lexer for Spirit has to conform to - // the following public interface: - // - // typedefs: - // iterator_type The type of the iterator exposed by this lexer. - // token_type The type of the tokens returned from the exposed - // iterators. - // - // functions: - // default constructor - // Since lexers are instantiated as base classes - // only it might be a good idea to make this - // constructor protected. - // begin, end Return a pair of iterators, when dereferenced - // returning the sequence of tokens recognized in - // the input stream given as the parameters to the - // begin() function. - // add_token Should add the definition of a token to be - // recognized by this lexer. - // clear Should delete all current token definitions - // associated with the given state of this lexer - // object. - // - // template parameters: - // Iterator The type of the iterator used to access the - // underlying character stream. - // Token The type of the tokens to be returned from the - // exposed token iterator. - // Functor The type of the InputPolicy to use to instantiate - // the multi_pass iterator type to be used as the - // token iterator (returned from begin()/end()). - // - /////////////////////////////////////////////////////////////////////////// - - /////////////////////////////////////////////////////////////////////////// - // - // The lexer class is a implementation of a Spirit.Lex lexer on - // top of Ben Hanson's lexertl library as outlined above (For more - // information about lexertl go here: http://www.benhanson.net/lexertl.html). - // - // This class is supposed to be used as the first and only template - // parameter while instantiating instances of a lex::lexer class. - // - /////////////////////////////////////////////////////////////////////////// - template - , typename Iterator = typename Token::iterator_type - , typename Functor = functor > - class lexer - { - private: - struct dummy { void true_() {} }; - typedef void (dummy::*safe_bool)(); - - static std::size_t const all_states_id = static_cast(-2); - - public: - operator safe_bool() const - { return initialized_dfa_ ? &dummy::true_ : 0; } - - typedef typename std::iterator_traits::value_type char_type; - typedef std::basic_string string_type; - - typedef boost::lexer::basic_rules basic_rules_type; - - // Every lexer type to be used as a lexer for Spirit has to conform to - // a public interface . - typedef Token token_type; - typedef typename Token::id_type id_type; - typedef iterator iterator_type; - - private: -#ifdef _MSC_VER -# pragma warning(push) -# pragma warning(disable: 4512) // assignment operator could not be generated. -#endif - // this type is purely used for the iterator_type construction below - struct iterator_data_type - { - typedef typename Functor::semantic_actions_type semantic_actions_type; - - iterator_data_type( - boost::lexer::basic_state_machine const& sm - , boost::lexer::basic_rules const& rules - , semantic_actions_type const& actions) - : state_machine_(sm), rules_(rules), actions_(actions) - {} - - boost::lexer::basic_state_machine const& state_machine_; - boost::lexer::basic_rules const& rules_; - semantic_actions_type const& actions_; - }; -#ifdef _MSC_VER -# pragma warning(pop) -#endif - - public: - // Return the start iterator usable for iterating over the generated - // tokens. - iterator_type begin(Iterator& first, Iterator const& last - , char_type const* initial_state = 0) const - { - if (!init_dfa()) // never minimize DFA for dynamic lexers - return iterator_type(); - - iterator_data_type iterator_data(state_machine_, rules_, actions_); - return iterator_type(iterator_data, first, last, initial_state); - } - - // Return the end iterator usable to stop iterating over the generated - // tokens. - iterator_type end() const - { - return iterator_type(); - } - - protected: - // Lexer instances can be created by means of a derived class only. - lexer(unsigned int flags) - : flags_(detail::map_flags(flags)) - , rules_(flags_) - , initialized_dfa_(false) - {} - - public: - // interface for token definition management - std::size_t add_token(char_type const* state, char_type tokendef, - std::size_t token_id, char_type const* targetstate) - { - add_state(state); - initialized_dfa_ = false; - if (state == all_states()) - return rules_.add(state, detail::escape(tokendef), token_id, rules_.dot()); - - if (0 == targetstate) - targetstate = state; - else - add_state(targetstate); - return rules_.add(state, detail::escape(tokendef), token_id, targetstate); - } - std::size_t add_token(char_type const* state, string_type const& tokendef, - std::size_t token_id, char_type const* targetstate) - { - add_state(state); - initialized_dfa_ = false; - if (state == all_states()) - return rules_.add(state, tokendef, token_id, rules_.dot()); - - if (0 == targetstate) - targetstate = state; - else - add_state(targetstate); - return rules_.add(state, tokendef, token_id, targetstate); - } - - // interface for pattern definition management - void add_pattern (char_type const* state, string_type const& name, - string_type const& patterndef) - { - add_state(state); - rules_.add_macro(name.c_str(), patterndef); - initialized_dfa_ = false; - } - - boost::lexer::rules const& get_rules() const { return rules_; } - - void clear(char_type const* state) - { - std::size_t s = rules_.state(state); - if (boost::lexer::npos != s) - rules_.clear(state); - initialized_dfa_ = false; - } - std::size_t add_state(char_type const* state) - { - if (state == all_states()) - return all_states_id; - - std::size_t stateid = rules_.state(state); - if (boost::lexer::npos == stateid) { - stateid = rules_.add_state(state); - initialized_dfa_ = false; - } - return stateid; - } - string_type initial_state() const - { - return string_type(rules_.initial()); - } - string_type all_states() const - { - return string_type(rules_.all_states()); - } - - // Register a semantic action with the given id - template - void add_action(std::size_t unique_id, std::size_t state, F act) - { - // If you see an error here stating add_action is not a member of - // fusion::unused_type then you are probably having semantic actions - // attached to at least one token in the lexer definition without - // using the lex::lexertl::actor_lexer<> as its base class. - typedef typename Functor::wrap_action_type wrapper_type; - if (state == all_states_id) { - // add the action to all known states - typedef typename - basic_rules_type::string_size_t_map::const_iterator - state_iterator; - - std::size_t states = rules_.statemap().size(); - for (state_iterator it = rules_.statemap().begin(), - end = rules_.statemap().end(); it != end; ++it) { - for (std::size_t j = 0; j < states; ++j) - actions_.add_action(unique_id + j, it->second, wrapper_type::call(act)); - } - } - else { - actions_.add_action(unique_id, state, wrapper_type::call(act)); - } - } -// template -// void add_action(std::size_t unique_id, char_type const* state, F act) -// { -// typedef typename Functor::wrap_action_type wrapper_type; -// actions_.add_action(unique_id, add_state(state), wrapper_type::call(act)); -// } - - // We do not minimize the state machine by default anymore because - // Ben said: "If you can afford to generate a lexer at runtime, there - // is little point in calling minimise." - // Go figure. - bool init_dfa(bool minimize = false) const - { - if (!initialized_dfa_) { - state_machine_.clear(); - typedef boost::lexer::basic_generator generator; - generator::build (rules_, state_machine_); - if (minimize) - generator::minimise (state_machine_); - -#if defined(BOOST_SPIRIT_LEXERTL_DEBUG) - boost::lexer::debug::dump(state_machine_, std::cerr); -#endif - initialized_dfa_ = true; - -// // release memory held by rules description -// basic_rules_type rules; -// rules.init_state_info(rules_); // preserve states -// std::swap(rules, rules_); - } - return true; - } - - private: - // lexertl specific data - mutable boost::lexer::basic_state_machine state_machine_; - boost::lexer::regex_flags flags_; - /*mutable*/ basic_rules_type rules_; - - typename Functor::semantic_actions_type actions_; - mutable bool initialized_dfa_; - - // generator functions must be able to access members directly - template - friend bool generate_static(Lexer const& - , std::basic_ostream& - , typename Lexer::char_type const*, F); - }; - - /////////////////////////////////////////////////////////////////////////// - // - // The actor_lexer class is another implementation of a Spirit.Lex - // lexer on top of Ben Hanson's lexertl library as outlined above (For - // more information about lexertl go here: - // http://www.benhanson.net/lexertl.html). - // - // The only difference to the lexer class above is that token_def - // definitions may have semantic (lexer) actions attached while being - // defined: - // - // int w; - // token_def word = "[^ \t\n]+"; - // self = word[++ref(w)]; // see example: word_count_lexer - // - // This class is supposed to be used as the first and only template - // parameter while instantiating instances of a lex::lexer class. - // - /////////////////////////////////////////////////////////////////////////// - template - , typename Iterator = typename Token::iterator_type - , typename Functor = functor > - class actor_lexer : public lexer - { - protected: - // Lexer instances can be created by means of a derived class only. - actor_lexer(unsigned int flags) - : lexer(flags) {} - }; - -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/lex/lexer/lexertl/position_token.hpp b/framework/contrib/boost/include/boost/spirit/home/lex/lexer/lexertl/position_token.hpp deleted file mode 100644 index 46f920154351..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/lex/lexer/lexertl/position_token.hpp +++ /dev/null @@ -1,929 +0,0 @@ -// 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_LEX_POSITION_TOKEN_MAY_13_2011_0846PM) -#define BOOST_SPIRIT_LEX_POSITION_TOKEN_MAY_13_2011_0846PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if defined(BOOST_SPIRIT_DEBUG) -#include -#endif - -namespace boost { namespace spirit { namespace lex { namespace lexertl -{ - /////////////////////////////////////////////////////////////////////////// - // - // The position_token is the type of the objects returned by the - // iterator if it has been specified while instantiating the lexer object. - // - // template parameters: - // Iterator The type of the iterator used to access the - // underlying character stream. - // AttributeTypes A mpl sequence containing the types of all - // required different token values to be supported - // by this token type. - // HasState A mpl::bool_ indicating, whether this token type - // should support lexer states. - // Idtype The type to use for the token id (defaults to - // std::size_t). - // - // It is possible to use other token types with the spirit::lex - // framework as well. If you plan to use a different type as your token - // type, you'll need to expose the following things from your token type - // to make it compatible with spirit::lex: - // - // typedefs - // iterator_type The type of the iterator used to access the - // underlying character stream. - // - // id_type The type of the token id used. - // - // methods - // default constructor - // This should initialize the token as an end of - // input token. - // constructors The prototype of the other required - // constructors should be: - // - // token(int) - // This constructor should initialize the token as - // an invalid token (not carrying any specific - // values) - // - // where: the int is used as a tag only and its value is - // ignored - // - // and: - // - // token(Idtype id, std::size_t state, - // iterator_type first, iterator_type last); - // - // where: id: token id - // state: lexer state this token was matched in - // first, last: pair of iterators marking the matched - // range in the underlying input stream - // - // accessors - // id() return the token id of the matched input sequence - // id(newid) set the token id of the token instance - // - // state() return the lexer state this token was matched in - // - // value() return the token value - // - // Additionally, you will have to implement a couple of helper functions - // in the same namespace as the token type: a comparison operator==() to - // compare your token instances, a token_is_valid() function and different - // specializations of the Spirit customization point - // assign_to_attribute_from_value as shown below. - // - /////////////////////////////////////////////////////////////////////////// - template - , typename HasState = mpl::true_ - , typename Idtype = std::size_t> - struct position_token; - - /////////////////////////////////////////////////////////////////////////// - // This specialization of the token type doesn't contain any item data and - // doesn't support working with lexer states. Although, like all other - // variants of position_token, it carries a pair of iterators marking the - // begin and the end of the matched character sequence. - /////////////////////////////////////////////////////////////////////////// - template - struct position_token - { - typedef Iterator iterator_type; - typedef iterator_range iterpair_type; - typedef mpl::false_ has_state; - typedef Idtype id_type; - typedef unused_type token_value_type; - - // default constructed tokens correspond to EOI tokens - position_token() - : id_(id_type(boost::lexer::npos)) {} - - // construct an invalid token - explicit position_token(int) - : id_(id_type(0)) {} - - position_token(id_type id, std::size_t) - : id_(id) {} - - position_token(id_type id, std::size_t, token_value_type) - : id_(id) {} - - position_token(id_type id, std::size_t, Iterator const& first - , Iterator const& last) - : id_(id), matched_(first, last) {} - - // this default conversion operator is needed to allow the direct - // usage of tokens in conjunction with the primitive parsers defined - // in Qi - operator id_type() const { return id_; } - - // Retrieve or set the token id of this token instance. - id_type id() const { return id_; } - void id(id_type newid) { id_ = newid; } - - std::size_t state() const { return 0; } // always '0' (INITIAL state) - - bool is_valid() const - { - return 0 != id_ && id_type(boost::lexer::npos) != id_; - } - - // access the stored iterator range of the matched input sequence - iterator_type begin() const { return matched_.begin(); } - iterator_type end() const { return matched_.end(); } - - iterpair_type& matched() { return matched_; } - iterpair_type const& matched() const { return matched_; } - - token_value_type& value() { static token_value_type u; return u; } - token_value_type const& value() const { return unused; } - -#if BOOST_WORKAROUND(BOOST_MSVC, == 1600) - // workaround for MSVC10 which has problems copying a default - // constructed iterator_range - position_token& operator= (position_token const& rhs) - { - if (this != &rhs) - { - id_ = rhs.id_; - if (is_valid()) - matched_ = rhs.matched_; - } - return *this; - } -#endif - - protected: - id_type id_; // token id, 0 if nothing has been matched - iterpair_type matched_; // matched input sequence - }; - -#if defined(BOOST_SPIRIT_DEBUG) - template - inline std::basic_ostream& - operator<< (std::basic_ostream& os - , position_token const& t) - { - if (t.is_valid()) { - Iterator end = t.end(); - for (Iterator it = t.begin(); it != end; ++it) - os << *it; - } - else { - os << ""; - } - return os; - } -#endif - - /////////////////////////////////////////////////////////////////////////// - // This specialization of the token type doesn't contain any item data but - // supports working with lexer states. - /////////////////////////////////////////////////////////////////////////// - template - struct position_token - : position_token - { - private: - typedef position_token - base_type; - - public: - typedef typename base_type::id_type id_type; - typedef Iterator iterator_type; - typedef mpl::true_ has_state; - typedef unused_type token_value_type; - - // default constructed tokens correspond to EOI tokens - position_token() : state_(boost::lexer::npos) {} - - // construct an invalid token - explicit position_token(int) - : base_type(0), state_(boost::lexer::npos) {} - - position_token(id_type id, std::size_t state) - : base_type(id, boost::lexer::npos), state_(state) {} - - position_token(id_type id, std::size_t state, token_value_type) - : base_type(id, boost::lexer::npos, unused) - , state_(state) {} - - position_token(id_type id, std::size_t state - , Iterator const& first, Iterator const& last) - : base_type(id, boost::lexer::npos, first, last) - , state_(state) {} - - std::size_t state() const { return state_; } - -#if BOOST_WORKAROUND(BOOST_MSVC, == 1600) - // workaround for MSVC10 which has problems copying a default - // constructed iterator_range - position_token& operator= (position_token const& rhs) - { - if (this != &rhs) - { - this->base_type::operator=(static_cast(rhs)); - state_ = rhs.state_; - } - return *this; - } -#endif - - protected: - std::size_t state_; // lexer state this token was matched in - }; - - /////////////////////////////////////////////////////////////////////////// - // These specializations for an empty attribute list cause all token - // instances to expose as it attribute the iterator_range pointing to the - // matched input sequence. - /////////////////////////////////////////////////////////////////////////// - template - struct position_token, HasState, Idtype> - : position_token - { - private: - typedef position_token base_type; - - public: - typedef typename base_type::id_type id_type; - typedef typename base_type::iterator_type iterator_type; - typedef typename base_type::iterpair_type iterpair_type; - typedef HasState has_state; - typedef iterpair_type token_value_type; - - // default constructed tokens correspond to EOI tokens - position_token() {} - - // construct an invalid token - explicit position_token(int) - : base_type(0) {} - - position_token(id_type id, std::size_t state) - : base_type(id, state) {} - - position_token(id_type id, std::size_t state, token_value_type) - : base_type(id, state, unused) {} - - position_token(id_type id, std::size_t state - , Iterator const& first, Iterator const& last) - : base_type(id, state, first, last) {} - - token_value_type& value() { return this->base_type::matched(); } - token_value_type const& value() const { return this->base_type::matched(); } - }; - - template - struct position_token, HasState, Idtype> - : position_token - { - private: - typedef position_token base_type; - - public: - typedef typename base_type::id_type id_type; - typedef typename base_type::iterator_type iterator_type; - typedef typename base_type::iterpair_type iterpair_type; - typedef HasState has_state; - typedef iterpair_type token_value_type; - - // default constructed tokens correspond to EOI tokens - position_token() {} - - // construct an invalid token - explicit position_token(int) - : base_type(0) {} - - position_token(id_type id, std::size_t state) - : base_type(id, state) {} - - position_token(id_type id, std::size_t state, token_value_type) - : base_type(id, state, unused) {} - - position_token(id_type id, std::size_t state - , Iterator const& first, Iterator const& last) - : base_type(id, state, first, last) {} - - token_value_type& value() { return this->base_type::matched(); } - token_value_type const& value() const { return this->base_type::matched(); } - }; - - /////////////////////////////////////////////////////////////////////////// - // These specializations for an attribute list of length one cause all token - // instances to expose the specified type as its attribute. - /////////////////////////////////////////////////////////////////////////// - template - struct position_token, HasState, Idtype> - : position_token - { - private: - typedef position_token base_type; - - public: - typedef typename base_type::id_type id_type; - typedef typename base_type::iterator_type iterator_type; - typedef typename base_type::iterpair_type iterpair_type; - typedef HasState has_state; - typedef boost::optional token_value_type; - - // default constructed tokens correspond to EOI tokens - position_token() {} - - // construct an invalid token - explicit position_token(int) - : base_type(0) {} - - position_token(id_type id, std::size_t state) - : base_type(id, state) {} - - position_token(id_type id, std::size_t state, token_value_type const& v) - : base_type(id, state, unused), value_(v) {} - - position_token(id_type id, std::size_t state - , Iterator const& first, Iterator const& last) - : base_type(id, state, first, last) {} - - token_value_type& value() { return value_; } - token_value_type const& value() const { return value_; } - - bool has_value() const { return !!value_; } - -#if BOOST_WORKAROUND(BOOST_MSVC, == 1600) - // workaround for MSVC10 which has problems copying a default - // constructed iterator_range - position_token& operator= (position_token const& rhs) - { - if (this != &rhs) - { - this->base_type::operator=(static_cast(rhs)); - if (this->is_valid()) - value_ = rhs.value_; - } - return *this; - } -#endif - - protected: - token_value_type value_; // token value - }; - - template - struct position_token, HasState, Idtype> - : position_token - { - private: - typedef position_token base_type; - - public: - typedef typename base_type::id_type id_type; - typedef typename base_type::iterator_type iterator_type; - typedef typename base_type::iterpair_type iterpair_type; - typedef HasState has_state; - typedef boost::optional token_value_type; - - // default constructed tokens correspond to EOI tokens - position_token() {} - - // construct an invalid token - explicit position_token(int) - : base_type(0) {} - - position_token(id_type id, std::size_t state) - : base_type(id, state) {} - - position_token(id_type id, std::size_t state, token_value_type const& v) - : base_type(id, state, unused), value_(v) {} - - position_token(id_type id, std::size_t state - , Iterator const& first, Iterator const& last) - : base_type(id, state, first, last) {} - - token_value_type& value() { return value_; } - token_value_type const& value() const { return value_; } - - bool has_value() const { return value_; } - -#if BOOST_WORKAROUND(BOOST_MSVC, == 1600) - // workaround for MSVC10 which has problems copying a default - // constructed iterator_range - position_token& operator= (position_token const& rhs) - { - if (this != &rhs) - { - this->base_type::operator=(static_cast(rhs)); - if (this->is_valid()) - value_ = rhs.value_; - } - return *this; - } -#endif - - protected: - token_value_type value_; // token value - }; - - /////////////////////////////////////////////////////////////////////////// - // The generic version of the position_token type derives from the - // specialization above and adds a single data member holding the item - // data carried by the token instance. - /////////////////////////////////////////////////////////////////////////// - namespace detail - { - /////////////////////////////////////////////////////////////////////// - // Meta-function to calculate the type of the variant data item to be - // stored with each token instance. - // - // Note: The iterator pair needs to be the first type in the list of - // types supported by the generated variant type (this is being - // used to identify whether the stored data item in a particular - // token instance needs to be converted from the pair of - // iterators (see the first of the assign_to_attribute_from_value - // specializations below). - /////////////////////////////////////////////////////////////////////// - template - struct position_token_value_typesequence - { - typedef typename mpl::insert< - AttributeTypes - , typename mpl::begin::type - , IteratorPair - >::type sequence_type; - typedef typename make_variant_over::type type; - }; - - /////////////////////////////////////////////////////////////////////// - // The type of the data item stored with a token instance is defined - // by the template parameter 'AttributeTypes' and may be: - // - // lex::omit: no data item is stored with the token - // instance (this is handled by the - // specializations of the token class - // below) - // mpl::vector0<>: each token instance stores a pair of - // iterators pointing to the matched input - // sequence - // mpl::vector<...>: each token instance stores a variant being - // able to store the pair of iterators pointing - // to the matched input sequence, or any of the - // types a specified in the mpl::vector<> - // - // All this is done to ensure the token type is as small (in terms - // of its byte-size) as possible. - /////////////////////////////////////////////////////////////////////// - template - struct position_token_value - : mpl::eval_if< - mpl::or_< - is_same > - , is_same > > - , mpl::identity - , position_token_value_typesequence > - {}; - } - - template - struct position_token - : position_token - { - private: // precondition assertions - BOOST_STATIC_ASSERT((mpl::is_sequence::value || - is_same::value)); - typedef position_token - base_type; - - protected: - // If no additional token value types are given, the token will - // hold no token value at all as the base class already has the - // iterator pair of the matched range in the underlying input sequence. - // Otherwise the token value is stored as a variant and will - // initially hold an unused_type but is able to hold any of - // the given data types as well. The conversion from the iterator pair - // to the required data type is done when it is accessed for the first - // time. - typedef iterator_range iterpair_type; - - public: - typedef typename base_type::id_type id_type; - typedef typename detail::position_token_value< - iterpair_type, AttributeTypes>::type token_value_type; - - typedef Iterator iterator_type; - - // default constructed tokens correspond to EOI tokens - position_token() {} - - // construct an invalid token - explicit position_token(int) - : base_type(0) {} - - position_token(id_type id, std::size_t state, token_value_type const& value) - : base_type(id, state, value), value_(value) {} - - position_token(id_type id, std::size_t state, Iterator const& first - , Iterator const& last) - : base_type(id, state, first, last) - , value_(iterpair_type(first, last)) - {} - - token_value_type& value() { return value_; } - token_value_type const& value() const { return value_; } - -#if BOOST_WORKAROUND(BOOST_MSVC, == 1600) - // workaround for MSVC10 which has problems copying a default - // constructed iterator_range - position_token& operator= (position_token const& rhs) - { - if (this != &rhs) - { - this->base_type::operator=(static_cast(rhs)); - if (this->is_valid()) - value_ = rhs.value_; - } - return *this; - } -#endif - - protected: - token_value_type value_; // token value, by default a pair of iterators - }; - - /////////////////////////////////////////////////////////////////////////// - // tokens are considered equal, if their id's match (these are unique) - template - inline bool - operator== (position_token const& lhs, - position_token const& rhs) - { - return lhs.id() == rhs.id(); - } - - /////////////////////////////////////////////////////////////////////////// - // This overload is needed by the multi_pass/functor_input_policy to - // validate a token instance. It has to be defined in the same namespace - // as the token class itself to allow ADL to find it. - /////////////////////////////////////////////////////////////////////////// - template - inline bool - token_is_valid(position_token const& t) - { - return t.is_valid(); - } -}}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - // We have to provide specializations for the customization point - // assign_to_attribute_from_value allowing to extract the needed value - // from the token. - /////////////////////////////////////////////////////////////////////////// - - // This is called from the parse function of token_def if the token_def - // has been defined to carry a special attribute type - template - struct assign_to_attribute_from_value > - { - static void - call(lex::lexertl::position_token< - Iterator, AttributeTypes, HasState, Idtype> const& t - , Attribute& attr) - { - // The goal of this function is to avoid the conversion of the pair of - // iterators (to the matched character sequence) into the token value - // of the required type being done more than once. For this purpose it - // checks whether the stored value type is still the default one (pair - // of iterators) and if yes, replaces the pair of iterators with the - // converted value to be returned from subsequent calls. - - if (0 == t.value().which()) { - // first access to the token value - typedef iterator_range iterpair_type; - iterpair_type const& ip = t.matched(); - - // Interestingly enough we use the assign_to() framework defined in - // Spirit.Qi allowing to convert the pair of iterators to almost any - // required type (assign_to(), if available, uses the standard Spirit - // parsers to do the conversion). - spirit::traits::assign_to(ip.begin(), ip.end(), attr); - - // If you get an error during the compilation of the following - // assignment expression, you probably forgot to list one or more - // types used as token value types (in your token_def<...> - // definitions) in your definition of the token class. I.e. any token - // value type used for a token_def<...> definition has to be listed - // during the declaration of the token type to use. For instance let's - // assume we have two token_def's: - // - // token_def number; number = "..."; - // token_def identifier; identifier = "..."; - // - // Then you'll have to use the following token type definition - // (assuming you are using the token class): - // - // typedef mpl::vector token_values; - // typedef token token_type; - // - // where: base_iter_type is the iterator type used to expose the - // underlying input stream. - // - // This token_type has to be used as the second template parameter - // to the lexer class: - // - // typedef lexer lexer_type; - // - // again, assuming you're using the lexer<> template for your - // tokenization. - - typedef lex::lexertl::position_token< - Iterator, AttributeTypes, HasState, Idtype> token_type; - spirit::traits::assign_to( - attr, const_cast(t).value()); // re-assign value - } - else { - // reuse the already assigned value - spirit::traits::assign_to(get(t.value()), attr); - } - } - }; - - template - struct assign_to_container_from_value > - : assign_to_attribute_from_value > - {}; - - /////////////////////////////////////////////////////////////////////////// - // These are called from the parse function of token_def if the token type - // has no special attribute type assigned - template - struct assign_to_attribute_from_value, HasState, Idtype> > - { - static void - call(lex::lexertl::position_token< - Iterator, mpl::vector0<>, HasState, Idtype> const& t - , Attribute& attr) - { - // The default type returned by the token_def parser component (if - // it has no token value type assigned) is the pair of iterators - // to the matched character sequence. - spirit::traits::assign_to(t.begin(), t.end(), attr); - } - }; - -// template -// struct assign_to_container_from_value, HasState, Idtype> > -// : assign_to_attribute_from_value, HasState, Idtype> > -// {}; - - // same as above but using mpl::vector<> instead of mpl::vector0<> - template - struct assign_to_attribute_from_value, HasState, Idtype> > - { - static void - call(lex::lexertl::position_token< - Iterator, mpl::vector<>, HasState, Idtype> const& t - , Attribute& attr) - { - // The default type returned by the token_def parser component (if - // it has no token value type assigned) is the pair of iterators - // to the matched character sequence. - spirit::traits::assign_to(t.begin(), t.end(), attr); - } - }; - -// template -// struct assign_to_container_from_value, HasState, Idtype> > -// : assign_to_attribute_from_value, HasState, Idtype> > -// {}; - - /////////////////////////////////////////////////////////////////////////// - // These are called from the parse function of token_def if the token type - // has no special attribute type assigned - template - struct assign_to_attribute_from_value, HasState, Idtype> > - { - static void - call(lex::lexertl::position_token< - Iterator, mpl::vector1, HasState, Idtype> const& t - , Attribute& attr) - { - // The goal of this function is to avoid the conversion of the pair of - // iterators (to the matched character sequence) into the token value - // of the required type being done more than once. - - if (!t.has_value()) { - // first access to the token value - typedef iterator_range iterpair_type; - iterpair_type const& ip = t.matched(); - - // Interestingly enough we use the assign_to() framework defined in - // Spirit.Qi allowing to convert the pair of iterators to almost any - // required type (assign_to(), if available, uses the standard Spirit - // parsers to do the conversion). - spirit::traits::assign_to(ip.begin(), ip.end(), attr); - - // Re-assign the attribute to the stored value - typedef lex::lexertl::position_token< - Iterator, mpl::vector1, HasState, Idtype> token_type; - spirit::traits::assign_to( - attr, const_cast(t).value()); - } - else { - // reuse the already assigned value - spirit::traits::assign_to(t.value(), attr); - } - } - }; - -// template -// struct assign_to_container_from_value, HasState, Idtype> > -// : assign_to_attribute_from_value, HasState, Idtype> > -// {}; - - // same as above but using mpl::vector instead of mpl::vector1 - template - struct assign_to_attribute_from_value, HasState, Idtype> > - { - static void - call(lex::lexertl::position_token< - Iterator, mpl::vector, HasState, Idtype> const& t - , Attribute& attr) - { - // The goal of this function is to avoid the conversion of the pair of - // iterators (to the matched character sequence) into the token value - // of the required type being done more than once. - - if (!t.has_value()) { - // first access to the token value - typedef iterator_range iterpair_type; - iterpair_type const& ip = t.matched(); - - // Interestingly enough we use the assign_to() framework defined in - // Spirit.Qi allowing to convert the pair of iterators to almost any - // required type (assign_to(), if available, uses the standard Spirit - // parsers to do the conversion). - spirit::traits::assign_to(ip.begin(), ip.end(), attr); - - // Re-assign the attribute to the stored value - typedef lex::lexertl::position_token< - Iterator, mpl::vector, HasState, Idtype> token_type; - spirit::traits::assign_to( - attr, const_cast(t).value()); - } - else { - // reuse the already assigned value - spirit::traits::assign_to(t.value(), attr); - } - } - }; - -// template -// struct assign_to_container_from_value, HasState, Idtype> > -// : assign_to_attribute_from_value, HasState, Idtype> > -// {}; - - // This is called from the parse function of token_def if the token type - // has been explicitly omitted (i.e. no attribute value is used), which - // essentially means that every attribute gets initialized using default - // constructed values. - template - struct assign_to_attribute_from_value > - { - static void - call(lex::lexertl::position_token const& - , Attribute&) - { - // do nothing - } - }; - - template - struct assign_to_container_from_value > - : assign_to_attribute_from_value > - {}; - - // This is called from the parse function of lexer_def_ - template - struct assign_to_attribute_from_value< - fusion::vector2 > - , lex::lexertl::position_token > - { - static void - call(lex::lexertl::position_token const& t - , fusion::vector2 >& attr) - { - // The type returned by the lexer_def_ parser components is a - // fusion::vector containing the token id of the matched token - // and the pair of iterators to the matched character sequence. - typedef iterator_range iterpair_type; - typedef fusion::vector2 > - attribute_type; - - iterpair_type const& ip = t.matched(); - attr = attribute_type(t.id(), ip); - } - }; - - template - struct assign_to_container_from_value< - fusion::vector2 > - , lex::lexertl::position_token > - : assign_to_attribute_from_value< - fusion::vector2 > - , lex::lexertl::position_token > - {}; - - /////////////////////////////////////////////////////////////////////////// - // Overload debug output for a single token, this integrates lexer tokens - // with Qi's simple_trace debug facilities - template - struct token_printer_debug< - lex::lexertl::position_token > - { - typedef lex::lexertl::position_token token_type; - - template - static void print(Out& out, token_type const& val) - { - out << '['; - spirit::traits::print_token(out, val.value()); - out << ']'; - } - }; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/lex/lexer/lexertl/semantic_action_data.hpp b/framework/contrib/boost/include/boost/spirit/home/lex/lexer/lexertl/semantic_action_data.hpp deleted file mode 100644 index 30748c574dc9..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/lex/lexer/lexertl/semantic_action_data.hpp +++ /dev/null @@ -1,121 +0,0 @@ -// 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_LEX_LEXER_SEMANTIC_ACTION_DATA_JUN_10_2009_0417PM) -#define BOOST_SPIRIT_LEX_LEXER_SEMANTIC_ACTION_DATA_JUN_10_2009_0417PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace lex { namespace lexertl -{ - namespace detail - { - /////////////////////////////////////////////////////////////////////// - template - struct semantic_actions; - - // This specialization of semantic_actions will be used if the token - // type (lexer definition) does not support states, which simplifies - // the data structures used to store the semantic action function - // objects. - template - struct semantic_actions - { - typedef void functor_type(Iterator&, Iterator& - , BOOST_SCOPED_ENUM(pass_flags)&, std::size_t&, Data&); - typedef boost::function functor_wrapper_type; - - // add a semantic action function object - template - void add_action(std::size_t unique_id, std::size_t, F act) - { - if (actions_.size() <= unique_id) - actions_.resize(unique_id + 1); - - actions_[unique_id] = act; - } - - // try to invoke a semantic action for the given token (unique_id) - BOOST_SCOPED_ENUM(pass_flags) invoke_actions(std::size_t /*state*/ - , std::size_t& id, std::size_t unique_id, Iterator& end - , Data& data) const - { - // if there is nothing to invoke, continue with 'match' - if (unique_id >= actions_.size() || !actions_[unique_id]) - return pass_flags::pass_normal; - - // Note: all arguments might be changed by the invoked semantic - // action - BOOST_SCOPED_ENUM(pass_flags) match = pass_flags::pass_normal; - actions_[unique_id](data.get_first(), end, match, id, data); - return match; - } - - std::vector actions_; - }; - - // This specialization of semantic_actions will be used if the token - // type (lexer definition) needs to support states, resulting in a more - // complex data structure needed for storing the semantic action - // function objects. - template - struct semantic_actions - { - typedef void functor_type(Iterator&, Iterator& - , BOOST_SCOPED_ENUM(pass_flags)&, std::size_t&, Data&); - typedef boost::function functor_wrapper_type; - - // add a semantic action function object - template - void add_action(std::size_t unique_id, std::size_t state, F act) - { - if (actions_.size() <= state) - actions_.resize(state + 1); - - std::vector& actions (actions_[state]); - if (actions.size() <= unique_id) - actions.resize(unique_id + 1); - - actions[unique_id] = act; - } - - // try to invoke a semantic action for the given token (unique_id) - BOOST_SCOPED_ENUM(pass_flags) invoke_actions(std::size_t state - , std::size_t& id, std::size_t unique_id, Iterator& end - , Data& data) const - { - // if there is no action defined for this state, return match - if (state >= actions_.size()) - return pass_flags::pass_normal; - - // if there is nothing to invoke, continue with 'match' - std::vector const& actions = actions_[state]; - if (unique_id >= actions.size() || !actions[unique_id]) - return pass_flags::pass_normal; - - // set token value - data.set_end(end); - - // Note: all arguments might be changed by the invoked semantic - // action - BOOST_SCOPED_ENUM(pass_flags) match = pass_flags::pass_normal; - actions[unique_id](data.get_first(), end, match, id, data); - return match; - } - - std::vector > actions_; - }; - } - -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/lex/lexer/lexertl/static_functor_data.hpp b/framework/contrib/boost/include/boost/spirit/home/lex/lexer/lexertl/static_functor_data.hpp deleted file mode 100644 index d3997d3aa7d2..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/lex/lexer/lexertl/static_functor_data.hpp +++ /dev/null @@ -1,570 +0,0 @@ -// 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_LEX_LEXER_STATIC_FUNCTOR_DATA_FEB_10_2008_0755PM) -#define BOOST_SPIRIT_LEX_LEXER_STATIC_FUNCTOR_DATA_FEB_10_2008_0755PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include // for std::iterator_traits - -#ifdef _MSC_VER -# pragma warning(push) -# pragma warning(disable: 4512) // assignment operator could not be generated. -#endif -namespace boost { namespace spirit { namespace lex { namespace lexertl -{ - namespace detail - { - /////////////////////////////////////////////////////////////////////// - template - inline bool zstr_compare(Char const* s1, Char const* s2) - { - for (; *s1 || *s2; ++s1, ++s2) - if (*s1 != *s2) - return false; - return true; - } - - template - inline std::size_t get_state_id(Char const* state, F f - , std::size_t numstates) - { - for (std::size_t i = 0; i < numstates; ++i) - { - if (zstr_compare(f(i), state)) - return i; - } - return boost::lexer::npos; - } - - /////////////////////////////////////////////////////////////////////// - template - class static_data; // no default specialization - - /////////////////////////////////////////////////////////////////////// - // doesn't support no state and no actors - template - class static_data - { - protected: - typedef typename - std::iterator_traits::value_type - char_type; - - public: - typedef Iterator base_iterator_type; - typedef iterator_range token_value_type; - typedef token_value_type get_value_type; - typedef std::size_t state_type; - typedef char_type const* state_name_type; - typedef unused_type semantic_actions_type; - typedef detail::wrap_action wrap_action_type; - - typedef std::size_t (*next_token_functor)(std::size_t&, - bool&, Iterator&, Iterator const&, std::size_t&); - typedef char_type const* (*get_state_name_type)(std::size_t); - - // initialize the shared data - template - static_data (IterData const& data, Iterator& first - , Iterator const& last) - : first_(first), last_(last) - , next_token_(data.next_) - , get_state_name_(data.get_state_name_) - , bol_(data.bol_) {} - - // The following functions are used by the implementation of the - // placeholder '_state'. - template - void set_state_name (Char const*) - { - // If you see a compile time assertion below you're probably - // using a token type not supporting lexer states (the 3rd - // template parameter of the token is mpl::false_), but your - // code uses state changes anyways. - BOOST_SPIRIT_ASSERT_FAIL(Char, - tried_to_set_state_of_stateless_token, ()); - } - char_type const* get_state_name() const - { - return get_state_name_(0); - } - std::size_t get_state_id(char_type const*) const - { - return 0; - } - - // The function get_eoi() is used by the implementation of the - // placeholder '_eoi'. - Iterator const& get_eoi() const { return last_; } - - // The function less() is used by the implementation of the support - // function lex::less(). Its functionality is equivalent to flex' - // function yyless(): it returns an iterator positioned to the - // nth input character beyond the current start iterator (i.e. by - // assigning the return value to the placeholder '_end' it is - // possible to return all but the first n characters of the current - // token back to the input stream. - // - // This function does nothing as long as no semantic actions are - // used. - Iterator const& less(Iterator const& it, int) - { - // The following assertion fires most likely because you are - // using lexer semantic actions without using the actor_lexer - // as the base class for your token definition class. - BOOST_ASSERT(false && - "Are you using lexer semantic actions without using the " - "actor_lexer base?"); - return it; - } - - // The function more() is used by the implementation of the support - // function lex::more(). Its functionality is equivalent to flex' - // function yymore(): it tells the lexer that the next time it - // matches a rule, the corresponding token should be appended onto - // the current token value rather than replacing it. - // - // These functions do nothing as long as no semantic actions are - // used. - void more() - { - // The following assertion fires most likely because you are - // using lexer semantic actions without using the actor_lexer - // as the base class for your token definition class. - BOOST_ASSERT(false && - "Are you using lexer semantic actions without using the " - "actor_lexer base?"); - } - bool adjust_start() { return false; } - void revert_adjust_start() {} - - // The function lookahead() is used by the implementation of the - // support function lex::lookahead. It can be used to implement - // lookahead for lexer engines not supporting constructs like flex' - // a/b (match a, but only when followed by b): - // - // This function does nothing as long as no semantic actions are - // used. - bool lookahead(std::size_t, std::size_t /*state*/ = std::size_t(~0)) - { - // The following assertion fires most likely because you are - // using lexer semantic actions without using the actor_lexer - // as the base class for your token definition class. - BOOST_ASSERT(false && - "Are you using lexer semantic actions without using the " - "actor_lexer base?"); - return false; - } - - // the functions next, invoke_actions, and get_state are used by - // the functor implementation below - - // The function next() tries to match the next token from the - // underlying input sequence. - std::size_t next(Iterator& end, std::size_t& unique_id, bool& prev_bol) - { - prev_bol = bol_; - - std::size_t state = 0; - return next_token_(state, bol_, end, last_, unique_id); - } - - // nothing to invoke, so this is empty - BOOST_SCOPED_ENUM(pass_flags) invoke_actions(std::size_t - , std::size_t, std::size_t, Iterator const&) - { - return pass_flags::pass_normal; // always accept - } - - std::size_t get_state() const { return 0; } - void set_state(std::size_t) {} - - void set_end(Iterator const&) {} - - Iterator& get_first() { return first_; } - Iterator const& get_first() const { return first_; } - Iterator const& get_last() const { return last_; } - - iterator_range get_value() const - { - return iterator_range(first_, last_); - } - bool has_value() const { return false; } - void reset_value() {} - - void reset_bol(bool bol) { bol_ = bol; } - - protected: - Iterator& first_; - Iterator last_; - - next_token_functor next_token_; - get_state_name_type get_state_name_; - - bool bol_; // helper storing whether last character was \n - }; - - /////////////////////////////////////////////////////////////////////// - // doesn't support lexer semantic actions, but supports state - template - class static_data - : public static_data - { - protected: - typedef static_data base_type; - typedef typename base_type::char_type char_type; - - public: - typedef Iterator base_iterator_type; - typedef iterator_range token_value_type; - typedef token_value_type get_value_type; - typedef typename base_type::state_type state_type; - typedef typename base_type::state_name_type state_name_type; - typedef typename base_type::semantic_actions_type - semantic_actions_type; - - // initialize the shared data - template - static_data (IterData const& data, Iterator& first - , Iterator const& last) - : base_type(data, first, last), state_(0) - , num_states_(data.num_states_) {} - - // The following functions are used by the implementation of the - // placeholder '_state'. - void set_state_name (char_type const* new_state) - { - std::size_t state_id = lexertl::detail::get_state_id(new_state - , this->get_state_name_, num_states_); - - // if the following assertion fires you've probably been using - // a lexer state name which was not defined in your token - // definition - BOOST_ASSERT(state_id != boost::lexer::npos); - - if (state_id != boost::lexer::npos) - state_ = state_id; - } - char_type const* get_state_name() const - { - return this->get_state_name_(state_); - } - std::size_t get_state_id(char_type const* state) const - { - return lexertl::detail::get_state_id(state - , this->get_state_name_, num_states_); - } - - // the functions next() and get_state() are used by the functor - // implementation below - - // The function next() tries to match the next token from the - // underlying input sequence. - std::size_t next(Iterator& end, std::size_t& unique_id, bool& prev_bol) - { - prev_bol = this->bol_; - return this->next_token_(state_, this->bol_, end, this->last_ - , unique_id); - } - - std::size_t& get_state() { return state_; } - void set_state(std::size_t state) { state_ = state; } - - protected: - std::size_t state_; - std::size_t num_states_; - }; - - /////////////////////////////////////////////////////////////////////// - // does support actors, but may have no state - template - class static_data - : public static_data - { - public: - typedef semantic_actions - semantic_actions_type; - - protected: - typedef static_data - base_type; - typedef typename base_type::char_type char_type; - typedef typename semantic_actions_type::functor_wrapper_type - functor_wrapper_type; - - public: - typedef Iterator base_iterator_type; - typedef TokenValue token_value_type; - typedef TokenValue const& get_value_type; - typedef typename base_type::state_type state_type; - typedef typename base_type::state_name_type state_name_type; - - typedef detail::wrap_action wrap_action_type; - - template - static_data (IterData const& data, Iterator& first - , Iterator const& last) - : base_type(data, first, last) - , actions_(data.actions_), hold_() - , value_(iterator_range(first, last)) - , has_value_(false) - , has_hold_(false) - {} - - // invoke attached semantic actions, if defined - BOOST_SCOPED_ENUM(pass_flags) invoke_actions(std::size_t state - , std::size_t& id, std::size_t unique_id, Iterator& end) - { - return actions_.invoke_actions(state, id, unique_id, end, *this); - } - - // The function less() is used by the implementation of the support - // function lex::less(). Its functionality is equivalent to flex' - // function yyless(): it returns an iterator positioned to the - // nth input character beyond the current start iterator (i.e. by - // assigning the return value to the placeholder '_end' it is - // possible to return all but the first n characters of the current - // token back to the input stream). - Iterator const& less(Iterator& it, int n) - { - it = this->get_first(); - std::advance(it, n); - return it; - } - - // The function more() is used by the implementation of the support - // function lex::more(). Its functionality is equivalent to flex' - // function yymore(): it tells the lexer that the next time it - // matches a rule, the corresponding token should be appended onto - // the current token value rather than replacing it. - void more() - { - hold_ = this->get_first(); - has_hold_ = true; - } - - // The function lookahead() is used by the implementation of the - // support function lex::lookahead. It can be used to implement - // lookahead for lexer engines not supporting constructs like flex' - // a/b (match a, but only when followed by b) - bool lookahead(std::size_t id, std::size_t state = std::size_t(~0)) - { - Iterator end = end_; - std::size_t unique_id = boost::lexer::npos; - bool bol = this->bol_; - - if (std::size_t(~0) == state) - state = this->state_; - - return id == this->next_token_( - state, bol, end, this->get_eoi(), unique_id); - } - - // The adjust_start() and revert_adjust_start() are helper - // functions needed to implement the functionality required for - // lex::more(). It is called from the functor body below. - bool adjust_start() - { - if (!has_hold_) - return false; - - std::swap(this->get_first(), hold_); - has_hold_ = false; - return true; - } - void revert_adjust_start() - { - // this will be called only if adjust_start above returned true - std::swap(this->get_first(), hold_); - has_hold_ = true; - } - - TokenValue const& get_value() const - { - if (!has_value_) { - value_ = iterator_range(this->get_first(), end_); - has_value_ = true; - } - return value_; - } - template - void set_value(Value const& val) - { - value_ = val; - has_value_ = true; - } - void set_end(Iterator const& it) - { - end_ = it; - } - bool has_value() const { return has_value_; } - void reset_value() { has_value_ = false; } - - protected: - semantic_actions_type const& actions_; - Iterator hold_; // iterator needed to support lex::more() - Iterator end_; // iterator pointing to end of matched token - mutable TokenValue value_; // token value to use - mutable bool has_value_; // 'true' if value_ is valid - bool has_hold_; // 'true' if hold_ is valid - }; - - /////////////////////////////////////////////////////////////////////// - // does support lexer semantic actions, may support state, is used for - // position_token exposing exactly one type - template - class static_data > - : public static_data - { - public: - typedef semantic_actions - semantic_actions_type; - - protected: - typedef static_data - base_type; - typedef typename base_type::char_type char_type; - typedef typename semantic_actions_type::functor_wrapper_type - functor_wrapper_type; - - public: - typedef Iterator base_iterator_type; - typedef boost::optional token_value_type; - typedef boost::optional const& get_value_type; - typedef typename base_type::state_type state_type; - typedef typename base_type::state_name_type state_name_type; - - typedef detail::wrap_action wrap_action_type; - - template - static_data (IterData const& data_, Iterator& first, Iterator const& last) - : base_type(data_, first, last) - , actions_(data_.actions_), hold_() - , has_value_(false), has_hold_(false) - { - spirit::traits::assign_to(first, last, value_); - has_value_ = true; - } - - // invoke attached semantic actions, if defined - BOOST_SCOPED_ENUM(pass_flags) invoke_actions(std::size_t state - , std::size_t& id, std::size_t unique_id, Iterator& end) - { - return actions_.invoke_actions(state, id, unique_id, end, *this); - } - - // The function less() is used by the implementation of the support - // function lex::less(). Its functionality is equivalent to flex' - // function yyless(): it returns an iterator positioned to the - // nth input character beyond the current start iterator (i.e. by - // assigning the return value to the placeholder '_end' it is - // possible to return all but the first n characters of the current - // token back to the input stream). - Iterator const& less(Iterator& it, int n) - { - it = this->get_first(); - std::advance(it, n); - return it; - } - - // The function more() is used by the implementation of the support - // function lex::more(). Its functionality is equivalent to flex' - // function yymore(): it tells the lexer that the next time it - // matches a rule, the corresponding token should be appended onto - // the current token value rather than replacing it. - void more() - { - hold_ = this->get_first(); - has_hold_ = true; - } - - // The function lookahead() is used by the implementation of the - // support function lex::lookahead. It can be used to implement - // lookahead for lexer engines not supporting constructs like flex' - // a/b (match a, but only when followed by b) - bool lookahead(std::size_t id, std::size_t state = std::size_t(~0)) - { - Iterator end = end_; - std::size_t unique_id = boost::lexer::npos; - bool bol = this->bol_; - - if (std::size_t(~0) == state) - state = this->state_; - - return id == this->next_token_( - state, bol, end, this->get_eoi(), unique_id); - } - - // The adjust_start() and revert_adjust_start() are helper - // functions needed to implement the functionality required for - // lex::more(). It is called from the functor body below. - bool adjust_start() - { - if (!has_hold_) - return false; - - std::swap(this->get_first(), hold_); - has_hold_ = false; - return true; - } - void revert_adjust_start() - { - // this will be called only if adjust_start above returned true - std::swap(this->get_first(), hold_); - has_hold_ = true; - } - - TokenValue const& get_value() const - { - if (!has_value_) { - spirit::traits::assign_to(this->get_first(), end_, value_); - has_value_ = true; - } - return value_; - } - template - void set_value(Value const& val) - { - value_ = val; - has_value_ = true; - } - void set_end(Iterator const& it) - { - end_ = it; - } - bool has_value() const { return has_value_; } - void reset_value() { has_value_ = false; } - - protected: - semantic_actions_type const& actions_; - Iterator hold_; // iterator needed to support lex::more() - Iterator end_; // iterator pointing to end of matched token - mutable token_value_type value_; // token value to use - mutable bool has_value_; // 'true' if value_ is valid - bool has_hold_; // 'true' if hold_ is valid - }; - } -}}}} -#ifdef _MSC_VER -# pragma warning(pop) -#endif - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/lex/lexer/lexertl/static_lexer.hpp b/framework/contrib/boost/include/boost/spirit/home/lex/lexer/lexertl/static_lexer.hpp deleted file mode 100644 index 7681c5d171f0..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/lex/lexer/lexertl/static_lexer.hpp +++ /dev/null @@ -1,282 +0,0 @@ -// 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_LEX_STATIC_LEXER_FEB_10_2008_0753PM) -#define BOOST_SPIRIT_LEX_STATIC_LEXER_FEB_10_2008_0753PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#if defined(BOOST_SPIRIT_DEBUG) -#include -#endif -#include // for std::iterator_traits - -namespace boost { namespace spirit { namespace lex { namespace lexertl -{ - /////////////////////////////////////////////////////////////////////////// - // forward declaration - /////////////////////////////////////////////////////////////////////////// - namespace static_ - { - struct lexer; - } - - /////////////////////////////////////////////////////////////////////////// - // - // Every lexer type to be used as a lexer for Spirit has to conform to - // the following public interface: - // - // typedefs: - // iterator_type The type of the iterator exposed by this lexer. - // token_type The type of the tokens returned from the exposed - // iterators. - // - // functions: - // default constructor - // Since lexers are instantiated as base classes - // only it might be a good idea to make this - // constructor protected. - // begin, end Return a pair of iterators, when dereferenced - // returning the sequence of tokens recognized in - // the input stream given as the parameters to the - // begin() function. - // add_token Should add the definition of a token to be - // recognized by this lexer. - // clear Should delete all current token definitions - // associated with the given state of this lexer - // object. - // - // template parameters: - // Token The type of the tokens to be returned from the - // exposed token iterator. - // LexerTables See explanations below. - // Iterator The type of the iterator used to access the - // underlying character stream. - // Functor The type of the InputPolicy to use to instantiate - // the multi_pass iterator type to be used as the - // token iterator (returned from begin()/end()). - // - // Additionally, this implementation of a static lexer has a template - // parameter LexerTables allowing to customize the static lexer tables - // to be used. The LexerTables is expected to be a type exposing - // the following functions: - // - // static std::size_t const state_count() - // - // This function needs toreturn the number of lexer states - // contained in the table returned from the state_names() - // function. - // - // static char const* const* state_names() - // - // This function needs to return a pointer to a table of - // names of all lexer states. The table needs to have as - // much entries as the state_count() function returns - // - // template - // std::size_t next(std::size_t &start_state_, Iterator const& start_ - // , Iterator &start_token_, Iterator const& end_ - // , std::size_t& unique_id_); - // - // This function is expected to return the next matched - // token from the underlying input stream. - // - /////////////////////////////////////////////////////////////////////////// - - /////////////////////////////////////////////////////////////////////////// - // - // The static_lexer class is a implementation of a Spirit.Lex - // lexer on top of Ben Hanson's lexertl library (For more information - // about lexertl go here: http://www.benhanson.net/lexertl.html). - // - // This class is designed to be used in conjunction with a generated, - // static lexer. For more information see the documentation (The Static - // Lexer Model). - // - // This class is supposed to be used as the first and only template - // parameter while instantiating instances of a lex::lexer class. - // - /////////////////////////////////////////////////////////////////////////// - template - , typename LexerTables = static_::lexer - , typename Iterator = typename Token::iterator_type - , typename Functor = functor > - class static_lexer - { - private: - struct dummy { void true_() {} }; - typedef void (dummy::*safe_bool)(); - - public: - // object is always valid - operator safe_bool() const { return &dummy::true_; } - - typedef typename std::iterator_traits::value_type char_type; - typedef std::basic_string string_type; - - // Every lexer type to be used as a lexer for Spirit has to conform to - // a public interface - typedef Token token_type; - typedef typename Token::id_type id_type; - typedef iterator iterator_type; - - private: -#ifdef _MSC_VER -# pragma warning(push) -# pragma warning(disable: 4512) // assignment operator could not be generated. -#endif - // this type is purely used for the iterator_type construction below - struct iterator_data_type - { - typedef typename Functor::next_token_functor next_token_functor; - typedef typename Functor::semantic_actions_type semantic_actions_type; - typedef typename Functor::get_state_name_type get_state_name_type; - - iterator_data_type(next_token_functor next - , semantic_actions_type const& actions - , get_state_name_type get_state_name, std::size_t num_states - , bool bol) - : next_(next), actions_(actions), get_state_name_(get_state_name) - , num_states_(num_states), bol_(bol) - {} - - next_token_functor next_; - semantic_actions_type const& actions_; - get_state_name_type get_state_name_; - std::size_t num_states_; - bool bol_; - }; -#ifdef _MSC_VER -# pragma warning(pop) -#endif - - typedef LexerTables tables_type; - - // The following static assertion fires if the referenced static lexer - // tables are generated by a different static lexer version as used for - // the current compilation unit. Please regenerate your static lexer - // tables before trying to create a static_lexer<> instance. - BOOST_SPIRIT_ASSERT_MSG( - tables_type::static_version == SPIRIT_STATIC_LEXER_VERSION - , incompatible_static_lexer_version, (LexerTables)); - - public: - // Return the start iterator usable for iterating over the generated - // tokens, the generated function next_token(...) is called to match - // the next token from the input. - template - iterator_type begin(Iterator_& first, Iterator_ const& last - , char_type const* initial_state = 0) const - { - iterator_data_type iterator_data( - &tables_type::template next, actions_ - , &tables_type::state_name, tables_type::state_count() - , tables_type::supports_bol - ); - return iterator_type(iterator_data, first, last, initial_state); - } - - // Return the end iterator usable to stop iterating over the generated - // tokens. - iterator_type end() const - { - return iterator_type(); - } - - protected: - // Lexer instances can be created by means of a derived class only. - static_lexer(unsigned int) : unique_id_(0) {} - - public: - // interface for token definition management - std::size_t add_token (char_type const*, char_type, std::size_t - , char_type const*) - { - return unique_id_++; - } - std::size_t add_token (char_type const*, string_type const& - , std::size_t, char_type const*) - { - return unique_id_++; - } - - // interface for pattern definition management - void add_pattern (char_type const*, string_type const& - , string_type const&) {} - - void clear(char_type const*) {} - - std::size_t add_state(char_type const* state) - { - return detail::get_state_id(state, &tables_type::state_name - , tables_type::state_count()); - } - string_type initial_state() const - { - return tables_type::state_name(0); - } - - // register a semantic action with the given id - template - void add_action(id_type unique_id, std::size_t state, F act) - { - typedef typename Functor::wrap_action_type wrapper_type; - actions_.add_action(unique_id, state, wrapper_type::call(act)); - } - - bool init_dfa(bool /*minimize*/ = false) const { return true; } - - private: - typename Functor::semantic_actions_type actions_; - std::size_t unique_id_; - }; - - /////////////////////////////////////////////////////////////////////////// - // - // The static_actor_lexer class is another implementation of a - // Spirit.Lex lexer on top of Ben Hanson's lexertl library as outlined - // above (For more information about lexertl go here: - // http://www.benhanson.net/lexertl.html). - // - // Just as the static_lexer class it is meant to be used with - // a statically generated lexer as outlined above. - // - // The only difference to the static_lexer class above is that - // token_def definitions may have semantic (lexer) actions attached while - // being defined: - // - // int w; - // token_def<> word = "[^ \t\n]+"; - // self = word[++ref(w)]; // see example: word_count_lexer - // - // This class is supposed to be used as the first and only template - // parameter while instantiating instances of a lex::lexer class. - // - /////////////////////////////////////////////////////////////////////////// - template - , typename LexerTables = static_::lexer - , typename Iterator = typename Token::iterator_type - , typename Functor - = functor > - class static_actor_lexer - : public static_lexer - { - protected: - // Lexer instances can be created by means of a derived class only. - static_actor_lexer(unsigned int flags) - : static_lexer(flags) - {} - }; - -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/lex/lexer/lexertl/static_version.hpp b/framework/contrib/boost/include/boost/spirit/home/lex/lexer/lexertl/static_version.hpp deleted file mode 100644 index 8163dc53c59b..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/lex/lexer/lexertl/static_version.hpp +++ /dev/null @@ -1,20 +0,0 @@ -// 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_LEX_STATIC_LEXER_VERSION_SEP_10_2009_0811PM) -#define BOOST_SPIRIT_LEX_STATIC_LEXER_VERSION_SEP_10_2009_0811PM - -#if defined(_MSC_VER) -#pragma once -#endif - -/////////////////////////////////////////////////////////////////////////////// -// This is the version of the static lexer format. It is used to ensure a -// static lexer has been generated using the same data format as expected -// by the executing application. -/////////////////////////////////////////////////////////////////////////////// -#define SPIRIT_STATIC_LEXER_VERSION 0x010000 - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/lex/lexer/lexertl/token.hpp b/framework/contrib/boost/include/boost/spirit/home/lex/lexer/lexertl/token.hpp deleted file mode 100644 index a1d8c8d37113..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/lex/lexer/lexertl/token.hpp +++ /dev/null @@ -1,651 +0,0 @@ -// 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_LEX_TOKEN_FEB_10_2008_0751PM) -#define BOOST_SPIRIT_LEX_TOKEN_FEB_10_2008_0751PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if defined(BOOST_SPIRIT_DEBUG) -#include -#endif - -namespace boost { namespace spirit { namespace lex { namespace lexertl -{ - /////////////////////////////////////////////////////////////////////////// - // - // The token is the type of the objects returned by default by the - // iterator. - // - // template parameters: - // Iterator The type of the iterator used to access the - // underlying character stream. - // AttributeTypes A mpl sequence containing the types of all - // required different token values to be supported - // by this token type. - // HasState A mpl::bool_ indicating, whether this token type - // should support lexer states. - // Idtype The type to use for the token id (defaults to - // std::size_t). - // - // It is possible to use other token types with the spirit::lex - // framework as well. If you plan to use a different type as your token - // type, you'll need to expose the following things from your token type - // to make it compatible with spirit::lex: - // - // typedefs - // iterator_type The type of the iterator used to access the - // underlying character stream. - // - // id_type The type of the token id used. - // - // methods - // default constructor - // This should initialize the token as an end of - // input token. - // constructors The prototype of the other required - // constructors should be: - // - // token(int) - // This constructor should initialize the token as - // an invalid token (not carrying any specific - // values) - // - // where: the int is used as a tag only and its value is - // ignored - // - // and: - // - // token(Idtype id, std::size_t state, - // iterator_type first, iterator_type last); - // - // where: id: token id - // state: lexer state this token was matched in - // first, last: pair of iterators marking the matched - // range in the underlying input stream - // - // accessors - // id() return the token id of the matched input sequence - // id(newid) set the token id of the token instance - // - // state() return the lexer state this token was matched in - // - // value() return the token value - // - // Additionally, you will have to implement a couple of helper functions - // in the same namespace as the token type: a comparison operator==() to - // compare your token instances, a token_is_valid() function and different - // specializations of the Spirit customization point - // assign_to_attribute_from_value as shown below. - // - /////////////////////////////////////////////////////////////////////////// - template - , typename HasState = mpl::true_ - , typename Idtype = std::size_t> - struct token; - - /////////////////////////////////////////////////////////////////////////// - // This specialization of the token type doesn't contain any item data and - // doesn't support working with lexer states. - /////////////////////////////////////////////////////////////////////////// - template - struct token - { - typedef Iterator iterator_type; - typedef mpl::false_ has_state; - typedef Idtype id_type; - typedef unused_type token_value_type; - typedef typename make_unsigned::type uid_type; - - // default constructed tokens correspond to EOI tokens - token() : id_(boost::lexer::npos) {} - - // construct an invalid token - explicit token(int) : id_(0) {} - - token(id_type id, std::size_t) : id_(id) {} - - token(id_type id, std::size_t, token_value_type) - : id_(id) {} - - token_value_type& value() { static token_value_type u; return u; } - token_value_type const& value() const { return unused; } - -#if defined(BOOST_SPIRIT_DEBUG) - token(id_type id, std::size_t, Iterator const& first - , Iterator const& last) - : matched_(first, last) - , id_(id) {} -#else - token(id_type id, std::size_t, Iterator const&, Iterator const&) - : id_(id) {} -#endif - - // this default conversion operator is needed to allow the direct - // usage of tokens in conjunction with the primitive parsers defined - // in Qi - operator id_type() const { return id_type(uid_type(id_)); } - - // Retrieve or set the token id of this token instance. - id_type id() const { return id_type(uid_type(id_)); } - void id(id_type newid) { id_ = uid_type(newid); } - - std::size_t state() const { return 0; } // always '0' (INITIAL state) - - bool is_valid() const - { - return 0 != id_ && boost::lexer::npos != id_; - } - -#if defined(BOOST_SPIRIT_DEBUG) -#if BOOST_WORKAROUND(BOOST_MSVC, == 1600) - // workaround for MSVC10 which has problems copying a default - // constructed iterator_range - token& operator= (token const& rhs) - { - if (this != &rhs) - { - id_ = rhs.id_; - if (is_valid()) - matched_ = rhs.matched_; - } - return *this; - } -#endif - std::pair matched_; -#endif - - protected: - std::size_t id_; // token id, 0 if nothing has been matched - }; - -#if defined(BOOST_SPIRIT_DEBUG) - template - inline std::basic_ostream& - operator<< (std::basic_ostream& os - , token const& t) - { - if (t.is_valid()) { - Iterator end = t.matched_.second; - for (Iterator it = t.matched_.first; it != end; ++it) - os << *it; - } - else { - os << ""; - } - return os; - } -#endif - - /////////////////////////////////////////////////////////////////////////// - // This specialization of the token type doesn't contain any item data but - // supports working with lexer states. - /////////////////////////////////////////////////////////////////////////// - template - struct token - : token - { - private: - typedef token base_type; - - public: - typedef typename base_type::id_type id_type; - typedef Iterator iterator_type; - typedef mpl::true_ has_state; - typedef unused_type token_value_type; - - // default constructed tokens correspond to EOI tokens - token() : state_(boost::lexer::npos) {} - - // construct an invalid token - explicit token(int) : base_type(0), state_(boost::lexer::npos) {} - - token(id_type id, std::size_t state) - : base_type(id, boost::lexer::npos), state_(state) {} - - token(id_type id, std::size_t state, token_value_type) - : base_type(id, boost::lexer::npos, unused) - , state_(state) {} - - token(id_type id, std::size_t state - , Iterator const& first, Iterator const& last) - : base_type(id, boost::lexer::npos, first, last) - , state_(state) {} - - std::size_t state() const { return state_; } - -#if defined(BOOST_SPIRIT_DEBUG) && BOOST_WORKAROUND(BOOST_MSVC, == 1600) - // workaround for MSVC10 which has problems copying a default - // constructed iterator_range - token& operator= (token const& rhs) - { - if (this != &rhs) - { - this->base_type::operator=(static_cast(rhs)); - state_ = rhs.state_; - } - return *this; - } -#endif - - protected: - std::size_t state_; // lexer state this token was matched in - }; - - /////////////////////////////////////////////////////////////////////////// - // The generic version of the token type derives from the - // specialization above and adds a single data member holding the item - // data carried by the token instance. - /////////////////////////////////////////////////////////////////////////// - namespace detail - { - /////////////////////////////////////////////////////////////////////// - // Meta-function to calculate the type of the variant data item to be - // stored with each token instance. - // - // Note: The iterator pair needs to be the first type in the list of - // types supported by the generated variant type (this is being - // used to identify whether the stored data item in a particular - // token instance needs to be converted from the pair of - // iterators (see the first of the assign_to_attribute_from_value - // specializations below). - /////////////////////////////////////////////////////////////////////// - template - struct token_value_typesequence - { - typedef typename mpl::insert< - AttributeTypes - , typename mpl::begin::type - , IteratorPair - >::type sequence_type; - typedef typename make_variant_over::type type; - }; - - /////////////////////////////////////////////////////////////////////// - // The type of the data item stored with a token instance is defined - // by the template parameter 'AttributeTypes' and may be: - // - // lex::omit: no data item is stored with the token - // instance (this is handled by the - // specializations of the token class - // below) - // mpl::vector0<>: each token instance stores a pair of - // iterators pointing to the matched input - // sequence - // mpl::vector<...>: each token instance stores a variant being - // able to store the pair of iterators pointing - // to the matched input sequence, or any of the - // types a specified in the mpl::vector<> - // - // All this is done to ensure the token type is as small (in terms - // of its byte-size) as possible. - /////////////////////////////////////////////////////////////////////// - template - struct token_value_type - : mpl::eval_if< - mpl::or_< - is_same > - , is_same > > - , mpl::identity - , token_value_typesequence > - {}; - } - - template - struct token : token - { - private: // precondition assertions - BOOST_STATIC_ASSERT((mpl::is_sequence::value || - is_same::value)); - typedef token base_type; - - protected: - // If no additional token value types are given, the token will - // hold the plain pair of iterators pointing to the matched range - // in the underlying input sequence. Otherwise the token value is - // stored as a variant and will again hold the pair of iterators but - // is able to hold any of the given data types as well. The conversion - // from the iterator pair to the required data type is done when it is - // accessed for the first time. - typedef iterator_range iterpair_type; - - public: - typedef typename base_type::id_type id_type; - typedef typename detail::token_value_type< - iterpair_type, AttributeTypes - >::type token_value_type; - - typedef Iterator iterator_type; - - // default constructed tokens correspond to EOI tokens - token() : value_(iterpair_type(iterator_type(), iterator_type())) {} - - // construct an invalid token - explicit token(int) - : base_type(0) - , value_(iterpair_type(iterator_type(), iterator_type())) {} - - token(id_type id, std::size_t state, token_value_type const& value) - : base_type(id, state, value) - , value_(value) {} - - token(id_type id, std::size_t state, Iterator const& first - , Iterator const& last) - : base_type(id, state, first, last) - , value_(iterpair_type(first, last)) {} - - token_value_type& value() { return value_; } - token_value_type const& value() const { return value_; } - -#if BOOST_WORKAROUND(BOOST_MSVC, == 1600) - // workaround for MSVC10 which has problems copying a default - // constructed iterator_range - token& operator= (token const& rhs) - { - if (this != &rhs) - { - this->base_type::operator=(static_cast(rhs)); - if (this->is_valid()) - value_ = rhs.value_; - } - return *this; - } -#endif - - protected: - token_value_type value_; // token value, by default a pair of iterators - }; - - /////////////////////////////////////////////////////////////////////////// - // tokens are considered equal, if their id's match (these are unique) - template - inline bool - operator== (token const& lhs, - token const& rhs) - { - return lhs.id() == rhs.id(); - } - - /////////////////////////////////////////////////////////////////////////// - // This overload is needed by the multi_pass/functor_input_policy to - // validate a token instance. It has to be defined in the same namespace - // as the token class itself to allow ADL to find it. - /////////////////////////////////////////////////////////////////////////// - template - inline bool - token_is_valid(token const& t) - { - return t.is_valid(); - } -}}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - // We have to provide specializations for the customization point - // assign_to_attribute_from_value allowing to extract the needed value - // from the token. - /////////////////////////////////////////////////////////////////////////// - - // This is called from the parse function of token_def if the token_def - // has been defined to carry a special attribute type - template - struct assign_to_attribute_from_value > - { - static void - call(lex::lexertl::token const& t - , Attribute& attr) - { - // The goal of this function is to avoid the conversion of the pair of - // iterators (to the matched character sequence) into the token value - // of the required type being done more than once. For this purpose it - // checks whether the stored value type is still the default one (pair - // of iterators) and if yes, replaces the pair of iterators with the - // converted value to be returned from subsequent calls. - - if (0 == t.value().which()) { - // first access to the token value - typedef iterator_range iterpair_type; - iterpair_type const& ip = boost::get(t.value()); - - // Interestingly enough we use the assign_to() framework defined in - // Spirit.Qi allowing to convert the pair of iterators to almost any - // required type (assign_to(), if available, uses the standard Spirit - // parsers to do the conversion). - spirit::traits::assign_to(ip.begin(), ip.end(), attr); - - // If you get an error during the compilation of the following - // assignment expression, you probably forgot to list one or more - // types used as token value types (in your token_def<...> - // definitions) in your definition of the token class. I.e. any token - // value type used for a token_def<...> definition has to be listed - // during the declaration of the token type to use. For instance let's - // assume we have two token_def's: - // - // token_def number; number = "..."; - // token_def identifier; identifier = "..."; - // - // Then you'll have to use the following token type definition - // (assuming you are using the token class): - // - // typedef mpl::vector token_values; - // typedef token token_type; - // - // where: base_iter_type is the iterator type used to expose the - // underlying input stream. - // - // This token_type has to be used as the second template parameter - // to the lexer class: - // - // typedef lexer lexer_type; - // - // again, assuming you're using the lexer<> template for your - // tokenization. - - typedef lex::lexertl::token< - Iterator, AttributeTypes, HasState, Idtype> token_type; - spirit::traits::assign_to( - attr, const_cast(t).value()); // re-assign value - } - else { - // reuse the already assigned value - spirit::traits::assign_to(boost::get(t.value()), attr); - } - } - }; - - template - struct assign_to_container_from_value > - : assign_to_attribute_from_value > - {}; - - template - struct assign_to_container_from_value > - : assign_to_attribute_from_value > - {}; - - template - struct assign_to_container_from_value< - iterator_range, iterator_range > - { - static void - call(iterator_range const& val, iterator_range& attr) - { - attr = val; - } - }; - - // These are called from the parse function of token_def if the token type - // has no special attribute type assigned - template - struct assign_to_attribute_from_value, HasState, Idtype> > - { - static void - call(lex::lexertl::token, HasState, Idtype> const& t - , Attribute& attr) - { - // The default type returned by the token_def parser component (if - // it has no token value type assigned) is the pair of iterators - // to the matched character sequence. - spirit::traits::assign_to(t.value().begin(), t.value().end(), attr); - } - }; - -// template -// struct assign_to_container_from_value, HasState, Idtype> > -// : assign_to_attribute_from_value, HasState, Idtype> > -// {}; - - // same as above but using mpl::vector<> instead of mpl::vector0<> - template - struct assign_to_attribute_from_value, HasState, Idtype> > - { - static void - call(lex::lexertl::token, HasState, Idtype> const& t - , Attribute& attr) - { - // The default type returned by the token_def parser component (if - // it has no token value type assigned) is the pair of iterators - // to the matched character sequence. - spirit::traits::assign_to(t.value().begin(), t.value().end(), attr); - } - }; - -// template -// struct assign_to_container_from_value, HasState, Idtype> > -// : assign_to_attribute_from_value, HasState, Idtype> > -// {}; - - // This is called from the parse function of token_def if the token type - // has been explicitly omitted (i.e. no attribute value is used), which - // essentially means that every attribute gets initialized using default - // constructed values. - template - struct assign_to_attribute_from_value > - { - static void - call(lex::lexertl::token const& - , Attribute&) - { - // do nothing - } - }; - - template - struct assign_to_container_from_value > - : assign_to_attribute_from_value > - {}; - - // This is called from the parse function of lexer_def_ - template - struct assign_to_attribute_from_value< - fusion::vector2 > - , lex::lexertl::token > - { - static void - call(lex::lexertl::token const& t - , fusion::vector2 >& attr) - { - // The type returned by the lexer_def_ parser components is a - // fusion::vector containing the token id of the matched token - // and the pair of iterators to the matched character sequence. - typedef iterator_range iterpair_type; - typedef fusion::vector2 > - attribute_type; - - iterpair_type const& ip = boost::get(t.value()); - attr = attribute_type(t.id(), ip); - } - }; - - template - struct assign_to_container_from_value< - fusion::vector2 > - , lex::lexertl::token > - : assign_to_attribute_from_value< - fusion::vector2 > - , lex::lexertl::token > - {}; - - /////////////////////////////////////////////////////////////////////////// - // Overload debug output for a single token, this integrates lexer tokens - // with Qi's simple_trace debug facilities - template - struct token_printer_debug< - lex::lexertl::token > - { - typedef lex::lexertl::token token_type; - - template - static void print(Out& out, token_type const& val) - { - out << '['; - spirit::traits::print_token(out, val.value()); - out << ']'; - } - }; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/lex/lexer/lexertl/wrap_action.hpp b/framework/contrib/boost/include/boost/spirit/home/lex/lexer/lexertl/wrap_action.hpp deleted file mode 100644 index 99085885e02d..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/lex/lexer/lexertl/wrap_action.hpp +++ /dev/null @@ -1,152 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - Copyright (c) 2001-2011 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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_WRAP_ACTION_APR_19_2008_0103PM) -#define BOOST_SPIRIT_WRAP_ACTION_APR_19_2008_0103PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace lex { namespace lexertl -{ - namespace detail - { - template - struct wrap_action - { - // plain functions with 5 arguments, function objects (including - // phoenix actors) are not touched at all - template - static FunctionType call(F const& f) - { - return f; - } - - // semantic actions with 4 arguments - template - static void arg4_action(F* f, Iterator& start, Iterator& end - , BOOST_SCOPED_ENUM(pass_flags)& pass, IdType& id - , Context const&) - { - f(start, end, pass, id); - } - - template - static FunctionType call(void (*f)(A0, A1, A2, A3)) - { - void (*pf)(void(*)(A0, A1, A2, A3) - , Iterator&, Iterator&, BOOST_SCOPED_ENUM(pass_flags)& - , IdType&, Context const&) = &wrap_action::arg4_action; - - using phoenix::arg_names::_1; - using phoenix::arg_names::_2; - using phoenix::arg_names::_3; - using phoenix::arg_names::_4; - using phoenix::arg_names::_5; - return phoenix::bind(pf, f, _1, _2, _3, _4, _5); - } - - // semantic actions with 3 arguments - template - static void arg3_action(F* f, Iterator& start, Iterator& end - , BOOST_SCOPED_ENUM(pass_flags)& pass, IdType - , Context const&) - { - f(start, end, pass); - } - - template - static FunctionType call(void (*f)(A0, A1, A2)) - { - void (*pf)(void(*)(A0, A1, A2), Iterator&, Iterator& - , BOOST_SCOPED_ENUM(pass_flags)&, IdType - , Context const&) = &wrap_action::arg3_action; - - using phoenix::arg_names::_1; - using phoenix::arg_names::_2; - using phoenix::arg_names::_3; - using phoenix::arg_names::_4; - using phoenix::arg_names::_5; - return phoenix::bind(pf, f, _1, _2, _3, _4, _5); - } - - // semantic actions with 2 arguments - template - static void arg2_action(F* f, Iterator& start, Iterator& end - , BOOST_SCOPED_ENUM(pass_flags)&, IdType, Context const&) - { - f (start, end); - } - - template - static FunctionType call(void (*f)(A0, A1)) - { - void (*pf)(void(*)(A0, A1), Iterator&, Iterator& - , BOOST_SCOPED_ENUM(pass_flags)& - , IdType, Context const&) = &wrap_action::arg2_action; - - using phoenix::arg_names::_1; - using phoenix::arg_names::_2; - using phoenix::arg_names::_3; - using phoenix::arg_names::_4; - using phoenix::arg_names::_5; - return phoenix::bind(pf, f, _1, _2, _3, _4, _5); - } - - // we assume that either both iterators are to be passed to the - // semantic action or none iterator at all (i.e. it's not possible - // to have a lexer semantic action function taking one arguments). - - // semantic actions with 0 argument - template - static void arg0_action(F* f, Iterator&, Iterator& - , BOOST_SCOPED_ENUM(pass_flags)&, IdType, Context const&) - { - f(); - } - - static FunctionType call(void (*f)()) - { - void (*pf)(void(*)(), Iterator&, Iterator& - , BOOST_SCOPED_ENUM(pass_flags)& - , IdType, Context const&) = &arg0_action; - - using phoenix::arg_names::_1; - using phoenix::arg_names::_2; - using phoenix::arg_names::_3; - using phoenix::arg_names::_4; - using phoenix::arg_names::_5; - return phoenix::bind(pf, f, _1, _2, _3, _4, _5); - } - }; - - // specialization allowing to skip wrapping for lexer types not - // supporting semantic actions - template - struct wrap_action - { - // plain function objects are not touched at all - template - static F const& call(F const& f) - { - return f; - } - }; - } - -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/lex/lexer/pass_flags.hpp b/framework/contrib/boost/include/boost/spirit/home/lex/lexer/pass_flags.hpp deleted file mode 100644 index 6cda3badd3f7..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/lex/lexer/pass_flags.hpp +++ /dev/null @@ -1,28 +0,0 @@ -// 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_LEX_PASS_FLAGS_JUN_09_2009_0840PM) -#define BOOST_SPIRIT_LEX_PASS_FLAGS_JUN_09_2009_0840PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include - -namespace boost { namespace spirit { namespace lex -{ - /////////////////////////////////////////////////////////////////////////// - BOOST_SCOPED_ENUM_START(pass_flags) - { - pass_fail = 0, // make the current match fail in retrospective - pass_normal = 1, // continue normal token matching, that's the default - pass_ignore = 2 // ignore the current token and start matching the next - }; - BOOST_SCOPED_ENUM_END - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/lex/lexer/sequence.hpp b/framework/contrib/boost/include/boost/spirit/home/lex/lexer/sequence.hpp deleted file mode 100644 index 3df1f9e08239..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/lex/lexer/sequence.hpp +++ /dev/null @@ -1,74 +0,0 @@ -// 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) - -#ifndef BOOST_SPIRIT_LEX_LEXER_SEQUENCE_HPP -#define BOOST_SPIRIT_LEX_LEXER_SEQUENCE_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_operator // enables | - : mpl::true_ {}; - - template <> - struct flatten_tree // flattens | - : mpl::true_ {}; - -}} - -namespace boost { namespace spirit { namespace lex -{ - template - struct sequence : nary_lexer > - { - sequence(Elements const& elements) - : elements(elements) {} - - template - void collect(LexerDef& lexdef, String const& state - , String const& targetstate) const - { - typedef detail::sequence_collect_function - collect_function_type; - collect_function_type f (lexdef, state, targetstate); - fusion::any(elements, f); - } - - template - void add_actions(LexerDef& lexdef) const - { - detail::sequence_add_actions_function f (lexdef); - fusion::any(elements, f); - } - - Elements elements; - }; - - /////////////////////////////////////////////////////////////////////////// - // Lexer generator: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_composite - : make_nary_composite - {}; - -}}} // namespace boost::spirit::lex - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/lex/lexer/string_token_def.hpp b/framework/contrib/boost/include/boost/spirit/home/lex/lexer/string_token_def.hpp deleted file mode 100644 index 47bd9a332c4b..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/lex/lexer/string_token_def.hpp +++ /dev/null @@ -1,177 +0,0 @@ -// 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_LEX_STRING_TOKEN_DEF_MAR_28_2007_0722PM) -#define BOOST_SPIRIT_LEX_STRING_TOKEN_DEF_MAR_28_2007_0722PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - - // enables strings - template - struct use_terminal >::type> - : mpl::true_ {}; - - // enables string(str) - template - struct use_terminal - , fusion::vector1 > > - : traits::is_string {}; - - // enables string(str, ID) - template - struct use_terminal - , fusion::vector2 > > - : traits::is_string {}; -}} - -namespace boost { namespace spirit { namespace lex -{ - // use string from standard character set by default -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using spirit::standard::string; -#endif - using spirit::standard::string_type; - - /////////////////////////////////////////////////////////////////////////// - // - // string_token_def - // represents a string based token definition - // - /////////////////////////////////////////////////////////////////////////// - template - struct string_token_def - : primitive_lexer > - { - typedef typename - remove_const::type>::type - char_type; - typedef std::basic_string string_type; - - string_token_def(typename add_reference::type str, IdType const& id) - : str_(str), id_(id), unique_id_(std::size_t(~0)) - , token_state_(std::size_t(~0)) - {} - - template - void collect(LexerDef& lexdef, String_ const& state - , String_ const& targetstate) const - { - std::size_t state_id = lexdef.add_state(state.c_str()); - - // If the following assertion fires you are probably trying to use - // a single string_token_def instance in more than one lexer state. - // This is not possible. Please create a separate token_def instance - // from the same regular expression for each lexer state it needs - // to be associated with. - BOOST_ASSERT( - (std::size_t(~0) == token_state_ || state_id == token_state_) && - "Can't use single string_token_def with more than one lexer state"); - - char_type const* target = targetstate.empty() ? 0 : targetstate.c_str(); - if (target) - lexdef.add_state(target); - - token_state_ = state_id; - - if (IdType(~0) == id_) - id_ = IdType(lexdef.get_next_id()); - - unique_id_ = lexdef.add_token (state.c_str(), str_, id_, target); - } - - template - void add_actions(LexerDef&) const {} - - std::size_t id() const { return id_; } - std::size_t unique_id() const { return unique_id_; } - std::size_t state() const { return token_state_; } - - string_type str_; - mutable IdType id_; - mutable std::size_t unique_id_; - mutable std::size_t token_state_; - }; - - /////////////////////////////////////////////////////////////////////////// - // Lex generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_primitive >::type> - { - typedef typename add_const::type const_string; - typedef string_token_def result_type; - - result_type operator()( - typename add_reference::type str, unused_type) const - { - return result_type(str, std::size_t(~0)); - } - }; - - template - struct make_primitive< - terminal_ex< - tag::char_code - , fusion::vector1 > - , Modifiers> - { - typedef typename add_const::type const_string; - typedef string_token_def - result_type; - - template - result_type operator()(Terminal const& term, unused_type) const - { - return result_type(fusion::at_c<0>(term.args), std::size_t(~0)); - } - }; - - template - struct make_primitive< - terminal_ex< - tag::char_code - , fusion::vector2 > - , Modifiers> - { - typedef typename add_const::type const_string; - typedef string_token_def result_type; - - template - result_type operator()(Terminal const& term, unused_type) const - { - return result_type( - fusion::at_c<0>(term.args), fusion::at_c<1>(term.args)); - } - }; -}}} // namespace boost::spirit::lex - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/lex/lexer/support_functions.hpp b/framework/contrib/boost/include/boost/spirit/home/lex/lexer/support_functions.hpp deleted file mode 100644 index c9d618048de0..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/lex/lexer/support_functions.hpp +++ /dev/null @@ -1,206 +0,0 @@ -// 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) - -#ifndef BOOST_SPIRIT_LEX_LEXER_SUPPORT_FUNCTIONS_HPP -#define BOOST_SPIRIT_LEX_LEXER_SUPPORT_FUNCTIONS_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include // includes as_actor specialization - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace lex -{ - /////////////////////////////////////////////////////////////////////////// - // The function object less_type is used by the implementation of the - // support function lex::less(). Its functionality is equivalent to flex' - // function yyless(): it returns an iterator positioned to the nth input - // character beyond the current start iterator (i.e. by assigning the - // return value to the placeholder '_end' it is possible to return all but - // the first n characters of the current token back to the input stream. - // - // This Phoenix actor is invoked whenever the function lex::less(n) is - // used inside a lexer semantic action: - // - // lex::token_def<> identifier = "[a-zA-Z_][a-zA-Z0-9_]*"; - // this->self = identifier [ _end = lex::less(4) ]; - // - // The example shows how to limit the length of the matched identifier to - // four characters. - // - // Note: the function lex::less() has no effect if used on it's own, you - // need to use the returned result in order to make use of its - // functionality. - template - struct less_type - { - typedef mpl::true_ no_nullary; - - template - struct result - { - typedef typename remove_reference< - typename remove_const< - typename mpl::at_c::type - >::type - >::type context_type; - typedef typename context_type::base_iterator_type type; - }; - - template - typename result::type - eval(Env const& env) const - { - typename result::type it; - return fusion::at_c<4>(env.args()).less(it, actor_()); - } - - less_type(Actor const& actor) - : actor_(actor) {} - - Actor actor_; - }; - - // The function lex::less() is used to create a Phoenix actor allowing to - // implement functionality similar to flex' function yyless(). - template - inline typename expression::less< - typename phoenix::as_actor::type - >::type const - less(T const& v) - { - return expression::less::make(phoenix::as_actor::convert(v)); - } - - /////////////////////////////////////////////////////////////////////////// - // The function object more_type is used by the implementation of the - // support function lex::more(). Its functionality is equivalent to flex' - // function yymore(): it tells the lexer that the next time it matches a - // rule, the corresponding token should be appended onto the current token - // value rather than replacing it. - // - // This Phoenix actor is invoked whenever the function lex::more(n) is - // used inside a lexer semantic action: - // - // lex::token_def<> identifier = "[a-zA-Z_][a-zA-Z0-9_]*"; - // this->self = identifier [ lex::more() ]; - // - // The example shows how prefix the next matched token with the matched - // identifier. - struct more_type - { - typedef mpl::true_ no_nullary; - - template - struct result - { - typedef void type; - }; - - template - void eval(Env const& env) const - { - fusion::at_c<4>(env.args()).more(); - } - }; - - // The function lex::more() is used to create a Phoenix actor allowing to - // implement functionality similar to flex' function yymore(). - //inline expression::more::type const - inline phoenix::actor more() - { - return phoenix::actor(); - } - - /////////////////////////////////////////////////////////////////////////// - // The function object lookahead_type is used by the implementation of the - // support function lex::lookahead(). Its functionality is needed to - // emulate the flex' lookahead operator a/b. Use lex::lookahead() inside - // of lexer semantic actions to test whether the argument to this function - // matches the current look ahead input. lex::lookahead() can be used with - // either a token id or a token_def instance as its argument. It returns - // a bool indicating whether the look ahead has been matched. - template - struct lookahead_type - { - typedef mpl::true_ no_nullary; - - template - struct result - { - typedef bool type; - }; - - template - bool eval(Env const& env) const - { - return fusion::at_c<4>(env.args()). - lookahead(id_actor_(), state_actor_()); - } - - lookahead_type(IdActor const& id_actor, StateActor const& state_actor) - : id_actor_(id_actor), state_actor_(state_actor) {} - - IdActor id_actor_; - StateActor state_actor_; - }; - - // The function lex::lookahead() is used to create a Phoenix actor - // allowing to implement functionality similar to flex' lookahead operator - // a/b. - template - inline typename expression::lookahead< - typename phoenix::as_actor::type - , typename phoenix::as_actor::type - >::type const - lookahead(T const& id) - { - typedef typename phoenix::as_actor::type id_actor_type; - typedef typename phoenix::as_actor::type state_actor_type; - - return expression::lookahead::make( - phoenix::as_actor::convert(id), - phoenix::as_actor::convert(std::size_t(~0))); - } - - template - inline typename expression::lookahead< - typename phoenix::as_actor::type - , typename phoenix::as_actor::type - >::type const - lookahead(token_def const& tok) - { - typedef typename phoenix::as_actor::type id_actor_type; - typedef typename phoenix::as_actor::type state_actor_type; - - std::size_t state = tok.state(); - - // The following assertion fires if you pass a token_def instance to - // lex::lookahead without first associating this instance with the - // lexer. - BOOST_ASSERT(std::size_t(~0) != state && - "token_def instance not associated with lexer yet"); - - return expression::lookahead::make( - phoenix::as_actor::convert(tok.id()), - phoenix::as_actor::convert(state)); - } - - /////////////////////////////////////////////////////////////////////////// - inline BOOST_SCOPED_ENUM(pass_flags) ignore() - { - return pass_flags::pass_ignore; - } - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/lex/lexer/support_functions_expression.hpp b/framework/contrib/boost/include/boost/spirit/home/lex/lexer/support_functions_expression.hpp deleted file mode 100644 index 3559d3dc5d22..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/lex/lexer/support_functions_expression.hpp +++ /dev/null @@ -1,104 +0,0 @@ -// Copyright (c) 2001-2011 Hartmut Kaiser -// Copyright (c) 2011 Thomas Heller -// -// 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) - -#ifndef BOOST_SPIRIT_LEX_LEXER_SUPPORT_FUNCTIONS_EXPRESSION_HPP -#define BOOST_SPIRIT_LEX_LEXER_SUPPORT_FUNCTIONS_EXPRESSION_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include // for transform placeholders - -namespace boost { namespace spirit { namespace lex -{ - template struct less_type; - struct more_type; - template struct lookahead_type; -}}} - -/////////////////////////////////////////////////////////////////////////////// - -BOOST_PHOENIX_DEFINE_EXPRESSION( - (boost)(spirit)(lex)(less) - , (boost::phoenix::meta_grammar) -) - -BOOST_PHOENIX_DEFINE_EXPRESSION( - (boost)(spirit)(lex)(lookahead) - , (boost::phoenix::meta_grammar) - (boost::phoenix::meta_grammar) -) - -namespace boost { namespace phoenix -{ - - namespace result_of - { - template <> - struct is_nullary > - : mpl::false_ - {}; - } - - template - struct is_custom_terminal : mpl::true_ {}; - - template - struct custom_terminal - : proto::call< - v2_eval( - proto::make - , proto::call - ) - > - {}; - - - template - struct is_nullary::when - : proto::make - {}; - - template - struct default_actions::when - : proto::call< - v2_eval( - proto::make< - spirit::lex::less_type(proto::_child0) - > - , _env - ) - > - {}; - - template - struct is_nullary::when - : proto::make - {}; - - template - struct default_actions::when - : proto::call< - v2_eval( - proto::make< - spirit::lex::lookahead_type< - proto::_child0 - , proto::_child1 - >( - proto::_child0 - , proto::_child1 - ) - > - , _env - ) - > - {}; -}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/lex/lexer/terminals.hpp b/framework/contrib/boost/include/boost/spirit/home/lex/lexer/terminals.hpp deleted file mode 100644 index b5059cc38cea..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/lex/lexer/terminals.hpp +++ /dev/null @@ -1,23 +0,0 @@ -// 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_LEX_TERMINALS_APR_20_2009_0550PM) -#define BOOST_SPIRIT_LEX_TERMINALS_APR_20_2009_0550PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include - -namespace boost { namespace spirit { namespace lex -{ - /////////////////////////////////////////////////////////////////////////// - // Define a more convenient name for an omitted token attribute type - typedef spirit::omit_type omit; - using spirit::omit_type; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/lex/lexer/token_def.hpp b/framework/contrib/boost/include/boost/spirit/home/lex/lexer/token_def.hpp deleted file mode 100644 index afeb0fe7a022..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/lex/lexer/token_def.hpp +++ /dev/null @@ -1,248 +0,0 @@ -// 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_LEX_TOKEN_DEF_MAR_13_2007_0145PM) -#define BOOST_SPIRIT_LEX_TOKEN_DEF_MAR_13_2007_0145PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -#include // for std::iterator_traits -#include -#include - -#if defined(BOOST_MSVC) -# pragma warning(push) -# pragma warning(disable: 4355) // 'this' : used in base member initializer list warning -#endif - -namespace boost { namespace spirit { namespace lex -{ - /////////////////////////////////////////////////////////////////////////// - // This component represents a token definition - /////////////////////////////////////////////////////////////////////////// - template - struct token_def - : proto::extends< - typename proto::terminal< - lex::reference const, Idtype> - >::type - , token_def > - , qi::parser > - , lex::lexer_type > - { - private: - // initialize proto base class - typedef lex::reference reference_; - typedef typename proto::terminal::type terminal_type; - typedef proto::extends proto_base_type; - - static std::size_t const all_states_id = static_cast(-2); - - public: - // Qi interface: meta-function calculating parser return type - template - struct attribute - { - // The return value of the token_def is either the specified - // attribute type, or the pair of iterators from the match of the - // corresponding token (if no attribute type has been specified), - // or unused_type (if omit has been specified). - typedef typename Iterator::base_iterator_type iterator_type; - typedef typename mpl::if_< - traits::not_is_unused - , typename mpl::if_< - is_same, unused_type, Attribute - >::type - , iterator_range - >::type type; - }; - - public: - // Qi interface: parse functionality - template - bool parse(Iterator& first, Iterator const& last - , Context& /*context*/, Skipper const& skipper - , Attribute_& attr) const - { - qi::skip_over(first, last, skipper); // always do a pre-skip - - if (first != last) { - typedef typename - std::iterator_traits::value_type - token_type; - - // If the following assertion fires you probably forgot to - // associate this token definition with a lexer instance. - BOOST_ASSERT(std::size_t(~0) != token_state_); - - token_type const& t = *first; - if (token_id_ == t.id() && - (all_states_id == token_state_ || token_state_ == t.state())) - { - spirit::traits::assign_to(t, attr); - ++first; - return true; - } - } - return false; - } - - template - info what(Context& /*context*/) const - { - if (0 == def_.which()) - return info("token_def", boost::get(def_)); - - return info("token_def", boost::get(def_)); - } - - /////////////////////////////////////////////////////////////////////// - // Lex interface: collect token definitions and put it into the - // provided lexer def - template - void collect(LexerDef& lexdef, String const& state - , String const& targetstate) const - { - std::size_t state_id = lexdef.add_state(state.c_str()); - - // If the following assertion fires you are probably trying to use - // a single token_def instance in more than one lexer state. This - // is not possible. Please create a separate token_def instance - // from the same regular expression for each lexer state it needs - // to be associated with. - BOOST_ASSERT( - (std::size_t(~0) == token_state_ || state_id == token_state_) && - "Can't use single token_def with more than one lexer state"); - - char_type const* target = targetstate.empty() ? 0 : targetstate.c_str(); - if (target) - lexdef.add_state(target); - - token_state_ = state_id; - if (0 == token_id_) - token_id_ = lexdef.get_next_id(); - - if (0 == def_.which()) { - unique_id_ = lexdef.add_token(state.c_str() - , boost::get(def_), token_id_, target); - } - else { - unique_id_ = lexdef.add_token(state.c_str() - , boost::get(def_), token_id_, target); - } - } - - template - void add_actions(LexerDef&) const {} - - public: - typedef Char char_type; - typedef Idtype id_type; - typedef std::basic_string string_type; - - // Lex interface: constructing token definitions - token_def() - : proto_base_type(terminal_type::make(reference_(*this))) - , def_('\0'), token_id_() - , unique_id_(std::size_t(~0)), token_state_(std::size_t(~0)) {} - - token_def(token_def const& rhs) - : proto_base_type(terminal_type::make(reference_(*this))) - , def_(rhs.def_), token_id_(rhs.token_id_) - , unique_id_(rhs.unique_id_), token_state_(rhs.token_state_) {} - - explicit token_def(char_type def_, Idtype id_ = Idtype()) - : proto_base_type(terminal_type::make(reference_(*this))) - , def_(def_) - , token_id_(Idtype() == id_ ? Idtype(def_) : id_) - , unique_id_(std::size_t(~0)), token_state_(std::size_t(~0)) {} - - explicit token_def(string_type const& def_, Idtype id_ = Idtype()) - : proto_base_type(terminal_type::make(reference_(*this))) - , def_(def_), token_id_(id_) - , unique_id_(std::size_t(~0)), token_state_(std::size_t(~0)) {} - - template - token_def& operator= (String const& definition) - { - def_ = definition; - token_id_ = Idtype(); - unique_id_ = std::size_t(~0); - token_state_ = std::size_t(~0); - return *this; - } - token_def& operator= (token_def const& rhs) - { - def_ = rhs.def_; - token_id_ = rhs.token_id_; - unique_id_ = rhs.unique_id_; - token_state_ = rhs.token_state_; - return *this; - } - - // general accessors - Idtype const& id() const { return token_id_; } - void id(Idtype const& id) { token_id_ = id; } - std::size_t unique_id() const { return unique_id_; } - - string_type definition() const - { - return (0 == def_.which()) ? - boost::get(def_) : - string_type(1, boost::get(def_)); - } - std::size_t state() const { return token_state_; } - - private: - variant def_; - mutable Idtype token_id_; - mutable std::size_t unique_id_; - mutable std::size_t token_state_; - }; -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container< - lex::token_def, Attr, Context, Iterator> - : traits::is_container< - typename attribute_of< - lex::token_def, Context, Iterator - >::type> - {}; -}}} - -#if defined(BOOST_MSVC) -# pragma warning(pop) -#endif - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/lex/lexer_lexertl.hpp b/framework/contrib/boost/include/boost/spirit/home/lex/lexer_lexertl.hpp deleted file mode 100644 index 0706bd99c2f0..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/lex/lexer_lexertl.hpp +++ /dev/null @@ -1,18 +0,0 @@ -// 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_LEX_LEXERTL_MAR_17_2007_1008PM) -#define BOOST_SPIRIT_LEX_LEXERTL_MAR_17_2007_1008PM - -#if defined(_MSC_VER) -#pragma once -#endif - -// These includes make available everything needed to use lexertl either -// standalone or as a lexer component for spirit::qi -#include -#include - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/lex/lexer_static_lexertl.hpp b/framework/contrib/boost/include/boost/spirit/home/lex/lexer_static_lexertl.hpp deleted file mode 100644 index e95976093b1e..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/lex/lexer_static_lexertl.hpp +++ /dev/null @@ -1,18 +0,0 @@ -// 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_LEX_STATIC_LEXERTL_FEB_11_2008_1045AM) -#define BOOST_SPIRIT_LEX_STATIC_LEXERTL_FEB_11_2008_1045AM - -#if defined(_MSC_VER) -#pragma once -#endif - -// These includes make available everything needed to use lexertl either -// standalone or as a lexer component for spirit::qi -#include -#include - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/lex/lexer_type.hpp b/framework/contrib/boost/include/boost/spirit/home/lex/lexer_type.hpp deleted file mode 100644 index e58bce0de1d1..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/lex/lexer_type.hpp +++ /dev/null @@ -1,100 +0,0 @@ -// Copyright (c) 2001-2011 Hartmut Kaiser -// Copyright (c) 2001-2011 Joel de Guzman -// -// 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_LEXER_TYPE_APR_20_2009_0759PM) -#define BOOST_SPIRIT_LEXER_TYPE_APR_20_2009_0759PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include - -namespace boost { namespace spirit { namespace lex -{ - template - struct lexer_type - { - struct lexer_id; - typedef Derived derived_type; - typedef lex::domain domain; - - // Requirement: l.collect(def, state, targetstate) -> void - // - // l: a lexer component - // def: token definition container - // state: lexer state this token definition needs to be added to - // targetstate: an optional lexer state the lexer should be switched - // into after matching this token - - Derived const& derived() const - { - return *static_cast(this); - } - }; - - template - struct primitive_lexer : lexer_type - { - struct primitive_lexer_id; - }; - - template - struct unary_lexer : lexer_type - { - struct unary_lexer_id; - - // Requirement: l.subject -> subject lexer component - // - // l: a unary lexer component - - // Requirement: L::subject_type -> subject lexer component type - // - // L: a unary lexer component type - }; - - template - struct nary_lexer : lexer_type - { - struct nary_lexer_id; - - // Requirement: l.elements -> fusion sequence - // - // l: a composite lexer component - - // Requirement: L::elements_type -> fusion sequence - // - // L: a composite lexer component type - }; - -}}} - -namespace boost { namespace spirit { namespace traits // classification -{ - namespace detail - { - BOOST_MPL_HAS_XXX_TRAIT_DEF(lexer_id) - BOOST_MPL_HAS_XXX_TRAIT_DEF(primitive_lexer_id) - BOOST_MPL_HAS_XXX_TRAIT_DEF(unary_lexer_id) - BOOST_MPL_HAS_XXX_TRAIT_DEF(nary_lexer_id) - } - - template - struct is_lexer : detail::has_lexer_id {}; - - template - struct is_primitive_lexer : detail::has_primitive_lexer_id {}; - - template - struct is_unary_lexer : detail::has_unary_lexer_id {}; - - template - struct is_nary_lexer : detail::has_nary_lexer_id {}; - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/lex/meta_compiler.hpp b/framework/contrib/boost/include/boost/spirit/home/lex/meta_compiler.hpp deleted file mode 100644 index 323a1a959c3a..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/lex/meta_compiler.hpp +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright (c) 2001-2011 Hartmut Kaiser -// Copyright (c) 2001-2011 Joel de Guzman -// -// 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_LEX_META_COMPILER_APR_20_2009_0756PM) -#define BOOST_SPIRIT_LEX_META_COMPILER_APR_20_2009_0756PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - template - struct use_terminal >::type> // enables lexers - : mpl::true_ {}; - - namespace lex - { - template - struct make_primitive // by default, return it as-is - { - typedef T result_type; - - template - T_& operator()(T_& val, unused_type) const - { - return val; - } - - template - T_ const& operator()(T_ const& val, unused_type) const - { - return val; - } - }; - - template - struct make_composite; - } - - // Lex primitive meta-compiler - template <> - struct make_component - { - template - struct result; - - template - struct result - { - typedef typename lex::make_primitive< - typename remove_const::type, - typename remove_reference::type>::result_type - type; - }; - - template - typename result::type - operator()(Elements const& elements, Modifiers const& modifiers) const - { - typedef typename remove_const::type term; - return lex::make_primitive()(elements.car, modifiers); - } - }; - - // Lex composite meta-compiler - template - struct make_component - { - template - struct result; - - template - struct result - { - typedef typename - lex::make_composite::type>::result_type - type; - }; - - template - typename result::type - operator()(Elements const& elements, Modifiers const& modifiers) const - { - return lex::make_composite()( - elements, modifiers); - } - }; - -}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/lex/primitives.hpp b/framework/contrib/boost/include/boost/spirit/home/lex/primitives.hpp deleted file mode 100644 index 226ce232c4fc..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/lex/primitives.hpp +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright (c) 2001-2010 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_LEXER_PRIMITIVES_SEP_12_2009_0234PM) -#define BOOST_SPIRIT_LEXER_PRIMITIVES_SEP_12_2009_0234PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/lex/qi.hpp b/framework/contrib/boost/include/boost/spirit/home/lex/qi.hpp deleted file mode 100644 index 3b4e7046157e..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/lex/qi.hpp +++ /dev/null @@ -1,20 +0,0 @@ -// 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_LEXER_QI_APR_21_2009_0205PM) -#define BOOST_SPIRIT_LEXER_QI_APR_21_2009_0205PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/lex/qi/in_state.hpp b/framework/contrib/boost/include/boost/spirit/home/lex/qi/in_state.hpp deleted file mode 100644 index c3f5a326082f..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/lex/qi/in_state.hpp +++ /dev/null @@ -1,32 +0,0 @@ -// 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_LEX_IN_STATE_OCT_09_2007_0748PM) -#define BOOST_SPIRIT_LEX_IN_STATE_OCT_09_2007_0748PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace qi -{ - /////////////////////////////////////////////////////////////////////////// - // The following is a helper template allowing to use the in_state()[] as - // a skip parser - /////////////////////////////////////////////////////////////////////////// - template - struct in_state_skipper - : proto::subscript< - typename proto::terminal< - terminal_ex > - >::type - , Skipper - >::type {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/lex/qi/plain_raw_token.hpp b/framework/contrib/boost/include/boost/spirit/home/lex/qi/plain_raw_token.hpp deleted file mode 100644 index 95103415b5d6..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/lex/qi/plain_raw_token.hpp +++ /dev/null @@ -1,150 +0,0 @@ -// 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_LEX_PLAIN_RAW_TOKEN_JUN_03_2011_0853PM) -#define BOOST_SPIRIT_LEX_PLAIN_RAW_TOKEN_JUN_03_2011_0853PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include // for std::iterator_traits -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - - // enables raw_token - template <> - struct use_terminal - : mpl::true_ {}; - - // enables raw_token(id) - template - struct use_terminal > - > : mpl::or_, is_enum > {}; - - // enables *lazy* raw_token(id) - template <> - struct use_lazy_terminal< - qi::domain, tag::raw_token, 1 - > : mpl::true_ {}; -}} - -namespace boost { namespace spirit { namespace qi -{ -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using spirit::raw_token; -#endif - using spirit::raw_token_type; - - /////////////////////////////////////////////////////////////////////////// - template - struct plain_raw_token - : primitive_parser > - { - template - struct attribute - { - typedef unused_type type; - }; - - plain_raw_token(TokenId const& id) - : id(id) {} - - template - bool parse(Iterator& first, Iterator const& last - , Context& /*context*/, Skipper const& skipper - , Attribute& attr) const - { - qi::skip_over(first, last, skipper); // always do a pre-skip - - if (first != last) { - // simply match the token id with the id this component has - // been initialized with - - typedef typename - std::iterator_traits::value_type - token_type; - typedef typename token_type::id_type id_type; - - token_type const& t = *first; - if (id_type(~0) == id_type(id) || id_type(id) == t.id()) { - spirit::traits::assign_to(t, attr); - ++first; - return true; - } - } - return false; - } - - template - info what(Context& /*context*/) const - { - std::stringstream ss; - ss << "raw_token(" << id << ")"; - return info("raw_token", ss.str()); - } - - TokenId id; - }; - - /////////////////////////////////////////////////////////////////////////// - // Parser generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_primitive - { - typedef plain_raw_token result_type; - - result_type operator()(unused_type, unused_type) const - { - return result_type(std::size_t(~0)); - } - }; - - template - struct make_primitive > - , Modifiers> - { - typedef plain_raw_token result_type; - - template - result_type operator()(Terminal const& term, unused_type) const - { - return result_type(fusion::at_c<0>(term.args)); - } - }; -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container, Attr, Context, Iterator> - : mpl::true_ - {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/lex/qi/plain_token.hpp b/framework/contrib/boost/include/boost/spirit/home/lex/qi/plain_token.hpp deleted file mode 100644 index 887b7d98fdcb..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/lex/qi/plain_token.hpp +++ /dev/null @@ -1,242 +0,0 @@ -// 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_LEX_PLAIN_TOKEN_NOV_11_2007_0451PM) -#define BOOST_SPIRIT_LEX_PLAIN_TOKEN_NOV_11_2007_0451PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include // for std::iterator_traits -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - - // enables token - template <> - struct use_terminal - : mpl::true_ {}; - - // enables token(id) - template - struct use_terminal > - > : mpl::or_, is_enum > {}; - - // enables token(idmin, idmax) - template - struct use_terminal > - > : mpl::and_< - mpl::or_, is_enum > - , mpl::or_, is_enum > - > {}; - - // enables *lazy* token(id) - template <> - struct use_lazy_terminal< - qi::domain, tag::token, 1 - > : mpl::true_ {}; - - // enables *lazy* token(idmin, idmax) - template <> - struct use_lazy_terminal< - qi::domain, tag::token, 2 - > : mpl::true_ {}; -}} - -namespace boost { namespace spirit { namespace qi -{ -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using spirit::token; -#endif - using spirit::token_type; - - /////////////////////////////////////////////////////////////////////////// - template - struct plain_token - : primitive_parser > - { - template - struct attribute - { - typedef typename Iterator::base_iterator_type iterator_type; - typedef iterator_range type; - }; - - plain_token(TokenId const& id) - : id(id) {} - - template - bool parse(Iterator& first, Iterator const& last - , Context& /*context*/, Skipper const& skipper - , Attribute& attr) const - { - qi::skip_over(first, last, skipper); // always do a pre-skip - - if (first != last) { - // simply match the token id with the id this component has - // been initialized with - - typedef typename - std::iterator_traits::value_type - token_type; - typedef typename token_type::id_type id_type; - - token_type const& t = *first; - if (id_type(~0) == id_type(id) || id_type(id) == t.id()) { - spirit::traits::assign_to(t, attr); - ++first; - return true; - } - } - return false; - } - - template - info what(Context& /*context*/) const - { - std::stringstream ss; - ss << "token(" << id << ")"; - return info("token", ss.str()); - } - - TokenId id; - }; - - /////////////////////////////////////////////////////////////////////////// - template - struct plain_token_range - : primitive_parser > - { - template - struct attribute - { - typedef typename Iterator::base_iterator_type iterator_type; - typedef iterator_range type; - }; - - plain_token_range(TokenId const& idmin, TokenId const& idmax) - : idmin(idmin), idmax(idmax) {} - - template - bool parse(Iterator& first, Iterator const& last - , Context& /*context*/, Skipper const& skipper - , Attribute& attr) const - { - qi::skip_over(first, last, skipper); // always do a pre-skip - - if (first != last) { - // simply match the token id with the id this component has - // been initialized with - - typedef typename - std::iterator_traits::value_type - token_type; - typedef typename token_type::id_type id_type; - - token_type const& t = *first; - if (id_type(idmax) >= t.id() && id_type(idmin) <= t.id()) - { - spirit::traits::assign_to(t, attr); - ++first; - return true; - } - } - return false; - } - - template - info what(Context& /*context*/) const - { - std::stringstream ss; - ss << "token(" << idmin << ", " << idmax << ")"; - return info("token_range", ss.str()); - } - - TokenId idmin, idmax; - }; - - /////////////////////////////////////////////////////////////////////////// - // Parser generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_primitive - { - typedef plain_token result_type; - - result_type operator()(unused_type, unused_type) const - { - return result_type(std::size_t(~0)); - } - }; - - template - struct make_primitive > - , Modifiers> - { - typedef plain_token result_type; - - template - result_type operator()(Terminal const& term, unused_type) const - { - return result_type(fusion::at_c<0>(term.args)); - } - }; - - template - struct make_primitive > - , Modifiers> - { - typedef plain_token_range result_type; - - template - result_type operator()(Terminal const& term, unused_type) const - { - return result_type(fusion::at_c<0>(term.args) - , fusion::at_c<1>(term.args)); - } - }; -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container, Attr, Context, Iterator> - : mpl::true_ - {}; - - template - struct handles_container, Attr, Context, Iterator> - : mpl::true_ - {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/lex/qi/plain_tokenid.hpp b/framework/contrib/boost/include/boost/spirit/home/lex/qi/plain_tokenid.hpp deleted file mode 100644 index 4d9db4c3bda3..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/lex/qi/plain_tokenid.hpp +++ /dev/null @@ -1,242 +0,0 @@ -// 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_LEX_PLAIN_TOKENID_NOV_26_2010_0944AM) -#define BOOST_SPIRIT_LEX_PLAIN_TOKENID_NOV_26_2010_0944AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include // for std::iterator_traits -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - - // enables tokenid - template <> - struct use_terminal - : mpl::true_ {}; - - // enables tokenid(id) - template - struct use_terminal > - > : mpl::or_, is_enum > {}; - - // enables tokenid(idmin, idmax) - template - struct use_terminal > - > : mpl::and_< - mpl::or_, is_enum > - , mpl::or_, is_enum > - > {}; - - // enables *lazy* tokenid(id) - template <> - struct use_lazy_terminal< - qi::domain, tag::tokenid, 1 - > : mpl::true_ {}; - - // enables *lazy* tokenid(idmin, idmax) - template <> - struct use_lazy_terminal< - qi::domain, tag::tokenid, 2 - > : mpl::true_ {}; -}} - -namespace boost { namespace spirit { namespace qi -{ -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using spirit::tokenid; -#endif - using spirit::tokenid_type; - - /////////////////////////////////////////////////////////////////////////// - // The plain_tokenid represents a simple token defined by the lexer inside - // a Qi grammar. The difference to plain_token is that it exposes the - // matched token id instead of the iterator_range of the matched input. - template - struct plain_tokenid - : primitive_parser > - { - template - struct attribute - { - typedef TokenId type; - }; - - plain_tokenid(TokenId const& id) - : id(id) {} - - template - bool parse(Iterator& first, Iterator const& last - , Context& /*context*/, Skipper const& skipper - , Attribute& attr) const - { - qi::skip_over(first, last, skipper); // always do a pre-skip - - if (first != last) { - // simply match the token id with the id this component has - // been initialized with - - typedef typename - std::iterator_traits::value_type - token_type; - typedef typename token_type::id_type id_type; - - token_type const& t = *first; - if (id_type(~0) == id_type(id) || id_type(id) == t.id()) { - spirit::traits::assign_to(id, attr); - ++first; - return true; - } - } - return false; - } - - template - info what(Context& /*context*/) const - { - std::stringstream ss; - ss << "tokenid(" << id << ")"; - return info("tokenid", ss.str()); - } - - TokenId id; - }; - - /////////////////////////////////////////////////////////////////////////// - template - struct plain_tokenid_range - : primitive_parser > - { - template - struct attribute - { - typedef TokenId type; - }; - - plain_tokenid_range(TokenId const& idmin, TokenId const& idmax) - : idmin(idmin), idmax(idmax) {} - - template - bool parse(Iterator& first, Iterator const& last - , Context& /*context*/, Skipper const& skipper - , Attribute& attr) const - { - qi::skip_over(first, last, skipper); // always do a pre-skip - - if (first != last) { - // simply match the token id with the id this component has - // been initialized with - - typedef typename - std::iterator_traits::value_type - token_type; - typedef typename token_type::id_type id_type; - - token_type const& t = *first; - if (id_type(idmin) >= t.id() && id_type(idmin) <= t.id()) - { - spirit::traits::assign_to(t.id(), attr); - ++first; - return true; - } - } - return false; - } - - template - info what(Context& /*context*/) const - { - std::stringstream ss; - ss << "token(" << idmin << ", " << idmax << ")"; - return info("tokenid_range", ss.str()); - } - - TokenId idmin, idmax; - }; - - /////////////////////////////////////////////////////////////////////////// - // Parser generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_primitive - { - typedef plain_tokenid result_type; - - result_type operator()(unused_type, unused_type) const - { - return result_type(std::size_t(~0)); - } - }; - - template - struct make_primitive > - , Modifiers> - { - typedef plain_tokenid result_type; - - template - result_type operator()(Terminal const& term, unused_type) const - { - return result_type(fusion::at_c<0>(term.args)); - } - }; - - template - struct make_primitive > - , Modifiers> - { - typedef plain_tokenid_range result_type; - - template - result_type operator()(Terminal const& term, unused_type) const - { - return result_type(fusion::at_c<0>(term.args) - , fusion::at_c<1>(term.args)); - } - }; -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container, Attr, Context, Iterator> - : mpl::true_ - {}; - - template - struct handles_container, Attr, Context, Iterator> - : mpl::true_ - {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/lex/qi/plain_tokenid_mask.hpp b/framework/contrib/boost/include/boost/spirit/home/lex/qi/plain_tokenid_mask.hpp deleted file mode 100644 index c7007198c5c7..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/lex/qi/plain_tokenid_mask.hpp +++ /dev/null @@ -1,141 +0,0 @@ -// 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_LEX_PLAIN_TOKENID_MASK_JUN_03_2011_0929PM) -#define BOOST_SPIRIT_LEX_PLAIN_TOKENID_MASK_JUN_03_2011_0929PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include // for std::iterator_traits -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - - // enables tokenid_mask(id) - template - struct use_terminal > - > : mpl::or_, is_enum > {}; - - // enables *lazy* tokenid_mask(id) - template <> - struct use_lazy_terminal< - qi::domain, tag::tokenid_mask, 1 - > : mpl::true_ {}; -}} - -namespace boost { namespace spirit { namespace qi -{ -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using spirit::tokenid_mask; -#endif - using spirit::tokenid_mask_type; - - /////////////////////////////////////////////////////////////////////////// - // The plain_tokenid represents a simple token defined by the lexer inside - // a Qi grammar. The difference to plain_token is that it exposes the - // matched token id instead of the iterator_range of the matched input. - // Additionally it applies the given mask to the matched token id. - template - struct plain_tokenid_mask - : primitive_parser > - { - template - struct attribute - { - typedef Mask type; - }; - - plain_tokenid_mask(Mask const& mask) - : mask(mask) {} - - template - bool parse(Iterator& first, Iterator const& last - , Context& /*context*/, Skipper const& skipper - , Attribute& attr) const - { - qi::skip_over(first, last, skipper); // always do a pre-skip - - if (first != last) { - // simply match the token id with the mask this component has - // been initialized with - - typedef typename - std::iterator_traits::value_type - token_type; - typedef typename token_type::id_type id_type; - - token_type const& t = *first; - if ((t.id() & mask) == id_type(mask)) - { - spirit::traits::assign_to(t.id(), attr); - ++first; - return true; - } - } - return false; - } - - template - info what(Context& /*context*/) const - { - std::stringstream ss; - ss << "tokenid_mask(" << mask << ")"; - return info("tokenid_mask", ss.str()); - } - - Mask mask; - }; - - /////////////////////////////////////////////////////////////////////////// - // Parser generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_primitive > - , Modifiers> - { - typedef plain_tokenid_mask result_type; - - template - result_type operator()(Terminal const& term, unused_type) const - { - return result_type(fusion::at_c<0>(term.args)); - } - }; -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container, Attr, Context, Iterator> - : mpl::true_ - {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/lex/qi/state_switcher.hpp b/framework/contrib/boost/include/boost/spirit/home/lex/qi/state_switcher.hpp deleted file mode 100644 index e1416a14bbeb..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/lex/qi/state_switcher.hpp +++ /dev/null @@ -1,268 +0,0 @@ -// Copyright (c) 2001-2011 Hartmut Kaiser -// Copyright (c) 2010 Bryce Lelbach -// -// 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_LEX_STATE_SWITCHER_SEP_23_2007_0714PM) -#define BOOST_SPIRIT_LEX_STATE_SWITCHER_SEP_23_2007_0714PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - - // enables set_state(s) - template - struct use_terminal > - > : traits::is_string {}; - - // enables *lazy* set_state(s) - template <> - struct use_lazy_terminal< - qi::domain, tag::set_state, 1 - > : mpl::true_ {}; - - // enables in_state(s)[p] - template - struct use_directive > - > : traits::is_string {}; - - // enables *lazy* in_state(s)[p] - template <> - struct use_lazy_directive< - qi::domain, tag::in_state, 1 - > : mpl::true_ {}; - -}} - -namespace boost { namespace spirit { namespace qi -{ -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using spirit::set_state; - using spirit::in_state; -#endif - using spirit::set_state_type; - using spirit::in_state_type; - - /////////////////////////////////////////////////////////////////////////// - namespace detail - { - template - inline std::size_t - set_lexer_state(Iterator& it, std::size_t state) - { - return it.set_state(state); - } - - template - inline std::size_t - set_lexer_state(Iterator& it, Char const* statename) - { - std::size_t state = it.map_state(statename); - - // If the following assertion fires you probably used the - // set_state(...) or in_state(...)[...] lexer state switcher with - // a lexer state name unknown to the lexer (no token definitions - // have been associated with this lexer state). - BOOST_ASSERT(std::size_t(~0) != state); - return it.set_state(state); - } - } - - /////////////////////////////////////////////////////////////////////////// - // Parser switching the state of the underlying lexer component. - // This parser gets used for the set_state(...) construct. - /////////////////////////////////////////////////////////////////////////// - template - struct state_switcher - : primitive_parser > - { - typedef typename - remove_const::type>::type - char_type; - typedef std::basic_string string_type; - - template - struct attribute - { - typedef unused_type type; - }; - - state_switcher(char_type const* state) - : state(state) {} - - template - bool parse(Iterator& first, Iterator const& last - , Context& /*context*/, Skipper const& skipper - , Attribute& /*attr*/) const - { - qi::skip_over(first, last, skipper); // always do a pre-skip - - // just switch the state and return success - detail::set_lexer_state(first, state.c_str()); - return true; - } - - template - info what(Context& /*context*/) const - { - return info("set_state"); - } - - string_type state; - }; - - /////////////////////////////////////////////////////////////////////////// - namespace detail - { -#ifdef _MSC_VER -# pragma warning(push) -# pragma warning(disable: 4512) // assignment operator could not be generated. -#endif - template - struct reset_state_on_exit - { - template - reset_state_on_exit(Iterator& it_, State state_) - : it(it_) - , state(set_lexer_state(it_, traits::get_c_string(state_))) - {} - - ~reset_state_on_exit() - { - // reset the state of the underlying lexer instance - set_lexer_state(it, state); - } - - Iterator& it; - std::size_t state; - }; -#ifdef _MSC_VER -# pragma warning(pop) -#endif - } - - /////////////////////////////////////////////////////////////////////////// - // Parser, which switches the state of the underlying lexer component - // for the execution of the embedded sub-parser, switching the state back - // afterwards. This parser gets used for the in_state(...)[p] construct. - /////////////////////////////////////////////////////////////////////////// - template - struct state_switcher_context - : unary_parser > - { - typedef Subject subject_type; - typedef typename traits::char_type_of::type char_type; - typedef typename remove_const::type non_const_char_type; - - template - struct attribute - { - typedef typename - traits::attribute_of::type - type; - }; - - state_switcher_context(Subject const& subject - , typename add_reference::type state) - : subject(subject), state(state) {} - - // The following conversion constructors are needed to make the - // in_state_switcher template usable - template - state_switcher_context( - state_switcher_context const& rhs) - : subject(rhs.subject), state(traits::get_c_string(rhs.state)) {} - - template - bool parse(Iterator& first, Iterator const& last - , Context& context, Skipper const& skipper - , Attribute& attr) const - { - qi::skip_over(first, last, skipper); // always do a pre-skip - - // the state has to be reset at exit in any case - detail::reset_state_on_exit guard(first, state); - return subject.parse(first, last, context, skipper, attr); - } - - template - info what(Context& context) const - { - return info("in_state", subject.what(context)); - } - - Subject subject; - State state; - }; - - /////////////////////////////////////////////////////////////////////////// - // Parser generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_primitive > - , Modifiers, typename enable_if >::type> - { - typedef typename add_const::type const_string; - typedef state_switcher result_type; - - template - result_type operator()(Terminal const& term, unused_type) const - { - return result_type(traits::get_c_string(fusion::at_c<0>(term.args))); - } - }; - - template - struct make_directive > - , Subject, Modifiers> - { - typedef typename add_const::type const_string; - typedef state_switcher_context result_type; - - template - result_type operator()(Terminal const& term, Subject const& subject - , unused_type) const - { - return result_type(subject, fusion::at_c<0>(term.args)); - } - }; -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct has_semantic_action > - : unary_has_semantic_action {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container - , Attribute, Context, Iterator> - : unary_handles_container {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/lex/reference.hpp b/framework/contrib/boost/include/boost/spirit/home/lex/reference.hpp deleted file mode 100644 index d1aaabf19fd9..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/lex/reference.hpp +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright (c) 2001-2011 Hartmut Kaiser -// Copyright (c) 2001-2011 Joel de Guzman -// -// 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_LEX_REFERENCE_APR_20_2009_0827AM) -#define BOOST_SPIRIT_LEX_REFERENCE_APR_20_2009_0827AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace lex -{ - /////////////////////////////////////////////////////////////////////////// - // reference is a lexer that references another lexer (its Subject) - // all lexer components are at the same time - /////////////////////////////////////////////////////////////////////////// - template - struct reference; - - template - struct reference - : qi::reference - , lexer_type > - { - reference(Subject& subject) - : qi::reference(subject) {} - - template - void collect(LexerDef& lexdef, String const& state - , String const& targetstate) const - { - this->ref.get().collect(lexdef, state, targetstate); - } - - template - void add_actions(LexerDef& lexdef) const - { - this->ref.get().add_actions(lexdef); - } - }; - - template - struct reference : reference - { - reference(Subject& subject) - : reference(subject) {} - - IdType id() const - { - return this->ref.get().id(); - } - std::size_t unique_id() const - { - return this->ref.get().unique_id(); - } - std::size_t state() const - { - return this->ref.get().state(); - } - }; -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container - , Attribute, Context, Iterator> - : handles_container< - typename remove_const::type, Attribute, Context, Iterator> - {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/lex/tokenize_and_parse.hpp b/framework/contrib/boost/include/boost/spirit/home/lex/tokenize_and_parse.hpp deleted file mode 100644 index 603801078e65..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/lex/tokenize_and_parse.hpp +++ /dev/null @@ -1,331 +0,0 @@ -// 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_LEXER_PARSE_NOV_17_2007_0246PM) -#define BOOST_SPIRIT_LEXER_PARSE_NOV_17_2007_0246PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include - -namespace boost { namespace phoenix -{ - template - struct actor; -}} - -namespace boost { namespace spirit { namespace lex -{ - /////////////////////////////////////////////////////////////////////////// - // Import skip_flag enumerator type from Qi namespace - using qi::skip_flag; - - /////////////////////////////////////////////////////////////////////////// - // - // The tokenize_and_parse() function is one of the main Spirit API - // functions. It simplifies using a lexer as the underlying token source - // while parsing a given input sequence. - // - // The function takes a pair of iterators spanning the underlying input - // stream to parse, the lexer object (built from the token definitions) - // and a parser object (built from the parser grammar definition). - // - // The second version of this function additionally takes an attribute to - // be used as the top level data structure instance the parser should use - // to store the recognized input to. - // - // The function returns true if the parsing succeeded (the given input - // sequence has been successfully matched by the given grammar). - // - // first, last: The pair of iterators spanning the underlying input - // sequence to parse. These iterators must at least - // conform to the requirements of the std::intput_iterator - // category. - // On exit the iterator 'first' will be updated to the - // position right after the last successfully matched - // token. - // lex: The lexer object (encoding the token definitions) to be - // used to convert the input sequence into a sequence of - // tokens. This token sequence is passed to the parsing - // process. The LexerExpr type must conform to the - // lexer interface described in the corresponding section - // of the documentation. - // xpr: The grammar object (encoding the parser grammar) to be - // used to match the token sequence generated by the lex - // object instance. The ParserExpr type must conform to - // the grammar interface described in the corresponding - // section of the documentation. - // attr: The top level attribute passed to the parser. It will - // be populated during the parsing of the input sequence. - // On exit it will hold the 'parser result' corresponding - // to the matched input sequence. - // - /////////////////////////////////////////////////////////////////////////// - template - inline bool - tokenize_and_parse(Iterator& first, Iterator last, Lexer const& lex, - ParserExpr const& xpr) - { - // Report invalid expression error as early as possible. - // If you got an error_invalid_expression error message here, - // then the expression (expr) is not a valid spirit qi expression. - BOOST_SPIRIT_ASSERT_MATCH(qi::domain, ParserExpr); - - typename Lexer::iterator_type iter = lex.begin(first, last); - return compile(xpr).parse( - iter, lex.end(), unused, unused, unused); - } - - /////////////////////////////////////////////////////////////////////////// - template - inline bool - tokenize_and_parse(Iterator& first, Iterator last, Lexer const& lex - , ParserExpr const& xpr, Attribute& attr) - { - // Report invalid expression error as early as possible. - // If you got an error_invalid_expression error message here, - // then the expression (expr) is not a valid spirit qi expression. - BOOST_SPIRIT_ASSERT_MATCH(qi::domain, ParserExpr); - - typename Lexer::iterator_type iter = lex.begin(first, last); - return compile(xpr).parse( - iter, lex.end(), unused, unused, attr); - } - - /////////////////////////////////////////////////////////////////////////// - // - // The tokenize_and_phrase_parse() function is one of the main Spirit API - // functions. It simplifies using a lexer as the underlying token source - // while phrase parsing a given input sequence. - // - // The function takes a pair of iterators spanning the underlying input - // stream to parse, the lexer object (built from the token definitions) - // and a parser object (built from the parser grammar definition). The - // additional skipper parameter will be used as the skip parser during - // the parsing process. - // - // The second version of this function additionally takes an attribute to - // be used as the top level data structure instance the parser should use - // to store the recognized input to. - // - // The function returns true if the parsing succeeded (the given input - // sequence has been successfully matched by the given grammar). - // - // first, last: The pair of iterators spanning the underlying input - // sequence to parse. These iterators must at least - // conform to the requirements of the std::intput_iterator - // category. - // On exit the iterator 'first' will be updated to the - // position right after the last successfully matched - // token. - // lex: The lexer object (encoding the token definitions) to be - // used to convert the input sequence into a sequence of - // tokens. This token sequence is passed to the parsing - // process. The LexerExpr type must conform to the - // lexer interface described in the corresponding section - // of the documentation. - // xpr: The grammar object (encoding the parser grammar) to be - // used to match the token sequence generated by the lex - // object instance. The ParserExpr type must conform to - // the grammar interface described in the corresponding - // section of the documentation. - // skipper: The skip parser to be used while parsing the given - // input sequence. Note, the skip parser will have to - // act on the same token sequence as the main parser - // 'xpr'. - // post_skip: The post_skip flag controls whether the function will - // invoke an additional post skip after the main parser - // returned. - // attr: The top level attribute passed to the parser. It will - // be populated during the parsing of the input sequence. - // On exit it will hold the 'parser result' corresponding - // to the matched input sequence. - // - /////////////////////////////////////////////////////////////////////////// - template - inline bool - tokenize_and_phrase_parse(Iterator& first, Iterator last - , Lexer const& lex, ParserExpr const& xpr, Skipper const& skipper - , BOOST_SCOPED_ENUM(skip_flag) post_skip = skip_flag::postskip) - { - // Report invalid expression error as early as possible. - // If you got an error_invalid_expression error message here, - // then the expression (expr) is not a valid spirit qi expression. - BOOST_SPIRIT_ASSERT_MATCH(qi::domain, ParserExpr); - BOOST_SPIRIT_ASSERT_MATCH(qi::domain, Skipper); - - typedef - typename spirit::result_of::compile::type - skipper_type; - skipper_type const skipper_ = compile(skipper); - - typename Lexer::iterator_type iter = lex.begin(first, last); - typename Lexer::iterator_type end = lex.end(); - if (!compile(xpr).parse( - iter, end, unused, skipper_, unused)) - return false; - - // do a final post-skip - if (post_skip == skip_flag::postskip) - qi::skip_over(iter, end, skipper_); - return true; - } - - template - inline bool - tokenize_and_phrase_parse(Iterator& first, Iterator last - , Lexer const& lex, ParserExpr const& xpr, Skipper const& skipper - , BOOST_SCOPED_ENUM(skip_flag) post_skip, Attribute& attr) - { - // Report invalid expression error as early as possible. - // If you got an error_invalid_expression error message here, - // then the expression (expr) is not a valid spirit qi expression. - BOOST_SPIRIT_ASSERT_MATCH(qi::domain, ParserExpr); - BOOST_SPIRIT_ASSERT_MATCH(qi::domain, Skipper); - - typedef - typename spirit::result_of::compile::type - skipper_type; - skipper_type const skipper_ = compile(skipper); - - typename Lexer::iterator_type iter = lex.begin(first, last); - typename Lexer::iterator_type end = lex.end(); - if (!compile(xpr).parse( - iter, end, unused, skipper_, attr)) - return false; - - // do a final post-skip - if (post_skip == skip_flag::postskip) - qi::skip_over(iter, end, skipper_); - return true; - } - - /////////////////////////////////////////////////////////////////////////// - template - inline bool - tokenize_and_phrase_parse(Iterator& first, Iterator last - , Lexer const& lex, ParserExpr const& xpr, Skipper const& skipper - , Attribute& attr) - { - return tokenize_and_phrase_parse(first, last, lex, xpr, skipper - , skip_flag::postskip, attr); - } - - /////////////////////////////////////////////////////////////////////////// - // - // The tokenize() function is one of the main Spirit API functions. It - // simplifies using a lexer to tokenize a given input sequence. It's main - // purpose is to use the lexer to tokenize all the input. - // - // The second version below discards all generated tokens afterwards. - // This is useful whenever all the needed functionality has been - // implemented directly inside the lexer semantic actions, which are being - // executed while the tokens are matched. - // - // The function takes a pair of iterators spanning the underlying input - // stream to scan, the lexer object (built from the token definitions), - // and a (optional) functor being called for each of the generated tokens. - // - // The function returns true if the scanning of the input succeeded (the - // given input sequence has been successfully matched by the given token - // definitions). - // - // first, last: The pair of iterators spanning the underlying input - // sequence to parse. These iterators must at least - // conform to the requirements of the std::intput_iterator - // category. - // On exit the iterator 'first' will be updated to the - // position right after the last successfully matched - // token. - // lex: The lexer object (encoding the token definitions) to be - // used to convert the input sequence into a sequence of - // tokens. The LexerExpr type must conform to the - // lexer interface described in the corresponding section - // of the documentation. - // f: A functor (callable object) taking a single argument of - // the token type and returning a bool, indicating whether - // the tokenization should be canceled. - // initial_state: The name of the state the lexer should start matching. - // The default value is zero, causing the lexer to start - // in its 'INITIAL' state. - // - /////////////////////////////////////////////////////////////////////////// - namespace detail - { - template - bool tokenize_callback(Token const& t, F f) - { - return f(t); - } - - template - bool tokenize_callback(Token const& t, phoenix::actor const& f) - { - f(t); - return true; - } - - template - bool tokenize_callback(Token const& t, void (*f)(Token const&)) - { - f(t); - return true; - } - - template - bool tokenize_callback(Token const& t, bool (*f)(Token const&)) - { - return f(t); - } - } - - template - inline bool - tokenize(Iterator& first, Iterator last, Lexer const& lex, F f - , typename Lexer::char_type const* initial_state = 0) - { - typedef typename Lexer::iterator_type iterator_type; - - iterator_type iter = lex.begin(first, last, initial_state); - iterator_type end = lex.end(); - for (/**/; iter != end && token_is_valid(*iter); ++iter) - { - if (!detail::tokenize_callback(*iter, f)) - return false; - } - return (iter == end) ? true : false; - } - - /////////////////////////////////////////////////////////////////////////// - template - inline bool - tokenize(Iterator& first, Iterator last, Lexer const& lex - , typename Lexer::char_type const* initial_state = 0) - { - typedef typename Lexer::iterator_type iterator_type; - - iterator_type iter = lex.begin(first, last, initial_state); - iterator_type end = lex.end(); - - while (iter != end && token_is_valid(*iter)) - ++iter; - - return (iter == end) ? true : false; - } - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/lex/tokenize_and_parse_attr.hpp b/framework/contrib/boost/include/boost/spirit/home/lex/tokenize_and_parse_attr.hpp deleted file mode 100644 index 163dfff6a613..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/lex/tokenize_and_parse_attr.hpp +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright (c) 2001-2011 Hartmut Kaiser -// Copyright (c) 2001-2011 Joel de Guzman -// Copyright (c) 2009 Carl Barron -// -// 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_PP_IS_ITERATING) - -#if !defined(BOOST_SPIRIT_LEXER_PARSE_ATTR_MAY_27_2009_0926AM) -#define BOOST_SPIRIT_LEXER_PARSE_ATTR_MAY_27_2009_0926AM - -#include - -#include -#include -#include -#include -#include -#include - -#define BOOST_PP_FILENAME_1 -#define BOOST_PP_ITERATION_LIMITS (2, SPIRIT_ARGUMENTS_LIMIT) -#include BOOST_PP_ITERATE() - -#endif - -/////////////////////////////////////////////////////////////////////////////// -// -// Preprocessor vertical repetition code -// -/////////////////////////////////////////////////////////////////////////////// -#else // defined(BOOST_PP_IS_ITERATING) - -#define N BOOST_PP_ITERATION() -#define BOOST_SPIRIT_QI_ATTRIBUTE_REFERENCE(z, n, A) BOOST_PP_CAT(A, n)& - -namespace boost { namespace spirit { namespace lex -{ - template - inline bool - tokenize_and_parse(Iterator& first, Iterator last, Lexer const& lex - , ParserExpr const& expr, BOOST_PP_ENUM_BINARY_PARAMS(N, A, & attr)) - { - // Report invalid expression error as early as possible. - // If you got an error_invalid_expression error message here, - // then the expression (expr) is not a valid spirit qi expression. - BOOST_SPIRIT_ASSERT_MATCH(qi::domain, ParserExpr); - - typedef fusion::vector< - BOOST_PP_ENUM(N, BOOST_SPIRIT_QI_ATTRIBUTE_REFERENCE, A) - > vector_type; - - vector_type attr (BOOST_PP_ENUM_PARAMS(N, attr)); - typename Lexer::iterator_type iter = lex.begin(first, last); - return compile(expr).parse( - iter, lex.end(), unused, unused, attr); - } -}}} - -#undef BOOST_SPIRIT_QI_ATTRIBUTE_REFERENCE -#undef N - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/qi.hpp b/framework/contrib/boost/include/boost/spirit/home/qi.hpp deleted file mode 100644 index e593d52e6133..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi.hpp +++ /dev/null @@ -1,32 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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_QI_MARCH_04_2007_0852PM) -#define BOOST_SPIRIT_QI_MARCH_04_2007_0852PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/action.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/action.hpp deleted file mode 100644 index 5819a51a69ab..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/action.hpp +++ /dev/null @@ -1,16 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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) -==============================================================================*/ -#ifndef BOOST_SPIRIT_QI_ACTION_HPP -#define BOOST_SPIRIT_QI_ACTION_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/action/action.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/action/action.hpp deleted file mode 100644 index f91ed9624181..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/action/action.hpp +++ /dev/null @@ -1,191 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_QI_ACTION_ACTION_HPP -#define BOOST_SPIRIT_QI_ACTION_ACTION_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace qi -{ - BOOST_PP_REPEAT(SPIRIT_ARGUMENTS_LIMIT, SPIRIT_USING_ARGUMENT, _) - - template - struct action : unary_parser > - { - typedef Subject subject_type; - typedef Action action_type; - - template - struct attribute - : traits::attribute_of - {}; - - action(Subject const& subject_, Action f_) - : subject(subject_), f(f_) {} - -#ifndef BOOST_SPIRIT_ACTIONS_ALLOW_ATTR_COMPAT - template - bool parse(Iterator& first, Iterator const& last - , Context& context, Skipper const& skipper - , Attribute& attr_) const - { - typedef typename attribute::type attr_type; - - // create an attribute if one is not supplied - typedef traits::transform_attribute< - Attribute, attr_type, domain> transform; - - typename transform::type attr = transform::pre(attr_); - - Iterator save = first; - if (subject.parse(first, last, context, skipper, attr)) - { - // call the function, passing the attribute, the context. - // The client can return false to fail parsing. - if (traits::action_dispatch()(f, attr, context)) - { - // Do up-stream transformation, this integrates the results - // back into the original attribute value, if appropriate. - transform::post(attr_, attr); - return true; - } - - // reset iterators if semantic action failed the match - // retrospectively - first = save; - } - return false; - } -#else - template - bool parse(Iterator& first, Iterator const& last - , Context& context, Skipper const& skipper - , Attribute& attr) const - { - Iterator save = first; - if (subject.parse(first, last, context, skipper, attr)) // Use the attribute as-is - { - // call the function, passing the attribute, the context. - // The client can return false to fail parsing. - if (traits::action_dispatch()(f, attr, context)) - return true; - - // reset iterators if semantic action failed the match - // retrospectively - first = save; - } - return false; - } - - template - bool parse(Iterator& first, Iterator const& last - , Context& context, Skipper const& skipper - , unused_type) const - { - typedef typename attribute::type attr_type; - - // synthesize the attribute since one is not supplied - attr_type attr = attr_type(); - - Iterator save = first; - if (subject.parse(first, last, context, skipper, attr)) - { - // call the function, passing the attribute, the context. - // The client can return false to fail parsing. - if (traits::action_dispatch()(f, attr, context)) - return true; - - // reset iterators if semantic action failed the match - // retrospectively - first = save; - } - return false; - } -#endif - - template - info what(Context& context) const - { - // the action is transparent (does not add any info) - return subject.what(context); - } - - Subject subject; - Action f; - }; -}}} - -namespace boost { namespace spirit -{ - // Qi action meta-compiler - template <> - struct make_component - { - template - struct result; - - template - struct result - { - typedef typename - remove_const::type - subject_type; - - typedef typename - remove_const::type - action_type; - - typedef qi::action type; - }; - - template - typename result::type - operator()(Elements const& elements, unused_type) const - { - typename result::type - result(elements.car, elements.cdr.car); - return result; - } - }; -}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct has_semantic_action > - : mpl::true_ {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container, Attribute - , Context, Iterator> - : unary_handles_container {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/auto.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/auto.hpp deleted file mode 100644 index afc7667b8fde..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/auto.hpp +++ /dev/null @@ -1,18 +0,0 @@ -/*============================================================================= - 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_AUTO_NOV_29_2009_0335PM) -#define BOOST_SPIRIT_AUTO_NOV_29_2009_0335PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/auto/auto.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/auto/auto.hpp deleted file mode 100644 index 59d1ab3825ce..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/auto/auto.hpp +++ /dev/null @@ -1,90 +0,0 @@ -// 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_QI_AUTO_NOV_29_2009_0336PM) -#define BOOST_SPIRIT_QI_AUTO_NOV_29_2009_0336PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_terminal // enables auto_ - : mpl::true_ {}; -}} - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace qi -{ -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using spirit::auto_; -#endif - using spirit::auto_type; - - /////////////////////////////////////////////////////////////////////////// - template - struct auto_parser - : parser > - { - template - struct attribute - { - typedef spirit::hold_any type; - }; - - auto_parser(Modifiers const& modifiers) - : modifiers_(modifiers) {} - - template - bool parse(Iterator& first, Iterator const& last - , Context& context, Skipper const& skipper, Attribute& attr) const - { - return compile(create_parser(), modifiers_) - .parse(first, last, context, skipper, attr); - } - - template - info what(Context& /*context*/) const - { - return info("auto_"); - } - - Modifiers modifiers_; - }; - - /////////////////////////////////////////////////////////////////////////// - // Generator generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_primitive - { - typedef auto_parser result_type; - - result_type operator()(unused_type, Modifiers const& modifiers) const - { - return result_type(modifiers); - } - }; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/auto/create_parser.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/auto/create_parser.hpp deleted file mode 100644 index bca492f71385..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/auto/create_parser.hpp +++ /dev/null @@ -1,45 +0,0 @@ -// 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_QI_CREATE_NOV_21_2009_0444PM) -#define BOOST_SPIRIT_QI_CREATE_NOV_21_2009_0444PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace result_of -{ - template - struct create_parser - : spirit::traits::meta_create {}; -}}} - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace qi -{ - // Main API function for parser creation from data type - template - typename result_of::create_parser::type - create_parser() - { - return spirit::traits::meta_create::call(); - } -}}} - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace traits -{ - // Meta function returning true if create_parser does return a valid - // parser for the given type T. - template - struct create_parser_exists - : meta_create_exists {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/auto/meta_create.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/auto/meta_create.hpp deleted file mode 100644 index bd932b79f3d3..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/auto/meta_create.hpp +++ /dev/null @@ -1,275 +0,0 @@ -// 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_QI_META_CREATE_NOV_21_2009_0432PM) -#define BOOST_SPIRIT_QI_META_CREATE_NOV_21_2009_0432PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace qi -{ - /////////////////////////////////////////////////////////////////////////// - // compatible STL containers - template - struct meta_create_container - { - typedef make_unary_proto_expr< - typename Container::value_type - , proto::tag::dereference, qi::domain - > make_proto_expr; - - typedef typename make_proto_expr::type type; - - static type call() - { - return make_proto_expr::call(); - } - }; - - /////////////////////////////////////////////////////////////////////////// - // Fusion sequences - template - struct meta_create_sequence - { - // create a mpl sequence from the given fusion sequence - typedef typename mpl::fold< - typename fusion::result_of::as_vector::type - , mpl::vector<>, mpl::push_back - >::type sequence_type; - - typedef make_nary_proto_expr< - sequence_type, proto::tag::shift_right, qi::domain - > make_proto_expr; - - typedef typename make_proto_expr::type type; - - static type call() - { - return make_proto_expr::call(); - } - }; - - /////////////////////////////////////////////////////////////////////////// - // the default is to use the standard streaming operator unless it's a - // STL container or a fusion sequence - - // The default implementation will be chosen if no predefined mapping of - // the data type T to a Qi component is defined. - struct no_auto_mapping_exists {}; - - template - struct meta_create_impl : mpl::identity {}; - - template - struct meta_create_impl, mpl::not_ > > - >::type> - : meta_create_container {}; - - template - struct meta_create_impl - >::type> - : meta_create_sequence {}; - - template - struct meta_create : meta_create_impl {}; - - /////////////////////////////////////////////////////////////////////////// - // optional - template - struct meta_create > - { - typedef make_unary_proto_expr< - T, proto::tag::negate, qi::domain - > make_proto_expr; - - typedef typename make_proto_expr::type type; - - static type call() - { - return make_proto_expr::call(); - } - }; - - /////////////////////////////////////////////////////////////////////////// - // alternatives - template - struct meta_create > - { - typedef make_nary_proto_expr< - typename boost::variant::types - , proto::tag::bitwise_or, qi::domain - > make_proto_expr; - - typedef typename make_proto_expr::type type; - - static type call() - { - return make_proto_expr::call(); - } - }; - - /////////////////////////////////////////////////////////////////////////// - // predefined specializations for primitive components - - // character generator - template <> - struct meta_create - { - typedef spirit::standard::char_type type; - static type call() { return type(); } - }; - template <> - struct meta_create - { - typedef spirit::standard::char_type type; - static type call() { return type(); } - }; - template <> - struct meta_create - { - typedef spirit::standard_wide::char_type type; - static type call() { return type(); } - }; - - template <> - struct meta_create - { - typedef spirit::standard::char_type type; - static type call() { return type(); } - }; - - // boolean generator - template <> - struct meta_create - { - typedef spirit::bool_type type; - static type call() { return type(); } - }; - - // integral generators - template <> - struct meta_create - { - typedef spirit::int_type type; - static type call() { return type(); } - }; - template <> - struct meta_create - { - typedef spirit::short_type type; - static type call() { return type(); } - }; - template <> - struct meta_create - { - typedef spirit::long_type type; - static type call() { return type(); } - }; - template <> - struct meta_create - { - typedef spirit::uint_type type; - static type call() { return type(); } - }; -#if !defined(BOOST_NO_INTRINSIC_WCHAR_T) - template <> - struct meta_create - { - typedef spirit::ushort_type type; - static type call() { return type(); } - }; -#endif - template <> - struct meta_create - { - typedef spirit::ulong_type type; - static type call() { return type(); } - }; - -#ifdef BOOST_HAS_LONG_LONG - template <> - struct meta_create - { - typedef spirit::long_long_type type; - static type call() { return type(); } - }; - template <> - struct meta_create - { - typedef spirit::ulong_long_type type; - static type call() { return type(); } - }; -#endif - - // floating point generators - template <> - struct meta_create - { - typedef spirit::float_type type; - static type call() { return type(); } - }; - template <> - struct meta_create - { - typedef spirit::double_type type; - static type call() { return type(); } - }; - template <> - struct meta_create - { - typedef spirit::long_double_type type; - static type call() { return type(); } - }; -}}} - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - // main customization point for create_parser - template - struct create_parser : qi::meta_create {}; - - /////////////////////////////////////////////////////////////////////////// - // dispatch this to the Qi related specializations - template - struct meta_create - : create_parser::type> {}; - - /////////////////////////////////////////////////////////////////////////// - // Check whether a valid mapping exits for the given data type to a Qi - // component - template - struct meta_create_exists - : mpl::not_::type - > > {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/auxiliary.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/auxiliary.hpp deleted file mode 100644 index 0f972b58c093..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/auxiliary.hpp +++ /dev/null @@ -1,22 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - 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_AUXILIARY_FEBRUARY_03_2007_0355PM) -#define BOOST_SPIRIT_AUXILIARY_FEBRUARY_03_2007_0355PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/auxiliary/attr.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/auxiliary/attr.hpp deleted file mode 100644 index 2598f1e71985..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/auxiliary/attr.hpp +++ /dev/null @@ -1,106 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Hartmut Kaiser - Copyright (c) 2001-2011 Joel de Guzman - - 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_ATTR_JUL_23_2008_0956AM) -#define BOOST_SPIRIT_ATTR_JUL_23_2008_0956AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template // enables attr() - struct use_terminal< - qi::domain, terminal_ex > > - : mpl::true_ {}; - - template <> // enables *lazy* attr() - struct use_lazy_terminal - : mpl::true_ {}; - -}} - -namespace boost { namespace spirit { namespace qi -{ -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using spirit::attr; -#endif - using spirit::attr_type; - - template - struct attr_parser : primitive_parser > - { - template - struct attribute : remove_const {}; - - attr_parser(typename add_reference::type value) - : value_(value) {} - - template - bool parse(Iterator& /*first*/, Iterator const& /*last*/ - , Context& /*context*/, Skipper const& /*skipper*/ - , Attribute& attr_) const - { - spirit::traits::assign_to(value_, attr_); - return true; // never consume any input, succeed always - } - - template - info what(Context& /*context*/) const - { - return info("attr"); - } - - Value value_; - }; - - /////////////////////////////////////////////////////////////////////////// - // Parser generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_primitive< - terminal_ex > - , Modifiers> - { - typedef typename add_const::type const_value; - typedef attr_parser result_type; - - template - result_type operator()(Terminal const& term, unused_type) const - { - return result_type(fusion::at_c<0>(term.args)); - } - }; -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container, Attr, Context, Iterator> - : traits::is_container {}; -}}} - -#endif - - diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/auxiliary/attr_cast.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/auxiliary/attr_cast.hpp deleted file mode 100644 index ebd6fd38d7ee..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/auxiliary/attr_cast.hpp +++ /dev/null @@ -1,141 +0,0 @@ -// 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) - -#ifndef BOOST_SPIRIT_QI_AUXILIARY_ATTR_CAST_HPP -#define BOOST_SPIRIT_QI_AUXILIARY_ATTR_CAST_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - - // enables attr_cast<>() pseudo parser - template - struct use_terminal > - : mpl::true_ {}; -}} - -namespace boost { namespace spirit { namespace qi -{ - using spirit::attr_cast; - - /////////////////////////////////////////////////////////////////////////// - // attr_cast_parser consumes the attribute of subject generator without - // generating anything - /////////////////////////////////////////////////////////////////////////// - template - struct attr_cast_parser - : unary_parser > - { - typedef typename result_of::compile::type - subject_type; - - typedef typename mpl::eval_if< - traits::not_is_unused - , mpl::identity - , traits::attribute_of >::type - transformed_attribute_type; - - attr_cast_parser(Subject const& subject_) - : subject(subject_) - { - // If you got an error_invalid_expression error message here, - // then the expression (Subject) is not a valid spirit qi - // expression. - BOOST_SPIRIT_ASSERT_MATCH(qi::domain, Subject); - } - - // If Exposed is given, we use the given type, otherwise all we can do - // is to guess, so we expose our inner type as an attribute and - // deal with the passed attribute inside the parse function. - template - struct attribute - : mpl::if_, Exposed - , transformed_attribute_type> - {}; - - template - bool parse(Iterator& first, Iterator const& last - , Context& context, Skipper const& skipper - , Attribute& attr_param) const - { - // Find the real exposed attribute. If exposed is given, we use it - // otherwise we assume the exposed attribute type to be the actual - // attribute type as passed by the user. - typedef typename mpl::if_< - traits::not_is_unused, Exposed, Attribute>::type - exposed_attribute_type; - - // do down-stream transformation, provides attribute for embedded - // parser - typedef traits::transform_attribute< - exposed_attribute_type, transformed_attribute_type, domain> - transform; - - typename transform::type attr_ = transform::pre(attr_param); - - if (!compile(subject). - parse(first, last, context, skipper, attr_)) - { - transform::fail(attr_param); - return false; - } - - // do up-stream transformation, this mainly integrates the results - // back into the original attribute value, if appropriate - transform::post(attr_param, attr_); - return true; - } - - template - info what(Context& context) const - { - return info("attr_cast" - , compile(subject).what(context)); - } - - Subject subject; - }; - - /////////////////////////////////////////////////////////////////////////// - // Parser generator: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_primitive< - tag::stateful_tag, Modifiers> - { - typedef attr_cast_parser result_type; - - template - result_type operator()(Terminal const& term, unused_type) const - { - typedef tag::stateful_tag< - Expr, tag::attr_cast, Exposed, Transformed> tag_type; - using spirit::detail::get_stateful_data; - return result_type(get_stateful_data::call(term)); - } - }; - - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/auxiliary/eoi.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/auxiliary/eoi.hpp deleted file mode 100644 index a1dffd484e5a..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/auxiliary/eoi.hpp +++ /dev/null @@ -1,80 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Hartmut Kaiser - Copyright (c) 2001-2011 Joel de Guzman - - 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_EOI_APRIL_18_2008_0751PM) -#define BOOST_SPIRIT_EOI_APRIL_18_2008_0751PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_terminal // enables eoi - : mpl::true_ {}; -}} - -namespace boost { namespace spirit { namespace qi -{ -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using spirit::eoi; -#endif - using spirit::eoi_type; - - struct eoi_parser : primitive_parser - { - template - struct attribute - { - typedef unused_type type; - }; - - template - bool parse(Iterator& first, Iterator const& last - , Context& /*context*/, Skipper const& skipper - , Attribute& /*attr*/) const - { - qi::skip_over(first, last, skipper); - return first == last; - } - - template - info what(Context& /*context*/) const - { - return info("eoi"); - } - }; - - /////////////////////////////////////////////////////////////////////////// - // Parser generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_primitive - { - typedef eoi_parser result_type; - result_type operator()(unused_type, unused_type) const - { - return result_type(); - } - }; -}}} - -#endif - - diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/auxiliary/eol.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/auxiliary/eol.hpp deleted file mode 100644 index 4564c9c49ea7..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/auxiliary/eol.hpp +++ /dev/null @@ -1,98 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Hartmut Kaiser - Copyright (c) 2001-2011 Joel de Guzman - - 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_EOL_APRIL_18_2008_0751PM) -#define BOOST_SPIRIT_EOL_APRIL_18_2008_0751PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_terminal // enables eol - : mpl::true_ {}; -}} - -namespace boost { namespace spirit { namespace qi -{ -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using spirit::eol; -#endif - using spirit::eol_type; - - struct eol_parser : primitive_parser - { - template - struct attribute - { - typedef unused_type type; - }; - - template - bool parse(Iterator& first, Iterator const& last - , Context& /*context*/, Skipper const& skipper - , Attribute& /*attr*/) const - { - qi::skip_over(first, last, skipper); - - Iterator it = first; - bool matched = false; - if (it != last && *it == '\r') // CR - { - matched = true; - ++it; - } - if (it != last && *it == '\n') // LF - { - matched = true; - ++it; - } - - if (!matched) - return false; - - first = it; - return true; - } - - template - info what(Context& /*context*/) const - { - return info("eol"); - } - }; - - /////////////////////////////////////////////////////////////////////////// - // Parser generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_primitive - { - typedef eol_parser result_type; - result_type operator()(unused_type, unused_type) const - { - return result_type(); - } - }; -}}} - -#endif - - diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/auxiliary/eps.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/auxiliary/eps.hpp deleted file mode 100644 index 4ba6aa4cc446..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/auxiliary/eps.hpp +++ /dev/null @@ -1,132 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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_EPS_MARCH_23_2007_0454PM) -#define BOOST_SPIRIT_EPS_MARCH_23_2007_0454PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_terminal // enables eps - : mpl::true_ {}; - - template - struct use_terminal > // enables eps(bool-condition) - > : is_convertible {}; - - template <> // enables eps(f) - struct use_lazy_terminal< - qi::domain, tag::eps, 1 /*arity*/ - > : mpl::true_ {}; -}} - -namespace boost { namespace spirit { namespace qi -{ -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using spirit::eps; -#endif - using spirit::eps_type; - - struct eps_parser : primitive_parser - { - template - struct attribute - { - typedef unused_type type; - }; - - template - bool parse(Iterator& first, Iterator const& last - , Context& /*context*/, Skipper const& skipper - , Attribute& /*attr*/) const - { - qi::skip_over(first, last, skipper); - return true; - } - - template - info what(Context& /*context*/) const - { - return info("eps"); - } - }; - - struct semantic_predicate : primitive_parser - { - template - struct attribute - { - typedef unused_type type; - }; - - semantic_predicate(bool predicate_) - : predicate(predicate_) {} - - template - bool parse(Iterator& first, Iterator const& last - , Context& /*context*/, Skipper const& skipper - , Attribute& /*attr*/) const - { - qi::skip_over(first, last, skipper); - return predicate; - } - - template - info what(Context& /*context*/) const - { - return info("semantic-predicate"); - } - - bool predicate; - }; - - /////////////////////////////////////////////////////////////////////////// - // Parser generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_primitive - { - typedef eps_parser result_type; - result_type operator()(unused_type, unused_type) const - { - return result_type(); - } - }; - - template - struct make_primitive< - terminal_ex > - , Modifiers> - { - typedef semantic_predicate result_type; - template - result_type operator()(Terminal const& term, unused_type) const - { - return result_type(fusion::at_c<0>(term.args) ? true : false); - } - }; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/auxiliary/lazy.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/auxiliary/lazy.hpp deleted file mode 100644 index d0f2f687f223..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/auxiliary/lazy.hpp +++ /dev/null @@ -1,294 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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_LAZY_MARCH_27_2007_1002AM) -#define BOOST_SPIRIT_LAZY_MARCH_27_2007_1002AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace phoenix -{ - template - struct actor; -}} - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template - struct use_terminal > // enables phoenix actors - : mpl::true_ {}; - - // forward declaration - template - struct lazy_terminal; -}} - -namespace boost { namespace spirit { namespace qi -{ - using spirit::lazy; - typedef modify qi_modify; - - namespace detail - { - template - bool lazy_parse_impl(Parser const& p - , Iterator& first, Iterator const& last - , Context& context, Skipper const& skipper - , Attribute& attr, mpl::false_) - { - return p.parse(first, last, context, skipper, attr); - } - - template - bool lazy_parse_impl(Parser const& p - , Iterator& first, Iterator const& last - , Context& context, Skipper const& skipper - , Attribute& /*attr*/, mpl::true_) - { - // If DeducedAuto is false (semantic actions is present), the - // component's attribute is unused. - return p.parse(first, last, context, skipper, unused); - } - - template - bool lazy_parse_impl_main(Parser const& p - , Iterator& first, Iterator const& last - , Context& context, Skipper const& skipper - , Attribute& attr) - { - // If DeducedAuto is true (no semantic action), we pass the parser's - // attribute on to the component. - typedef typename traits::has_semantic_action::type auto_rule; - return lazy_parse_impl(p, first, last, context, skipper, attr, auto_rule()); - } - } - - template - struct lazy_parser : parser > - { - template - struct attribute - { - typedef typename - boost::result_of::type - modifier; - - typedef typename - remove_reference< - typename boost::result_of::type - >::type - expr_type; - - // If you got an error_invalid_expression error message here, - // then the expression (expr_type) is not a valid spirit qi - // expression. - BOOST_SPIRIT_ASSERT_MATCH(qi::domain, expr_type); - - typedef typename - result_of::compile::type - parser_type; - - typedef typename - traits::attribute_of::type - type; - }; - - lazy_parser(Function const& function_, Modifiers const& modifiers_) - : function(function_), modifiers(modifiers_) {} - - template - bool parse(Iterator& first, Iterator const& last - , Context& context, Skipper const& skipper - , Attribute& attr) const - { - return detail::lazy_parse_impl_main( - compile(function(unused, context) - , qi_modify()(tag::lazy_eval(), modifiers)) - , first, last, context, skipper, attr); - } - - template - info what(Context& context) const - { - return info("lazy" - , compile(function(unused, context) - , qi_modify()(tag::lazy_eval(), modifiers)) - .what(context) - ); - } - - Function function; - Modifiers modifiers; - }; - - - template - struct lazy_directive - : unary_parser > - { - typedef Subject subject_type; - - template - struct attribute - { - typedef typename - boost::result_of::type - modifier; - - typedef typename - remove_reference< - typename boost::result_of::type - >::type - directive_expr_type; - - typedef typename - proto::result_of::make_expr< - proto::tag::subscript - , directive_expr_type - , Subject - >::type - expr_type; - - // If you got an error_invalid_expression error message here, - // then the expression (expr_type) is not a valid spirit qi - // expression. - BOOST_SPIRIT_ASSERT_MATCH(qi::domain, expr_type); - - typedef typename - result_of::compile::type - parser_type; - - typedef typename - traits::attribute_of::type - type; - }; - - lazy_directive( - Function const& function_ - , Subject const& subject_ - , Modifiers const& modifiers_) - : function(function_), subject(subject_), modifiers(modifiers_) {} - - template - bool parse(Iterator& first, Iterator const& last - , Context& context, Skipper const& skipper - , Attribute& attr) const - { - return detail::lazy_parse_impl_main(compile( - proto::make_expr( - function(unused, context) - , subject) - , qi_modify()(tag::lazy_eval(), modifiers)) - , first, last, context, skipper, attr); - } - - template - info what(Context& context) const - { - return info("lazy-directive" - , compile( - proto::make_expr( - function(unused, context) - , subject - ), qi_modify()(tag::lazy_eval(), modifiers)) - .what(context) - ); - } - - Function function; - Subject subject; - Modifiers modifiers; - }; - - /////////////////////////////////////////////////////////////////////////// - // Parser generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_primitive, Modifiers> - { - typedef lazy_parser, Modifiers> result_type; - result_type operator()(phoenix::actor const& f - , Modifiers const& modifiers) const - { - return result_type(f, modifiers); - } - }; - - template - struct make_primitive, Modifiers> - { - typedef lazy_parser result_type; - result_type operator()( - lazy_terminal const& lt - , Modifiers const& modifiers) const - { - return result_type(lt.actor, modifiers); - } - }; - - template - struct make_directive, Subject, Modifiers> - { - typedef lazy_directive result_type; - result_type operator()( - lazy_terminal const& lt - , Subject const& subject, Modifiers const& modifiers) const - { - return result_type(lt.actor, subject, modifiers); - } - }; -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container< - qi::lazy_parser, Attribute, Context, Iterator> - : handles_container< - typename qi::lazy_parser::template - attribute::parser_type - , Attribute, Context, Iterator> - {}; - - template - struct handles_container< - qi::lazy_directive, Attribute - , Context, Iterator> - : handles_container< - typename qi::lazy_directive::template - attribute::parser_type - , Attribute, Context, Iterator> - {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/binary.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/binary.hpp deleted file mode 100644 index f930a6025bc0..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/binary.hpp +++ /dev/null @@ -1,16 +0,0 @@ -/*============================================================================= - 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_BINARY_MAY_08_2007_0906AM) -#define BOOST_SPIRIT_BINARY_MAY_08_2007_0906AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/binary/binary.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/binary/binary.hpp deleted file mode 100644 index 6a935ccd208e..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/binary/binary.hpp +++ /dev/null @@ -1,400 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Hartmut Kaiser - Copyright (c) 2001-2011 Joel de Guzman - - 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_BINARY_MAY_08_2007_0808AM) -#define BOOST_SPIRIT_BINARY_MAY_08_2007_0808AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define BOOST_SPIRIT_ENABLE_BINARY(name) \ - template <> \ - struct use_terminal \ - : mpl::true_ {}; \ - \ - template \ - struct use_terminal > > \ - : mpl::or_, is_enum > {}; \ - \ - template <> \ - struct use_lazy_terminal : mpl::true_ {}; \ - \ -/***/ - -#define BOOST_SPIRIT_ENABLE_BINARY_IEEE754(name) \ - template<> \ - struct use_terminal: mpl::true_ {}; \ - \ - template \ - struct use_terminal > >: is_floating_point {}; \ - \ - template<> \ - struct use_lazy_terminal: mpl::true_ {}; \ - \ -/***/ - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - BOOST_SPIRIT_ENABLE_BINARY(byte_) // enables byte_ - BOOST_SPIRIT_ENABLE_BINARY(word) // enables word - BOOST_SPIRIT_ENABLE_BINARY(big_word) // enables big_word - BOOST_SPIRIT_ENABLE_BINARY(little_word) // enables little_word - BOOST_SPIRIT_ENABLE_BINARY(dword) // enables dword - BOOST_SPIRIT_ENABLE_BINARY(big_dword) // enables big_dword - BOOST_SPIRIT_ENABLE_BINARY(little_dword) // enables little_dword -#ifdef BOOST_HAS_LONG_LONG - BOOST_SPIRIT_ENABLE_BINARY(qword) // enables qword - BOOST_SPIRIT_ENABLE_BINARY(big_qword) // enables big_qword - BOOST_SPIRIT_ENABLE_BINARY(little_qword) // enables little_qword -#endif - BOOST_SPIRIT_ENABLE_BINARY_IEEE754(bin_float) - BOOST_SPIRIT_ENABLE_BINARY_IEEE754(big_bin_float) - BOOST_SPIRIT_ENABLE_BINARY_IEEE754(little_bin_float) - BOOST_SPIRIT_ENABLE_BINARY_IEEE754(bin_double) - BOOST_SPIRIT_ENABLE_BINARY_IEEE754(big_bin_double) - BOOST_SPIRIT_ENABLE_BINARY_IEEE754(little_bin_double) -}} - -#undef BOOST_SPIRIT_ENABLE_BINARY -#undef BOOST_SPIRIT_ENABLE_BINARY_IEEE754 - -namespace boost { namespace spirit { namespace qi -{ -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using boost::spirit::byte_; - using boost::spirit::word; - using boost::spirit::big_word; - using boost::spirit::little_word; - using boost::spirit::dword; - using boost::spirit::big_dword; - using boost::spirit::little_dword; -#ifdef BOOST_HAS_LONG_LONG - using boost::spirit::qword; - using boost::spirit::big_qword; - using boost::spirit::little_qword; -#endif - using boost::spirit::bin_float; - using boost::spirit::big_bin_float; - using boost::spirit::little_bin_float; - using boost::spirit::bin_double; - using boost::spirit::big_bin_double; - using boost::spirit::little_bin_double; -#endif - - using boost::spirit::byte_type; - using boost::spirit::word_type; - using boost::spirit::big_word_type; - using boost::spirit::little_word_type; - using boost::spirit::dword_type; - using boost::spirit::big_dword_type; - using boost::spirit::little_dword_type; -#ifdef BOOST_HAS_LONG_LONG - using boost::spirit::qword_type; - using boost::spirit::big_qword_type; - using boost::spirit::little_qword_type; -#endif - using boost::spirit::bin_float_type; - using boost::spirit::big_bin_float_type; - using boost::spirit::little_bin_float_type; - using boost::spirit::bin_double_type; - using boost::spirit::big_bin_double_type; - using boost::spirit::little_bin_double_type; - - namespace detail - { - template - struct integer - { -#ifdef BOOST_HAS_LONG_LONG - BOOST_SPIRIT_ASSERT_MSG( - bits == 8 || bits == 16 || bits == 32 || bits == 64, - not_supported_binary_size, ()); -#else - BOOST_SPIRIT_ASSERT_MSG( - bits == 8 || bits == 16 || bits == 32, - not_supported_binary_size, ()); -#endif - }; - - template <> - struct integer<8> - { - enum { size = 1 }; - typedef uint_least8_t type; - }; - - template <> - struct integer<16> - { - enum { size = 2 }; - typedef uint_least16_t type; - }; - - template <> - struct integer<32> - { - enum { size = 4 }; - typedef uint_least32_t type; - }; - -#ifdef BOOST_HAS_LONG_LONG - template <> - struct integer<64> - { - enum { size = 8 }; - typedef uint_least64_t type; - }; -#endif - - template - struct floating_point - { - BOOST_SPIRIT_ASSERT_MSG( - bits == 32 || bits == 64, - not_supported_binary_size, ()); - }; - - template <> - struct floating_point<32> - { - enum { size = 4 }; - typedef float type; - }; - - template <> - struct floating_point<64> - { - enum { size = 8 }; - typedef double type; - }; - - /////////////////////////////////////////////////////////////////////// - template - struct what; - - template <> - struct what - { - static char const* is() - { - return "little-endian binary"; - } - }; - - template <> - struct what - { - static char const* is() - { - return "big-endian binary"; - } - }; - } - - /////////////////////////////////////////////////////////////////////////// - template - struct any_binary_parser : primitive_parser > - { - template - struct attribute - { - typedef boost::endian::endian_arithmetic type; - }; - - template - bool parse(Iterator& first, Iterator const& last - , Context& /*context*/, Skipper const& skipper - , Attribute& attr_param) const - { - qi::skip_over(first, last, skipper); - - typename attribute::type attr_; - unsigned char* bytes = attr_.data(); - - Iterator it = first; - for (unsigned int i = 0; i < sizeof(attr_); ++i) - { - if (it == last) - return false; - *bytes++ = *it++; - } - - first = it; - spirit::traits::assign_to(attr_, attr_param); - return true; - } - - template - info what(Context& /*context*/) const - { - return info(qi::detail::what::is()); - } - }; - - /////////////////////////////////////////////////////////////////////////// - template - struct binary_lit_parser - : primitive_parser > - { - template - struct attribute - { - typedef unused_type type; - }; - - binary_lit_parser(V n_) - : n(n_) {} - - template - bool parse(Iterator& first, Iterator const& last - , Context& /*context*/, Skipper const& skipper - , Attribute& attr_param) const - { - qi::skip_over(first, last, skipper); - - boost::endian::endian_arithmetic attr_; - -#if defined(BOOST_MSVC) -// warning C4244: 'argument' : conversion from 'const int' to 'foo', possible loss of data -#pragma warning(push) -#pragma warning(disable: 4244) -#endif - attr_ = n; -#if defined(BOOST_MSVC) -#pragma warning(pop) -#endif - - unsigned char* bytes = attr_.data(); - - Iterator it = first; - for (unsigned int i = 0; i < sizeof(attr_); ++i) - { - if (it == last || *bytes++ != static_cast(*it++)) - return false; - } - - first = it; - spirit::traits::assign_to(attr_, attr_param); - return true; - } - - template - info what(Context& /*context*/) const - { - return info(qi::detail::what::is()); - } - - V n; - }; - - /////////////////////////////////////////////////////////////////////////// - // Parser generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_binary_parser - { - typedef any_binary_parser result_type; - result_type operator()(unused_type, unused_type) const - { - return result_type(); - } - }; - - template - struct make_binary_lit_parser - { - typedef binary_lit_parser result_type; - template - result_type operator()(Terminal const& term, unused_type) const - { - return result_type(fusion::at_c<0>(term.args)); - } - }; - -#define BOOST_SPIRIT_MAKE_BINARY_PRIMITIVE(name, endiantype, bits) \ - template \ - struct make_primitive \ - : make_binary_parser, \ - boost::endian::order::endiantype, bits> {}; \ - \ - template \ - struct make_primitive< \ - terminal_ex > , Modifiers> \ - : make_binary_lit_parser, \ - boost::endian::order::endiantype, bits> {}; \ - \ - /***/ - - BOOST_SPIRIT_MAKE_BINARY_PRIMITIVE(byte_, native, 8) - BOOST_SPIRIT_MAKE_BINARY_PRIMITIVE(word, native, 16) - BOOST_SPIRIT_MAKE_BINARY_PRIMITIVE(big_word, big, 16) - BOOST_SPIRIT_MAKE_BINARY_PRIMITIVE(little_word, little, 16) - BOOST_SPIRIT_MAKE_BINARY_PRIMITIVE(dword, native, 32) - BOOST_SPIRIT_MAKE_BINARY_PRIMITIVE(big_dword, big, 32) - BOOST_SPIRIT_MAKE_BINARY_PRIMITIVE(little_dword, little, 32) -#ifdef BOOST_HAS_LONG_LONG - BOOST_SPIRIT_MAKE_BINARY_PRIMITIVE(qword, native, 64) - BOOST_SPIRIT_MAKE_BINARY_PRIMITIVE(big_qword, big, 64) - BOOST_SPIRIT_MAKE_BINARY_PRIMITIVE(little_qword, little, 64) -#endif - -#undef BOOST_SPIRIT_MAKE_BINARY_PRIMITIVE - -#define BOOST_SPIRIT_MAKE_BINARY_IEEE754_PRIMITIVE(name, endiantype, bits) \ - template \ - struct make_primitive \ - : make_binary_parser, \ - boost::endian::order::endiantype, bits> {}; \ - \ - template \ - struct make_primitive< \ - terminal_ex >, Modifiers> \ - : make_binary_lit_parser, \ - boost::endian::order::endiantype, \ - bits> {}; \ - \ - /***/ - - BOOST_SPIRIT_MAKE_BINARY_IEEE754_PRIMITIVE(bin_float, native, 32) - BOOST_SPIRIT_MAKE_BINARY_IEEE754_PRIMITIVE(big_bin_float, big, 32) - BOOST_SPIRIT_MAKE_BINARY_IEEE754_PRIMITIVE(little_bin_float, little, 32) - BOOST_SPIRIT_MAKE_BINARY_IEEE754_PRIMITIVE(bin_double, native, 64) - BOOST_SPIRIT_MAKE_BINARY_IEEE754_PRIMITIVE(big_bin_double, big, 64) - BOOST_SPIRIT_MAKE_BINARY_IEEE754_PRIMITIVE(little_bin_double, little, 64) - -#undef BOOST_SPIRIT_MAKE_BINARY_IEEE754_PRIMITIVE - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/char.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/char.hpp deleted file mode 100644 index 66739db35405..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/char.hpp +++ /dev/null @@ -1,18 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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_CHAR_FEBRUARY_02_2007_0921AM) -#define BOOST_SPIRIT_CHAR_FEBRUARY_02_2007_0921AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/char/char.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/char/char.hpp deleted file mode 100644 index 8c22aaa77de6..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/char/char.hpp +++ /dev/null @@ -1,615 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - Copyright (c) 2001-2011 Hartmut Kaiser - Copyright (c) 2010 Bryce Lelbach - - 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_CHAR_APRIL_16_2006_1051AM) -#define BOOST_SPIRIT_CHAR_APRIL_16_2006_1051AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if defined(_MSC_VER) -#pragma once -#endif - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template - struct use_terminal // enables char_ - > - > : mpl::true_ {}; - - template - struct use_terminal // enables char_('x'), char_("x") - , fusion::vector1 // and char_("a-z0-9") - > - > : mpl::true_ {}; - - template - struct use_terminal // enables char_('a','z') - , fusion::vector2 - > - > : mpl::true_ {}; - - template // enables *lazy* char_('x'), char_("x") - struct use_lazy_terminal< // and char_("a-z0-9") - qi::domain - , tag::char_code - , 1 // arity - > : mpl::true_ {}; - - template // enables *lazy* char_('a','z') - struct use_lazy_terminal< - qi::domain - , tag::char_code - , 2 // arity - > : mpl::true_ {}; - - template <> - struct use_terminal // enables 'x' - : mpl::true_ {}; - - template <> - struct use_terminal // enables "x" - : mpl::true_ {}; - - template <> - struct use_terminal // enables wchar_t - : mpl::true_ {}; - - template <> - struct use_terminal // enables L"x" - : mpl::true_ {}; - - // enables lit(...) - template - struct use_terminal > - , typename enable_if >::type> - : mpl::true_ {}; -}} - -namespace boost { namespace spirit { namespace qi -{ -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using spirit::lit; // lit('x') is equivalent to 'x' -#endif - using spirit::lit_type; - - /////////////////////////////////////////////////////////////////////////// - // Parser for a single character - /////////////////////////////////////////////////////////////////////////// - template - struct literal_char - : char_parser< - literal_char - , typename CharEncoding::char_type - , typename mpl::if_c::type> - { - typedef typename CharEncoding::char_type char_type; - typedef CharEncoding char_encoding; - - template - literal_char(Char ch_) - : ch(static_cast(ch_)) {} - - template - struct attribute - { - typedef typename mpl::if_c< - no_attribute, unused_type, char_type>::type - type; - }; - - template - bool test(CharParam ch_, Context&) const - { - return traits::ischar::call(ch_) && - ch == char_type(ch_); - } - - template - info what(Context& /*context*/) const - { - return info("literal-char", char_encoding::toucs4(ch)); - } - - char_type ch; - }; - - template - struct literal_char // case insensitive - : char_parser< - literal_char - , typename mpl::if_c::type> - { - typedef typename CharEncoding::char_type char_type; - typedef CharEncoding char_encoding; - - literal_char(char_type ch) - : lo(static_cast(char_encoding::tolower(ch))) - , hi(static_cast(char_encoding::toupper(ch))) {} - - template - struct attribute - { - typedef typename mpl::if_c< - no_attribute, unused_type, char_type>::type - type; - }; - - template - bool test(CharParam ch_, Context&) const - { - if (!traits::ischar::call(ch_)) - return false; - - char_type ch = char_type(ch_); // optimize for token based parsing - return this->lo == ch || this->hi == ch; - } - - template - info what(Context& /*context*/) const - { - return info("no-case-literal-char", char_encoding::toucs4(lo)); - } - - char_type lo, hi; - }; - - /////////////////////////////////////////////////////////////////////////// - // Parser for a character range - /////////////////////////////////////////////////////////////////////////// - template - struct char_range - : char_parser, typename CharEncoding::char_type> - { - typedef typename CharEncoding::char_type char_type; - typedef CharEncoding char_encoding; - - char_range(char_type from_, char_type to_) - : from(from_), to(to_) {} - - template - bool test(CharParam ch_, Context&) const - { - if (!traits::ischar::call(ch_)) - return false; - - char_type ch = char_type(ch_); // optimize for token based parsing - return !(ch < from) && !(to < ch); - } - - template - info what(Context& /*context*/) const - { - info result("char-range", char_encoding::toucs4(from)); - boost::get(result.value) += '-'; - boost::get(result.value) += to_utf8(char_encoding::toucs4(to)); - return result; - } - - char_type from, to; - }; - - template - struct char_range // case insensitive - : char_parser, typename CharEncoding::char_type> - { - typedef typename CharEncoding::char_type char_type; - typedef CharEncoding char_encoding; - - char_range(char_type from, char_type to) - : from_lo(static_cast(char_encoding::tolower(from))) - , to_lo(static_cast(char_encoding::tolower(to))) - , from_hi(static_cast(char_encoding::toupper(from))) - , to_hi(static_cast(char_encoding::toupper(to))) - {} - - template - bool test(CharParam ch_, Context&) const - { - if (!traits::ischar::call(ch_)) - return false; - - char_type ch = char_type(ch_); // optimize for token based parsing - return (!(ch < from_lo) && !(to_lo < ch)) - || (!(ch < from_hi) && !(to_hi < ch)) - ; - } - - template - info what(Context& /*context*/) const - { - info result("no-case-char-range", char_encoding::toucs4(from_lo)); - boost::get(result.value) += '-'; - boost::get(result.value) += to_utf8(char_encoding::toucs4(to_lo)); - return result; - } - - char_type from_lo, to_lo, from_hi, to_hi; - }; - - /////////////////////////////////////////////////////////////////////////// - // Parser for a character set - /////////////////////////////////////////////////////////////////////////// - template - struct char_set - : char_parser - , typename mpl::if_c::type> - { - typedef typename CharEncoding::char_type char_type; - typedef CharEncoding char_encoding; - - template - char_set(String const& str) - { - using spirit::detail::cast_char; - - typedef typename - remove_const< - typename traits::char_type_of::type - >::type - in_type; - - BOOST_SPIRIT_ASSERT_MSG(( - (sizeof(char_type) >= sizeof(in_type)) - ), cannot_convert_string, (String)); - - in_type const* definition = - (in_type const*)traits::get_c_string(str); - in_type ch = *definition++; - while (ch) - { - in_type next = *definition++; - if (next == '-') - { - next = *definition++; - if (next == 0) - { - chset.set(cast_char(ch)); - chset.set('-'); - break; - } - chset.set( - cast_char(ch), - cast_char(next) - ); - } - else - { - chset.set(cast_char(ch)); - } - ch = next; - } - } - - template - bool test(CharParam ch, Context&) const - { - return traits::ischar::call(ch) && - chset.test(char_type(ch)); - } - - template - info what(Context& /*context*/) const - { - return info("char-set"); - } - - support::detail::basic_chset chset; - }; - - template - struct char_set // case insensitive - : char_parser - , typename mpl::if_c::type> - { - typedef typename CharEncoding::char_type char_type; - typedef CharEncoding char_encoding; - - template - char_set(String const& str) - { - typedef typename traits::char_type_of::type in_type; - - BOOST_SPIRIT_ASSERT_MSG(( - (sizeof(char_type) == sizeof(in_type)) - ), cannot_convert_string, (String)); - - char_type const* definition = - (char_type const*)traits::get_c_string(str); - char_type ch = *definition++; - while (ch) - { - char_type next = *definition++; - if (next == '-') - { - next = *definition++; - if (next == 0) - { - chset.set(static_cast(CharEncoding::tolower(ch))); - chset.set(static_cast(CharEncoding::toupper(ch))); - chset.set('-'); - break; - } - chset.set(static_cast(CharEncoding::tolower(ch)) - , static_cast(CharEncoding::tolower(next))); - chset.set(static_cast(CharEncoding::toupper(ch)) - , static_cast(CharEncoding::toupper(next))); - } - else - { - chset.set(static_cast(CharEncoding::tolower(ch))); - chset.set(static_cast(CharEncoding::toupper(ch))); - } - ch = next; - } - } - - template - bool test(CharParam ch, Context&) const - { - return traits::ischar::call(ch) && - chset.test(char_type(ch)); - } - - template - info what(Context& /*context*/) const - { - return info("no-case-char-set"); - } - - support::detail::basic_chset chset; - }; - - /////////////////////////////////////////////////////////////////////////// - // Parser generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - namespace detail - { - template - struct basic_literal - { - static bool const no_case = - has_modifier< - Modifiers - , tag::char_code_base - >::value; - - static bool const no_attr = - !has_modifier< - Modifiers - , tag::lazy_eval - >::value; - - typedef literal_char< - typename spirit::detail::get_encoding_with_case< - Modifiers, Encoding, no_case>::type - , no_attr - , no_case> - result_type; - - template - result_type operator()(Char ch, unused_type) const - { - return result_type(ch); - } - - template - result_type operator()(Char const* str, unused_type) const - { - return result_type(str[0]); - } - }; - } - - template - struct make_primitive - : detail::basic_literal {}; - - template - struct make_primitive - : detail::basic_literal {}; - - template - struct make_primitive - : detail::basic_literal {}; - - template - struct make_primitive - : detail::basic_literal {}; - - template - struct make_primitive< - terminal >, Modifiers> - { - typedef typename - spirit::detail::get_encoding::type - char_encoding; - - typedef tag::char_code tag; - typedef char_class result_type; - result_type operator()(unused_type, unused_type) const - { - return result_type(); - } - }; - - /////////////////////////////////////////////////////////////////////////// - // char_('x') - template - struct make_primitive< - terminal_ex< - tag::char_code - , fusion::vector1 > - , Modifiers> - { - static bool const no_case = - has_modifier >::value; - - typedef typename - spirit::detail::get_encoding::type - char_encoding; - - typedef typename - mpl::if_< - traits::is_string - , char_set - , literal_char - >::type - result_type; - - template - result_type operator()(Terminal const& term, unused_type) const - { - return result_type(fusion::at_c<0>(term.args)); - } - }; - - // lit('x') - template - struct make_primitive< - terminal_ex > - , Modifiers - , typename enable_if >::type> - { - static bool const no_case = - has_modifier< - Modifiers - , tag::char_code_base - >::value; - - typedef typename traits::char_encoding_from_char< - typename traits::char_type_of::type>::type encoding; - - typedef literal_char< - typename spirit::detail::get_encoding_with_case< - Modifiers, encoding, no_case>::type - , true, no_case> - result_type; - - template - result_type operator()(Terminal const& term, unused_type) const - { - return result_type(fusion::at_c<0>(term.args)); - } - }; - - /////////////////////////////////////////////////////////////////////////// - template - struct make_primitive< - terminal_ex< - tag::char_code - , fusion::vector1 // For single char strings - > - , Modifiers> - { - static bool const no_case = - has_modifier >::value; - - typedef typename - spirit::detail::get_encoding::type - char_encoding; - - typedef literal_char result_type; - - template - result_type operator()(Terminal const& term, unused_type) const - { - return result_type(fusion::at_c<0>(term.args)[0]); - } - }; - - template - struct make_primitive< - terminal_ex< - tag::char_code - , fusion::vector2 - > - , Modifiers> - { - static bool const no_case = - has_modifier >::value; - - typedef typename - spirit::detail::get_encoding::type - char_encoding; - - typedef char_range result_type; - - template - result_type operator()(Terminal const& term, unused_type) const - { - return result_type( - fusion::at_c<0>(term.args) - , fusion::at_c<1>(term.args) - ); - } - }; - - template - struct make_primitive< - terminal_ex< - tag::char_code - , fusion::vector2 // For single char strings - > - , Modifiers> - { - static bool const no_case = - has_modifier >::value; - - typedef typename - spirit::detail::get_encoding::type - char_encoding; - - typedef char_range result_type; - - template - result_type operator()(Terminal const& term, unused_type) const - { - return result_type( - fusion::at_c<0>(term.args)[0] - , fusion::at_c<1>(term.args)[0] - ); - } - }; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/char/char_class.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/char/char_class.hpp deleted file mode 100644 index 9b77b7d54acf..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/char/char_class.hpp +++ /dev/null @@ -1,118 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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_CHAR_CLASS_APRIL_16_2006_1051AM) -#define BOOST_SPIRIT_CHAR_CLASS_APRIL_16_2006_1051AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - // enables alnum, alpha, graph, etc. - template - struct use_terminal > - : mpl::true_ {}; -}} - -namespace boost { namespace spirit { namespace qi -{ - // hoist the char classification namespaces into qi sub-namespaces of the - // same name - namespace ascii { using namespace boost::spirit::ascii; } - namespace iso8859_1 { using namespace boost::spirit::iso8859_1; } - namespace standard { using namespace boost::spirit::standard; } - namespace standard_wide { using namespace boost::spirit::standard_wide; } -#if defined(BOOST_SPIRIT_UNICODE) - namespace unicode { using namespace boost::spirit::unicode; } -#endif - - // Import the standard namespace into the qi namespace. This allows - // for default handling of all character/string related operations if not - // prefixed with a character set namespace. - using namespace boost::spirit::standard; - - // Import encoding - using spirit::encoding; - - /////////////////////////////////////////////////////////////////////////// - // Generic char classification parser (for alnum, alpha, graph, etc.) - /////////////////////////////////////////////////////////////////////////// - template - struct char_class - : char_parser, typename Tag::char_encoding::char_type> - { - typedef typename Tag::char_encoding char_encoding; - typedef typename Tag::char_class classification; - - template - bool test(CharParam ch, Context&) const - { - using spirit::char_class::classify; - return traits::ischar::call(ch) && - classify::is(classification(), ch); - } - - template - info what(Context& /*context*/) const - { - typedef spirit::char_class::what what_; - return info(what_::is(classification())); - } - }; - - namespace detail - { - template - struct make_char_class : mpl::identity {}; - - template <> - struct make_char_class : mpl::identity {}; - - template <> - struct make_char_class : mpl::identity {}; - } - - /////////////////////////////////////////////////////////////////////////// - // Parser generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_primitive, Modifiers> - { - static bool const no_case = - has_modifier >::value; - - typedef typename - spirit::detail::get_encoding::type - char_encoding; - - typedef tag::char_code< - typename detail::make_char_class::type - , char_encoding> - tag; - - typedef char_class result_type; - result_type operator()(unused_type, unused_type) const - { - return result_type(); - } - }; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/char/char_parser.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/char/char_parser.hpp deleted file mode 100644 index ea497f1f12dc..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/char/char_parser.hpp +++ /dev/null @@ -1,159 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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_CHAR_PARSER_APR_16_2006_0906AM) -#define BOOST_SPIRIT_CHAR_PARSER_APR_16_2006_0906AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_operator // enables ~ - : mpl::true_ {}; -}} - -namespace boost { namespace spirit { namespace traits // classification -{ - namespace detail - { - BOOST_MPL_HAS_XXX_TRAIT_DEF(char_parser_id) - } - - template - struct is_char_parser : detail::has_char_parser_id {}; -}}} - -namespace boost { namespace spirit { namespace qi -{ - /////////////////////////////////////////////////////////////////////////// - // The base char_parser - /////////////////////////////////////////////////////////////////////////// - template - struct char_parser : primitive_parser - { - typedef Char char_type; - struct char_parser_id; - - // if Attr is unused_type, Derived must supply its own attribute - // metafunction - template - struct attribute - { - typedef Attr type; - }; - - template - bool parse(Iterator& first, Iterator const& last - , Context& context, Skipper const& skipper, Attribute& attr_) const - { - qi::skip_over(first, last, skipper); - - if (first != last && this->derived().test(*first, context)) - { - spirit::traits::assign_to(*first, attr_); - ++first; - return true; - } - return false; - } - - // Requirement: p.test(ch, context) -> bool - // - // ch: character being parsed - // context: enclosing rule context - }; - - /////////////////////////////////////////////////////////////////////////// - // negated_char_parser handles ~cp expressions (cp is a char_parser) - /////////////////////////////////////////////////////////////////////////// - template - struct negated_char_parser : - char_parser, typename Positive::char_type> - { - negated_char_parser(Positive const& positive_) - : positive(positive_) {} - - template - bool test(CharParam ch, Context& context) const - { - return !positive.test(ch, context); - } - - template - info what(Context& context) const - { - return info("not", positive.what(context)); - } - - Positive positive; - }; - - /////////////////////////////////////////////////////////////////////////// - // Parser generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - namespace detail - { - template - struct make_negated_char_parser - { - typedef negated_char_parser result_type; - result_type operator()(Positive const& positive) const - { - return result_type(positive); - } - }; - - template - struct make_negated_char_parser > - { - typedef Positive result_type; - result_type operator()(negated_char_parser const& ncp) const - { - return ncp.positive; - } - }; - } - - template - struct make_composite - { - typedef typename - fusion::result_of::value_at_c::type - subject; - - BOOST_SPIRIT_ASSERT_MSG(( - traits::is_char_parser::value - ), subject_is_not_negatable, (subject)); - - typedef typename - detail::make_negated_char_parser::result_type - result_type; - - result_type operator()(Elements const& elements, unused_type) const - { - return detail::make_negated_char_parser()( - fusion::at_c<0>(elements)); - } - }; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/copy.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/copy.hpp deleted file mode 100644 index 02da7e851d78..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/copy.hpp +++ /dev/null @@ -1,31 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2012 Joel de Guzman - - 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_COPY_FEBRUARY_7_2012_0159PM) -#define BOOST_SPIRIT_COPY_FEBRUARY_7_2012_0159PM - -#include - -#if defined(_MSC_VER) -#pragma once -#endif - -#if !defined(BOOST_NO_CXX11_AUTO_DECLARATIONS) -#include - -namespace boost { namespace spirit { namespace qi -{ - template - typename boost::proto::result_of::deep_copy::type - copy(Expr const& expr) - { - BOOST_SPIRIT_ASSERT_MATCH(boost::spirit::qi::domain, Expr); - return boost::proto::deep_copy(expr); - } -}}} - -#endif -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/detail/alternative_function.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/detail/alternative_function.hpp deleted file mode 100644 index 480a11fd6dee..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/detail/alternative_function.hpp +++ /dev/null @@ -1,211 +0,0 @@ -/*============================================================================= - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_QI_DETAIL_ALTERNATIVE_FUNCTION_HPP -#define BOOST_SPIRIT_QI_DETAIL_ALTERNATIVE_FUNCTION_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace qi { namespace detail -{ - template - struct find_substitute - { - // Get the type from the Variant that can be a substitute for T. - // If none is found, just return T - - typedef Variant variant_type; - typedef typename variant_type::types types; - typedef typename mpl::end::type end; - - typedef typename mpl::find::type iter_1; - - typedef typename - mpl::eval_if< - is_same, - mpl::find_if >, - mpl::identity - >::type - iter; - - typedef typename - mpl::eval_if< - is_same, - mpl::identity, - mpl::deref - >::type - type; - }; - -#ifdef _MSC_VER -# pragma warning(push) -# pragma warning(disable: 4512) // assignment operator could not be generated. -#endif - template - struct alternative_function - { - alternative_function( - Iterator& first_, Iterator const& last_, Context& context_, - Skipper const& skipper_, Attribute& attr_) - : first(first_), last(last_), context(context_), skipper(skipper_), - attr(attr_) - { - } - - template - bool call(Component const& component, mpl::true_) const - { - // if Attribute is not a variant, then pass it as-is - return component.parse(first, last, context, skipper, attr); - } - - template - bool call_optional_or_variant(Component const& component, mpl::true_) const - { - // If Attribute is an optional, then create an attribute for the Component - // with the type optional::value_type. If the expected attribute is unused type, - // use it instead. - typedef typename - traits::attribute_of::type - expected_type; - - typename mpl::if_< - is_same, - unused_type, - typename Attribute::value_type>::type - val; - - if (component.parse(first, last, context, skipper, val)) - { - traits::assign_to(val, attr); - return true; - } - return false; - } - - template - bool call_variant(Component const& component, mpl::false_) const - { - // If Attribute is a variant, then search the variant types for a - // suitable substitute type. - - typename - find_substitute::type - >::type - val; - - if (component.parse(first, last, context, skipper, val)) - { - traits::assign_to(val, attr); - return true; - } - return false; - } - - template - bool call_variant(Component const& component, mpl::true_) const - { - // If Attribute is a variant and the expected attribute is - // the same type (pass the variant as-is). - - return component.parse(first, last, context, skipper, attr); - } - - template - bool call_optional_or_variant(Component const& component, mpl::false_) const - { - // Attribute is a variant... - - typedef typename - traits::attribute_of::type - expected; - return call_variant(component, - is_same()); - } - - template - bool call(Component const& component, mpl::false_) const - { - return call_optional_or_variant( - component, spirit::traits::not_is_variant()); - } - - template - bool call_unused(Component const& component, mpl::true_) const - { - // return true if the parser succeeds - return call(component, - mpl::and_< - spirit::traits::not_is_variant, - spirit::traits::not_is_optional - >()); - } - - template - bool call_unused(Component const& component, mpl::false_) const - { - return component.parse(first, last, context, skipper, unused); - } - - template - bool operator()(Component const& component) const - { - // return true if the parser succeeds - typedef typename traits::not_is_unused< - typename traits::attribute_of::type - >::type predicate; - - return call_unused(component, predicate()); - } - - Iterator& first; - Iterator const& last; - Context& context; - Skipper const& skipper; - Attribute& attr; - }; - - template - struct alternative_function - { - alternative_function( - Iterator& first_, Iterator const& last_, Context& context_, - Skipper const& skipper_, unused_type) - : first(first_), last(last_), context(context_), skipper(skipper_) - { - } - - template - bool operator()(Component const& component) const - { - // return true if the parser succeeds - return component.parse(first, last, context, skipper, - unused); - } - - Iterator& first; - Iterator const& last; - Context& context; - Skipper const& skipper; - }; -#ifdef _MSC_VER -# pragma warning(pop) -#endif - -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/detail/assign_to.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/detail/assign_to.hpp deleted file mode 100644 index 90299ba2c3b6..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/detail/assign_to.hpp +++ /dev/null @@ -1,403 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - Copyright (c) 2001-2011 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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_ASSIGN_TO_APR_16_2006_0812PM) -#define BOOST_SPIRIT_ASSIGN_TO_APR_16_2006_0812PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - // This file contains assignment utilities. The utilities provided also - // accept spirit's unused_type; all no-ops. Compiler optimization will - // easily strip these away. - /////////////////////////////////////////////////////////////////////////// - namespace detail - { - template - struct is_iter_range : mpl::false_ {}; - - template - struct is_iter_range > : mpl::true_ {}; - - template - struct is_container_of_ranges - : is_iter_range {}; - } - - template - struct assign_to_attribute_from_iterators - { - // Common case - static void - call(Iterator const& first, Iterator const& last, Attribute& attr, mpl::false_) - { - if (traits::is_empty(attr)) - attr = Attribute(first, last); - else { - for (Iterator i = first; i != last; ++i) - push_back(attr, *i); - } - } - - // If Attribute is a container with value_type==iterator_range just push the - // iterator_range into it - static void - call(Iterator const& first, Iterator const& last, Attribute& attr, mpl::true_) - { - typename Attribute::value_type rng(first, last); - push_back(attr, rng); - } - - static void - call(Iterator const& first, Iterator const& last, Attribute& attr) - { - call(first, last, attr, detail::is_container_of_ranges()); - } - }; - - template - struct assign_to_attribute_from_iterators< - reference_wrapper, Iterator> - { - static void - call(Iterator const& first, Iterator const& last - , reference_wrapper attr) - { - if (traits::is_empty(attr)) - attr = Attribute(first, last); - else { - for (Iterator i = first; i != last; ++i) - push_back(attr, *i); - } - } - }; - - template - struct assign_to_attribute_from_iterators< - boost::optional, Iterator> - { - static void - call(Iterator const& first, Iterator const& last - , boost::optional& attr) - { - Attribute val; - assign_to(first, last, val); - attr = val; - } - }; - - template - struct assign_to_attribute_from_iterators< - iterator_range, Iterator> - { - static void - call(Iterator const& first, Iterator const& last - , iterator_range& attr) - { - attr = iterator_range(first, last); - } - }; - - template - inline void - assign_to(Iterator const& first, Iterator const& last, Attribute& attr) - { - assign_to_attribute_from_iterators:: - call(first, last, attr); - } - - template - inline void - assign_to(Iterator const&, Iterator const&, unused_type) - { - } - - /////////////////////////////////////////////////////////////////////////// - template - void assign_to(T const& val, Attribute& attr); - - template - struct assign_to_attribute_from_value - { - typedef typename traits::one_element_sequence::type - is_one_element_sequence; - - typedef typename mpl::eval_if< - is_one_element_sequence - , fusion::result_of::at_c - , mpl::identity - >::type type; - - template - static void - call(T_ const& val, Attribute& attr, mpl::false_) - { - attr = static_cast(val); - } - - // This handles the case where the attribute is a single element fusion - // sequence. We silently assign to the only element and treat it as the - // attribute to parse the results into. - template - static void - call(T_ const& val, Attribute& attr, mpl::true_) - { - typedef typename fusion::result_of::value_at_c::type - element_type; - fusion::at_c<0>(attr) = static_cast(val); - } - - static void - call(T const& val, Attribute& attr) - { - call(val, attr, is_one_element_sequence()); - } - }; - - template - struct assign_to_attribute_from_value - { - static void - call(Attribute const& val, Attribute& attr) - { - attr = val; - } - }; - - template - struct assign_to_attribute_from_value - , typename disable_if > >::type> - { - static void - call(reference_wrapper const& val, Attribute& attr) - { - assign_to(val.get(), attr); - } - }; - - template - struct assign_to_attribute_from_value - , typename disable_if > >::type> - { - static void - call(boost::optional const& val, Attribute& attr) - { - assign_to(val.get(), attr); - } - }; - - template - struct assign_to_attribute_from_value, T> - { - static void - call(T const& val, typename fusion::extension::adt_attribute_proxy& attr) - { - attr = val; - } - }; - - namespace detail - { - template - struct is_same_size_sequence - : mpl::bool_::value - == fusion::result_of::size::value> - {}; - } - - template - struct assign_to_attribute_from_value, - fusion::traits::is_sequence, - detail::is_same_size_sequence - > - > - { - static void - call(T const& val, Attribute& attr) - { - fusion::copy(val, attr); - } - }; - - /////////////////////////////////////////////////////////////////////////// - template - struct assign_to_container_from_value - { - // T is not a container and not a string - template - static void call(T_ const& val, Attribute& attr, mpl::false_, mpl::false_) - { - traits::push_back(attr, val); - } - - // T is a container (but not a string), and T is convertible to the - // value_type of the Attribute container - template - static void - append_to_container_not_string(T_ const& val, Attribute& attr, mpl::true_) - { - traits::push_back(attr, val); - } - - // T is a container (but not a string), generic overload - template - static void - append_to_container_not_string(T_ const& val, Attribute& attr, mpl::false_) - { - typedef typename traits::container_iterator::type - iterator_type; - - iterator_type end = traits::end(val); - for (iterator_type i = traits::begin(val); i != end; traits::next(i)) - traits::push_back(attr, traits::deref(i)); - } - - // T is a container (but not a string) - template - static void call(T_ const& val, Attribute& attr, mpl::true_, mpl::false_) - { - typedef typename container_value::type value_type; - typedef typename is_convertible::type is_value_type; - - append_to_container_not_string(val, attr, is_value_type()); - } - - /////////////////////////////////////////////////////////////////////// - // T is a string - template - static void append_to_string(Attribute& attr, Iterator begin, Iterator end) - { - for (Iterator i = begin; i != end; ++i) - traits::push_back(attr, *i); - } - - // T is string, but not convertible to value_type of container - template - static void append_to_container(T_ const& val, Attribute& attr, mpl::false_) - { - typedef typename char_type_of::type char_type; - - append_to_string(attr, traits::get_begin(val) - , traits::get_end(val)); - } - - // T is string, and convertible to value_type of container - template - static void append_to_container(T_ const& val, Attribute& attr, mpl::true_) - { - traits::push_back(attr, val); - } - - template - static void call(T_ const& val, Attribute& attr, Pred, mpl::true_) - { - typedef typename container_value::type value_type; - typedef typename is_convertible::type is_value_type; - - append_to_container(val, attr, is_value_type()); - } - - /////////////////////////////////////////////////////////////////////// - static void call(T const& val, Attribute& attr) - { - typedef typename traits::is_container::type is_container; - typedef typename traits::is_string::type is_string; - - call(val, attr, is_container(), is_string()); - } - }; - - template - struct assign_to_container_from_value - { - static void - call(Attribute const& val, Attribute& attr) - { - attr = val; - } - }; - - template - struct assign_to_container_from_value - , typename disable_if > >::type> - { - static void - call(boost::optional const& val, Attribute& attr) - { - assign_to(val.get(), attr); - } - }; - - template - struct assign_to_container_from_value - , typename disable_if > >::type> - { - static void - call(reference_wrapper const& val, Attribute& attr) - { - assign_to(val.get(), attr); - } - }; - - /////////////////////////////////////////////////////////////////////////// - namespace detail - { - // overload for non-container attributes - template - inline void - assign_to(T const& val, Attribute& attr, mpl::false_) - { - assign_to_attribute_from_value::call(val, attr); - } - - // overload for containers (but not for variants or optionals - // holding containers) - template - inline void - assign_to(T const& val, Attribute& attr, mpl::true_) - { - assign_to_container_from_value::call(val, attr); - } - } - - template - inline void - assign_to(T const& val, Attribute& attr) - { - typedef typename mpl::and_< - traits::is_container - , traits::not_is_variant - , traits::not_is_optional - >::type is_not_wrapped_container; - - detail::assign_to(val, attr, is_not_wrapped_container()); - } - - template - inline void - assign_to(T const&, unused_type) - { - } -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/detail/attributes.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/detail/attributes.hpp deleted file mode 100644 index 24d1f4fe998a..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/detail/attributes.hpp +++ /dev/null @@ -1,134 +0,0 @@ -// Copyright (c) 2001-2011 Hartmut Kaiser -// Copyright (c) 2001-2011 Joel de Guzman -// -// 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) - -#ifndef BOOST_SPIRIT_QI_DETAIL_ATTRIBUTES_HPP -#define BOOST_SPIRIT_QI_DETAIL_ATTRIBUTES_HPP - -#include -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace qi -{ - template - struct default_transform_attribute - { - typedef Transformed type; - - static Transformed pre(Exposed&) { return Transformed(); } - - static void post(Exposed& val, Transformed const& attr) - { - traits::assign_to(attr, val); - } - - // fail() will be called by Qi rule's if the rhs failed parsing - static void fail(Exposed&) {} - }; - - // handle case where no transformation is required as the types are the same - template - struct default_transform_attribute - { - typedef Attribute& type; - static Attribute& pre(Attribute& val) { return val; } - static void post(Attribute&, Attribute const&) {} - static void fail(Attribute&) {} - }; - - template - struct proxy_transform_attribute - { - typedef Transformed type; - - static Transformed pre(Exposed& val) { return Transformed(val); } - static void post(Exposed&, Transformed const&) { /* no-op */ } - - // fail() will be called by Qi rule's if the rhs failed parsing - static void fail(Exposed&) {} - }; - - // handle case where no transformation is required as the types are the same - template - struct proxy_transform_attribute - { - typedef Attribute& type; - static Attribute& pre(Attribute& val) { return val; } - static void post(Attribute&, Attribute const&) {} - static void fail(Attribute&) {} - }; - - // main specialization for Qi - template - struct transform_attribute - : mpl::if_< - mpl::and_< - mpl::not_ > - , mpl::not_ > - , traits::is_proxy > - , proxy_transform_attribute - , default_transform_attribute - >::type - {}; - - template - struct transform_attribute, Transformed - , typename disable_if, Transformed> >::type> - { - typedef Transformed& type; - static Transformed& pre(boost::optional& val) - { - if (!val) - val = Transformed(); - return boost::get(val); - } - static void post(boost::optional&, Transformed const&) {} - static void fail(boost::optional& val) - { - val = none; // leave optional uninitialized if rhs failed - } - }; - - // unused_type needs some special handling as well - template <> - struct transform_attribute - { - typedef unused_type type; - static unused_type pre(unused_type) { return unused; } - static void post(unused_type, unused_type) {} - static void fail(unused_type) {} - }; - - template <> - struct transform_attribute - : transform_attribute - {}; - - template - struct transform_attribute - : transform_attribute - {}; - - template - struct transform_attribute - : transform_attribute - {}; -}}} - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace traits -{ - namespace detail { - template - struct transform_attribute_base - : qi::transform_attribute - {}; - } -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/detail/construct.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/detail/construct.hpp deleted file mode 100644 index 829190e98e71..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/detail/construct.hpp +++ /dev/null @@ -1,202 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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_CONSTRUCT_MAR_24_2007_0629PM) -#define BOOST_SPIRIT_CONSTRUCT_MAR_24_2007_0629PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - // We provide overloads for the assign_to_attribute_from_iterators - // customization point for all built in types - /////////////////////////////////////////////////////////////////////////// - template - struct assign_to_attribute_from_iterators - { - static void - call(Iterator const& first, Iterator const&, char& attr) - { - attr = *first; - } - }; - - template - struct assign_to_attribute_from_iterators - { - static void - call(Iterator const& first, Iterator const&, signed char& attr) - { - attr = *first; - } - }; - - template - struct assign_to_attribute_from_iterators - { - static void - call(Iterator const& first, Iterator const&, unsigned char& attr) - { - attr = *first; - } - }; - - // wchar_t is intrinsic - template - struct assign_to_attribute_from_iterators - { - static void - call(Iterator const& first, Iterator const&, wchar_t& attr) - { - attr = *first; - } - }; - -#if !defined(BOOST_NO_INTRINSIC_WCHAR_T) - // wchar_t is intrinsic, have separate overload for unsigned short - template - struct assign_to_attribute_from_iterators - { - static void - call(Iterator const& first, Iterator const&, unsigned short& attr) - { - attr = *first; - } - }; -#endif - - template - struct assign_to_attribute_from_iterators - { - static void - call(Iterator const& first, Iterator const& last, bool& attr) - { - Iterator first_ = first; - qi::parse(first_, last, bool_type(), attr); - } - }; - - template - struct assign_to_attribute_from_iterators - { - static void - call(Iterator const& first, Iterator const& last, short& attr) - { - Iterator first_ = first; - qi::parse(first_, last, short_type(), attr); - } - }; - - template - struct assign_to_attribute_from_iterators - { - static void - call(Iterator const& first, Iterator const& last, int& attr) - { - Iterator first_ = first; - qi::parse(first_, last, int_type(), attr); - } - }; - template - struct assign_to_attribute_from_iterators - { - static void - call(Iterator const& first, Iterator const& last, unsigned int& attr) - { - Iterator first_ = first; - qi::parse(first_, last, uint_type(), attr); - } - }; - - template - struct assign_to_attribute_from_iterators - { - static void - call(Iterator const& first, Iterator const& last, long& attr) - { - Iterator first_ = first; - qi::parse(first_, last, long_type(), attr); - } - }; - template - struct assign_to_attribute_from_iterators - { - static void - call(Iterator const& first, Iterator const& last, unsigned long& attr) - { - Iterator first_ = first; - qi::parse(first_, last, ulong_type(), attr); - } - }; - -#ifdef BOOST_HAS_LONG_LONG - template - struct assign_to_attribute_from_iterators - { - static void - call(Iterator const& first, Iterator const& last, boost::long_long_type& attr) - { - Iterator first_ = first; - qi::parse(first_, last, long_long_type(), attr); - } - }; - template - struct assign_to_attribute_from_iterators - { - static void - call(Iterator const& first, Iterator const& last, boost::ulong_long_type& attr) - { - Iterator first_ = first; - qi::parse(first_, last, ulong_long_type(), attr); - } - }; -#endif - - template - struct assign_to_attribute_from_iterators - { - static void - call(Iterator const& first, Iterator const& last, float& attr) - { - Iterator first_ = first; - qi::parse(first_, last, float_type(), attr); - } - }; - - template - struct assign_to_attribute_from_iterators - { - static void - call(Iterator const& first, Iterator const& last, double& attr) - { - Iterator first_ = first; - qi::parse(first_, last, double_type(), attr); - } - }; - - template - struct assign_to_attribute_from_iterators - { - static void - call(Iterator const& first, Iterator const& last, long double& attr) - { - Iterator first_ = first; - qi::parse(first_, last, long_double_type(), attr); - } - }; - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/detail/enable_lit.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/detail/enable_lit.hpp deleted file mode 100644 index 8bf251829740..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/detail/enable_lit.hpp +++ /dev/null @@ -1,30 +0,0 @@ -// 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_QI_DETAIL_ENABLE_LIT_JAN_06_2011_0945PM) -#define BOOST_SPIRIT_QI_DETAIL_ENABLE_LIT_JAN_06_2011_0945PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - // enables lazy lit(...) for qi - template <> - struct use_lazy_terminal - : mpl::true_ {}; -}} - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/detail/expect_function.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/detail/expect_function.hpp deleted file mode 100644 index a1ccfb40d992..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/detail/expect_function.hpp +++ /dev/null @@ -1,108 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_QI_DETAIL_EXPECT_FUNCTION_HPP -#define BOOST_SPIRIT_QI_DETAIL_EXPECT_FUNCTION_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include - -namespace boost { namespace spirit { namespace qi { namespace detail -{ -#ifdef _MSC_VER -# pragma warning(push) -# pragma warning(disable: 4512) // assignment operator could not be generated. -#endif - template < - typename Iterator, typename Context - , typename Skipper, typename Exception> - struct expect_function - { - typedef Iterator iterator_type; - typedef Context context_type; - - expect_function( - Iterator& first_, Iterator const& last_ - , Context& context_, Skipper const& skipper_) - : first(first_) - , last(last_) - , context(context_) - , skipper(skipper_) - , is_first(true) - { - } - - template - bool operator()(Component const& component, Attribute& attr) const - { - // if this is not the first component in the expect chain we - // need to flush any multi_pass iterator we might be acting on - if (!is_first) - spirit::traits::clear_queue(first); - - // if we are testing the first component in the sequence, - // return true if the parser fails, if this is not the first - // component, throw exception if the parser fails - if (!component.parse(first, last, context, skipper, attr)) - { - if (is_first) - { - is_first = false; - return true; // true means the match failed - } - boost::throw_exception(Exception(first, last, component.what(context))); -#if defined(BOOST_NO_EXCEPTIONS) - return true; // for systems not supporting exceptions -#endif - } - is_first = false; - return false; - } - - template - bool operator()(Component const& component) const - { - // if this is not the first component in the expect chain we - // need to flush any multi_pass iterator we might be acting on - if (!is_first) - spirit::traits::clear_queue(first); - - // if we are testing the first component in the sequence, - // return true if the parser fails, if this not the first - // component, throw exception if the parser fails - if (!component.parse(first, last, context, skipper, unused)) - { - if (is_first) - { - is_first = false; - return true; - } - boost::throw_exception(Exception(first, last, component.what(context))); -#if defined(BOOST_NO_EXCEPTIONS) - return false; // for systems not supporting exceptions -#endif - } - is_first = false; - return false; - } - - Iterator& first; - Iterator const& last; - Context& context; - Skipper const& skipper; - mutable bool is_first; - }; -#ifdef _MSC_VER -# pragma warning(pop) -#endif -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/detail/expectation_failure.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/detail/expectation_failure.hpp deleted file mode 100644 index 551be1cacb48..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/detail/expectation_failure.hpp +++ /dev/null @@ -1,35 +0,0 @@ -/*============================================================================= -Copyright (c) 2001-2011 Joel de Guzman - -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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_QI_DETAIL_EXPECTATION_FAILURE_HPP -#define BOOST_SPIRIT_QI_DETAIL_EXPECTATION_FAILURE_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include - -#include // for BOOST_SYMBOL_VISIBLE -#include - -namespace boost { namespace spirit { namespace qi { - template - struct BOOST_SYMBOL_VISIBLE expectation_failure : std::runtime_error - { - expectation_failure(Iterator first_, Iterator last_, info const& what) - : std::runtime_error("boost::spirit::qi::expectation_failure") - , first(first_), last(last_), what_(what) - {} - ~expectation_failure() BOOST_NOEXCEPT_OR_NOTHROW BOOST_OVERRIDE {} - - Iterator first; - Iterator last; - info what_; - }; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/detail/fail_function.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/detail/fail_function.hpp deleted file mode 100644 index 43b8e033bc39..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/detail/fail_function.hpp +++ /dev/null @@ -1,62 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_QI_DETAIL_FAIL_FUNCTION_HPP -#define BOOST_SPIRIT_QI_DETAIL_FAIL_FUNCTION_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include - -namespace boost { namespace spirit { namespace qi { namespace detail -{ -#ifdef _MSC_VER -# pragma warning(push) -# pragma warning(disable: 4512) // assignment operator could not be generated. -#endif - template - struct fail_function - { - typedef Iterator iterator_type; - typedef Context context_type; - - fail_function( - Iterator& first_, Iterator const& last_ - , Context& context_, Skipper const& skipper_) - : first(first_) - , last(last_) - , context(context_) - , skipper(skipper_) - { - } - - template - bool operator()(Component const& component, Attribute& attr) const - { - // return true if the parser fails - return !component.parse(first, last, context, skipper, attr); - } - - template - bool operator()(Component const& component) const - { - // return true if the parser fails - return !component.parse(first, last, context, skipper, unused); - } - - Iterator& first; - Iterator const& last; - Context& context; - Skipper const& skipper; - }; -#ifdef _MSC_VER -# pragma warning(pop) -#endif -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/detail/parse.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/detail/parse.hpp deleted file mode 100644 index b81f1e76a031..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/detail/parse.hpp +++ /dev/null @@ -1,97 +0,0 @@ -/*============================================================================= - 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_DETAIL_PARSE_DEC_02_2009_0411PM) -#define BOOST_SPIRIT_DETAIL_PARSE_DEC_02_2009_0411PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace qi { namespace detail -{ - /////////////////////////////////////////////////////////////////////////// - template - struct parse_impl - { - // Report invalid expression error as early as possible. - // If you got an error_invalid_expression error message here, - // then the expression (expr) is not a valid spirit qi expression. - // Did you intend to use the auto_ facilities while forgetting to - // #include ? - BOOST_SPIRIT_ASSERT_MATCH(qi::domain, Expr); - }; - - template - struct parse_impl >::type> - { - template - static bool call( - Iterator& first - , Iterator last - , Expr const& expr) - { - return compile(expr).parse( - first, last, unused, unused, unused); - } - }; - - /////////////////////////////////////////////////////////////////////////// - template - struct phrase_parse_impl - { - // Report invalid expression error as early as possible. - // If you got an error_invalid_expression error message here, - // then the expression (expr) is not a valid spirit qi expression. - // Did you intend to use the auto_ facilities while forgetting to - // #include ? - BOOST_SPIRIT_ASSERT_MATCH(qi::domain, Expr); - }; - - template - struct phrase_parse_impl >::type> - { - template - static bool call( - Iterator& first - , Iterator last - , Expr const& expr - , Skipper const& skipper - , BOOST_SCOPED_ENUM(skip_flag) post_skip) - { - // Report invalid expression error as early as possible. - // If you got an error_invalid_expression error message here, - // then the skipper is not a valid spirit qi expression. - BOOST_SPIRIT_ASSERT_MATCH(qi::domain, Skipper); - - typedef - typename result_of::compile::type - skipper_type; - skipper_type const skipper_ = compile(skipper); - - if (!compile(expr).parse( - first, last, unused, skipper_, unused)) - return false; - - if (post_skip == skip_flag::postskip) - qi::skip_over(first, last, skipper_); - return true; - } - }; - -}}}} - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/detail/parse_auto.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/detail/parse_auto.hpp deleted file mode 100644 index 694fc42c65f0..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/detail/parse_auto.hpp +++ /dev/null @@ -1,113 +0,0 @@ -/*============================================================================= - 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_DETAIL_PARSE_AUTO_DEC_02_2009_0426PM) -#define BOOST_SPIRIT_DETAIL_PARSE_AUTO_DEC_02_2009_0426PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace qi { namespace detail -{ - /////////////////////////////////////////////////////////////////////////// - template - struct parse_impl - , mpl::not_ > > - >::type> - { - template - static bool call(Iterator& first, Iterator last, Expr& expr) - { - return qi::parse(first, last, create_parser(), expr); - } - - template - static bool call(Iterator& first, Iterator last, Expr const& expr) - { - return qi::parse(first, last, create_parser() - , const_cast(expr)); - } - }; - - /////////////////////////////////////////////////////////////////////////// - template - struct phrase_parse_impl - , mpl::not_ > > - >::type> - { - template - static bool call(Iterator& first, Iterator last, Expr& expr - , Skipper const& skipper, BOOST_SCOPED_ENUM(skip_flag) post_skip) - { - return qi::phrase_parse(first, last, create_parser() - , skipper, post_skip, expr); - } - - template - static bool call(Iterator& first, Iterator last, Expr const& expr - , Skipper const& skipper, BOOST_SCOPED_ENUM(skip_flag) post_skip) - { - return qi::phrase_parse(first, last, create_parser() - , skipper, post_skip, const_cast(expr)); - } - }; -}}}} - -namespace boost { namespace spirit { namespace qi -{ - /////////////////////////////////////////////////////////////////////////// - template - inline bool - parse( - Iterator& first - , Iterator last - , Expr& expr) - { - // Make sure the iterator is at least a forward_iterator. If you got a - // compilation error here, then you are using an input_iterator while - // calling this function, you need to supply at least a - // forward_iterator instead. - BOOST_CONCEPT_ASSERT((ForwardIterator)); - - return detail::parse_impl::call(first, last, expr); - } - - /////////////////////////////////////////////////////////////////////////// - template - inline bool - phrase_parse( - Iterator& first - , Iterator last - , Expr& expr - , Skipper const& skipper - , BOOST_SCOPED_ENUM(skip_flag) post_skip = skip_flag::postskip) - { - // Make sure the iterator is at least a forward_iterator. If you got a - // compilation error here, then you are using an input_iterator while - // calling this function, you need to supply at least a - // forward_iterator instead. - BOOST_CONCEPT_ASSERT((ForwardIterator)); - - return detail::phrase_parse_impl::call( - first, last, expr, skipper, post_skip); - } -}}} - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/detail/pass_container.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/detail/pass_container.hpp deleted file mode 100644 index 6f4a6f0a57e1..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/detail/pass_container.hpp +++ /dev/null @@ -1,385 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_QI_DETAIL_PASS_CONTAINER_HPP -#define BOOST_SPIRIT_QI_DETAIL_PASS_CONTAINER_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace qi { namespace detail -{ - // Helper meta-function allowing to evaluate weak substitutability and - // negate the result if the predicate (Sequence) is not true - template - struct negate_weak_substitute_if_not - : mpl::if_< - Sequence - , typename traits::is_weak_substitute::type - , typename mpl::not_< - traits::is_weak_substitute - >::type> - {}; - - // pass_through_container: utility to check decide whether a provided - // container attribute needs to be passed through to the current component - // or of we need to split the container by passing along instances of its - // value type - - // if the expected attribute of the current component is neither a Fusion - // sequence nor a container, we will pass through the provided container - // only if its value type is not compatible with the component - template - struct pass_through_container_base - : negate_weak_substitute_if_not - {}; - - // Specialization for fusion sequences, in this case we check whether all - // the types in the sequence are convertible to the lhs attribute. - // - // We return false if the rhs attribute itself is a fusion sequence, which - // is compatible with the LHS sequence (we want to pass through this - // attribute without it being split apart). - template - struct not_compatible_element - : mpl::and_< - negate_weak_substitute_if_not - , negate_weak_substitute_if_not > - {}; - - // If the value type of the container is not a Fusion sequence, we pass - // through the container if each of the elements of the Attribute - // sequence is compatible with either the container or its value type. - template ::value> - struct pass_through_container_fusion_sequence - { - typedef typename mpl::find_if< - Attribute, not_compatible_element - >::type iter; - typedef typename mpl::end::type end; - - typedef typename is_same::type type; - }; - - // If both, the Attribute and the value type of the provided container - // are Fusion sequences, we pass the container only if the two - // sequences are not compatible. - template - struct pass_through_container_fusion_sequence< - Container, ValueType, Attribute, Sequence, true> - { - typedef typename mpl::find_if< - Attribute - , not_compatible_element - >::type iter; - typedef typename mpl::end::type end; - - typedef typename is_same::type type; - }; - - template - struct pass_through_container_base >::type> - : pass_through_container_fusion_sequence< - Container, ValueType, Attribute, Sequence> - {}; - - // Specialization for containers - // - // If the value type of the attribute of the current component is not - // a Fusion sequence, we have to pass through the provided container if - // both are compatible. - template ::value> - struct pass_through_container_container - : mpl::or_< - traits::is_weak_substitute - , traits::is_weak_substitute > - {}; - - // If the value type of the exposed container attribute is a Fusion - // sequence, we use the already existing logic for those. - template - struct pass_through_container_container< - Container, ValueType, Attribute, Sequence, AttributeValueType, true> - : pass_through_container_fusion_sequence< - Container, ValueType, AttributeValueType, Sequence> - {}; - - template - struct pass_through_container_base< - Container, ValueType, Attribute, Sequence - , typename enable_if >::type> - : detail::pass_through_container_container< - Container, ValueType, Attribute, Sequence - , typename traits::container_value::type> - {}; - - // Specialization for exposed optional attributes - // - // If the type embedded in the exposed optional is not a Fusion - // sequence we pass through the container attribute if it is compatible - // either to the optionals embedded type or to the containers value - // type. - template ::value> - struct pass_through_container_optional - : mpl::or_< - traits::is_weak_substitute - , traits::is_weak_substitute > - {}; - - // If the embedded type of the exposed optional attribute is a Fusion - // sequence, we use the already existing logic for those. - template - struct pass_through_container_optional< - Container, ValueType, Attribute, Sequence, true> - : pass_through_container_fusion_sequence< - Container, ValueType, Attribute, Sequence> - {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct pass_through_container - : pass_through_container_base - {}; - - // Handle optional attributes - template - struct pass_through_container< - Container, ValueType, boost::optional, Sequence> - : pass_through_container_optional< - Container, ValueType, Attribute, Sequence> - {}; - - // If both, the containers value type and the exposed attribute type are - // optionals we are allowed to pass through the container only if the - // embedded types of those optionals are not compatible. - template - struct pass_through_container< - Container, boost::optional, boost::optional - , Sequence> - : mpl::not_ > - {}; - - // Specialization for exposed variant attributes - // - // We pass through the container attribute if at least one of the embedded - // types in the variant requires to pass through the attribute - -#if !defined(BOOST_VARIANT_DO_NOT_USE_VARIADIC_TEMPLATES) - template - struct pass_through_container - , Sequence> - : pass_through_container - {}; - - template - struct pass_through_container, Sequence> - : mpl::bool_::type::value || pass_through_container< - Container, ValueType, boost::variant, Sequence - >::type::value> - {}; -#else -#define BOOST_SPIRIT_PASS_THROUGH_CONTAINER(z, N, _) \ - pass_through_container::type::value || \ - /***/ - - // make sure unused variant parameters do not affect the outcome - template - struct pass_through_container - : mpl::false_ - {}; - - template - struct pass_through_container, Sequence> - : mpl::bool_ - {}; - -#undef BOOST_SPIRIT_PASS_THROUGH_CONTAINER -#endif -}}}} - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - // forwarding customization point for domain qi::domain - template - struct pass_through_container< - Container, ValueType, Attribute, Sequence, qi::domain> - : qi::detail::pass_through_container< - Container, ValueType, Attribute, Sequence> - {}; -}}} - -namespace boost { namespace spirit { namespace qi { namespace detail -{ - /////////////////////////////////////////////////////////////////////////// - // This function handles the case where the attribute (Attr) given - // the sequence is an STL container. This is a wrapper around F. - // The function F does the actual parsing. -#ifdef _MSC_VER -# pragma warning(push) -# pragma warning(disable: 4512) // assignment operator could not be generated. -#endif - template - struct pass_container - { - typedef typename F::context_type context_type; - typedef typename F::iterator_type iterator_type; - - pass_container(F const& f_, Attr& attr_) - : f(f_), attr(attr_) {} - - // this is for the case when the current element exposes an attribute - // which is pushed back onto the container - template - bool dispatch_container(Component const& component, mpl::false_) const - { - // synthesized attribute needs to be default constructed - typename traits::container_value::type val = - typename traits::container_value::type(); - - iterator_type save = f.first; - bool r = f(component, val); - if (!r) - { - // push the parsed value into our attribute - r = !traits::push_back(attr, val); - if (r) - f.first = save; - } - return r; - } - - // this is for the case when the current element is able to handle an - // attribute which is a container itself, this element will push its - // data directly into the attribute container - template - bool dispatch_container(Component const& component, mpl::true_) const - { - return f(component, attr); - } - - /////////////////////////////////////////////////////////////////////// - // this is for the case when the current element doesn't expect an - // attribute - template - bool dispatch_attribute(Component const& component, mpl::false_) const - { - return f(component, unused); - } - - // the current element expects an attribute - template - bool dispatch_attribute(Component const& component, mpl::true_) const - { - typedef typename traits::container_value::type value_type; - typedef typename traits::attribute_of< - Component, context_type, iterator_type>::type - rhs_attribute; - - // this predicate detects, whether the attribute of the current - // element is a substitute for the value type of the container - // attribute - typedef mpl::and_< - traits::handles_container< - Component, Attr, context_type, iterator_type> - , traits::pass_through_container< - Attr, value_type, rhs_attribute, Sequence, qi::domain> - > predicate; - - return dispatch_container(component, predicate()); - } - - // Dispatches to dispatch_main depending on the attribute type - // of the Component - template - bool operator()(Component const& component) const - { - // we need to dispatch depending on the type of the attribute - // of the current element (component). If this is has no attribute - // we shouldn't pass an attribute at all. - typedef typename traits::not_is_unused< - typename traits::attribute_of< - Component, context_type, iterator_type - >::type - >::type predicate; - - // ensure the attribute is actually a container type - traits::make_container(attr); - - return dispatch_attribute(component, predicate()); - } - - F f; - Attr& attr; - }; -#ifdef _MSC_VER -# pragma warning(pop) -#endif - - /////////////////////////////////////////////////////////////////////////// - // Utility function to make a pass_container for container components - // (kleene, list, plus, repeat) - template - inline pass_container - make_pass_container(F const& f, Attr& attr) - { - return pass_container(f, attr); - } - - // Utility function to make a pass_container for sequences - template - inline pass_container - make_sequence_pass_container(F const& f, Attr& attr) - { - return pass_container(f, attr); - } -}}}} - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/detail/pass_function.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/detail/pass_function.hpp deleted file mode 100644 index f1a6da2eb83b..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/detail/pass_function.hpp +++ /dev/null @@ -1,73 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_QI_DETAIL_PASS_FUNCTION_HPP -#define BOOST_SPIRIT_QI_DETAIL_PASS_FUNCTION_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include - -namespace boost { namespace spirit { namespace qi { namespace detail -{ -#ifdef _MSC_VER -# pragma warning(push) -# pragma warning(disable: 4512) // assignment operator could not be generated. -#endif - template - struct pass_function - { - pass_function( - Iterator& first_, Iterator const& last_ - , Context& context_, Skipper const& skipper_) - : first(first_) - , last(last_) - , context(context_) - , skipper(skipper_) - { - } - - template - bool operator()(Component const& component, Attribute& attr) - { - // return true if the parser succeeds - return component.parse(first, last, context, skipper, attr); - } - - template - bool operator()(Component const& component, boost::optional& attr) - { - // return true if the parser succeeds - Attribute val; - if (component.parse(first, last, context, skipper, val)) - { - attr = val; - return true; - } - return false; - } - - template - bool operator()(Component const& component) - { - // return true if the parser succeeds - return component.parse(first, last, context, skipper, unused); - } - - Iterator& first; - Iterator const& last; - Context& context; - Skipper const& skipper; - }; -#ifdef _MSC_VER -# pragma warning(pop) -#endif -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/detail/permute_function.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/detail/permute_function.hpp deleted file mode 100644 index 4e35c588ac8b..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/detail/permute_function.hpp +++ /dev/null @@ -1,75 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_QI_DETAIL_PERMUTE_FUNCTION_HPP -#define BOOST_SPIRIT_QI_DETAIL_PERMUTE_FUNCTION_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include - -namespace boost { namespace spirit { namespace qi { namespace detail -{ -#ifdef _MSC_VER -# pragma warning(push) -# pragma warning(disable: 4512) // assignment operator could not be generated. -#endif - template - struct permute_function - { - permute_function( - Iterator& first_, Iterator const& last_ - , Context& context_, Skipper const& skipper_) - : first(first_) - , last(last_) - , context(context_) - , skipper(skipper_) - { - } - - template - bool operator()(Component const& component, Attribute& attr) - { - // return true if the parser succeeds and the slot is not yet taken - if (!*taken && component.parse(first, last, context, skipper, attr)) - { - *taken = true; - ++taken; - return true; - } - ++taken; - return false; - } - - template - bool operator()(Component const& component) - { - // return true if the parser succeeds and the slot is not yet taken - if (!*taken && component.parse(first, last, context, skipper, unused)) - { - *taken = true; - ++taken; - return true; - } - ++taken; - return false; - } - - Iterator& first; - Iterator const& last; - Context& context; - Skipper const& skipper; - bool* taken; - }; -#ifdef _MSC_VER -# pragma warning(pop) -#endif -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/detail/string_parse.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/detail/string_parse.hpp deleted file mode 100644 index 4025df550ddf..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/detail/string_parse.hpp +++ /dev/null @@ -1,89 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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_STRING_PARSE_APR_18_2006_1125PM) -#define BOOST_SPIRIT_STRING_PARSE_APR_18_2006_1125PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include - -namespace boost { namespace spirit { namespace qi { namespace detail -{ - template - inline bool string_parse( - Char const* str - , Iterator& first, Iterator const& last, Attribute& attr) - { - Iterator i = first; - Char ch = *str; - - for (; !!ch; ++i) - { - if (i == last || (ch != *i)) - return false; - ch = *++str; - } - - spirit::traits::assign_to(first, i, attr); - first = i; - return true; - } - - template - inline bool string_parse( - String const& str - , Iterator& first, Iterator const& last, Attribute& attr) - { - Iterator i = first; - typename String::const_iterator stri = str.begin(); - typename String::const_iterator str_last = str.end(); - - for (; stri != str_last; ++stri, ++i) - if (i == last || (*stri != *i)) - return false; - spirit::traits::assign_to(first, i, attr); - first = i; - return true; - } - - template - inline bool string_parse( - Char const* uc_i, Char const* lc_i - , Iterator& first, Iterator const& last, Attribute& attr) - { - Iterator i = first; - - for (; *uc_i && *lc_i; ++uc_i, ++lc_i, ++i) - if (i == last || ((*uc_i != *i) && (*lc_i != *i))) - return false; - spirit::traits::assign_to(first, i, attr); - first = i; - return true; - } - - template - inline bool string_parse( - String const& ucstr, String const& lcstr - , Iterator& first, Iterator const& last, Attribute& attr) - { - typename String::const_iterator uc_i = ucstr.begin(); - typename String::const_iterator uc_last = ucstr.end(); - typename String::const_iterator lc_i = lcstr.begin(); - Iterator i = first; - - for (; uc_i != uc_last; ++uc_i, ++lc_i, ++i) - if (i == last || ((*uc_i != *i) && (*lc_i != *i))) - return false; - spirit::traits::assign_to(first, i, attr); - first = i; - return true; - } -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/detail/unused_skipper.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/detail/unused_skipper.hpp deleted file mode 100644 index e4ece8ffe515..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/detail/unused_skipper.hpp +++ /dev/null @@ -1,66 +0,0 @@ -// 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_QI_UNUSED_SKIPPER_JUL_25_2009_0921AM) -#define BOOST_SPIRIT_QI_UNUSED_SKIPPER_JUL_25_2009_0921AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include - -namespace boost { namespace spirit { namespace qi { namespace detail -{ -#ifdef _MSC_VER -# pragma warning(push) -# pragma warning(disable: 4512) // assignment operator could not be generated. -#endif - template - struct unused_skipper : unused_type - { - unused_skipper(Skipper const& skipper_) - : skipper(skipper_) {} - Skipper const& skipper; - }; -#ifdef _MSC_VER -# pragma warning(pop) -#endif - - template - struct is_unused_skipper - : mpl::false_ {}; - - template - struct is_unused_skipper > - : mpl::true_ {}; - - template <> - struct is_unused_skipper - : mpl::true_ {}; - - // If a surrounding lexeme[] directive was specified, the current - // skipper is of the type unused_skipper. In this case we - // re-activate the skipper which was active before the skip[] - // directive. - template - inline Skipper const& - get_skipper(unused_skipper const& u) - { - return u.skipper; - } - - // If no surrounding lexeme[] directive was specified we keep what we got. - template - inline Skipper const& - get_skipper(Skipper const& u) - { - return u; - } - -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/directive.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/directive.hpp deleted file mode 100644 index 71e56f4efd9d..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/directive.hpp +++ /dev/null @@ -1,27 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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_DIRECTIVE_FEBRUARY_05_2007_0313PM) -#define BOOST_SPIRIT_DIRECTIVE_FEBRUARY_05_2007_0313PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/directive/as.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/directive/as.hpp deleted file mode 100644 index 4a76824f0761..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/directive/as.hpp +++ /dev/null @@ -1,176 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - Copyright (c) 2001-2011 Hartmut Kaiser - Copyright (c) 2010 Bryce Lelbach - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_QI_DIRECTIVE_AS_HPP -#define BOOST_SPIRIT_QI_DIRECTIVE_AS_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace qi -{ - template - struct as - : stateful_tag_type - { - //~ BOOST_SPIRIT_ASSERT_MSG( - //~ (traits::is_container::type::value), - //~ error_type_must_be_a_container, - //~ (T)); - }; -}}} - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - // enables as_string[...] - template <> - struct use_directive - : mpl::true_ {}; - - // enables as_wstring[...] - template <> - struct use_directive - : mpl::true_ {}; - - // enables as[...] - template - struct use_directive > - : mpl::true_ - {}; -}} - -namespace boost { namespace spirit { namespace qi -{ -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using spirit::as_string; - using spirit::as_wstring; -#endif - using spirit::as_string_type; - using spirit::as_wstring_type; - - template - struct as_directive : unary_parser > - { - typedef Subject subject_type; - as_directive(Subject const& subject_) - : subject(subject_) {} - - template - struct attribute - { - typedef T type; - }; - - template - bool parse(Iterator& first, Iterator const& last - , Context& context, Skipper const& skipper, Attribute& attr_) const - { - Iterator i = first; - T as_attr; - if (subject.parse(i, last, context, skipper, as_attr)) - { - spirit::traits::assign_to(as_attr, attr_); - first = i; - return true; - } - return false; - } - - template - bool parse(Iterator& first, Iterator const& last - , Context& context, Skipper const& skipper, T& attr_) const - { - Iterator i = first; - if (subject.parse(i, last, context, skipper, attr_)) - { - first = i; - return true; - } - return false; - } - - template - info what(Context& context) const - { - return info("as", subject.what(context)); - } - - Subject subject; - }; - - /////////////////////////////////////////////////////////////////////////// - // Parser generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_directive - { - typedef as_directive result_type; - result_type operator()(unused_type, Subject const& subject - , unused_type) const - { - return result_type(subject); - } - }; - - template - struct make_directive - { - typedef as_directive > result_type; - result_type operator()(unused_type, Subject const& subject - , unused_type) const - { - return result_type(subject); - } - }; - - template - struct make_directive, Subject, Modifiers> - { - typedef as_directive result_type; - result_type operator()(unused_type, Subject const& subject - , unused_type) const - { - return result_type(subject); - } - }; -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct has_semantic_action > - : unary_has_semantic_action {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container, Attribute - , Context, Iterator> - : mpl::false_ {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/directive/encoding.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/directive/encoding.hpp deleted file mode 100644 index 27ef8a1fd56a..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/directive/encoding.hpp +++ /dev/null @@ -1,32 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_QI_DIRECTIVE_ENCODING_HPP -#define BOOST_SPIRIT_QI_DIRECTIVE_ENCODING_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template - struct use_directive< - qi::domain, tag::char_code > // enables encoding - : mpl::true_ {}; - - template - struct is_modifier_directive > - : mpl::true_ {}; -}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/directive/expect.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/directive/expect.hpp deleted file mode 100644 index 9f238b9f3c3c..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/directive/expect.hpp +++ /dev/null @@ -1,113 +0,0 @@ -/*============================================================================= -Copyright (c) 2016 Frank Hein, maxence business consulting gmbh - -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) -==============================================================================*/ -#ifndef BOOST_SPIRIT_QI_DIRECTIVE_EXPECT_HPP -#define BOOST_SPIRIT_QI_DIRECTIVE_EXPECT_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_directive // enables expect[p] - : mpl::true_ {}; -}} - -namespace boost { namespace spirit { namespace qi { - -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using spirit::expect; -#endif - using spirit::expect_type; - - template - struct expect_directive : unary_parser > - { - typedef result_of::compile subject_type; - - template - struct attribute - { - typedef traits::attribute_of - type; - }; - - expect_directive(Subject const& subject_) : subject(subject_) {} - - template - bool parse(Iterator& first, Iterator const& last - , Context& context, Skipper const& skipper - , Attribute& attr_) const - { - typedef expectation_failure exception; - - if (!subject.parse(first, last, context, skipper, attr_)) - { - boost::throw_exception( - exception(first, last, subject.what(context))); -#if defined(BOOST_NO_EXCEPTIONS) - return false; // for systems not supporting exceptions -#endif - } - return true; - } - - template - info what(Context& context) const - { - return info("expect", subject.what(context)); - } - - Subject subject; - }; - - /////////////////////////////////////////////////////////////////////////// - // Parser generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_directive - { - typedef expect_directive result_type; - - result_type operator() - (unused_type, Subject const& subject, unused_type) const - { - return result_type(subject); - } - }; - -}}} - -namespace boost { namespace spirit { namespace traits { - /////////////////////////////////////////////////////////////////////////// - template - struct has_semantic_action > - : unary_has_semantic_action {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container< - qi::expect_directive, Attribute, Context, Iterator - > - : unary_handles_container {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/directive/hold.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/directive/hold.hpp deleted file mode 100644 index c9cbf54d5b86..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/directive/hold.hpp +++ /dev/null @@ -1,109 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_QI_DIRECTIVE_HOLD_HPP -#define BOOST_SPIRIT_QI_DIRECTIVE_HOLD_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_directive // enables hold - : mpl::true_ {}; -}} - -namespace boost { namespace spirit { namespace qi -{ -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using spirit::hold; -#endif - using spirit::hold_type; - - template - struct hold_directive : unary_parser > - { - typedef Subject subject_type; - hold_directive(Subject const& subject_) - : subject(subject_) {} - - template - struct attribute - { - typedef typename - traits::attribute_of::type - type; - }; - - template - bool parse(Iterator& first, Iterator const& last - , Context& context, Skipper const& skipper, Attribute& attr_) const - { - Attribute copy(attr_); - if (subject.parse(first, last, context, skipper, copy)) - { - traits::swap_impl(copy, attr_); - return true; - } - return false; - } - - template - info what(Context& context) const - { - return info("hold", subject.what(context)); - - } - - Subject subject; - }; - - /////////////////////////////////////////////////////////////////////////// - // Parser generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_directive - { - typedef hold_directive result_type; - result_type operator()(unused_type, Subject const& subject, unused_type) const - { - return result_type(subject); - } - }; -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct has_semantic_action > - : unary_has_semantic_action {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container, Attribute - , Context, Iterator> - : unary_handles_container {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/directive/lexeme.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/directive/lexeme.hpp deleted file mode 100644 index 9dc0a57bb49a..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/directive/lexeme.hpp +++ /dev/null @@ -1,120 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_QI_DIRECTIVE_LEXEME_HPP -#define BOOST_SPIRIT_QI_DIRECTIVE_LEXEME_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_directive // enables lexeme - : mpl::true_ {}; -}} - -namespace boost { namespace spirit { namespace qi -{ -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using spirit::lexeme; -#endif - using spirit::lexeme_type; - - template - struct lexeme_directive : unary_parser > - { - typedef Subject subject_type; - lexeme_directive(Subject const& subject_) - : subject(subject_) {} - - template - struct attribute - { - typedef typename - traits::attribute_of::type - type; - }; - - template - typename disable_if, bool>::type - parse(Iterator& first, Iterator const& last - , Context& context, Skipper const& skipper - , Attribute& attr_) const - { - qi::skip_over(first, last, skipper); - return subject.parse(first, last, context - , detail::unused_skipper(skipper), attr_); - } - template - typename enable_if, bool>::type - parse(Iterator& first, Iterator const& last - , Context& context, Skipper const& skipper - , Attribute& attr_) const - { - // no need to pre-skip if skipper is unused - //- qi::skip_over(first, last, skipper); - return subject.parse(first, last, context - , skipper, attr_); - } - - template - info what(Context& context) const - { - return info("lexeme", subject.what(context)); - - } - - Subject subject; - }; - - /////////////////////////////////////////////////////////////////////////// - // Parser generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_directive - { - typedef lexeme_directive result_type; - result_type operator()(unused_type, Subject const& subject, unused_type) const - { - return result_type(subject); - } - }; -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct has_semantic_action > - : unary_has_semantic_action {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container, Attribute - , Context, Iterator> - : unary_handles_container {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/directive/matches.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/directive/matches.hpp deleted file mode 100644 index d2af05a67064..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/directive/matches.hpp +++ /dev/null @@ -1,104 +0,0 @@ -/*============================================================================= - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_QI_DIRECTIVE_MATCHES_HPP -#define BOOST_SPIRIT_QI_DIRECTIVE_MATCHES_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_directive // enables matches - : mpl::true_ {}; -}} - -namespace boost { namespace spirit { namespace qi -{ -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using spirit::matches; -#endif - using spirit::matches_type; - - /////////////////////////////////////////////////////////////////////////// - // matches_directive returns whether the embedded parser matched - /////////////////////////////////////////////////////////////////////////// - template - struct matches_directive : unary_parser > - { - typedef Subject subject_type; - matches_directive(Subject const& subject_) - : subject(subject_) {} - - template - struct attribute - { - typedef bool type; - }; - - template - bool parse(Iterator& first, Iterator const& last - , Context& context, Skipper const& skipper, Attribute& attr_) const - { - bool result = subject.parse(first, last, context, skipper, unused); - spirit::traits::assign_to(result, attr_); - return true; - } - - template - info what(Context& context) const - { - return info("matches", subject.what(context)); - } - - Subject subject; - }; - - /////////////////////////////////////////////////////////////////////////// - // Parser generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_directive - { - typedef matches_directive result_type; - result_type operator()(unused_type, Subject const& subject, unused_type) const - { - return result_type(subject); - } - }; -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct has_semantic_action > - : unary_has_semantic_action {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container, Attribute - , Context, Iterator> - : unary_handles_container {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/directive/no_case.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/directive/no_case.hpp deleted file mode 100644 index d961dbca9fa1..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/directive/no_case.hpp +++ /dev/null @@ -1,32 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_QI_DIRECTIVE_NO_CASE_HPP -#define BOOST_SPIRIT_QI_DIRECTIVE_NO_CASE_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template - struct use_directive< - qi::domain, tag::char_code > // enables no_case - : mpl::true_ {}; - - template - struct is_modifier_directive > - : mpl::true_ {}; -}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/directive/no_skip.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/directive/no_skip.hpp deleted file mode 100644 index 0f35d46f492f..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/directive/no_skip.hpp +++ /dev/null @@ -1,120 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_QI_DIRECTIVE_NO_SKIP_HPP -#define BOOST_SPIRIT_QI_DIRECTIVE_NO_SKIP_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_directive // enables no_skip - : mpl::true_ {}; -}} - -namespace boost { namespace spirit { namespace qi -{ -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using spirit::no_skip; -#endif - using spirit::no_skip_type; - - // same as lexeme[], but does not pre-skip - template - struct no_skip_directive : unary_parser > - { - typedef Subject subject_type; - no_skip_directive(Subject const& subject_) - : subject(subject_) {} - - template - struct attribute - { - typedef typename - traits::attribute_of::type - type; - }; - - template - typename disable_if, bool>::type - parse(Iterator& first, Iterator const& last - , Context& context, Skipper const& skipper - , Attribute& attr_) const - { - return subject.parse(first, last, context - , detail::unused_skipper(skipper), attr_); - } - template - typename enable_if, bool>::type - parse(Iterator& first, Iterator const& last - , Context& context, Skipper const& skipper - , Attribute& attr_) const - { - return subject.parse(first, last, context - , skipper, attr_); - } - - template - info what(Context& context) const - { - return info("no_skip", subject.what(context)); - - } - - Subject subject; - }; - - /////////////////////////////////////////////////////////////////////////// - // Parser generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_directive - { - typedef no_skip_directive result_type; - result_type operator()(unused_type, Subject const& subject, unused_type) const - { - return result_type(subject); - } - }; -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct has_semantic_action > - : unary_has_semantic_action {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container, Attribute - , Context, Iterator> - : unary_handles_container {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/directive/omit.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/directive/omit.hpp deleted file mode 100644 index d60d2b221467..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/directive/omit.hpp +++ /dev/null @@ -1,103 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_QI_DIRECTIVE_OMIT_HPP -#define BOOST_SPIRIT_QI_DIRECTIVE_OMIT_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_directive // enables omit - : mpl::true_ {}; -}} - -namespace boost { namespace spirit { namespace qi -{ -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using spirit::omit; -#endif - using spirit::omit_type; - - /////////////////////////////////////////////////////////////////////////// - // omit_directive forces the attribute of subject parser - // to be unused_type - /////////////////////////////////////////////////////////////////////////// - template - struct omit_directive : unary_parser > - { - typedef Subject subject_type; - omit_directive(Subject const& subject_) - : subject(subject_) {} - - template - struct attribute - { - typedef unused_type type; - }; - - template - bool parse(Iterator& first, Iterator const& last - , Context& context, Skipper const& skipper, Attribute& attr_) const - { - return subject.parse(first, last, context, skipper, attr_); - } - - template - info what(Context& context) const - { - return info("omit", subject.what(context)); - } - - Subject subject; - }; - - /////////////////////////////////////////////////////////////////////////// - // Parser generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_directive - { - typedef omit_directive result_type; - result_type operator()(unused_type, Subject const& subject, unused_type) const - { - return result_type(subject); - } - }; -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct has_semantic_action > - : mpl::false_ {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container, Attribute - , Context, Iterator> - : unary_handles_container {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/directive/raw.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/directive/raw.hpp deleted file mode 100644 index f93b6ce8eab0..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/directive/raw.hpp +++ /dev/null @@ -1,111 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_QI_DIRECTIVE_RAW_HPP -#define BOOST_SPIRIT_QI_DIRECTIVE_RAW_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include // TODO: use forward include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_directive // enables raw - : mpl::true_ {}; -}} - -namespace boost { namespace spirit { namespace qi -{ -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using spirit::raw; -#endif - using spirit::raw_type; - - template - struct raw_directive : unary_parser > - { - typedef Subject subject_type; - raw_directive(Subject const& subject_) - : subject(subject_) {} - - template - struct attribute - { - typedef iterator_range type; - }; - - template - bool parse(Iterator& first, Iterator const& last - , Context& context, Skipper const& skipper, Attribute& attr_) const - { - qi::skip_over(first, last, skipper); - Iterator i = first; - if (subject.parse(i, last, context, skipper, unused)) - { - spirit::traits::assign_to(first, i, attr_); - first = i; - return true; - } - return false; - } - - template - info what(Context& context) const - { - return info("raw", subject.what(context)); - - } - - Subject subject; - }; - - /////////////////////////////////////////////////////////////////////////// - // Parser generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_directive - { - typedef raw_directive result_type; - result_type operator()(unused_type, Subject const& subject, unused_type) const - { - return result_type(subject); - } - }; -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct has_semantic_action > - : unary_has_semantic_action {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container, Attribute - , Context, Iterator> - : mpl::true_ {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/directive/repeat.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/directive/repeat.hpp deleted file mode 100644 index 7778e92b411d..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/directive/repeat.hpp +++ /dev/null @@ -1,288 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_QI_DIRECTIVE_REPEAT_HPP -#define BOOST_SPIRIT_QI_DIRECTIVE_REPEAT_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_directive // enables repeat[p] - : mpl::true_ {}; - - template - struct use_directive > - > : mpl::true_ {}; - - template - struct use_directive > - > : mpl::true_ {}; - - template - struct use_directive > - > : mpl::true_ {}; - - template <> // enables *lazy* repeat(exact)[p] - struct use_lazy_directive< - qi::domain - , tag::repeat - , 1 // arity - > : mpl::true_ {}; - - template <> // enables *lazy* repeat(min, max)[p] - struct use_lazy_directive< // and repeat(min, inf)[p] - qi::domain - , tag::repeat - , 2 // arity - > : mpl::true_ {}; -}} - -namespace boost { namespace spirit { namespace qi -{ -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using spirit::repeat; - using spirit::inf; -#endif - using spirit::repeat_type; - using spirit::inf_type; - -#ifdef _MSC_VER -# pragma warning(push) -# pragma warning(disable: 4512) // assignment operator could not be generated. -#endif - template - struct exact_iterator // handles repeat(exact)[p] - { - exact_iterator(T const exact_) - : exact(exact_) {} - - typedef T type; - T start() const { return 0; } - bool got_max(T i) const { return i >= exact; } - bool got_min(T i) const { return i >= exact; } - - T const exact; - }; - - template - struct finite_iterator // handles repeat(min, max)[p] - { - finite_iterator(T const min_, T const max_) - : min BOOST_PREVENT_MACRO_SUBSTITUTION (min_) - , max BOOST_PREVENT_MACRO_SUBSTITUTION (max_) {} - - typedef T type; - T start() const { return 0; } - bool got_max(T i) const { return i >= max; } - bool got_min(T i) const { return i >= min; } - - T const min; - T const max; - }; - - template - struct infinite_iterator // handles repeat(min, inf)[p] - { - infinite_iterator(T const min_) - : min BOOST_PREVENT_MACRO_SUBSTITUTION (min_) {} - - typedef T type; - T start() const { return 0; } - bool got_max(T /*i*/) const { return false; } - bool got_min(T i) const { return i >= min; } - - T const min; - }; -#ifdef _MSC_VER -# pragma warning(pop) -#endif - - template - struct repeat_parser : unary_parser > - { - typedef Subject subject_type; - - template - struct attribute - { - // Build a std::vector from the subject's attribute. Note - // that build_std_vector may return unused_type if the - // subject's attribute is an unused_type. - typedef typename - traits::build_std_vector< - typename traits::attribute_of< - Subject, Context, Iterator>::type - >::type - type; - }; - - repeat_parser(Subject const& subject_, LoopIter const& iter_) - : subject(subject_), iter(iter_) {} - - template - bool parse_container(F f) const - { - typename LoopIter::type i = iter.start(); - for (/**/; !iter.got_min(i); ++i) - { - if (f (subject)) - return false; - } - - // parse some more up to the maximum specified - typename F::iterator_type save = f.f.first; - for (/**/; !iter.got_max(i); ++i) - { - if (f (subject)) - break; - save = f.f.first; - } - - f.f.first = save; - return true; - } - - template - bool parse(Iterator& first, Iterator const& last - , Context& context, Skipper const& skipper - , Attribute& attr_) const - { - typedef detail::fail_function - fail_function; - - // ensure the attribute is actually a container type - traits::make_container(attr_); - - Iterator iter_local = first; - fail_function f(iter_local, last, context, skipper); - if (!parse_container(detail::make_pass_container(f, attr_))) - return false; - - first = f.first; - return true; - } - - template - info what(Context& context) const - { - return info("repeat", subject.what(context)); - } - - Subject subject; - LoopIter iter; - }; - - /////////////////////////////////////////////////////////////////////////// - // Parser generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_directive - { - typedef kleene result_type; - result_type operator()(unused_type, Subject const& subject, unused_type) const - { - return result_type(subject); - } - }; - - template - struct make_directive< - terminal_ex >, Subject, Modifiers> - { - typedef exact_iterator iterator_type; - typedef repeat_parser result_type; - - template - result_type operator()( - Terminal const& term, Subject const& subject, unused_type) const - { - return result_type(subject, fusion::at_c<0>(term.args)); - } - }; - - template - struct make_directive< - terminal_ex >, Subject, Modifiers> - { - typedef finite_iterator iterator_type; - typedef repeat_parser result_type; - - template - result_type operator()( - Terminal const& term, Subject const& subject, unused_type) const - { - return result_type(subject, - iterator_type( - fusion::at_c<0>(term.args) - , fusion::at_c<1>(term.args) - ) - ); - } - }; - - template - struct make_directive< - terminal_ex >, Subject, Modifiers> - { - typedef infinite_iterator iterator_type; - typedef repeat_parser result_type; - - template - result_type operator()( - Terminal const& term, Subject const& subject, unused_type) const - { - return result_type(subject, fusion::at_c<0>(term.args)); - } - }; -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct has_semantic_action > - : unary_has_semantic_action {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container - , Attribute, Context, Iterator> - : mpl::true_ {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/directive/skip.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/directive/skip.hpp deleted file mode 100644 index 55f114d226be..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/directive/skip.hpp +++ /dev/null @@ -1,202 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_QI_DIRECTIVE_SKIP_HPP -#define BOOST_SPIRIT_QI_DIRECTIVE_SKIP_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_directive // enables skip[p] - : mpl::true_ {}; - - template - struct use_directive > - > : boost::spirit::traits::matches {}; - - template <> // enables *lazy* skip(s)[p] - struct use_lazy_directive< - qi::domain - , tag::skip - , 1 // arity - > : mpl::true_ {}; -}} - -namespace boost { namespace spirit { namespace qi -{ -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using spirit::skip; -#endif - using spirit::skip_type; - - template - struct reskip_parser : unary_parser > - { - typedef Subject subject_type; - - template - struct attribute - { - typedef typename - traits::attribute_of::type - type; - }; - - reskip_parser(Subject const& subject_) - : subject(subject_) {} - - template - typename enable_if, bool>::type - parse(Iterator& first, Iterator const& last - , Context& context, Skipper const& u // --> The skipper is reintroduced - , Attribute& attr_) const - { - return subject.parse(first, last, context - , detail::get_skipper(u), attr_); - } - template - typename disable_if, bool>::type - parse(Iterator& first, Iterator const& last - , Context& context, Skipper const& skipper - , Attribute& attr_) const - { - return subject.parse(first, last, context - , skipper, attr_); - } - - template - info what(Context& context) const - { - return info("skip", subject.what(context)); - } - - Subject subject; - }; - - template - struct skip_parser : unary_parser > - { - typedef Subject subject_type; - typedef Skipper skipper_type; - - template - struct attribute - { - typedef typename - traits::attribute_of::type - type; - }; - - skip_parser(Subject const& subject_, Skipper const& skipper_) - : subject(subject_), skipper(skipper_) {} - - template - bool parse(Iterator& first, Iterator const& last - , Context& context, Skipper_ const& //skipper --> bypass the supplied skipper - , Attribute& attr_) const - { - return subject.parse(first, last, context, skipper, attr_); - } - - template - info what(Context& context) const - { - return info("skip", subject.what(context)); - } - - Subject subject; - Skipper skipper; - }; - - /////////////////////////////////////////////////////////////////////////// - // Parser generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_directive - { - typedef reskip_parser result_type; - result_type operator()(unused_type, Subject const& subject, unused_type) const - { - return result_type(subject); - } - }; - - template - struct make_directive< - terminal_ex >, Subject, Modifiers> - { - typedef typename - result_of::compile::type - skipper_type; - - typedef skip_parser result_type; - - template - result_type operator()(Terminal const& term, Subject const& subject - , Modifiers const& modifiers) const - { - return result_type(subject - , compile(fusion::at_c<0>(term.args), modifiers)); - } - }; - -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct has_semantic_action > - : unary_has_semantic_action {}; - - template - struct has_semantic_action > - : unary_has_semantic_action {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container, Attribute - , Context, Iterator> - : unary_handles_container {}; - - template - struct handles_container, Attribute - , Context, Iterator> - : unary_handles_container {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/domain.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/domain.hpp deleted file mode 100644 index cc6b8c3911b8..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/domain.hpp +++ /dev/null @@ -1,74 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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_DOMAIN_JANUARY_29_2007_0954AM) -#define BOOST_SPIRIT_DOMAIN_JANUARY_29_2007_0954AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include - -#include -#include - -namespace boost { namespace spirit { namespace qi -{ - // qi's domain - struct domain {}; - - // bring in some of spirit parts into spirit::qi - using spirit::unused; - using spirit::unused_type; - using spirit::compile; - using spirit::info; - - // You can bring these in with the using directive - // without worrying about bringing in too much. - namespace labels - { - BOOST_PP_REPEAT(SPIRIT_ARGUMENTS_LIMIT, SPIRIT_USING_ARGUMENT, _) - BOOST_PP_REPEAT(SPIRIT_ATTRIBUTES_LIMIT, SPIRIT_USING_ATTRIBUTE, _) - - using spirit::_pass_type; - using spirit::_val_type; - using spirit::_a_type; - using spirit::_b_type; - using spirit::_c_type; - using spirit::_d_type; - using spirit::_e_type; - using spirit::_f_type; - using spirit::_g_type; - using spirit::_h_type; - using spirit::_i_type; - using spirit::_j_type; - -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - - using spirit::_pass; - using spirit::_val; - using spirit::_a; - using spirit::_b; - using spirit::_c; - using spirit::_d; - using spirit::_e; - using spirit::_f; - using spirit::_g; - using spirit::_h; - using spirit::_i; - using spirit::_j; - -#endif - } - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/match.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/match.hpp deleted file mode 100644 index 2e47d718e085..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/match.hpp +++ /dev/null @@ -1,16 +0,0 @@ -// 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_QI_MATCH_DEC_02_2009_0749PM) -#define BOOST_SPIRIT_QI_MATCH_DEC_02_2009_0749PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/match_auto.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/match_auto.hpp deleted file mode 100644 index a50c9d69dd8d..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/match_auto.hpp +++ /dev/null @@ -1,16 +0,0 @@ -// 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_QI_MATCH_AUTO_DEC_02_2009_0750PM) -#define BOOST_SPIRIT_QI_MATCH_AUTO_DEC_02_2009_0750PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/meta_compiler.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/meta_compiler.hpp deleted file mode 100644 index afebaa3e372b..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/meta_compiler.hpp +++ /dev/null @@ -1,178 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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_META_COMPILER_OCTOBER_16_2008_0347PM) -#define BOOST_SPIRIT_META_COMPILER_OCTOBER_16_2008_0347PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - template - struct use_terminal >::type> // enables parsers - : mpl::true_ {}; - - namespace qi - { - template - struct make_primitive // by default, return it as-is - { - typedef T result_type; - - template - T_& operator()(T_& val, unused_type) const - { - return val; - } - - template - T_ const& operator()(T_ const& val, unused_type) const - { - return val; - } - }; - - template - struct make_composite; - - template - struct make_directive - { - typedef Body result_type; - result_type operator()(unused_type, Body const& body, unused_type) const - { - return body; // By default, a directive simply returns its subject - } - }; - } - - // Qi primitive meta-compiler - template <> - struct make_component - { - template - struct result; - - template - struct result - { - typedef typename qi::make_primitive< - typename remove_const::type, - typename remove_reference::type>::result_type - type; - }; - - template - typename result::type - operator()(Elements const& elements, Modifiers const& modifiers) const - { - typedef typename remove_const::type term; - return qi::make_primitive()(elements.car, modifiers); - } - }; - - // Qi composite meta-compiler - template - struct make_component - { - template - struct result; - - template - struct result - { - typedef typename - qi::make_composite::type>::result_type - type; - }; - - template - typename result::type - operator()(Elements const& elements, Modifiers const& modifiers) const - { - return qi::make_composite()( - elements, modifiers); - } - }; - - // Qi function meta-compiler - template <> - struct make_component - { - template - struct result; - - template - struct result - { - typedef typename - qi::make_composite< - typename remove_const::type, - typename Elements::cdr_type, - typename remove_reference::type - >::result_type - type; - }; - - template - typename result::type - operator()(Elements const& elements, Modifiers const& modifiers) const - { - return qi::make_composite< - typename remove_const::type, - typename Elements::cdr_type, - Modifiers>()(elements.cdr, modifiers); - } - }; - - // Qi directive meta-compiler - template <> - struct make_component - { - template - struct result; - - template - struct result - { - typedef typename - qi::make_directive< - typename remove_const::type, - typename remove_const::type, - typename remove_reference::type - >::result_type - type; - }; - - template - typename result::type - operator()(Elements const& elements, Modifiers const& modifiers) const - { - return qi::make_directive< - typename remove_const::type, - typename remove_const::type, - Modifiers>()(elements.car, elements.cdr.car, modifiers); - } - }; - -}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/nonterminal.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/nonterminal.hpp deleted file mode 100644 index e96fbf5fb449..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/nonterminal.hpp +++ /dev/null @@ -1,21 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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_NONTERMINAL_FEBRUARY_12_2007_1018AM) -#define BOOST_SPIRIT_NONTERMINAL_FEBRUARY_12_2007_1018AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/nonterminal/debug_handler.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/nonterminal/debug_handler.hpp deleted file mode 100644 index 88b8808c68b4..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/nonterminal/debug_handler.hpp +++ /dev/null @@ -1,141 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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_DEBUG_HANDLER_DECEMBER_05_2008_0734PM) -#define BOOST_SPIRIT_DEBUG_HANDLER_DECEMBER_05_2008_0734PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace qi -{ - template < - typename Iterator, typename Context - , typename Skipper, typename F> - struct debug_handler - { - typedef function< - bool(Iterator& first, Iterator const& last - , Context& context - , Skipper const& skipper - )> - function_type; - - debug_handler( - function_type subject_ - , F f_ - , std::string const& rule_name_) - : subject(subject_) - , f(f_) - , rule_name(rule_name_) - { - } - - bool operator()( - Iterator& first, Iterator const& last - , Context& context, Skipper const& skipper) const - { - f(first, last, context, pre_parse, rule_name); - try // subject might throw an exception - { - if (subject(first, last, context, skipper)) - { - f(first, last, context, successful_parse, rule_name); - return true; - } - f(first, last, context, failed_parse, rule_name); - } - catch (expectation_failure const& e) - { - f(first, last, context, failed_parse, rule_name); - boost::throw_exception(e); - } - return false; - } - - function_type subject; - F f; - std::string rule_name; - }; - - template - void debug(rule& r, F f) - { - typedef rule rule_type; - - typedef - debug_handler< - Iterator - , typename rule_type::context_type - , typename rule_type::skipper_type - , F> - debug_handler; - r.f = debug_handler(r.f, f, r.name()); - } - - struct simple_trace; - - namespace detail - { - // This class provides an extra level of indirection through a - // template to produce the simple_trace type. This way, the use - // of simple_trace below is hidden behind a dependent type, so - // that compilers eagerly type-checking template definitions - // won't complain that simple_trace is incomplete. - template - struct get_simple_trace - { - typedef simple_trace type; - }; - } - - template - void debug(rule& r) - { - typedef rule rule_type; - - typedef - debug_handler< - Iterator - , typename rule_type::context_type - , typename rule_type::skipper_type - , simple_trace> - debug_handler; - - typedef typename qi::detail::get_simple_trace::type trace; - r.f = debug_handler(r.f, trace(), r.name()); - } - -}}} - -/////////////////////////////////////////////////////////////////////////////// -// Utility macro for easy enabling of rule and grammar debugging -#if !defined(BOOST_SPIRIT_DEBUG_NODE) - #if defined(BOOST_SPIRIT_DEBUG) || defined(BOOST_SPIRIT_QI_DEBUG) - #define BOOST_SPIRIT_DEBUG_NODE(r) r.name(#r); debug(r) - #else - #define BOOST_SPIRIT_DEBUG_NODE(r) r.name(#r) - #endif -#endif - -#define BOOST_SPIRIT_DEBUG_NODE_A(r, _, name) \ - BOOST_SPIRIT_DEBUG_NODE(name); \ - /***/ - -#define BOOST_SPIRIT_DEBUG_NODES(seq) \ - BOOST_PP_SEQ_FOR_EACH(BOOST_SPIRIT_DEBUG_NODE_A, _, seq) \ - /***/ - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/nonterminal/debug_handler_state.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/nonterminal/debug_handler_state.hpp deleted file mode 100644 index cb24c01f478c..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/nonterminal/debug_handler_state.hpp +++ /dev/null @@ -1,24 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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_DEBUG_HANDLER_STATE_APR_21_2010_0733PM) -#define BOOST_SPIRIT_DEBUG_HANDLER_STATE_APR_21_2010_0733PM - -#if defined(_MSC_VER) -#pragma once -#endif - -namespace boost { namespace spirit { namespace qi -{ - enum debug_handler_state - { - pre_parse - , successful_parse - , failed_parse - }; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/nonterminal/detail/fcall.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/nonterminal/detail/fcall.hpp deleted file mode 100644 index e4fa17f98590..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/nonterminal/detail/fcall.hpp +++ /dev/null @@ -1,53 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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) -==============================================================================*/ -#ifndef BOOST_PP_IS_ITERATING - -#include -#include -#include - -#define BOOST_PP_FILENAME_1 \ - -#define BOOST_PP_ITERATION_LIMITS (1, SPIRIT_ARGUMENTS_LIMIT) -#include BOOST_PP_ITERATE() - -/////////////////////////////////////////////////////////////////////////////// -// -// Preprocessor vertical repetition code -// -/////////////////////////////////////////////////////////////////////////////// -#else // defined(BOOST_PP_IS_ITERATING) - -#define N BOOST_PP_ITERATION() - - template - typename lazy_enable_if_c< - (params_size == N) - , proto::terminal< - spirit::qi::parameterized_nonterminal< - parameterized_subject_type - , fusion::vector > - > - >::type - operator()(BOOST_PP_ENUM_BINARY_PARAMS(N, A, const& f)) const - { - typedef fusion::vector vector_type; - typedef spirit::qi::parameterized_nonterminal< - parameterized_subject_type, vector_type> parameterized_type; - typedef typename proto::terminal::type result_type; - - return result_type::make( - parameterized_type( - this->get_parameterized_subject() - , fusion::make_vector(BOOST_PP_ENUM_PARAMS(N, f))) - ); - } - -#undef N -#endif // defined(BOOST_PP_IS_ITERATING) - - diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/nonterminal/detail/parameterized.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/nonterminal/detail/parameterized.hpp deleted file mode 100644 index 825fa40732ed..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/nonterminal/detail/parameterized.hpp +++ /dev/null @@ -1,75 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - Copyright (c) 2009 Francois Barel - - 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_PARAMETERIZED_AUGUST_09_2009_0539AM) -#define BOOST_SPIRIT_PARAMETERIZED_AUGUST_09_2009_0539AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include - -#include -#include - -namespace boost { namespace spirit { namespace qi -{ - /////////////////////////////////////////////////////////////////////////// - // parameterized_nonterminal: parser representing the invocation of a - // nonterminal, passing inherited attributes - /////////////////////////////////////////////////////////////////////////// - template - struct parameterized_nonterminal - : parser > - { - parameterized_nonterminal(Subject const& subject, Params const& params_) - : ref(subject), params(params_) - { - } - - template - struct attribute - // Forward to subject. - : Subject::template attribute {}; - - template - bool parse(Iterator& first, Iterator const& last - , Context& context, Skipper const& skipper - , Attribute& attr_) const - { - // Forward to subject, passing the additional - // params argument to parse. - return ref.get().parse(first, last, context, skipper, attr_, params); - } - - template - info what(Context& context) const - { - // Forward to subject. - return ref.get().what(context); - } - - boost::reference_wrapper ref; - Params params; - }; -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container - , Attribute, Context, Iterator> - : handles_container::type - , Attribute, Context, Iterator> - {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/nonterminal/detail/parser_binder.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/nonterminal/detail/parser_binder.hpp deleted file mode 100644 index 87d8e84ec4bf..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/nonterminal/detail/parser_binder.hpp +++ /dev/null @@ -1,87 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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_PARSER_BINDER_DECEMBER_05_2008_0516_PM) -#define BOOST_SPIRIT_PARSER_BINDER_DECEMBER_05_2008_0516_PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include - -namespace boost { namespace spirit { namespace qi { namespace detail -{ - // parser_binder for plain rules - template - struct parser_binder - { - parser_binder(Parser const& p_) - : p(p_) {} - - template - bool call(Iterator& first, Iterator const& last - , Context& context, Skipper const& skipper, mpl::true_) const - { - // If DeducedAuto is false (semantic actions is present), the - // component's attribute is unused. - return p.parse(first, last, context, skipper, unused); - } - - template - bool call(Iterator& first, Iterator const& last - , Context& context, Skipper const& skipper, mpl::false_) const - { - // If DeducedAuto is true (no semantic action), we pass the rule's - // attribute on to the component. - return p.parse(first, last, context, skipper - , fusion::at_c<0>(context.attributes)); - } - - template - bool operator()( - Iterator& first, Iterator const& last - , Context& context, Skipper const& skipper) const - { - // If Auto is false, we need to deduce whether to apply auto rule - typedef typename traits::has_semantic_action::type auto_rule; - return call(first, last, context, skipper, auto_rule()); - } - - Parser p; - }; - - // parser_binder for auto rules - template - struct parser_binder - { - parser_binder(Parser const& p_) - : p(p_) {} - - template - bool operator()( - Iterator& first, Iterator const& last - , Context& context, Skipper const& skipper) const - { - // If Auto is true, we pass the rule's attribute on to the component. - return p.parse(first, last, context, skipper - , fusion::at_c<0>(context.attributes)); - } - - Parser p; - }; - - template - inline parser_binder - bind_parser(Parser const& p) - { - return parser_binder(p); - } -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/nonterminal/error_handler.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/nonterminal/error_handler.hpp deleted file mode 100644 index e8c4f8771a84..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/nonterminal/error_handler.hpp +++ /dev/null @@ -1,176 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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_ERROR_HANDLER_APRIL_29_2007_1042PM) -#define BOOST_SPIRIT_ERROR_HANDLER_APRIL_29_2007_1042PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace qi -{ - enum error_handler_result - { - fail - , retry - , accept - , rethrow - }; - - namespace detail - { - // Helper template allowing to manage the inhibit clear queue flag in - // a multi_pass iterator. This is the usual specialization used for - // anything but a multi_pass iterator. - template - struct reset_on_exit - { - reset_on_exit(Iterator&) {} - }; - - // For 'retry' or 'fail' error handlers we need to inhibit the flushing - // of the internal multi_pass buffers which otherwise might happen at - // deterministic expectation points inside the encapsulated right hand - // side of rule. - template - struct reset_on_exit - { - reset_on_exit(Iterator& it) - : it_(it) - , inhibit_clear_queue_(spirit::traits::inhibit_clear_queue(it)) - { - spirit::traits::inhibit_clear_queue(it_, true); - } - - ~reset_on_exit() - { - // reset inhibit flag in multi_pass on exit - spirit::traits::inhibit_clear_queue(it_, inhibit_clear_queue_); - } - - Iterator& it_; - bool inhibit_clear_queue_; - }; - } - - template < - typename Iterator, typename Context - , typename Skipper, typename F, error_handler_result action - > - struct error_handler - { - typedef function< - bool(Iterator& first, Iterator const& last - , Context& context - , Skipper const& skipper - )> - function_type; - - error_handler(function_type subject_, F f_) - : subject(subject_) - , f(f_) - { - } - - bool operator()( - Iterator& first, Iterator const& last - , Context& context, Skipper const& skipper) const - { - typedef qi::detail::reset_on_exit::value && - (action == retry || action == fail)> on_exit_type; - - on_exit_type on_exit(first); - for(;;) - { - try - { - Iterator i = first; - bool r = subject(i, last, context, skipper); - if (r) - first = i; - return r; - } - catch (expectation_failure const& x) - { - typedef - fusion::vector< - Iterator& - , Iterator const& - , Iterator const& - , info const&> - params; - error_handler_result r = action; - params args(first, last, x.first, x.what_); - f(args, context, r); - - // The assertions below will fire if you are using a - // multi_pass as the underlying iterator, one of your error - // handlers forced its guarded rule to 'fail' or 'retry', - // and the error handler has not been instantiated using - // either 'fail' or 'retry' in the first place. Please see - // the multi_pass docs for more information. - switch (r) - { - case fail: - BOOST_ASSERT( - !traits::is_multi_pass::value || - action == retry || action == fail); - return false; - case retry: - BOOST_ASSERT( - !traits::is_multi_pass::value || - action == retry || action == fail); - continue; - case accept: return true; - case rethrow: boost::throw_exception(x); - } - } - } - return false; - } - - function_type subject; - F f; - }; - - template < - error_handler_result action - , typename Iterator, typename T0, typename T1, typename T2 - , typename F> - void on_error(rule& r, F f) - { - typedef rule rule_type; - - typedef - error_handler< - Iterator - , typename rule_type::context_type - , typename rule_type::skipper_type - , F - , action> - error_handler; - r.f = error_handler(r.f, f); - } - - // Error handling support when is not - // specified. We will default to . - template - void on_error(rule& r, F f) - { - on_error(r, f); - } -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/nonterminal/grammar.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/nonterminal/grammar.hpp deleted file mode 100644 index ac91acf309b2..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/nonterminal/grammar.hpp +++ /dev/null @@ -1,134 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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_GRAMMAR_FEBRUARY_19_2007_0236PM) -#define BOOST_SPIRIT_GRAMMAR_FEBRUARY_19_2007_0236PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace qi -{ - template < - typename Iterator, typename T1, typename T2, typename T3 - , typename T4> - struct grammar - : proto::extends< - typename proto::terminal< - reference const> - >::type - , grammar - > - , parser > - , noncopyable - { - typedef Iterator iterator_type; - typedef rule start_type; - typedef typename start_type::sig_type sig_type; - typedef typename start_type::locals_type locals_type; - typedef typename start_type::skipper_type skipper_type; - typedef typename start_type::encoding_type encoding_type; - typedef grammar base_type; - typedef reference reference_; - typedef typename proto::terminal::type terminal; - - static size_t const params_size = start_type::params_size; - - template - struct attribute - { - typedef typename start_type::attr_type type; - }; - - grammar( - start_type const& start - , std::string const& name = "unnamed-grammar") - : proto::extends(terminal::make(reference_(start))) - , name_(name) - {} - - // This constructor is used to catch if the start rule is not - // compatible with the grammar. - template - grammar( - rule const& - , std::string const& = "unnamed-grammar") - { - // If you see the assertion below failing then the start rule - // passed to the constructor of the grammar is not compatible with - // the grammar (i.e. it uses different template parameters). - BOOST_SPIRIT_ASSERT_MSG( - (is_same >::value) - , incompatible_start_rule, (rule)); - } - - std::string name() const - { - return name_; - } - - void name(std::string const& str) - { - name_ = str; - } - - template - bool parse(Iterator& first, Iterator const& last - , Context& context, Skipper const& skipper - , Attribute& attr_) const - { - return this->proto_base().child0.parse( - first, last, context, skipper, attr_); - } - - template - info what(Context&) const - { - return info(name_); - } - - // bring in the operator() overloads - start_type const& get_parameterized_subject() const - { return this->proto_base().child0.ref.get(); } - typedef start_type parameterized_subject_type; - #include - - std::string name_; - - }; -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template < - typename IteratorA, typename IteratorB, typename Attribute - , typename Context, typename T1, typename T2, typename T3, typename T4> - struct handles_container< - qi::grammar, Attribute, Context, IteratorB> - : traits::is_container< - typename attribute_of< - qi::grammar, Context, IteratorB - >::type - > - {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/nonterminal/nonterminal_fwd.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/nonterminal/nonterminal_fwd.hpp deleted file mode 100644 index 9e393452ac06..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/nonterminal/nonterminal_fwd.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// 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_QI_NONTERMINAL_FWD_DEC_24_2010_1105PM) -#define BOOST_SPIRIT_QI_NONTERMINAL_FWD_DEC_24_2010_1105PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include - -namespace boost { namespace spirit { namespace qi -{ - // forward declaration only - template < - typename Iterator, typename T1 = unused_type - , typename T2 = unused_type, typename T3 = unused_type - , typename T4 = unused_type> - struct rule; - - template < - typename Iterator, typename T1 = unused_type - , typename T2 = unused_type, typename T3 = unused_type - , typename T4 = unused_type> - struct grammar; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/nonterminal/rule.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/nonterminal/rule.hpp deleted file mode 100644 index 60a2b1c64c3a..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/nonterminal/rule.hpp +++ /dev/null @@ -1,458 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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_RULE_FEBRUARY_12_2007_1020AM) -#define BOOST_SPIRIT_RULE_FEBRUARY_12_2007_1020AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#if defined(BOOST_MSVC) -# pragma warning(push) -# pragma warning(disable: 4355) // 'this' : used in base member initializer list warning -# pragma warning(disable: 4127) // conditional expression is constant -#endif - -namespace boost { namespace spirit { namespace qi -{ - BOOST_PP_REPEAT(SPIRIT_ATTRIBUTES_LIMIT, SPIRIT_USING_ATTRIBUTE, _) - - using spirit::_pass_type; - using spirit::_val_type; - using spirit::_a_type; - using spirit::_b_type; - using spirit::_c_type; - using spirit::_d_type; - using spirit::_e_type; - using spirit::_f_type; - using spirit::_g_type; - using spirit::_h_type; - using spirit::_i_type; - using spirit::_j_type; - -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - - using spirit::_pass; - using spirit::_val; - using spirit::_a; - using spirit::_b; - using spirit::_c; - using spirit::_d; - using spirit::_e; - using spirit::_f; - using spirit::_g; - using spirit::_h; - using spirit::_i; - using spirit::_j; - -#endif - - using spirit::info; - using spirit::locals; - - template < - typename Iterator, typename T1, typename T2, typename T3 - , typename T4> - struct rule - : proto::extends< - typename proto::terminal< - reference const> - >::type - , rule - > - , parser > - { - typedef Iterator iterator_type; - typedef rule this_type; - typedef reference reference_; - typedef typename proto::terminal::type terminal; - typedef proto::extends base_type; - typedef mpl::vector template_params; - - // The rule's locals_type: a sequence of types to be used as local variables - typedef typename - spirit::detail::extract_locals::type - locals_type; - - // The rule's skip-parser type - typedef typename - spirit::detail::extract_component< - qi::domain, template_params>::type - skipper_type; - - // The rule's encoding type - typedef typename - spirit::detail::extract_encoding::type - encoding_type; - - // The rule's signature - typedef typename - spirit::detail::extract_sig::type - sig_type; - - // This is the rule's attribute type - typedef typename - spirit::detail::attr_from_sig::type - attr_type; - BOOST_STATIC_ASSERT_MSG( - !is_reference::value, - "Reference qualifier on Qi rule attribute is meaningless"); - typedef attr_type& attr_reference_type; - - // parameter_types is a sequence of types passed as parameters to the rule - typedef typename - spirit::detail::params_from_sig::type - parameter_types; - - static size_t const params_size = - fusion::result_of::size::type::value; - - typedef context< - fusion::cons - , locals_type> - context_type; - - typedef function< - bool(Iterator& first, Iterator const& last - , context_type& context - , skipper_type const& skipper - )> - function_type; - - typedef typename - mpl::if_< - is_same - , unused_type - , tag::char_code - >::type - encoding_modifier_type; - - explicit rule(std::string const& name = "unnamed-rule") - : base_type(terminal::make(reference_(*this))) - , name_(name) - { - } - - rule(rule const& rhs) - : base_type(terminal::make(reference_(*this))) - , name_(rhs.name_) - , f(rhs.f) - { - } - - template - static void define(rule& /*lhs*/, Expr const& /*expr*/, mpl::false_) - { - // Report invalid expression error as early as possible. - // If you got an error_invalid_expression error message here, - // then the expression (expr) is not a valid spirit qi expression. - BOOST_SPIRIT_ASSERT_MATCH(qi::domain, Expr); - } - - template - static void define(rule& lhs, Expr const& expr, mpl::true_) - { - lhs.f = detail::bind_parser( - compile(expr, encoding_modifier_type())); - } - - template - rule(Expr const& expr, std::string const& name = "unnamed-rule") - : base_type(terminal::make(reference_(*this))) - , name_(name) - { - define(*this, expr, traits::matches()); - } - - rule& operator=(rule const& rhs) - { - // The following assertion fires when you try to initialize a rule - // from an uninitialized one. Did you mean to refer to the right - // hand side rule instead of assigning from it? In this case you - // should write lhs = rhs.alias(); - BOOST_ASSERT(rhs.f && "Did you mean rhs.alias() instead of rhs?"); - - f = rhs.f; - name_ = rhs.name_; - return *this; - } - - std::string const& name() const - { - return name_; - } - - void name(std::string const& str) - { - name_ = str; - } - - template - rule& operator=(Expr const& expr) - { - define(*this, expr, traits::matches()); - return *this; - } - -// VC7.1 has problems to resolve 'rule' without explicit template parameters -#if !BOOST_WORKAROUND(BOOST_MSVC, < 1400) - // g++ 3.3 barfs if this is a member function :( - template - friend rule& operator%=(rule& r, Expr const& expr) - { - define(r, expr, traits::matches()); - return r; - } - -#if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) - // non-const version needed to suppress proto's %= kicking in - template - friend rule& operator%=(rule& r, Expr& expr) - { - return r %= static_cast(expr); - } -#else - // for rvalue references - template - friend rule& operator%=(rule& r, Expr&& expr) - { - define(r, expr, traits::matches()); - return r; - } -#endif - -#else - // both friend functions have to be defined out of class as VC7.1 - // will complain otherwise - template - friend rule& operator%=( - rule& r, Expr const& expr); - - // non-const version needed to suppress proto's %= kicking in - template - friend rule& operator%=( - rule& r, Expr& expr); -#endif - - template - struct attribute - { - typedef attr_type type; - }; - - template - bool parse(Iterator& first, Iterator const& last - , Context& /*context*/, Skipper const& skipper - , Attribute& attr_param) const - { - BOOST_STATIC_ASSERT_MSG((is_same::value || - !is_same::value), - "The rule was instantiated with a skipper type but you have not pass any. " - "Did you use `parse` instead of `phrase_parse`?"); - BOOST_STATIC_ASSERT_MSG( - (is_convertible::value), - "The passed skipper is not compatible/convertible to one " - "that the rule was instantiated with"); - if (f) - { - // do a preskip if this is an implied lexeme - if (is_same::value) - qi::skip_over(first, last, skipper); - - // do down-stream transformation, provides attribute for - // rhs parser - typedef traits::transform_attribute< - Attribute, attr_type, domain> - transform; - - typename transform::type attr_ = transform::pre(attr_param); - - // If you are seeing a compilation error here, you are probably - // trying to use a rule or a grammar which has inherited - // attributes, without passing values for them. - context_type context(attr_); - - // If you are seeing a compilation error here stating that the - // fourth parameter can't be converted to a required target type - // then you are probably trying to use a rule or a grammar with - // an incompatible skipper type. - if (f(first, last, context, skipper)) - { - // do up-stream transformation, this integrates the results - // back into the original attribute value, if appropriate - transform::post(attr_param, attr_); - return true; - } - - // inform attribute transformation of failed rhs - transform::fail(attr_param); - } - return false; - } - - template - bool parse(Iterator& first, Iterator const& last - , Context& caller_context, Skipper const& skipper - , Attribute& attr_param, Params const& params) const - { - BOOST_STATIC_ASSERT_MSG((is_same::value || - !is_same::value), - "The rule was instantiated with a skipper type but you have not pass any. " - "Did you use `parse` instead of `phrase_parse`?"); - BOOST_STATIC_ASSERT_MSG( - (is_convertible::value), - "The passed skipper is not compatible/convertible to one " - "that the rule was instantiated with"); - if (f) - { - // do a preskip if this is an implied lexeme - if (is_same::value) - qi::skip_over(first, last, skipper); - - // do down-stream transformation, provides attribute for - // rhs parser - typedef traits::transform_attribute< - Attribute, attr_type, domain> - transform; - - typename transform::type attr_ = transform::pre(attr_param); - - // If you are seeing a compilation error here, you are probably - // trying to use a rule or a grammar which has inherited - // attributes, passing values of incompatible types for them. - context_type context(attr_, params, caller_context); - - // If you are seeing a compilation error here stating that the - // fourth parameter can't be converted to a required target type - // then you are probably trying to use a rule or a grammar with - // an incompatible skipper type. - if (f(first, last, context, skipper)) - { - // do up-stream transformation, this integrates the results - // back into the original attribute value, if appropriate - transform::post(attr_param, attr_); - return true; - } - - // inform attribute transformation of failed rhs - transform::fail(attr_param); - } - return false; - } - - template - info what(Context& /*context*/) const - { - return info(name_); - } - - reference_ alias() const - { - return reference_(*this); - } - - typename proto::terminal::type copy() const - { - typename proto::terminal::type result = {*this}; - return result; - } - - // bring in the operator() overloads - rule const& get_parameterized_subject() const { return *this; } - typedef rule parameterized_subject_type; - #include - - std::string name_; - function_type f; - }; - -#if BOOST_WORKAROUND(BOOST_MSVC, < 1400) - template - rule& operator%=( - rule& r, Expr const& expr) - { - // Report invalid expression error as early as possible. - // If you got an error_invalid_expression error message here, - // then the expression (expr) is not a valid spirit qi expression. - BOOST_SPIRIT_ASSERT_MATCH(qi::domain, Expr); - - typedef typename - rule::encoding_modifier_type - encoding_modifier_type; - - r.f = detail::bind_parser( - compile(expr, encoding_modifier_type())); - return r; - } - - template - rule& operator%=( - rule& r, Expr& expr) - { - return r %= static_cast(expr); - } -#endif -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template < - typename IteratorA, typename IteratorB, typename Attribute - , typename Context, typename T1, typename T2, typename T3, typename T4> - struct handles_container< - qi::rule, Attribute, Context, IteratorB> - : traits::is_container< - typename attribute_of< - qi::rule, Context, IteratorB - >::type - > - {}; -}}} - -#if defined(BOOST_MSVC) -# pragma warning(pop) -#endif - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/nonterminal/simple_trace.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/nonterminal/simple_trace.hpp deleted file mode 100644 index 74382f556e61..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/nonterminal/simple_trace.hpp +++ /dev/null @@ -1,135 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - 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_SIMPLE_TRACE_DECEMBER_06_2008_1102AM) -#define BOOST_SPIRIT_SIMPLE_TRACE_DECEMBER_06_2008_1102AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include - -// The stream to use for debug output -#if !defined(BOOST_SPIRIT_DEBUG_OUT) -#define BOOST_SPIRIT_DEBUG_OUT std::cerr -#endif - -// number of tokens to print while debugging -#if !defined(BOOST_SPIRIT_DEBUG_PRINT_SOME) -#define BOOST_SPIRIT_DEBUG_PRINT_SOME 20 -#endif - -// number of spaces to indent -#if !defined(BOOST_SPIRIT_DEBUG_INDENT) -#define BOOST_SPIRIT_DEBUG_INDENT 2 -#endif - -namespace boost { namespace spirit { namespace qi -{ - namespace detail - { - template - inline void token_printer(std::ostream& o, Char c) - { - // allow to customize the token printer routine - spirit::traits::print_token(o, c); - } - } - - struct simple_trace - { - int& get_indent() const - { - static int indent = 0; - return indent; - } - - void print_indent(int n) const - { - n *= BOOST_SPIRIT_DEBUG_INDENT; - for (int i = 0; i != n; ++i) - BOOST_SPIRIT_DEBUG_OUT << ' '; - } - - template - void print_some( - char const* tag - , int /*indent*/ - , Iterator first, Iterator const& last) const - { - print_indent(get_indent()); - BOOST_SPIRIT_DEBUG_OUT << '<' << tag << '>'; - int const n = BOOST_SPIRIT_DEBUG_PRINT_SOME; - for (int i = 0; first != last && i != n && *first; ++i, ++first) - detail::token_printer(BOOST_SPIRIT_DEBUG_OUT, *first); - BOOST_SPIRIT_DEBUG_OUT << "' << std::endl; - - // $$$ FIXME convert invalid xml characters (e.g. '<') to valid - // character entities. $$$ - } - - template - void operator()( - Iterator const& first - , Iterator const& last - , Context const& context - , State state - , std::string const& rule_name) const - { - switch (state) - { - case pre_parse: - print_indent(get_indent()++); - BOOST_SPIRIT_DEBUG_OUT - << '<' << rule_name << '>' - << std::endl; - print_some("try", get_indent(), first, last); - break; - case successful_parse: - print_some("success", get_indent(), first, last); - print_indent(get_indent()); - BOOST_SPIRIT_DEBUG_OUT - << ""; - traits::print_attribute( - BOOST_SPIRIT_DEBUG_OUT, - context.attributes - ); - BOOST_SPIRIT_DEBUG_OUT - << ""; - if (!fusion::empty(context.locals)) - BOOST_SPIRIT_DEBUG_OUT - << "" - << context.locals - << ""; - BOOST_SPIRIT_DEBUG_OUT << std::endl; - print_indent(--get_indent()); - BOOST_SPIRIT_DEBUG_OUT - << "' - << std::endl; - break; - case failed_parse: - print_indent(get_indent()); - BOOST_SPIRIT_DEBUG_OUT << "" << std::endl; - print_indent(--get_indent()); - BOOST_SPIRIT_DEBUG_OUT - << "' - << std::endl; - break; - } - } - }; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/nonterminal/success_handler.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/nonterminal/success_handler.hpp deleted file mode 100644 index 5db83a2aa3c4..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/nonterminal/success_handler.hpp +++ /dev/null @@ -1,83 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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_SUCCESS_HANDLER_FEBRUARY_25_2011_1051AM) -#define BOOST_SPIRIT_SUCCESS_HANDLER_FEBRUARY_25_2011_1051AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include - -namespace boost { namespace spirit { namespace qi -{ - template < - typename Iterator, typename Context - , typename Skipper, typename F - > - struct success_handler - { - typedef function< - bool(Iterator& first, Iterator const& last - , Context& context - , Skipper const& skipper - )> - function_type; - - success_handler(function_type subject_, F f_) - : subject(subject_) - , f(f_) - { - } - - bool operator()( - Iterator& first, Iterator const& last - , Context& context, Skipper const& skipper) const - { - Iterator i = first; - bool r = subject(i, last, context, skipper); - if (r) - { - typedef - fusion::vector< - Iterator& - , Iterator const& - , Iterator const&> - params; - skip_over(first, last, skipper); - params args(first, last, i); - f(args, context); - - first = i; - } - return r; - } - - function_type subject; - F f; - }; - - template < - typename Iterator, typename T0, typename T1, typename T2 - , typename F> - void on_success(rule& r, F f) - { - typedef rule rule_type; - - typedef - success_handler< - Iterator - , typename rule_type::context_type - , typename rule_type::skipper_type - , F> - success_handler; - r.f = success_handler(r.f, f); - } -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/numeric.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/numeric.hpp deleted file mode 100644 index 7e1ef2691ad8..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/numeric.hpp +++ /dev/null @@ -1,19 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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_NUMERIC_FEBRUARY_05_2007_1231PM) -#define BOOST_SPIRIT_NUMERIC_FEBRUARY_05_2007_1231PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/numeric/bool.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/numeric/bool.hpp deleted file mode 100644 index c270184887f6..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/numeric/bool.hpp +++ /dev/null @@ -1,338 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Hartmut Kaiser - Copyright (c) 2011 Bryce Lelbach - - 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) -==============================================================================*/ -#ifndef BOOST_SPIRIT_QI_NUMERIC_BOOL_HPP -#define BOOST_SPIRIT_QI_NUMERIC_BOOL_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - namespace qi - { - /////////////////////////////////////////////////////////////////////// - // forward declaration only - template - struct bool_policies; - - /////////////////////////////////////////////////////////////////////// - // This is the class that the user can instantiate directly in - // order to create a customized bool parser - template > - struct bool_parser - : spirit::terminal > - { - typedef tag::stateful_tag tag_type; - - bool_parser() {} - bool_parser(BoolPolicies const& data) - : spirit::terminal(data) {} - }; - } - - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> // enables bool_ - struct use_terminal - : mpl::true_ {}; - - template <> // enables true_ - struct use_terminal - : mpl::true_ {}; - - template <> // enables false_ - struct use_terminal - : mpl::true_ {}; - - /////////////////////////////////////////////////////////////////////////// - template // enables lit(...) - struct use_terminal > - , typename enable_if >::type> - : mpl::true_ {}; - - /////////////////////////////////////////////////////////////////////////// - template // enables bool_(...) - struct use_terminal > - > : mpl::true_ {}; - - template <> // enables *lazy* bool_(...) - struct use_lazy_terminal - : mpl::true_ {}; - - /////////////////////////////////////////////////////////////////////////// - // enables any custom bool_parser - template - struct use_terminal > - : mpl::true_ {}; - - // enables any custom bool_parser(...) - template - struct use_terminal - , fusion::vector1 > > - : mpl::true_ {}; - - // enables *lazy* custom bool_parser(...) - template - struct use_lazy_terminal< - qi::domain - , tag::stateful_tag - , 1 // arity - > : mpl::true_ {}; -}} - -namespace boost { namespace spirit { namespace qi -{ -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using spirit::bool_; - using spirit::true_; - using spirit::false_; - using spirit::lit; // lit(true) is equivalent to true -#endif - using spirit::bool_type; - using spirit::true_type; - using spirit::false_type; - using spirit::lit_type; - - namespace detail - { - template - struct bool_impl - { - template - static bool parse(Iterator& first, Iterator const& last - , Attribute& attr, BoolPolicies const& p, bool allow_true = true - , bool disallow_false = false) - { - if (first == last) - return false; - -#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1600)) - (void)p; // suppresses warning: C4100: 'p' : unreferenced formal parameter -#endif - return (allow_true && p.parse_true(first, last, attr)) || - (!disallow_false && p.parse_false(first, last, attr)); - } - }; - } - - /////////////////////////////////////////////////////////////////////////// - // This actual boolean parser - /////////////////////////////////////////////////////////////////////////// - template > - struct any_bool_parser - : primitive_parser > - { - template - struct attribute - { - typedef T type; - }; - - template - bool parse(Iterator& first, Iterator const& last - , Context& /*context*/, Skipper const& skipper - , Attribute& attr_) const - { - typedef detail::bool_impl extract; - qi::skip_over(first, last, skipper); - return extract::parse(first, last, attr_, BoolPolicies()); - } - - template - info what(Context& /*context*/) const - { - return info("boolean"); - } - }; - - template - , bool no_attribute = true> - struct literal_bool_parser - : primitive_parser > - { - template - literal_bool_parser(Value const& n) : n_(n) {} - - template - struct attribute - : mpl::if_c - {}; - - template - bool parse(Iterator& first, Iterator const& last - , Context& /*context*/, Skipper const& skipper - , Attribute& attr_) const - { - typedef detail::bool_impl extract; - qi::skip_over(first, last, skipper); - return extract::parse(first, last, attr_, BoolPolicies(), n_, n_); - } - - template - info what(Context& /*context*/) const - { - return info("boolean"); - } - - T n_; - }; - - /////////////////////////////////////////////////////////////////////////// - // Parser generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template > - struct make_bool - { - typedef has_modifier > - no_case; - - typedef typename mpl::if_< - mpl::and_< - no_case - , is_same, Policies> - > - , any_bool_parser > - , any_bool_parser >::type - result_type; - - result_type operator()(unused_type, unused_type) const - { - return result_type(); - } - }; - - template > - struct make_direct_bool - { - typedef has_modifier > - no_case; - - typedef typename mpl::if_< - mpl::and_< - no_case - , is_same, Policies> - > - , literal_bool_parser, false> - , literal_bool_parser >::type - result_type; - - template - result_type operator()(Terminal const& term, unused_type) const - { - return result_type(fusion::at_c<0>(term.args)); - } - }; - - template > - struct make_predefined_direct_bool - { - typedef has_modifier > - no_case; - - typedef typename mpl::if_< - mpl::and_< - no_case - , is_same, Policies> - > - , literal_bool_parser, false> - , literal_bool_parser >::type - result_type; - - result_type operator()(unused_type, unused_type) const - { - return result_type(b); - } - }; - - template > - struct make_literal_bool - { - typedef has_modifier > - no_case; - - typedef typename mpl::if_< - mpl::and_< - no_case - , is_same, Policies> - > - , literal_bool_parser > - , literal_bool_parser >::type - result_type; - - template - result_type operator()(Terminal const& term, unused_type) const - { - return result_type(fusion::at_c<0>(term.args)); - } - }; - - /////////////////////////////////////////////////////////////////////////// - template - struct make_primitive< - terminal_ex > - , Modifiers, typename enable_if >::type> - : make_literal_bool {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct make_primitive - : make_predefined_direct_bool - {}; - - template - struct make_primitive - : make_predefined_direct_bool - {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct make_primitive< - tag::stateful_tag, Modifiers> - : make_bool {}; - - template - struct make_primitive< - terminal_ex - , fusion::vector1 >, Modifiers> - : make_direct_bool {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct make_primitive - : make_bool {}; - - template - struct make_primitive< - terminal_ex >, Modifiers> - : make_direct_bool {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/numeric/bool_policies.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/numeric/bool_policies.hpp deleted file mode 100644 index a220e1e90823..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/numeric/bool_policies.hpp +++ /dev/null @@ -1,81 +0,0 @@ -/*============================================================================= - 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) -==============================================================================*/ -#ifndef BOOST_SPIRIT_QI_NUMERIC_BOOL_POLICIES_HPP -#define BOOST_SPIRIT_QI_NUMERIC_BOOL_POLICIES_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include - -namespace boost { namespace spirit { namespace qi -{ - /////////////////////////////////////////////////////////////////////////// - // Default boolean policies - /////////////////////////////////////////////////////////////////////////// - template - struct bool_policies - { - template - static bool - parse_true(Iterator& first, Iterator const& last, Attribute& attr_) - { - if (detail::string_parse("true", first, last, unused)) - { - spirit::traits::assign_to(T(true), attr_); // result is true - return true; - } - return false; - } - - template - static bool - parse_false(Iterator& first, Iterator const& last, Attribute& attr_) - { - if (detail::string_parse("false", first, last, unused)) - { - spirit::traits::assign_to(T(false), attr_); // result is false - return true; - } - return false; - } - }; - - /////////////////////////////////////////////////////////////////////////// - template - struct no_case_bool_policies - { - template - static bool - parse_true(Iterator& first, Iterator const& last, Attribute& attr_) - { - if (detail::string_parse("true", "TRUE", first, last, unused)) - { - spirit::traits::assign_to(T(true), attr_); // result is true - return true; - } - return false; - } - - template - static bool - parse_false(Iterator& first, Iterator const& last, Attribute& attr_) - { - if (detail::string_parse("false", "FALSE", first, last, unused)) - { - spirit::traits::assign_to(T(false), attr_); // result is false - return true; - } - return false; - } - }; - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/numeric/detail/numeric_utils.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/numeric/detail/numeric_utils.hpp deleted file mode 100644 index c17519c6f20e..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/numeric/detail/numeric_utils.hpp +++ /dev/null @@ -1,517 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - Copyright (c) 2001-2011 Hartmut Kaiser - Copyright (c) 2011 Jan Frederick Eick - Copyright (c) 2011 Christopher Jefferson - Copyright (c) 2006 Stephen Nutt - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_QI_NUMERIC_DETAIL_NUMERIC_UTILS_HPP -#define BOOST_SPIRIT_QI_NUMERIC_DETAIL_NUMERIC_UTILS_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include // for std::iterator_traits - -#if defined(BOOST_MSVC) -# pragma warning(push) -# pragma warning(disable: 4127) // conditional expression is constant -#endif - -#if !defined(SPIRIT_NUMERICS_LOOP_UNROLL) -# define SPIRIT_NUMERICS_LOOP_UNROLL 3 -#endif - -namespace boost { namespace spirit { namespace qi { namespace detail -{ - /////////////////////////////////////////////////////////////////////////// - // - // The maximum radix digits that can be represented without - // overflow: - // - // template - // struct digits_traits::value; - // - /////////////////////////////////////////////////////////////////////////// - template - struct digits_traits; - - template - struct digits2_to_n; - -// lookup table for log2(x) : 2 <= x <= 36 -#define BOOST_SPIRIT_LOG2 (#error)(#error) \ - (1000000)(1584960)(2000000)(2321920)(2584960)(2807350) \ - (3000000)(3169920)(3321920)(3459430)(3584960)(3700430) \ - (3807350)(3906890)(4000000)(4087460)(4169920)(4247920) \ - (4321920)(4392310)(4459430)(4523560)(4584960)(4643850) \ - (4700430)(4754880)(4807350)(4857980)(4906890)(4954190) \ - (5000000)(5044390)(5087460)(5129280)(5169925) \ - /***/ - -#define BOOST_PP_LOCAL_MACRO(Radix) \ - template struct digits2_to_n \ - { \ - BOOST_STATIC_CONSTANT(int, value = static_cast( \ - (Digits * 1000000) / \ - BOOST_PP_SEQ_ELEM(Radix, BOOST_SPIRIT_LOG2))); \ - }; \ - /***/ - -#define BOOST_PP_LOCAL_LIMITS (2, 36) -#include BOOST_PP_LOCAL_ITERATE() - -#undef BOOST_SPIRIT_LOG2 - - template - struct digits_traits : digits2_to_n::digits, Radix> - { - BOOST_STATIC_ASSERT(std::numeric_limits::radix == 2); - }; - - template - struct digits_traits - { - static int const value = std::numeric_limits::digits10; - }; - - /////////////////////////////////////////////////////////////////////////// - // - // Traits class for radix specific number conversion - // - // Test the validity of a single character: - // - // template static bool is_valid(Char ch); - // - // Convert a digit from character representation to binary - // representation: - // - // template static int digit(Char ch); - // - /////////////////////////////////////////////////////////////////////////// - template - struct radix_traits - { - template - inline static bool is_valid(Char ch) - { - return (ch >= '0' && ch <= (Radix > 10 ? '9' : static_cast('0' + Radix -1))) - || (Radix > 10 && ch >= 'a' && ch <= static_cast('a' + Radix -10 -1)) - || (Radix > 10 && ch >= 'A' && ch <= static_cast('A' + Radix -10 -1)); - } - - template - inline static unsigned digit(Char ch) - { - if (Radix <= 10 || (ch >= '0' && ch <= '9')) - return ch - '0'; - return spirit::char_encoding::ascii::tolower(ch) - 'a' + 10; - } - }; - - /////////////////////////////////////////////////////////////////////////// - // positive_accumulator/negative_accumulator: Accumulator policies for - // extracting integers. Use positive_accumulator if number is positive. - // Use negative_accumulator if number is negative. - /////////////////////////////////////////////////////////////////////////// - template - struct positive_accumulator - { - template - inline static void add(T& n, Char ch, mpl::false_) // unchecked add - { - const int digit = radix_traits::digit(ch); - n = n * T(Radix) + T(digit); - } - - template - inline static bool add(T& n, Char ch, mpl::true_) // checked add - { - // Ensure n *= Radix will not overflow - T const max = (std::numeric_limits::max)(); - T const val = max / Radix; - - if (n > val) - return false; - - T tmp = n * Radix; - - // Ensure n += digit will not overflow - const int digit = radix_traits::digit(ch); - if (tmp > max - digit) - return false; - - n = tmp + static_cast(digit); - return true; - } - }; - - template - struct negative_accumulator - { - template - inline static void add(T& n, Char ch, mpl::false_) // unchecked subtract - { - const int digit = radix_traits::digit(ch); - n = n * T(Radix) - T(digit); - } - - template - inline static bool add(T& n, Char ch, mpl::true_) // checked subtract - { - // Ensure n *= Radix will not underflow - T const min = (std::numeric_limits::min)(); - T const val = min / T(Radix); - - if (n < val) - return false; - - T tmp = n * Radix; - - // Ensure n -= digit will not underflow - int const digit = radix_traits::digit(ch); - if (tmp < min + digit) - return false; - - n = tmp - static_cast(digit); - return true; - } - }; - - /////////////////////////////////////////////////////////////////////////// - // Common code for extract_int::parse specializations - /////////////////////////////////////////////////////////////////////////// - template - struct int_extractor - { - template - inline static bool - call(Char ch, std::size_t count, T& n, mpl::true_) - { - std::size_t const overflow_free = digits_traits::value - 1; - - if (!AlwaysCheckOverflow && (count < overflow_free)) - { - Accumulator::add(n, ch, mpl::false_()); - } - else - { - if (!Accumulator::add(n, ch, mpl::true_())) - return false; // over/underflow! - } - return true; - } - - template - inline static bool - call(Char ch, std::size_t /*count*/, T& n, mpl::false_) - { - // no need to check for overflow - Accumulator::add(n, ch, mpl::false_()); - return true; - } - - template - inline static bool - call(Char /*ch*/, std::size_t /*count*/, unused_type, mpl::false_) - { - return true; - } - - template - inline static bool - call(Char ch, std::size_t count, T& n) - { - return call(ch, count, n - , mpl::bool_< - ( (MaxDigits < 0) - || (MaxDigits > digits_traits::value) - ) - && traits::check_overflow::value - >() - ); - } - }; - - /////////////////////////////////////////////////////////////////////////// - // End of loop checking: check if the number of digits - // being parsed exceeds MaxDigits. Note: if MaxDigits == -1 - // we don't do any checking. - /////////////////////////////////////////////////////////////////////////// - template - struct check_max_digits - { - inline static bool - call(std::size_t count) - { - return count < MaxDigits; // bounded - } - }; - - template <> - struct check_max_digits<-1> - { - inline static bool - call(std::size_t /*count*/) - { - return true; // unbounded - } - }; - - /////////////////////////////////////////////////////////////////////////// - // extract_int: main code for extracting integers - /////////////////////////////////////////////////////////////////////////// -#define SPIRIT_NUMERIC_INNER_LOOP(z, x, data) \ - if (!check_max_digits::call(count + leading_zeros) \ - || it == last) \ - { \ - break; \ - } \ - ch = *it; \ - if (!radix_check::is_valid(ch)) \ - { \ - break; \ - } \ - if (!extractor::call(ch, count, val)) \ - { \ - if (IgnoreOverflowDigits) \ - { \ - first = it; \ - } \ - traits::assign_to(val, attr); \ - return IgnoreOverflowDigits; \ - } \ - ++it; \ - ++count; \ - /**/ - - template < - typename T, unsigned Radix, unsigned MinDigits, int MaxDigits - , typename Accumulator = positive_accumulator - , bool Accumulate = false - , bool IgnoreOverflowDigits = false - > - struct extract_int - { -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -# pragma warning(push) -# pragma warning(disable: 4127) // conditional expression is constant -#endif - template - inline static bool - parse_main( - Iterator& first - , Iterator const& last - , Attribute& attr) - { - typedef radix_traits radix_check; - typedef int_extractor extractor; - typedef typename std::iterator_traits::value_type char_type; - - Iterator it = first; - std::size_t leading_zeros = 0; - if (!Accumulate) - { - // skip leading zeros - while (it != last && *it == '0' && (MaxDigits < 0 || leading_zeros < static_cast< std::size_t >(MaxDigits))) - { - ++it; - ++leading_zeros; - } - } - - typedef typename - traits::attribute_type::type - attribute_type; - - attribute_type val = Accumulate ? attr : attribute_type(0); - std::size_t count = 0; - char_type ch; - - while (true) - { - BOOST_PP_REPEAT( - SPIRIT_NUMERICS_LOOP_UNROLL - , SPIRIT_NUMERIC_INNER_LOOP, _) - } - - if (count + leading_zeros >= MinDigits) - { - traits::assign_to(val, attr); - first = it; - return true; - } - return false; - } -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -# pragma warning(pop) -#endif - - template - inline static bool - parse( - Iterator& first - , Iterator const& last - , unused_type) - { - T n = 0; // must calculate value to detect over/underflow - return parse_main(first, last, n); - } - - template - inline static bool - parse( - Iterator& first - , Iterator const& last - , Attribute& attr) - { - return parse_main(first, last, attr); - } - }; -#undef SPIRIT_NUMERIC_INNER_LOOP - - /////////////////////////////////////////////////////////////////////////// - // extract_int: main code for extracting integers - // common case where MinDigits == 1 and MaxDigits = -1 - /////////////////////////////////////////////////////////////////////////// -#define SPIRIT_NUMERIC_INNER_LOOP(z, x, data) \ - if (it == last) \ - { \ - break; \ - } \ - ch = *it; \ - if (!radix_check::is_valid(ch)) \ - { \ - break; \ - } \ - if (!extractor::call(ch, count, val)) \ - { \ - traits::assign_to(val, attr); \ - return false; \ - } \ - ++it; \ - ++count; \ - /**/ - - template - struct extract_int - { -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -# pragma warning(push) -# pragma warning(disable: 4127) // conditional expression is constant -#endif - template - inline static bool - parse_main( - Iterator& first - , Iterator const& last - , Attribute& attr) - { - typedef radix_traits radix_check; - typedef int_extractor extractor; - typedef typename std::iterator_traits::value_type char_type; - - Iterator it = first; - std::size_t count = 0; - if (!Accumulate) - { - // skip leading zeros - while (it != last && *it == '0') - { - ++it; - ++count; - } - - if (it == last) - { - if (count == 0) // must have at least one digit - return false; - traits::assign_to(0, attr); - first = it; - return true; - } - } - - typedef typename - traits::attribute_type::type - attribute_type; - - attribute_type val = Accumulate ? attr : attribute_type(0); - char_type ch = *it; - - if (!radix_check::is_valid(ch) || !extractor::call(ch, 0, val)) - { - if (count == 0) // must have at least one digit - return false; - traits::assign_to(val, attr); - first = it; - return true; - } - - // count = 0; $$$ verify: I think this is wrong $$$ - ++it; - while (true) - { - BOOST_PP_REPEAT( - SPIRIT_NUMERICS_LOOP_UNROLL - , SPIRIT_NUMERIC_INNER_LOOP, _) - } - - traits::assign_to(val, attr); - first = it; - return true; - } -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -# pragma warning(pop) -#endif - - template - inline static bool - parse( - Iterator& first - , Iterator const& last - , unused_type) - { - T n = 0; // must calculate value to detect over/underflow - return parse_main(first, last, n); - } - - template - inline static bool - parse( - Iterator& first - , Iterator const& last - , Attribute& attr) - { - return parse_main(first, last, attr); - } - }; - -#undef SPIRIT_NUMERIC_INNER_LOOP -}}}} - -#if defined(BOOST_MSVC) -# pragma warning(pop) -#endif - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/numeric/detail/real_impl.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/numeric/detail/real_impl.hpp deleted file mode 100644 index 7ac106721caa..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/numeric/detail/real_impl.hpp +++ /dev/null @@ -1,350 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2019 Joel de Guzman - Copyright (c) 2001-2011 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_QI_NUMERIC_DETAIL_REAL_IMPL_HPP -#define BOOST_SPIRIT_QI_NUMERIC_DETAIL_REAL_IMPL_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -# pragma warning(push) -# pragma warning(disable: 4100) // 'p': unreferenced formal parameter -# pragma warning(disable: 4127) // conditional expression is constant -#endif - -namespace boost { namespace spirit { namespace traits -{ - using spirit::traits::pow10; - - namespace detail - { - template - void compensate_roundoff(T& n, AccT acc_n, mpl::true_) - { - // at the lowest extremes, we compensate for floating point - // roundoff errors by doing imprecise computation using T - int const comp = 10; - n = T((acc_n / comp) * comp); - n += T(acc_n % comp); - } - - template - void compensate_roundoff(T& n, AccT acc_n, mpl::false_) - { - // no need to compensate - n = acc_n; - } - - template - void compensate_roundoff(T& n, AccT acc_n) - { - compensate_roundoff(n, acc_n, is_integral()); - } - } - - template - inline bool - scale(int exp, T& n, AccT acc_n) - { - if (exp >= 0) - { - int const max_exp = std::numeric_limits::max_exponent10; - - // return false if exp exceeds the max_exp - // do this check only for primitive types! - if (is_floating_point() && (exp > max_exp)) - return false; - n = acc_n * pow10(exp); - } - else - { - if (exp < std::numeric_limits::min_exponent10) - { - int const min_exp = std::numeric_limits::min_exponent10; - detail::compensate_roundoff(n, acc_n); - n /= pow10(-min_exp); - - // return false if exp still exceeds the min_exp - // do this check only for primitive types! - exp += -min_exp; - if (is_floating_point() && exp < min_exp) - return false; - - n /= pow10(-exp); - } - else - { - n = T(acc_n) / pow10(-exp); - } - } - return true; - } - - inline bool - scale(int /*exp*/, unused_type /*n*/, unused_type /*acc_n*/) - { - // no-op for unused_type - return true; - } - - template - inline bool - scale(int exp, int frac, T& n, AccT acc_n) - { - return scale(exp - frac, n, acc_n); - } - - inline bool - scale(int /*exp*/, int /*frac*/, unused_type /*n*/) - { - // no-op for unused_type - return true; - } - - inline float - negate(bool neg, float n) - { - return neg ? (core::copysign)(n, -1.f) : n; - } - - inline double - negate(bool neg, double n) - { - return neg ? (core::copysign)(n, -1.) : n; - } - - inline long double - negate(bool neg, long double n) - { - return neg ? (core::copysign)(n, static_cast(-1)) : n; - } - - template - inline T - negate(bool neg, T const& n) - { - return neg ? -n : n; - } - - inline unused_type - negate(bool /*neg*/, unused_type n) - { - // no-op for unused_type - return n; - } - - template - struct real_accumulator : mpl::identity {}; - - template <> - struct real_accumulator - : mpl::identity::least> {}; - - template <> - struct real_accumulator - : mpl::identity::least> {}; -}}} - -namespace boost { namespace spirit { namespace qi { namespace detail -{ - BOOST_MPL_HAS_XXX_TRAIT_DEF(version) - - template - struct real_impl - { - template - static std::size_t - ignore_excess_digits(Iterator& /* first */, Iterator const& /* last */, mpl::false_) - { - return 0; - } - - template - static std::size_t - ignore_excess_digits(Iterator& first, Iterator const& last, mpl::true_) - { - return RealPolicies::ignore_excess_digits(first, last); - } - - template - static std::size_t - ignore_excess_digits(Iterator& first, Iterator const& last) - { - typedef mpl::bool_::value> has_version; - return ignore_excess_digits(first, last, has_version()); - } - - template - static bool - parse(Iterator& first, Iterator const& last, Attribute& attr, - RealPolicies const& p) - { - if (first == last) - return false; - Iterator save = first; - - // Start by parsing the sign. neg will be true if - // we got a "-" sign, false otherwise. - bool neg = p.parse_sign(first, last); - - // Now attempt to parse an integer - T n; - - typename traits::real_accumulator::type acc_n = 0; - bool got_a_number = p.parse_n(first, last, acc_n); - int excess_n = 0; - - // If we did not get a number it might be a NaN, Inf or a leading - // dot. - if (!got_a_number) - { - // Check whether the number to parse is a NaN or Inf - if (p.parse_nan(first, last, n) || - p.parse_inf(first, last, n)) - { - // If we got a negative sign, negate the number - traits::assign_to(traits::negate(neg, n), attr); - return true; // got a NaN or Inf, return early - } - - // If we did not get a number and our policies do not - // allow a leading dot, fail and return early (no-match) - if (!p.allow_leading_dot) - { - first = save; - return false; - } - } - else - { - // We got a number and we still see digits. This happens if acc_n (an integer) - // exceeds the integer's capacity. Collect the excess digits. - excess_n = static_cast(ignore_excess_digits(first, last)); - } - - bool e_hit = false; - Iterator e_pos; - int frac_digits = 0; - - // Try to parse the dot ('.' decimal point) - if (p.parse_dot(first, last)) - { - // We got the decimal point. Now we will try to parse - // the fraction if it is there. If not, it defaults - // to zero (0) only if we already got a number. - if (excess_n != 0) - { - // We skip the fractions if we already exceeded our digits capacity - ignore_excess_digits(first, last); - } - else if (p.parse_frac_n(first, last, acc_n, frac_digits)) - { - BOOST_ASSERT(frac_digits >= 0); - } - else if (!got_a_number || !p.allow_trailing_dot) - { - // We did not get a fraction. If we still haven't got a - // number and our policies do not allow a trailing dot, - // return no-match. - first = save; - return false; - } - - // Now, let's see if we can parse the exponent prefix - e_pos = first; - e_hit = p.parse_exp(first, last); - } - else - { - // No dot and no number! Return no-match. - if (!got_a_number) - { - first = save; - return false; - } - - // If we must expect a dot and we didn't see an exponent - // prefix, return no-match. - e_pos = first; - e_hit = p.parse_exp(first, last); - if (p.expect_dot && !e_hit) - { - first = save; - return false; - } - } - - if (e_hit) - { - // We got the exponent prefix. Now we will try to parse the - // actual exponent. - int exp = 0; - if (p.parse_exp_n(first, last, exp)) - { - // Got the exponent value. Scale the number by - // exp + excess_n - frac_digits. - if (!traits::scale(exp + excess_n, frac_digits, n, acc_n)) - return false; - } - else - { - // If there is no number, disregard the exponent altogether. - // by resetting 'first' prior to the exponent prefix (e|E) - first = e_pos; - // Scale the number by -frac_digits. - bool r = traits::scale(-frac_digits, n, acc_n); - BOOST_VERIFY(r); - } - } - else if (frac_digits) - { - // No exponent found. Scale the number by -frac_digits. - bool r = traits::scale(-frac_digits, n, acc_n); - BOOST_VERIFY(r); - } - else - { - if (excess_n) - { - if (!traits::scale(excess_n, n, acc_n)) - return false; - } - else - { - n = static_cast(acc_n); - } - } - - // If we got a negative sign, negate the number - traits::assign_to(traits::negate(neg, n), attr); - - // Success!!! - return true; - } - }; - -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -# pragma warning(pop) -#endif - -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/numeric/int.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/numeric/int.hpp deleted file mode 100644 index 68e214cef798..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/numeric/int.hpp +++ /dev/null @@ -1,411 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - Copyright (c) 2011 Bryce Lelbach - - 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_INT_APR_17_2006_0830AM) -#define BOOST_SPIRIT_INT_APR_17_2006_0830AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - namespace tag - { - template - struct int_parser - { - BOOST_SPIRIT_IS_TAG() - }; - } - - namespace qi - { - /////////////////////////////////////////////////////////////////////// - // This one is the class that the user can instantiate directly in - // order to create a customized int parser - template - struct int_parser - : spirit::terminal > - {}; - } - - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - //[primitive_parsers_enable_short - template <> // enables short_ - struct use_terminal : mpl::true_ {}; - //] - - template // enables lit(n) - struct use_terminal > - , typename enable_if >::type> - : mpl::true_ {}; - - template // enables short_(n) - struct use_terminal > > - : is_arithmetic {}; - - template <> // enables *lazy* short_(n) - struct use_lazy_terminal : mpl::true_ {}; - - /////////////////////////////////////////////////////////////////////////// - //[primitive_parsers_enable_int - template <> // enables int_ - struct use_terminal : mpl::true_ {}; - //] - - template // enables lit(n) - struct use_terminal > - , typename enable_if >::type> - : mpl::true_ {}; - - template // enables int_(n) - struct use_terminal > > - : is_arithmetic {}; - - template <> // enables *lazy* int_(n) - struct use_lazy_terminal : mpl::true_ {}; - - /////////////////////////////////////////////////////////////////////////// - //[primitive_parsers_enable_long - template <> // enables long_ - struct use_terminal : mpl::true_ {}; - //] - - template // enables lit(n) - struct use_terminal > - , typename enable_if >::type> - : mpl::true_ {}; - - template // enables long_(n) - struct use_terminal > > - : is_arithmetic {}; - - template <> // enables *lazy* long_(n) - struct use_lazy_terminal : mpl::true_ {}; - - /////////////////////////////////////////////////////////////////////////// -#ifdef BOOST_HAS_LONG_LONG - //[primitive_parsers_enable_long_long - template <> // enables long_long - struct use_terminal : mpl::true_ {}; - //] - - template // enables lit(n) - struct use_terminal > - , typename enable_if >::type> - : mpl::true_ {}; - - template // enables long_long(n) - struct use_terminal > > - : is_arithmetic {}; - - template <> // enables *lazy* long_long(n) - struct use_lazy_terminal : mpl::true_ {}; -#endif - - /////////////////////////////////////////////////////////////////////////// - // enables any custom int_parser - template - struct use_terminal > - : mpl::true_ {}; - - // enables any custom int_parser(n) - template - struct use_terminal - , fusion::vector1 > - > : mpl::true_ {}; - - // enables *lazy* custom int_parser(n) - template - struct use_lazy_terminal, 1 - > : mpl::true_ {}; -}} - -namespace boost { namespace spirit { namespace qi -{ -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using spirit::short_; - using spirit::int_; - using spirit::long_; -#ifdef BOOST_HAS_LONG_LONG - using spirit::long_long; -#endif - using spirit::lit; // lit(1) is equivalent to 1 -#endif - using spirit::short_type; - using spirit::int_type; - using spirit::long_type; - using spirit::lit_type; -#ifdef BOOST_HAS_LONG_LONG - using spirit::long_long_type; -#endif - using spirit::lit_type; - - /////////////////////////////////////////////////////////////////////////// - // This is the actual int parser - /////////////////////////////////////////////////////////////////////////// - //[primitive_parsers_int_parser - template < - typename T - , unsigned Radix = 10 - , unsigned MinDigits = 1 - , int MaxDigits = -1> - struct any_int_parser - : primitive_parser > - { - // check template parameter 'Radix' for validity - BOOST_SPIRIT_ASSERT_MSG( - Radix == 2 || Radix == 8 || Radix == 10 || Radix == 16, - not_supported_radix, ()); - - template - struct attribute - { - typedef T type; - }; - - template - bool parse(Iterator& first, Iterator const& last - , Context& /*context*/, Skipper const& skipper - , Attribute& attr_) const - { - typedef extract_int extract; - qi::skip_over(first, last, skipper); - return extract::call(first, last, attr_); - } - - template - info what(Context& /*context*/) const - { - return info("integer"); - } - }; - //] - - template - struct literal_int_parser - : primitive_parser > - { - // check template parameter 'Radix' for validity - BOOST_SPIRIT_ASSERT_MSG( - Radix == 2 || Radix == 8 || Radix == 10 || Radix == 16, - not_supported_radix, ()); - - template - literal_int_parser(Value const& n) : n_(n) {} - - template - struct attribute - : mpl::if_c - {}; - - template - bool parse(Iterator& first, Iterator const& last - , Context& /*context*/, Skipper const& skipper - , Attribute& attr_param) const - { - typedef extract_int extract; - qi::skip_over(first, last, skipper); - - Iterator save = first; - T attr_; - - if (extract::call(first, last, attr_) && (attr_ == n_)) - { - traits::assign_to(attr_, attr_param); - return true; - } - - first = save; - return false; - } - - template - info what(Context& /*context*/) const - { - return info("integer"); - } - - T n_; - }; - - /////////////////////////////////////////////////////////////////////////// - // Parser generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - //[primitive_parsers_make_int - template < - typename T - , unsigned Radix = 10 - , unsigned MinDigits = 1 - , int MaxDigits = -1> - struct make_int - { - typedef any_int_parser result_type; - result_type operator()(unused_type, unused_type) const - { - return result_type(); - } - }; - //] - - template - struct make_direct_int - { - typedef literal_int_parser - result_type; - template - result_type operator()(Terminal const& term, unused_type) const - { - return result_type(fusion::at_c<0>(term.args)); - } - }; - - template - struct make_literal_int - { - typedef literal_int_parser result_type; - template - result_type operator()(Terminal const& term, unused_type) const - { - return result_type(fusion::at_c<0>(term.args)); - } - }; - - /////////////////////////////////////////////////////////////////////////// - template - struct make_primitive< - terminal_ex > - , Modifiers, typename enable_if >::type> - : make_literal_int {}; - - template - struct make_primitive< - terminal_ex > - , Modifiers, typename enable_if >::type> - : make_literal_int {}; - - template - struct make_primitive< - terminal_ex > - , Modifiers, typename enable_if >::type> - : make_literal_int {}; - -#ifdef BOOST_HAS_LONG_LONG - template - struct make_primitive< - terminal_ex > - , Modifiers, typename enable_if >::type> - : make_literal_int {}; -#endif - - /////////////////////////////////////////////////////////////////////////// - template - struct make_primitive< - tag::int_parser - , Modifiers> - : make_int {}; - - template - struct make_primitive< - terminal_ex - , fusion::vector1 >, Modifiers> - : make_direct_int {}; - - /////////////////////////////////////////////////////////////////////////// - //[primitive_parsers_short_primitive - template - struct make_primitive - : make_int {}; - //] - - template - struct make_primitive< - terminal_ex > , Modifiers> - : make_direct_int {}; - - /////////////////////////////////////////////////////////////////////////// - //[primitive_parsers_int_primitive - template - struct make_primitive - : make_int {}; - //] - - template - struct make_primitive< - terminal_ex > , Modifiers> - : make_direct_int {}; - - /////////////////////////////////////////////////////////////////////////// - //[primitive_parsers_long_primitive - template - struct make_primitive - : make_int {}; - //] - - template - struct make_primitive< - terminal_ex > , Modifiers> - : make_direct_int {}; - - /////////////////////////////////////////////////////////////////////////// -#ifdef BOOST_HAS_LONG_LONG - //[primitive_parsers_long_long_primitive - template - struct make_primitive - : make_int {}; - //] - - template - struct make_primitive< - terminal_ex > , Modifiers> - : make_direct_int {}; -#endif -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/numeric/numeric_utils.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/numeric/numeric_utils.hpp deleted file mode 100644 index a1fb4730b368..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/numeric/numeric_utils.hpp +++ /dev/null @@ -1,149 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - Copyright (c) 2011 Jan Frederick Eick - - 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_NUMERIC_UTILS_APRIL_17_2006_0830AM) -#define BOOST_SPIRIT_NUMERIC_UTILS_APRIL_17_2006_0830AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace qi -{ - /////////////////////////////////////////////////////////////////////////// - // Extract the prefix sign (- or +), return true if a '-' was found - /////////////////////////////////////////////////////////////////////////// - template - inline bool - extract_sign(Iterator& first, Iterator const& last) - { - (void)last; // silence unused warnings - BOOST_ASSERT(first != last); // precondition - - // Extract the sign - bool neg = *first == '-'; - if (neg || (*first == '+')) - { - ++first; - return neg; - } - return false; - } - - /////////////////////////////////////////////////////////////////////////// - // Low level unsigned integer parser - /////////////////////////////////////////////////////////////////////////// - template - struct extract_uint - { - // check template parameter 'Radix' for validity - BOOST_SPIRIT_ASSERT_MSG( - Radix >= 2 && Radix <= 36, - not_supported_radix, ()); - - template - inline static bool call(Iterator& first, Iterator const& last, T& attr_) - { - if (first == last) - return false; - - typedef detail::extract_int< - T - , Radix - , MinDigits - , MaxDigits - , detail::positive_accumulator - , Accumulate - , IgnoreOverflowDigits> - extract_type; - - Iterator save = first; - if (!extract_type::parse(first, last, attr_)) - { - first = save; - return false; - } - return true; - } - - template - inline static bool call(Iterator& first, Iterator const& last, Attribute& attr_) - { - // this case is called when Attribute is not T - T attr_local; - if (call(first, last, attr_local)) - { - traits::assign_to(attr_local, attr_); - return true; - } - return false; - } - }; - - /////////////////////////////////////////////////////////////////////////// - // Low level signed integer parser - /////////////////////////////////////////////////////////////////////////// - template - struct extract_int - { - // check template parameter 'Radix' for validity - BOOST_SPIRIT_ASSERT_MSG( - Radix == 2 || Radix == 8 || Radix == 10 || Radix == 16, - not_supported_radix, ()); - - template - inline static bool call(Iterator& first, Iterator const& last, T& attr_) - { - if (first == last) - return false; - - typedef detail::extract_int< - T, Radix, MinDigits, MaxDigits> - extract_pos_type; - - typedef detail::extract_int< - T, Radix, MinDigits, MaxDigits, detail::negative_accumulator > - extract_neg_type; - - Iterator save = first; - bool hit = extract_sign(first, last); - if (hit) - hit = extract_neg_type::parse(first, last, attr_); - else - hit = extract_pos_type::parse(first, last, attr_); - - if (!hit) - { - first = save; - return false; - } - return true; - } - - template - inline static bool call(Iterator& first, Iterator const& last, Attribute& attr_) - { - // this case is called when Attribute is not T - T attr_local; - if (call(first, last, attr_local)) - { - traits::assign_to(attr_local, attr_); - return true; - } - return false; - } - }; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/numeric/real.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/numeric/real.hpp deleted file mode 100644 index 27d48e50aa9e..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/numeric/real.hpp +++ /dev/null @@ -1,342 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - Copyright (c) 2011 Bryce Lelbach - - 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_REAL_APRIL_18_2006_0850AM) -#define BOOST_SPIRIT_REAL_APRIL_18_2006_0850AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - namespace qi - { - /////////////////////////////////////////////////////////////////////// - // forward declaration only - template - struct real_policies; - - /////////////////////////////////////////////////////////////////////// - // This is the class that the user can instantiate directly in - // order to create a customized real parser - template > - struct real_parser - : spirit::terminal > - { - typedef tag::stateful_tag tag_type; - - real_parser() {} - real_parser(Policies const& p) - : spirit::terminal(p) {} - }; - } - - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> // enables float_ - struct use_terminal - : mpl::true_ {}; - - template <> // enables double_ - struct use_terminal - : mpl::true_ {}; - - template <> // enables long_double - struct use_terminal - : mpl::true_ {}; - - /////////////////////////////////////////////////////////////////////////// - template // enables lit(n) - struct use_terminal > - , typename enable_if >::type> - : mpl::true_ {}; - - template // enables lit(n) - struct use_terminal > - , typename enable_if >::type> - : mpl::true_ {}; - - template // enables lit(n) - struct use_terminal > - , typename enable_if >::type> - : mpl::true_ {}; - - /////////////////////////////////////////////////////////////////////////// - template // enables float_(...) - struct use_terminal > - > : mpl::true_ {}; - - template // enables double_(...) - struct use_terminal > - > : mpl::true_ {}; - - template // enables long_double(...) - struct use_terminal > - > : mpl::true_ {}; - - template <> // enables *lazy* float_(...) - struct use_lazy_terminal - : mpl::true_ {}; - - template <> // enables *lazy* double_(...) - struct use_lazy_terminal - : mpl::true_ {}; - - template <> // enables *lazy* long_double_(...) - struct use_lazy_terminal - : mpl::true_ {}; - - /////////////////////////////////////////////////////////////////////////// - // enables custom real_parser - template - struct use_terminal > - : mpl::true_ {}; - - // enables custom real_parser(...) - template - struct use_terminal - , fusion::vector1 > > - : mpl::true_ {}; - - // enables *lazy* custom real_parser(...) - template - struct use_lazy_terminal< - qi::domain - , tag::stateful_tag - , 1 // arity - > : mpl::true_ {}; -}} - -namespace boost { namespace spirit { namespace qi -{ -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using spirit::float_; - using spirit::double_; - using spirit::long_double; - using spirit::lit; // lit(1.0) is equivalent to 1.0 -#endif - - using spirit::float_type; - using spirit::double_type; - using spirit::long_double_type; - using spirit::lit_type; - - /////////////////////////////////////////////////////////////////////////// - // This is the actual real number parser - /////////////////////////////////////////////////////////////////////////// - template > - struct any_real_parser - : primitive_parser > - { - template - struct attribute - { - typedef T type; - }; - - template - bool parse(Iterator& first, Iterator const& last - , Context& /*context*/, Skipper const& skipper - , T& attr_) const - { - typedef detail::real_impl extract; - qi::skip_over(first, last, skipper); - return extract::parse(first, last, attr_, RealPolicies()); - } - - template - bool parse(Iterator& first, Iterator const& last - , Context& context, Skipper const& skipper - , Attribute& attr_param) const - { - // this case is called when Attribute is not T - T attr_; - if (parse(first, last, context, skipper, attr_)) - { - traits::assign_to(attr_, attr_param); - return true; - } - return false; - } - - template - info what(Context& /*context*/) const - { - return info("real"); - } - }; - - template - , bool no_attribute = true> - struct literal_real_parser - : primitive_parser > - { - template - literal_real_parser(Value const& n) : n_(n) {} - - template - struct attribute - : mpl::if_c - {}; - - template - bool parse(Iterator& first, Iterator const& last - , Context&, Skipper const& skipper - , Attribute& attr_param) const - { - typedef detail::real_impl extract; - qi::skip_over(first, last, skipper); - - Iterator save = first; - T attr_; - - if (extract::parse(first, last, attr_, RealPolicies()) && - (attr_ == n_)) - { - traits::assign_to(attr_, attr_param); - return true; - } - - first = save; - return false; - } - - template - info what(Context& /*context*/) const - { - return info("real"); - } - - T n_; - }; - - /////////////////////////////////////////////////////////////////////////// - // Parser generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template > - struct make_real - { - typedef any_real_parser result_type; - - result_type operator()(unused_type, unused_type) const - { - return result_type(); - } - }; - - template > - struct make_direct_real - { - typedef literal_real_parser result_type; - - template - result_type operator()(Terminal const& term, unused_type) const - { - return result_type(T(fusion::at_c<0>(term.args))); - } - }; - - template > - struct make_literal_real - { - typedef literal_real_parser result_type; - - template - result_type operator()(Terminal const& term, unused_type) const - { - return result_type(fusion::at_c<0>(term.args)); - } - }; - - /////////////////////////////////////////////////////////////////////////// - template - struct make_primitive< - terminal_ex > - , Modifiers, typename enable_if >::type> - : make_literal_real {}; - - template - struct make_primitive< - terminal_ex > - , Modifiers, typename enable_if >::type> - : make_literal_real {}; - - template - struct make_primitive< - terminal_ex > - , Modifiers, typename enable_if >::type> - : make_literal_real {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct make_primitive< - tag::stateful_tag, Modifiers> - : make_real {}; - - template - struct make_primitive< - terminal_ex - , fusion::vector1 >, Modifiers> - : make_direct_real {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct make_primitive - : make_real {}; - - template - struct make_primitive< - terminal_ex >, Modifiers> - : make_direct_real {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct make_primitive - : make_real {}; - - template - struct make_primitive< - terminal_ex >, Modifiers> - : make_direct_real {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct make_primitive - : make_real {}; - - template - struct make_primitive< - terminal_ex >, Modifiers> - : make_direct_real {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/numeric/real_policies.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/numeric/real_policies.hpp deleted file mode 100644 index 05ce9f6cf3d2..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/numeric/real_policies.hpp +++ /dev/null @@ -1,233 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2019 Joel de Guzman - 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) -==============================================================================*/ -#ifndef BOOST_SPIRIT_QI_NUMERIC_REAL_POLICIES_HPP -#define BOOST_SPIRIT_QI_NUMERIC_REAL_POLICIES_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include - -namespace boost { namespace spirit { namespace traits -{ - // So that we won't exceed the capacity of the underlying type T, - // we limit the number of digits parsed to its max_digits10. - // By default, the value is -1 which tells spirit to parse an - // unbounded number of digits. - - template - struct max_digits10 - { - static int const value = -1; // unbounded - }; - - template - struct max_digits10::value)>::type> - { - static int const digits = std::numeric_limits::digits; - static int const value = 2 + (digits * 30103l) / 100000l; - }; -}}} - -namespace boost { namespace spirit { namespace qi -{ - /////////////////////////////////////////////////////////////////////////// - // Default (unsigned) real number policies - /////////////////////////////////////////////////////////////////////////// - template - struct ureal_policies - { - // Versioning - typedef mpl::int_<2> version; - - // trailing dot policy suggested by Gustavo Guerra - static bool const allow_leading_dot = true; - static bool const allow_trailing_dot = true; - static bool const expect_dot = false; - - template - static bool - parse_sign(Iterator& /*first*/, Iterator const& /*last*/) - { - return false; - } - - template - static bool - parse_n(Iterator& first, Iterator const& last, Attribute& attr_) - { - typedef extract_uint::value // See notes on max_digits10 above - , false, true> - extract_uint; - return extract_uint::call(first, last, attr_); - } - - // ignore_excess_digits (required for version > 1 API) - template - static std::size_t - ignore_excess_digits(Iterator& first, Iterator const& last) - { - Iterator save = first; - if (extract_uint::call(first, last, unused)) - return static_cast(std::distance(save, first)); - return 0; - } - - template - static bool - parse_dot(Iterator& first, Iterator const& last) - { - if (first == last || *first != '.') - return false; - ++first; - return true; - } - - template - static bool - parse_frac_n(Iterator& first, Iterator const& last, Attribute& attr_, int& frac_digits) - { - Iterator savef = first; - bool r = extract_uint::call(first, last, attr_); - if (r) - { -#if defined(_MSC_VER) && _MSC_VER < 1900 -# pragma warning(push) -# pragma warning(disable: 4127) // conditional expression is constant -#endif - // Optimization note: don't compute frac_digits if T is - // an unused_type. This should be optimized away by the compiler. - if (!is_same::value) - frac_digits = - static_cast(std::distance(savef, first)); -#if defined(_MSC_VER) && _MSC_VER < 1900 -# pragma warning(pop) -#endif - // ignore extra (non-significant digits) - extract_uint::call(first, last, unused); - } - return r; - } - - template - static bool - parse_exp(Iterator& first, Iterator const& last) - { - if (first == last || (*first != 'e' && *first != 'E')) - return false; - ++first; - return true; - } - - template - static bool - parse_exp_n(Iterator& first, Iterator const& last, int& attr_) - { - return extract_int::call(first, last, attr_); - } - - /////////////////////////////////////////////////////////////////////// - // The parse_nan() and parse_inf() functions get called whenever - // a number to parse does not start with a digit (after having - // successfully parsed an optional sign). - // - // The functions should return true if a Nan or Inf has been found. In - // this case the attr should be set to the matched value (NaN or - // Inf). The optional sign will be automatically applied afterwards. - // - // The default implementation below recognizes representations of NaN - // and Inf as mandated by the C99 Standard and as proposed for - // inclusion into the C++0x Standard: nan, nan(...), inf and infinity - // (the matching is performed case-insensitively). - /////////////////////////////////////////////////////////////////////// - template - static bool - parse_nan(Iterator& first, Iterator const& last, Attribute& attr_) - { - if (first == last) - return false; // end of input reached - - if (*first != 'n' && *first != 'N') - return false; // not "nan" - - // nan[(...)] ? - if (detail::string_parse("nan", "NAN", first, last, unused)) - { - if (first != last && *first == '(') - { - // skip trailing (...) part - Iterator i = first; - - while (++i != last && *i != ')') - ; - if (i == last) - return false; // no trailing ')' found, give up - - first = ++i; - } - attr_ = std::numeric_limits::quiet_NaN(); - return true; - } - return false; - } - - template - static bool - parse_inf(Iterator& first, Iterator const& last, Attribute& attr_) - { - if (first == last) - return false; // end of input reached - - if (*first != 'i' && *first != 'I') - return false; // not "inf" - - // inf or infinity ? - if (detail::string_parse("inf", "INF", first, last, unused)) - { - // skip allowed 'inity' part of infinity - detail::string_parse("inity", "INITY", first, last, unused); - attr_ = std::numeric_limits::infinity(); - return true; - } - return false; - } - }; - - /////////////////////////////////////////////////////////////////////////// - // Default (signed) real number policies - /////////////////////////////////////////////////////////////////////////// - template - struct real_policies : ureal_policies - { - template - static bool - parse_sign(Iterator& first, Iterator const& last) - { - return extract_sign(first, last); - } - }; - - template - struct strict_ureal_policies : ureal_policies - { - static bool const expect_dot = true; - }; - - template - struct strict_real_policies : real_policies - { - static bool const expect_dot = true; - }; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/numeric/uint.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/numeric/uint.hpp deleted file mode 100644 index 258ea70c4391..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/numeric/uint.hpp +++ /dev/null @@ -1,464 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - Copyright (c) 2011 Bryce Lelbach - Copyright (c) 2011 Jan Frederick Eick - - 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) -==============================================================================*/ -#ifndef BOOST_SPIRIT_QI_NUMERIC_UINT_HPP -#define BOOST_SPIRIT_QI_NUMERIC_UINT_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - namespace tag - { - template - struct uint_parser - { - BOOST_SPIRIT_IS_TAG() - }; - } - - namespace qi - { - /////////////////////////////////////////////////////////////////////// - // This one is the class that the user can instantiate directly in - // order to create a customized int parser - template - struct uint_parser - : spirit::terminal > - {}; - } - - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> // enables ushort_ - struct use_terminal : mpl::true_ {}; - - template // enables lit(n) - struct use_terminal > - , typename enable_if >::type> - : mpl::true_ {}; - - template // enables ushort_(n) - struct use_terminal > > - : is_arithmetic {}; - - template <> // enables *lazy* ushort_(n) - struct use_lazy_terminal : mpl::true_ {}; - - /////////////////////////////////////////////////////////////////////////// - template <> // enables uint_ - struct use_terminal : mpl::true_ {}; - - template // enables lit(n) - struct use_terminal > - , typename enable_if >::type> - : mpl::true_ {}; - - template // enables uint_(n) - struct use_terminal > > - : is_arithmetic {}; - - template <> // enables *lazy* uint_(n) - struct use_lazy_terminal : mpl::true_ {}; - - /////////////////////////////////////////////////////////////////////////// - template <> // enables ulong_ - struct use_terminal : mpl::true_ {}; - - template // enables lit(n) - struct use_terminal > - , typename enable_if >::type> - : mpl::true_ {}; - - template // enables ulong_(n) - struct use_terminal > > - : is_arithmetic {}; - - template <> // enables *lazy* ulong_(n) - struct use_lazy_terminal : mpl::true_ {}; - - /////////////////////////////////////////////////////////////////////////// -#ifdef BOOST_HAS_LONG_LONG - template <> // enables ulong_long - struct use_terminal : mpl::true_ {}; - - template // enables lit(n) - struct use_terminal > - , typename enable_if >::type> - : mpl::true_ {}; - - template // enables ulong_long(n) - struct use_terminal > > - : is_arithmetic {}; - - template <> // enables *lazy* ulong_long(n) - struct use_lazy_terminal : mpl::true_ {}; -#endif - - /////////////////////////////////////////////////////////////////////////// - template <> // enables bin - struct use_terminal : mpl::true_ {}; - - template // enables bin(n) - struct use_terminal > > - : is_arithmetic {}; - - template <> // enables *lazy* bin(n) - struct use_lazy_terminal : mpl::true_ {}; - - /////////////////////////////////////////////////////////////////////////// - template <> // enables oct - struct use_terminal : mpl::true_ {}; - - template // enables oct(n) - struct use_terminal > > - : is_arithmetic {}; - - template <> // enables *lazy* oct(n) - struct use_lazy_terminal : mpl::true_ {}; - - /////////////////////////////////////////////////////////////////////////// - template <> // enables hex - struct use_terminal : mpl::true_ {}; - - template // enables hex(n) - struct use_terminal > > - : is_arithmetic {}; - - template <> // enables *lazy* hex(n) - struct use_lazy_terminal : mpl::true_ {}; - - /////////////////////////////////////////////////////////////////////////// - // enables any custom uint_parser - template - struct use_terminal > - : mpl::true_ {}; - - // enables any custom uint_parser(n) - template - struct use_terminal - , fusion::vector1 > - > : mpl::true_ {}; - - // enables *lazy* custom uint_parser(n) - template - struct use_lazy_terminal, 1 - > : mpl::true_ {}; -}} - -namespace boost { namespace spirit { namespace qi -{ -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using spirit::bin; - using spirit::oct; - using spirit::hex; - - using spirit::ushort_; - using spirit::uint_; - using spirit::ulong_; -#ifdef BOOST_HAS_LONG_LONG - using spirit::ulong_long; -#endif - using spirit::lit; // lit(1) is equivalent to 1 -#endif - - using spirit::bin_type; - using spirit::oct_type; - using spirit::hex_type; - - using spirit::ushort_type; - using spirit::uint_type; - using spirit::ulong_type; -#ifdef BOOST_HAS_LONG_LONG - using spirit::ulong_long_type; -#endif - using spirit::lit_type; - - /////////////////////////////////////////////////////////////////////////// - // This is the actual uint parser - /////////////////////////////////////////////////////////////////////////// - template - struct any_uint_parser - : primitive_parser > - { - // check template parameter 'Radix' for validity - BOOST_SPIRIT_ASSERT_MSG( - Radix >= 2 && Radix <= 36, - not_supported_radix, ()); - - template - struct attribute - { - typedef T type; - }; - - template - bool parse(Iterator& first, Iterator const& last - , Context& /*context*/, Skipper const& skipper - , Attribute& attr_) const - { - typedef extract_uint extract; - qi::skip_over(first, last, skipper); - return extract::call(first, last, attr_); - } - - template - info what(Context& /*context*/) const - { - return info("unsigned-integer"); - } - }; - //] - - template - struct literal_uint_parser - : primitive_parser > - { - // check template parameter 'Radix' for validity - BOOST_SPIRIT_ASSERT_MSG( - Radix == 2 || Radix == 8 || Radix == 10 || Radix == 16, - not_supported_radix, ()); - - template - literal_uint_parser(Value const& n) : n_(n) {} - - template - struct attribute - : mpl::if_c - {}; - - template - bool parse(Iterator& first, Iterator const& last - , Context& /*context*/, Skipper const& skipper - , Attribute& attr_param) const - { - typedef extract_uint extract; - qi::skip_over(first, last, skipper); - - Iterator save = first; - T attr_; - - if (extract::call(first, last, attr_) && (attr_ == n_)) - { - traits::assign_to(attr_, attr_param); - return true; - } - - first = save; - return false; - } - - template - info what(Context& /*context*/) const - { - return info("unsigned-integer"); - } - - T n_; - }; - - /////////////////////////////////////////////////////////////////////////// - // Parser generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_uint - { - typedef any_uint_parser result_type; - result_type operator()(unused_type, unused_type) const - { - return result_type(); - } - }; - - template - struct make_direct_uint - { - typedef literal_uint_parser - result_type; - template - result_type operator()(Terminal const& term, unused_type) const - { - return result_type(fusion::at_c<0>(term.args)); - } - }; - - template - struct make_literal_uint - { - typedef literal_uint_parser result_type; - template - result_type operator()(Terminal const& term, unused_type) const - { - return result_type(fusion::at_c<0>(term.args)); - } - }; - - /////////////////////////////////////////////////////////////////////////// - template - struct make_primitive< - terminal_ex > - , Modifiers, typename enable_if >::type> - : make_literal_uint {}; - - template - struct make_primitive< - terminal_ex > - , Modifiers, typename enable_if >::type> - : make_literal_uint {}; - - template - struct make_primitive< - terminal_ex > - , Modifiers, typename enable_if >::type> - : make_literal_uint {}; - -#ifdef BOOST_HAS_LONG_LONG - template - struct make_primitive< - terminal_ex > - , Modifiers, typename enable_if >::type> - : make_literal_uint {}; -#endif - - /////////////////////////////////////////////////////////////////////////// - template - struct make_primitive< - tag::uint_parser - , Modifiers> - : make_uint {}; - - template - struct make_primitive< - terminal_ex - , fusion::vector1 >, Modifiers> - : make_direct_uint {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct make_primitive - : make_uint {}; - - template - struct make_primitive< - terminal_ex > , Modifiers> - : make_direct_uint {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct make_primitive - : make_uint {}; - - template - struct make_primitive< - terminal_ex > , Modifiers> - : make_direct_uint {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct make_primitive - : make_uint {}; - - template - struct make_primitive< - terminal_ex > , Modifiers> - : make_direct_uint {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct make_primitive - : make_uint {}; - - template - struct make_primitive< - terminal_ex > , Modifiers> - : make_direct_uint {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct make_primitive - : make_uint {}; - - template - struct make_primitive< - terminal_ex > , Modifiers> - : make_direct_uint {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct make_primitive - : make_uint {}; - - template - struct make_primitive< - terminal_ex > , Modifiers> - : make_direct_uint {}; - - /////////////////////////////////////////////////////////////////////////// -#ifdef BOOST_HAS_LONG_LONG - template - struct make_primitive - : make_uint {}; - - template - struct make_primitive< - terminal_ex > , Modifiers> - : make_direct_uint {}; -#endif -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/operator.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/operator.hpp deleted file mode 100644 index de44f5eef399..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/operator.hpp +++ /dev/null @@ -1,27 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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_OPERATOR_FEBRUARY_02_2007_0558PM) -#define BOOST_SPIRIT_OPERATOR_FEBRUARY_02_2007_0558PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/operator/alternative.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/operator/alternative.hpp deleted file mode 100644 index 7814752dbe22..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/operator/alternative.hpp +++ /dev/null @@ -1,120 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_QI_OPERATOR_ALTERNATIVE_HPP -#define BOOST_SPIRIT_QI_OPERATOR_ALTERNATIVE_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_operator // enables | - : mpl::true_ {}; - - template <> - struct flatten_tree // flattens | - : mpl::true_ {}; -}} - -namespace boost { namespace spirit { namespace qi -{ - template - struct alternative : nary_parser > - { - template - struct attribute - { - // Put all the element attributes in a tuple - typedef typename traits::build_attribute_sequence< - Elements, Context, traits::alternative_attribute_transform - , Iterator, qi::domain - >::type all_attributes; - - // Ok, now make a variant over the attribute sequence. Note that - // build_variant makes sure that 1) all attributes in the variant - // are unique 2) puts the unused attribute, if there is any, to - // the front and 3) collapses single element variants, variant - // to T. - typedef typename - traits::build_variant::type - type; - }; - - alternative(Elements const& elements_) - : elements(elements_) {} - - template - bool parse(Iterator& first, Iterator const& last - , Context& context, Skipper const& skipper - , Attribute& attr_) const - { - detail::alternative_function - f(first, last, context, skipper, attr_); - - // return true if *any* of the parsers succeed - return fusion::any(elements, f); - } - - template - info what(Context& context) const - { - info result("alternative"); - fusion::for_each(elements, - spirit::detail::what_function(result, context)); - return result; - } - - Elements elements; - }; - - /////////////////////////////////////////////////////////////////////////// - // Parser generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_composite - : make_nary_composite - {}; -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct has_semantic_action > - : nary_has_semantic_action {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container, Attribute, Context - , Iterator> - : nary_handles_container {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/operator/and_predicate.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/operator/and_predicate.hpp deleted file mode 100644 index 647fdd2e9555..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/operator/and_predicate.hpp +++ /dev/null @@ -1,94 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_QI_OPERATOR_AND_PREDICATE_HPP -#define BOOST_SPIRIT_QI_OPERATOR_AND_PREDICATE_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_operator // enables &p - : mpl::true_ {}; -}} - -namespace boost { namespace spirit { namespace qi -{ - template - struct and_predicate : unary_parser > - { - typedef Subject subject_type; - - template - struct attribute - { - typedef unused_type type; - }; - - and_predicate(Subject const& subject_) - : subject(subject_) {} - - template - bool parse(Iterator& first, Iterator const& last - , Context& context, Skipper const& skipper - , Attribute& /*attr*/) const - { - Iterator i = first; - return subject.parse(i, last, context, skipper, unused); - } - - template - info what(Context& context) const - { - return info("and-predicate", subject.what(context)); - } - - Subject subject; - }; - - /////////////////////////////////////////////////////////////////////////// - // Parser generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_composite - : make_unary_composite - {}; -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct has_semantic_action > - : unary_has_semantic_action {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container, Attribute, Context - , Iterator> - : unary_handles_container {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/operator/difference.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/operator/difference.hpp deleted file mode 100644 index 7dc16f612f17..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/operator/difference.hpp +++ /dev/null @@ -1,114 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_QI_OPERATOR_DIFFERENCE_HPP -#define BOOST_SPIRIT_QI_OPERATOR_DIFFERENCE_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_operator // enables - - : mpl::true_ {}; -}} - -namespace boost { namespace spirit { namespace qi -{ - template - struct difference : binary_parser > - { - typedef Left left_type; - typedef Right right_type; - - template - struct attribute - { - typedef typename - traits::attribute_of::type - type; - }; - - difference(Left const& left_, Right const& right_) - : left(left_), right(right_) {} - - template - bool parse(Iterator& first, Iterator const& last - , Context& context, Skipper const& skipper - , Attribute& attr_) const - { - // Unlike classic Spirit, with this version of difference, the rule - // lit("policeman") - "police" will always fail to match. - - // Spirit2 does not count the matching chars while parsing and - // there is no reliable and fast way to check if the LHS matches - // more than the RHS. - - // Try RHS first - Iterator start = first; - if (right.parse(first, last, context, skipper, unused)) - { - // RHS succeeds, we fail. - first = start; - return false; - } - // RHS fails, now try LHS - return left.parse(first, last, context, skipper, attr_); - } - - template - info what(Context& context) const - { - return info("difference", - std::make_pair(left.what(context), right.what(context))); - } - - Left left; - Right right; - }; - - /////////////////////////////////////////////////////////////////////////// - // Parser generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_composite - : make_binary_composite - {}; -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct has_semantic_action > - : binary_has_semantic_action {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container, Attribute, Context - , Iterator> - : binary_handles_container {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/operator/expect.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/operator/expect.hpp deleted file mode 100644 index aa2462fc7dc2..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/operator/expect.hpp +++ /dev/null @@ -1,91 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_QI_OPERATOR_EXPECT_HPP -#define BOOST_SPIRIT_QI_OPERATOR_EXPECT_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_operator // enables > - : mpl::true_ {}; - - template <> - struct flatten_tree // flattens > - : mpl::true_ {}; -}} - -namespace boost { namespace spirit { namespace qi -{ - template - struct expect_operator : sequence_base, Elements> - { - friend struct sequence_base, Elements>; - - expect_operator(Elements const& elements) - : sequence_base, Elements>(elements) {} - - private: - - template - static detail::expect_function< - Iterator, Context, Skipper - , expectation_failure > - fail_function( - Iterator& first, Iterator const& last - , Context& context, Skipper const& skipper) - { - return detail::expect_function< - Iterator, Context, Skipper, expectation_failure > - (first, last, context, skipper); - } - - std::string id() const { return "expect_operator"; } - }; - - /////////////////////////////////////////////////////////////////////////// - // Parser generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_composite - : make_nary_composite - {}; -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct has_semantic_action > - : nary_has_semantic_action {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container, Attribute, Context - , Iterator> - : mpl::true_ {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/operator/kleene.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/operator/kleene.hpp deleted file mode 100644 index 7b32515f8b0c..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/operator/kleene.hpp +++ /dev/null @@ -1,136 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_QI_OPERATOR_KLEENE_HPP -#define BOOST_SPIRIT_QI_OPERATOR_KLEENE_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - //[composite_parsers_kleene_enable_ - template <> - struct use_operator // enables *p - : mpl::true_ {}; - //] -}} - -namespace boost { namespace spirit { namespace qi -{ - //[composite_parsers_kleene - template - struct kleene : unary_parser > - { - typedef Subject subject_type; - - template - struct attribute - { - // Build a std::vector from the subject's attribute. Note - // that build_std_vector may return unused_type if the - // subject's attribute is an unused_type. - typedef typename - traits::build_std_vector< - typename traits:: - attribute_of::type - >::type - type; - }; - - kleene(Subject const& subject_) - : subject(subject_) {} - - template - bool parse_container(F f) const - { - while (!f (subject)) - ; - return true; - } - - template - bool parse(Iterator& first, Iterator const& last - , Context& context, Skipper const& skipper - , Attribute& attr_) const - { - // ensure the attribute is actually a container type - traits::make_container(attr_); - - typedef detail::fail_function - fail_function; - - Iterator iter = first; - fail_function f(iter, last, context, skipper); - parse_container(detail::make_pass_container(f, attr_)); - - first = f.first; - return true; - } - - template - info what(Context& context) const - { - return info("kleene", subject.what(context)); - } - - Subject subject; - }; - //] - - /////////////////////////////////////////////////////////////////////////// - // Parser generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - //[composite_parsers_kleene_generator - template - struct make_composite - : make_unary_composite - {}; - //] - -// /////////////////////////////////////////////////////////////////////////// -// // Define what attributes are compatible with a kleene -// template -// struct is_attribute_compatible, Context, Iterator> -// : traits::is_container_compatible, Context, Iterator> -// {}; -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct has_semantic_action > - : unary_has_semantic_action {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container, Attribute - , Context, Iterator> - : mpl::true_ {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/operator/list.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/operator/list.hpp deleted file mode 100644 index cd5bbb6a6118..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/operator/list.hpp +++ /dev/null @@ -1,137 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_QI_OPERATOR_LIST_HPP -#define BOOST_SPIRIT_QI_OPERATOR_LIST_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_operator // enables p % d - : mpl::true_ {}; -}} - -namespace boost { namespace spirit { namespace qi -{ - template - struct list : binary_parser > - { - typedef Left left_type; - typedef Right right_type; - - template - struct attribute - { - // Build a std::vector from the LHS's attribute. Note - // that build_std_vector may return unused_type if the - // subject's attribute is an unused_type. - typedef typename - traits::build_std_vector< - typename traits:: - attribute_of::type - >::type - type; - }; - - list(Left const& left_, Right const& right_) - : left(left_), right(right_) {} - - template - bool parse_container(F f) const - { - // in order to succeed we need to match at least one element - if (f (left)) - return false; - - typename F::iterator_type save = f.f.first; - while (right.parse(f.f.first, f.f.last, f.f.context, f.f.skipper, unused) - && !f (left)) - { - save = f.f.first; - } - - f.f.first = save; - return true; - } - - template - bool parse(Iterator& first, Iterator const& last - , Context& context, Skipper const& skipper - , Attribute& attr_) const - { - typedef detail::fail_function - fail_function; - - // ensure the attribute is actually a container type - traits::make_container(attr_); - - Iterator iter = first; - fail_function f(iter, last, context, skipper); - if (!parse_container(detail::make_pass_container(f, attr_))) - return false; - - first = f.first; - return true; - } - - template - info what(Context& context) const - { - return info("list", - std::make_pair(left.what(context), right.what(context))); - } - - Left left; - Right right; - }; - - /////////////////////////////////////////////////////////////////////////// - // Parser generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_composite - : make_binary_composite - {}; -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct has_semantic_action > - : binary_has_semantic_action {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container, Attribute, Context - , Iterator> - : mpl::true_ {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/operator/not_predicate.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/operator/not_predicate.hpp deleted file mode 100644 index 9c2ef74ebc3c..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/operator/not_predicate.hpp +++ /dev/null @@ -1,93 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_QI_OPERATOR_NOT_PREDICATE_HPP -#define BOOST_SPIRIT_QI_OPERATOR_NOT_PREDICATE_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_operator // enables !p - : mpl::true_ {}; -}} - -namespace boost { namespace spirit { namespace qi -{ - template - struct not_predicate : unary_parser > - { - typedef Subject subject_type; - - template - struct attribute - { - typedef unused_type type; - }; - - not_predicate(Subject const& subject_) - : subject(subject_) {} - - template - bool parse(Iterator& first, Iterator const& last - , Context& context, Skipper const& skipper - , Attribute& /*attr*/) const - { - Iterator i = first; - return !subject.parse(i, last, context, skipper, unused); - } - - template - info what(Context& context) const - { - return info("not-predicate", subject.what(context)); - } - - Subject subject; - }; - - /////////////////////////////////////////////////////////////////////////// - // Parser generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_composite - : make_unary_composite - {}; -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct has_semantic_action > - : unary_has_semantic_action {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container, Attribute - , Context, Iterator> - : unary_handles_container {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/operator/optional.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/operator/optional.hpp deleted file mode 100644 index b5605b28890c..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/operator/optional.hpp +++ /dev/null @@ -1,137 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_QI_OPERATOR_OPTIONAL_HPP -#define BOOST_SPIRIT_QI_OPERATOR_OPTIONAL_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_operator // enables -p - : mpl::true_ {}; -}} - -namespace boost { namespace spirit { namespace qi -{ - template - struct optional : unary_parser > - { - typedef Subject subject_type; - - template - struct attribute - { - // Build a boost::optional from the subject's attribute. Note - // that boost::optional may return unused_type if the - // subject's attribute is an unused_type. - typedef typename - traits::build_optional< - typename traits:: - attribute_of::type - >::type - type; - }; - - optional(Subject const& subject_) - : subject(subject_) {} - - template - bool parse_impl(Iterator& first, Iterator const& last - , Context& context, Skipper const& skipper - , Attribute& attr_, mpl::false_) const - { - // create a local value if Attribute is not unused_type - typename spirit::result_of::optional_value::type val = - typename spirit::result_of::optional_value::type(); - - if (subject.parse(first, last, context, skipper, val)) - { - // assign the parsed value into our attribute - spirit::traits::assign_to(val, attr_); - } - return true; - } - - template - bool parse_impl(Iterator& first, Iterator const& last - , Context& context, Skipper const& skipper - , Attribute& attr_, mpl::true_) const - { - subject.parse(first, last, context, skipper, attr_); - return true; - } - - template - bool parse(Iterator& first, Iterator const& last - , Context& context, Skipper const& skipper - , Attribute& attr_) const - { - typedef typename spirit::result_of::optional_value::type - attribute_type; - - return parse_impl(first, last, context, skipper, attr_ - , traits::is_container()); - } - - template - info what(Context& context) const - { - return info("optional", subject.what(context)); - } - - Subject subject; - }; - - /////////////////////////////////////////////////////////////////////////// - // Parser generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_composite - : make_unary_composite - {}; -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct has_semantic_action > - : unary_has_semantic_action {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container, Attribute - , Context, Iterator> - : mpl::true_ {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/operator/permutation.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/operator/permutation.hpp deleted file mode 100644 index add503b875da..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/operator/permutation.hpp +++ /dev/null @@ -1,144 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_QI_OPERATOR_PERMUTATION_HPP -#define BOOST_SPIRIT_QI_OPERATOR_PERMUTATION_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_operator // enables ^ - : mpl::true_ {}; - - template <> - struct flatten_tree // flattens ^ - : mpl::true_ {}; -}} - -namespace boost { namespace spirit { namespace qi -{ - template - struct permutation : nary_parser > - { - template - struct attribute - { - // Put all the element attributes in a tuple, - // wrapping each element in a boost::optional - typedef typename traits::build_attribute_sequence< - Elements, Context, traits::permutation_attribute_transform - , Iterator, qi::domain - >::type all_attributes; - - // Now, build a fusion vector over the attributes. Note - // that build_fusion_vector 1) removes all unused attributes - // and 2) may return unused_type if all elements have - // unused_type(s). - typedef typename - traits::build_fusion_vector::type - type; - }; - - permutation(Elements const& elements_) - : elements(elements_) {} - - template - bool parse(Iterator& first, Iterator const& last - , Context& context, Skipper const& skipper - , Attribute& attr_) const - { - typedef traits::attribute_not_unused predicate; - detail::permute_function - f(first, last, context, skipper); - - boost::array::value> flags; - flags.fill(false); - - // wrap the attribute in a tuple if it is not a tuple - typename traits::wrap_if_not_tuple::type attr_local(attr_); - - // We have a bool array 'flags' with one flag for each parser. - // permute_function sets the slot to true when the corresponding - // parser successful matches. We loop until there are no more - // successful parsers. - - bool result = false; - f.taken = flags.begin(); - while (spirit::any_if_ns(elements, attr_local, f, predicate())) - { - f.taken = flags.begin(); - result = true; - } - return result; - } - - template - info what(Context& context) const - { - info result("permutation"); - fusion::for_each(elements, - spirit::detail::what_function(result, context)); - return result; - } - - Elements elements; - }; - - /////////////////////////////////////////////////////////////////////////// - // Parser generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_composite - : make_nary_composite - {}; -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - // We specialize this for permutation (see support/attributes.hpp). - // For permutation, we only wrap the attribute in a tuple IFF - // it is not already a fusion tuple. - template - struct pass_attribute, Attribute> - : wrap_if_not_tuple {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct has_semantic_action > - : nary_has_semantic_action {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container, Attribute, Context - , Iterator> - : nary_handles_container {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/operator/plus.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/operator/plus.hpp deleted file mode 100644 index fc4632b3e0ec..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/operator/plus.hpp +++ /dev/null @@ -1,127 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_QI_OPERATOR_PLUS_HPP -#define BOOST_SPIRIT_QI_OPERATOR_PLUS_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_operator // enables +p - : mpl::true_ {}; -}} - -namespace boost { namespace spirit { namespace qi -{ - template - struct plus : unary_parser > - { - typedef Subject subject_type; - - template - struct attribute - { - // Build a std::vector from the subject's attribute. Note - // that build_std_vector may return unused_type if the - // subject's attribute is an unused_type. - typedef typename - traits::build_std_vector< - typename traits::attribute_of< - Subject, Context, Iterator>::type - >::type - type; - }; - - plus(Subject const& subject_) - : subject(subject_) {} - - template - bool parse_container(F f) const - { - // in order to succeed we need to match at least one element - if (f (subject)) - return false; - - while (!f (subject)) - ; - return true; - } - - template - bool parse(Iterator& first, Iterator const& last - , Context& context, Skipper const& skipper - , Attribute& attr_) const - { - typedef detail::fail_function - fail_function; - - // ensure the attribute is actually a container type - traits::make_container(attr_); - - Iterator iter = first; - fail_function f(iter, last, context, skipper); - if (!parse_container(detail::make_pass_container(f, attr_))) - return false; - - first = f.first; - return true; - } - - template - info what(Context& context) const - { - return info("plus", subject.what(context)); - } - - Subject subject; - }; - - /////////////////////////////////////////////////////////////////////////// - // Parser generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_composite - : make_unary_composite - {}; -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct has_semantic_action > - : unary_has_semantic_action {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container, Attribute, Context - , Iterator> - : mpl::true_ {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/operator/sequence.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/operator/sequence.hpp deleted file mode 100644 index 3854c9e3cacb..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/operator/sequence.hpp +++ /dev/null @@ -1,98 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_QI_OPERATOR_SEQUENCE_HPP -#define BOOST_SPIRIT_QI_OPERATOR_SEQUENCE_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_operator // enables >> - : mpl::true_ {}; - - template <> - struct flatten_tree // flattens >> - : mpl::true_ {}; -}} - -namespace boost { namespace spirit { namespace qi -{ - template - struct sequence : sequence_base, Elements> - { - friend struct sequence_base, Elements>; - - sequence(Elements const& elements) - : sequence_base, Elements>(elements) {} - - private: - - template - static detail::fail_function - fail_function( - Iterator& first, Iterator const& last - , Context& context, Skipper const& skipper) - { - return detail::fail_function - (first, last, context, skipper); - } - - std::string id() const { return "sequence"; } - }; - - /////////////////////////////////////////////////////////////////////////// - // Parser generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_composite - : make_nary_composite - {}; - -// /////////////////////////////////////////////////////////////////////////// -// // Define what attributes are compatible with a sequence -// template -// struct is_attribute_compatible, Context, Iterator> -// : mpl::or_< -// is_convertible, Context, Iterator>::type> -// , traits::is_fusion_sequence_compatible, Context, Iterator> -// , traits::is_container_compatible, Context, Iterator> -// > -// {}; -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct has_semantic_action > - : nary_has_semantic_action {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container, Attribute, Context - , Iterator> - : mpl::true_ {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/operator/sequence_base.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/operator/sequence_base.hpp deleted file mode 100644 index 1b56e819e8f0..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/operator/sequence_base.hpp +++ /dev/null @@ -1,140 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_QI_OPERATOR_SEQUENCE_BASE_HPP -#define BOOST_SPIRIT_QI_OPERATOR_SEQUENCE_BASE_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace qi -{ - template - struct sequence_base // this class is shared by sequence and expect - : nary_parser - { - typedef Elements elements_type; - struct sequence_base_id; - - template - struct attribute - { - // Put all the element attributes in a tuple - typedef typename traits::build_attribute_sequence< - Elements, Context, traits::sequence_attribute_transform - , Iterator, qi::domain - >::type all_attributes; - - // Now, build a fusion vector over the attributes. Note - // that build_fusion_vector 1) removes all unused attributes - // and 2) may return unused_type if all elements have - // unused_type(s). - typedef typename - traits::build_fusion_vector::type - type_; - - // Finally, strip single element vectors into its - // naked form: vector1 --> T - typedef typename - traits::strip_single_element_vector::type - type; - }; - - sequence_base(Elements const& elements_) - : elements(elements_) {} - - // standard case. Attribute is a fusion tuple - template - bool parse_impl(Iterator& first, Iterator const& last - , Context& context, Skipper const& skipper - , Attribute& attr_, mpl::false_) const - { - Iterator iter = first; - typedef traits::attribute_not_unused predicate; - - // wrap the attribute in a tuple if it is not a tuple or if the - // attribute of this sequence is a single element tuple - typedef typename attribute::type_ attr_type_; - typename traits::wrap_if_not_tuple - , mpl::not_ > - >::type - >::type attr_local(attr_); - - // return false if *any* of the parsers fail - if (spirit::any_if(elements, attr_local - , Derived::fail_function(iter, last, context, skipper), predicate())) - return false; - first = iter; - return true; - } - - // Special case when Attribute is an stl container - template - bool parse_impl(Iterator& first, Iterator const& last - , Context& context, Skipper const& skipper - , Attribute& attr_, mpl::true_) const - { - // ensure the attribute is actually a container type - traits::make_container(attr_); - - Iterator iter = first; - // return false if *any* of the parsers fail - if (fusion::any(elements - , detail::make_sequence_pass_container( - Derived::fail_function(iter, last, context, skipper), attr_)) - ) - return false; - first = iter; - return true; - } - - // main parse function. Dispatches to parse_impl depending - // on the Attribute type. - template - bool parse(Iterator& first, Iterator const& last - , Context& context, Skipper const& skipper - , Attribute& attr_) const - { - return parse_impl(first, last, context, skipper, attr_ - , traits::is_container()); - } - - template - info what(Context& context) const - { - info result(this->derived().id()); - fusion::for_each(elements, - spirit::detail::what_function(result, context)); - return result; - } - - Elements elements; - }; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/operator/sequential_or.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/operator/sequential_or.hpp deleted file mode 100644 index 1d47f5a0aec8..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/operator/sequential_or.hpp +++ /dev/null @@ -1,130 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_QI_OPERATOR_SEQUENTIAL_OR_HPP -#define BOOST_SPIRIT_QI_OPERATOR_SEQUENTIAL_OR_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_operator // enables || - : mpl::true_ {}; - - template <> - struct flatten_tree // flattens || - : mpl::true_ {}; -}} - -namespace boost { namespace spirit { namespace qi -{ - template - struct sequential_or : nary_parser > - { - template - struct attribute - { - // Put all the element attributes in a tuple, - // wrapping each element in a boost::optional - typedef typename traits::build_attribute_sequence< - Elements, Context, traits::sequential_or_attribute_transform - , Iterator, qi::domain - >::type all_attributes; - - // Now, build a fusion vector over the attributes. Note - // that build_fusion_vector 1) removes all unused attributes - // and 2) may return unused_type if all elements have - // unused_type(s). - typedef typename - traits::build_fusion_vector::type - type; - }; - - sequential_or(Elements const& elements_) - : elements(elements_) {} - - template - bool parse(Iterator& first, Iterator const& last - , Context& context, Skipper const& skipper - , Attribute& attr_) const - { - typedef traits::attribute_not_unused predicate; - detail::pass_function - f(first, last, context, skipper); - - // wrap the attribute in a tuple if it is not a tuple - typename traits::wrap_if_not_tuple::type attr_local(attr_); - - // return true if *any* of the parsers succeed - // (we use the non-short-circuiting and strict order version: - // any_if_ns_so to force all the elements to be tested and - // in the defined order: first is first, last is last) - return spirit::any_if_ns_so(elements, attr_local, f, predicate()); - } - - template - info what(Context& context) const - { - info result("sequential-or"); - fusion::for_each(elements, - spirit::detail::what_function(result, context)); - return result; - } - - Elements elements; - }; - - /////////////////////////////////////////////////////////////////////////// - // Parser generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_composite - : make_nary_composite - {}; -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - // We specialize this for sequential_or (see support/attributes.hpp). - // For sequential_or, we only wrap the attribute in a tuple IFF - // it is not already a fusion tuple. - template - struct pass_attribute, Attribute> - : wrap_if_not_tuple {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct has_semantic_action > - : nary_has_semantic_action {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container, Attribute, Context - , Iterator> - : nary_handles_container {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/parse.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/parse.hpp deleted file mode 100644 index 6f9406c51ce1..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/parse.hpp +++ /dev/null @@ -1,219 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - 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_PARSE_APRIL_16_2006_0442PM) -#define BOOST_SPIRIT_PARSE_APRIL_16_2006_0442PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace qi -{ - /////////////////////////////////////////////////////////////////////////// - template - inline bool - parse( - Iterator& first - , Iterator last - , Expr const& expr) - { - // Make sure the iterator is at least a readable forward traversal iterator. - // If you got a compilation error here, then you are using a weaker iterator - // while calling this function, you need to supply a readable forward traversal - // iterator instead. - BOOST_CONCEPT_ASSERT((boost_concepts::ReadableIteratorConcept)); - BOOST_CONCEPT_ASSERT((boost_concepts::ForwardTraversalConcept)); - - return detail::parse_impl::call(first, last, expr); - } - - template - inline bool - parse( - Iterator const& first_ - , Iterator last - , Expr const& expr) - { - Iterator first = first_; - return qi::parse(first, last, expr); - } - - /////////////////////////////////////////////////////////////////////////// - namespace detail - { - template - struct make_context - { - typedef context, locals<> > type; - }; - - template <> - struct make_context - { - typedef unused_type type; - }; - } - - template - inline bool - parse( - Iterator& first - , Iterator last - , Expr const& expr - , Attr& attr) - { - // Make sure the iterator is at least a readable forward traversal iterator. - // If you got a compilation error here, then you are using a weaker iterator - // while calling this function, you need to supply a readable forward traversal - // iterator instead. - BOOST_CONCEPT_ASSERT((boost_concepts::ReadableIteratorConcept)); - BOOST_CONCEPT_ASSERT((boost_concepts::ForwardTraversalConcept)); - - // Report invalid expression error as early as possible. - // If you got an error_invalid_expression error message here, - // then the expression (expr) is not a valid spirit qi expression. - BOOST_SPIRIT_ASSERT_MATCH(qi::domain, Expr); - - typename detail::make_context::type context(attr); - return compile(expr).parse(first, last, context, unused, attr); - } - - template - inline bool - parse( - Iterator const& first_ - , Iterator last - , Expr const& expr - , Attr& attr) - { - Iterator first = first_; - return qi::parse(first, last, expr, attr); - } - - /////////////////////////////////////////////////////////////////////////// - template - inline bool - phrase_parse( - Iterator& first - , Iterator last - , Expr const& expr - , Skipper const& skipper - , BOOST_SCOPED_ENUM(skip_flag) post_skip = skip_flag::postskip) - { - // Make sure the iterator is at least a readable forward traversal iterator. - // If you got a compilation error here, then you are using a weaker iterator - // while calling this function, you need to supply a readable forward traversal - // iterator instead. - BOOST_CONCEPT_ASSERT((boost_concepts::ReadableIteratorConcept)); - BOOST_CONCEPT_ASSERT((boost_concepts::ForwardTraversalConcept)); - - return detail::phrase_parse_impl::call( - first, last, expr, skipper, post_skip); - } - - template - inline bool - phrase_parse( - Iterator const& first_ - , Iterator last - , Expr const& expr - , Skipper const& skipper - , BOOST_SCOPED_ENUM(skip_flag) post_skip = skip_flag::postskip) - { - Iterator first = first_; - return qi::phrase_parse(first, last, expr, skipper, post_skip); - } - - /////////////////////////////////////////////////////////////////////////// - template - inline bool - phrase_parse( - Iterator& first - , Iterator last - , Expr const& expr - , Skipper const& skipper - , BOOST_SCOPED_ENUM(skip_flag) post_skip - , Attr& attr) - { - // Make sure the iterator is at least a readable forward traversal iterator. - // If you got a compilation error here, then you are using a weaker iterator - // while calling this function, you need to supply a readable forward traversal - // iterator instead. - BOOST_CONCEPT_ASSERT((boost_concepts::ReadableIteratorConcept)); - BOOST_CONCEPT_ASSERT((boost_concepts::ForwardTraversalConcept)); - - // Report invalid expression error as early as possible. - // If you got an error_invalid_expression error message here, - // then either the expression (expr) or skipper is not a valid - // spirit qi expression. - BOOST_SPIRIT_ASSERT_MATCH(qi::domain, Expr); - BOOST_SPIRIT_ASSERT_MATCH(qi::domain, Skipper); - - typedef - typename result_of::compile::type - skipper_type; - skipper_type const skipper_ = compile(skipper); - - typename detail::make_context::type context(attr); - if (!compile(expr).parse( - first, last, context, skipper_, attr)) - return false; - - if (post_skip == skip_flag::postskip) - qi::skip_over(first, last, skipper_); - return true; - } - - template - inline bool - phrase_parse( - Iterator const& first_ - , Iterator last - , Expr const& expr - , Skipper const& skipper - , BOOST_SCOPED_ENUM(skip_flag) post_skip - , Attr& attr) - { - Iterator first = first_; - return qi::phrase_parse(first, last, expr, skipper, post_skip, attr); - } - - /////////////////////////////////////////////////////////////////////////// - template - inline bool - phrase_parse( - Iterator& first - , Iterator last - , Expr const& expr - , Skipper const& skipper - , Attr& attr) - { - return qi::phrase_parse(first, last, expr, skipper, skip_flag::postskip, attr); - } - - template - inline bool - phrase_parse( - Iterator const& first_ - , Iterator last - , Expr const& expr - , Skipper const& skipper - , Attr& attr) - { - Iterator first = first_; - return qi::phrase_parse(first, last, expr, skipper, skip_flag::postskip, attr); - } -}}} - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/parse_attr.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/parse_attr.hpp deleted file mode 100644 index 6db33008f1cc..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/parse_attr.hpp +++ /dev/null @@ -1,177 +0,0 @@ -// Copyright (c) 2001-2011 Hartmut Kaiser -// Copyright (c) 2001-2011 Joel de Guzman -// Copyright (c) 2009 Carl Barron -// -// 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_PP_IS_ITERATING) - -#if !defined(BOOST_SPIRIT_PARSE_ATTR_APRIL_24_2009_1043AM) -#define BOOST_SPIRIT_PARSE_ATTR_APRIL_24_2009_1043AM - -#include - -#include -#include -#include -#include -#include -#include - -#define BOOST_PP_FILENAME_1 -#define BOOST_PP_ITERATION_LIMITS (2, SPIRIT_ARGUMENTS_LIMIT) -#include BOOST_PP_ITERATE() - -#endif - -/////////////////////////////////////////////////////////////////////////////// -// -// Preprocessor vertical repetition code -// -/////////////////////////////////////////////////////////////////////////////// -#else // defined(BOOST_PP_IS_ITERATING) - -#define N BOOST_PP_ITERATION() -#define BOOST_SPIRIT_QI_ATTRIBUTE_REFERENCE(z, n, A) BOOST_PP_CAT(A, n)& - -namespace boost { namespace spirit { namespace qi -{ - /////////////////////////////////////////////////////////////////////////// - template - inline bool - parse( - Iterator& first - , Iterator last - , Expr const& expr - , BOOST_PP_ENUM_BINARY_PARAMS(N, A, & attr)) - { - // Make sure the iterator is at least a forward_iterator. If you got an - // compilation error here, then you are using an input_iterator while - // calling this function, you need to supply at least a - // forward_iterator instead. - BOOST_CONCEPT_ASSERT((ForwardIterator)); - - // Report invalid expression error as early as possible. - // If you got an error_invalid_expression error message here, - // then the expression (expr) is not a valid spirit qi expression. - BOOST_SPIRIT_ASSERT_MATCH(qi::domain, Expr); - - typedef fusion::vector< - BOOST_PP_ENUM(N, BOOST_SPIRIT_QI_ATTRIBUTE_REFERENCE, A) - > vector_type; - - vector_type lattr (BOOST_PP_ENUM_PARAMS(N, attr)); - return compile(expr).parse(first, last, unused, unused, lattr); - } - - template - inline bool - parse( - Iterator const& first_ - , Iterator last - , Expr const& expr - , BOOST_PP_ENUM_BINARY_PARAMS(N, A, & attr)) - { - Iterator first = first_; - return qi::parse(first, last, expr, BOOST_PP_ENUM_PARAMS(N, attr)); - } - - /////////////////////////////////////////////////////////////////////////// - template - inline bool - phrase_parse( - Iterator& first - , Iterator last - , Expr const& expr - , Skipper const& skipper - , BOOST_SCOPED_ENUM(skip_flag) post_skip - , BOOST_PP_ENUM_BINARY_PARAMS(N, A, & attr)) - { - // Make sure the iterator is at least a forward_iterator. If you got an - // compilation error here, then you are using an input_iterator while - // calling this function, you need to supply at least a - // forward_iterator instead. - BOOST_CONCEPT_ASSERT((ForwardIterator)); - - // Report invalid expression error as early as possible. - // If you got an error_invalid_expression error message here, - // then either the expression (expr) or skipper is not a valid - // spirit qi expression. - BOOST_SPIRIT_ASSERT_MATCH(qi::domain, Expr); - BOOST_SPIRIT_ASSERT_MATCH(qi::domain, Skipper); - - typedef - typename result_of::compile::type - skipper_type; - skipper_type const skipper_ = compile(skipper); - - typedef fusion::vector< - BOOST_PP_ENUM(N, BOOST_SPIRIT_QI_ATTRIBUTE_REFERENCE, A) - > vector_type; - - vector_type lattr (BOOST_PP_ENUM_PARAMS(N, attr)); - if (!compile(expr).parse( - first, last, unused, skipper_, lattr)) - return false; - - if (post_skip == skip_flag::postskip) - qi::skip_over(first, last, skipper_); - return true; - } - - template - inline bool - phrase_parse( - Iterator const& first_ - , Iterator last - , Expr const& expr - , Skipper const& skipper - , BOOST_SCOPED_ENUM(skip_flag) post_skip - , BOOST_PP_ENUM_BINARY_PARAMS(N, A, & attr)) - { - Iterator first = first_; - return qi::phrase_parse(first, last, expr, skipper, post_skip - , BOOST_PP_ENUM_PARAMS(N, attr)); - } - - /////////////////////////////////////////////////////////////////////////// - template - inline bool - phrase_parse( - Iterator& first - , Iterator last - , Expr const& expr - , Skipper const& skipper - , BOOST_PP_ENUM_BINARY_PARAMS(N, A, & attr)) - { - return qi::phrase_parse(first, last, expr, skipper, skip_flag::postskip - , BOOST_PP_ENUM_PARAMS(N, attr)); - } - - template - inline bool - phrase_parse( - Iterator const& first_ - , Iterator last - , Expr const& expr - , Skipper const& skipper - , BOOST_PP_ENUM_BINARY_PARAMS(N, A, & attr)) - { - Iterator first = first_; - return qi::phrase_parse(first, last, expr, skipper, skip_flag::postskip - , BOOST_PP_ENUM_PARAMS(N, attr)); - } -}}} - -#undef BOOST_SPIRIT_QI_ATTRIBUTE_REFERENCE -#undef N - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/parser.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/parser.hpp deleted file mode 100644 index ffd8bc913f0f..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/parser.hpp +++ /dev/null @@ -1,140 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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_PARSER_OCTOBER_16_2008_0254PM) -#define BOOST_SPIRIT_PARSER_OCTOBER_16_2008_0254PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include - -namespace boost { namespace spirit { namespace qi -{ - - //[parser_base_parser - template - struct parser - { - struct parser_id; - typedef Derived derived_type; - typedef qi::domain domain; - - // Requirement: p.parse(f, l, context, skip, attr) -> bool - // - // p: a parser - // f, l: first/last iterator pair - // context: enclosing rule context (can be unused_type) - // skip: skipper (can be unused_type) - // attr: attribute (can be unused_type) - - // Requirement: p.what(context) -> info - // - // p: a parser - // context: enclosing rule context (can be unused_type) - - // Requirement: P::template attribute::type - // - // P: a parser type - // Ctx: A context type (can be unused_type) - // Iter: An iterator type (can be unused_type) - - Derived const& derived() const - { - return *static_cast(this); - } - }; - //] - - template - struct primitive_parser : parser - { - struct primitive_parser_id; - }; - - template - struct nary_parser : parser - { - struct nary_parser_id; - - // Requirement: p.elements -> fusion sequence - // - // p: a composite parser - - // Requirement: P::elements_type -> fusion sequence - // - // P: a composite parser type - }; - - template - struct unary_parser : parser - { - struct unary_parser_id; - - // Requirement: p.subject -> subject parser - // - // p: a unary parser - - // Requirement: P::subject_type -> subject parser type - // - // P: a unary parser type - }; - - template - struct binary_parser : parser - { - struct binary_parser_id; - - // Requirement: p.left -> left parser - // - // p: a binary parser - - // Requirement: P::left_type -> left parser type - // - // P: a binary parser type - - // Requirement: p.right -> right parser - // - // p: a binary parser - - // Requirement: P::right_type -> right parser type - // - // P: a binary parser type - }; -}}} - -namespace boost { namespace spirit { namespace traits // classification -{ - namespace detail - { - BOOST_MPL_HAS_XXX_TRAIT_DEF(parser_id) - BOOST_MPL_HAS_XXX_TRAIT_DEF(primitive_parser_id) - BOOST_MPL_HAS_XXX_TRAIT_DEF(nary_parser_id) - BOOST_MPL_HAS_XXX_TRAIT_DEF(unary_parser_id) - BOOST_MPL_HAS_XXX_TRAIT_DEF(binary_parser_id) - } - - // parser type identification - template - struct is_parser : detail::has_parser_id {}; - - template - struct is_primitive_parser : detail::has_primitive_parser_id {}; - - template - struct is_nary_parser : detail::has_nary_parser_id {}; - - template - struct is_unary_parser : detail::has_unary_parser_id {}; - - template - struct is_binary_parser : detail::has_binary_parser_id {}; - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/reference.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/reference.hpp deleted file mode 100644 index f1f5c675706b..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/reference.hpp +++ /dev/null @@ -1,69 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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_REFERENCE_OCTOBER_31_2008_1218AM) -#define BOOST_SPIRIT_REFERENCE_OCTOBER_31_2008_1218AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace qi -{ - /////////////////////////////////////////////////////////////////////////// - // reference is a parser that references another parser (its Subject) - /////////////////////////////////////////////////////////////////////////// - template - struct reference : parser > - { - typedef Subject subject_type; - - reference(Subject& subject) - : ref(subject) {} - - template - struct attribute : Subject::template attribute {}; - - template - bool parse(Iterator& first, Iterator const& last - , Context& context, Skipper const& skipper - , Attribute& attr_) const - { - return ref.get().parse(first, last, context, skipper, attr_); - } - - template - info what(Context& context) const - { - // the reference is transparent (does not add any info) - return ref.get().what(context); - } - - boost::reference_wrapper ref; - }; -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container, Attribute, Context - , Iterator> - : handles_container::type - , Attribute, Context, Iterator> - {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/skip_flag.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/skip_flag.hpp deleted file mode 100644 index 28fd856e051b..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/skip_flag.hpp +++ /dev/null @@ -1,29 +0,0 @@ -/*============================================================================= - 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_SKIP_FLAG_DEC_02_2009_0412PM) -#define BOOST_SPIRIT_SKIP_FLAG_DEC_02_2009_0412PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include - -namespace boost { namespace spirit { namespace qi -{ - /////////////////////////////////////////////////////////////////////////// - BOOST_SCOPED_ENUM_START(skip_flag) - { - postskip, // force post-skipping in phrase_parse() - dont_postskip // inhibit post-skipping in phrase_parse() - }; - BOOST_SCOPED_ENUM_END - -}}} - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/skip_over.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/skip_over.hpp deleted file mode 100644 index f66a361112b7..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/skip_over.hpp +++ /dev/null @@ -1,44 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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_SKIP_APRIL_16_2006_0625PM) -#define BOOST_SPIRIT_SKIP_APRIL_16_2006_0625PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include - -namespace boost { namespace spirit { namespace qi -{ - /////////////////////////////////////////////////////////////////////////// - // Move the /first/ iterator to the first non-matching position - // given a skip-parser. The function is a no-op if unused_type is - // passed as the skip-parser. - /////////////////////////////////////////////////////////////////////////// - template - inline void skip_over(Iterator& first, Iterator const& last, T const& skipper) - { - while (skipper.parse(first, last, unused, unused, unused)) - /***/; - } - - template - inline void skip_over(Iterator&, Iterator const&, unused_type) - { - } - - template - inline void skip_over(Iterator&, Iterator const& - , detail::unused_skipper const&) - { - } - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/stream.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/stream.hpp deleted file mode 100644 index 59bc7d4ed42c..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/stream.hpp +++ /dev/null @@ -1,17 +0,0 @@ -/*============================================================================= - 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_STREAM_MAY_05_2007_1227PM) -#define BOOST_SPIRIT_STREAM_MAY_05_2007_1227PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/stream/detail/match_manip.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/stream/detail/match_manip.hpp deleted file mode 100644 index ce7d61b3da45..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/stream/detail/match_manip.hpp +++ /dev/null @@ -1,227 +0,0 @@ -/*============================================================================= - 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_MATCH_MANIP_MAY_05_2007_1203PM) -#define BOOST_SPIRIT_MATCH_MANIP_MAY_05_2007_1203PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include - -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace qi { namespace detail -{ - /////////////////////////////////////////////////////////////////////////// -#ifdef _MSC_VER -# pragma warning(push) -# pragma warning(disable: 4512) // assignment operator could not be generated. -#endif - template - struct match_manip - { - // This assertion makes sure we don't hit the only code path which is - // not implemented (because it isn't needed), where both, the - // expression and the attribute need to be held as a copy. - BOOST_SPIRIT_ASSERT_MSG(!CopyExpr::value || !CopyAttr::value - , error_invalid_should_not_happen, ()); - - match_manip(Expr const& xpr, Skipper const& s, Attribute& a) - : expr(xpr), skipper(s), attr(a), post_skip(skip_flag::postskip) {} - - match_manip(Expr const& xpr, Skipper const& s - , BOOST_SCOPED_ENUM(skip_flag) ps, Attribute& a) - : expr(xpr), skipper(s), attr(a), post_skip(ps) {} - - Expr const& expr; - Skipper const& skipper; - Attribute& attr; - BOOST_SCOPED_ENUM(skip_flag) const post_skip; - }; - - template - struct match_manip - { - match_manip(Expr const& xpr, Skipper const& s, Attribute& a) - : expr(xpr), skipper(s), attr(a), post_skip(skip_flag::postskip) {} - - match_manip(Expr const& xpr, Skipper const& s - , BOOST_SCOPED_ENUM(skip_flag) ps, Attribute& a) - : expr(xpr), skipper(s), attr(a), post_skip(ps) {} - - Expr const& expr; - Skipper const& skipper; - Attribute attr; - BOOST_SCOPED_ENUM(skip_flag) const post_skip; - }; - - template - struct match_manip - { - match_manip(Expr const& xpr, Skipper const& s, Attribute& a) - : expr(xpr), skipper(s), attr(a), post_skip(skip_flag::postskip) {} - - match_manip(Expr const& xpr, Skipper const& s - , BOOST_SCOPED_ENUM(skip_flag) ps, Attribute& a) - : expr(xpr), skipper(s), attr(a), post_skip(ps) {} - - Expr expr; - Skipper const& skipper; - Attribute& attr; - BOOST_SCOPED_ENUM(skip_flag) const post_skip; - }; -#ifdef _MSC_VER -# pragma warning(pop) -#endif - - /////////////////////////////////////////////////////////////////////////// - template - struct match - { - // Report invalid expression error as early as possible. - // If you got an error_invalid_expression error message here, - // then the expression (expr) is not a valid spirit qi expression. - // Did you intend to use the auto_ facilities while forgetting to - // #include ? - BOOST_SPIRIT_ASSERT_MATCH(qi::domain, Expr); - }; - - template - struct match >::type> - { - typedef match_manip type; - - static type call(Expr const& expr) - { - return type(expr, unused, unused); - } - }; - - /////////////////////////////////////////////////////////////////////////// - template - struct phrase_match - { - // Report invalid expression error as early as possible. - // If you got an error_invalid_expression error message here, - // then the expression (expr) is not a valid spirit qi expression. - // Did you intend to use the auto_ facilities while forgetting to - // #include ? - BOOST_SPIRIT_ASSERT_MATCH(qi::domain, Expr); - }; - - template - struct phrase_match >::type> - { - typedef match_manip type; - - static type call( - Expr const& expr - , Skipper const& skipper - , BOOST_SCOPED_ENUM(skip_flag) post_skip) - { - // Report invalid expression error as early as possible. - // If you got an error_invalid_expression error message here, - // then the delimiter is not a valid spirit karma expression. - BOOST_SPIRIT_ASSERT_MATCH(qi::domain, Skipper); - return type(expr, skipper, post_skip, unused); - } - }; - - /////////////////////////////////////////////////////////////////////////// - template - inline std::basic_istream & - operator>>(std::basic_istream &is, - match_manip const& fm) - { - typedef spirit::basic_istream_iterator input_iterator; - - input_iterator f(is); - input_iterator l; - if (!qi::parse(f, l, fm.expr)) - { - is.setstate(std::basic_istream::failbit); - } - return is; - } - - /////////////////////////////////////////////////////////////////////////// - template - inline std::basic_istream & - operator>>(std::basic_istream &is, - match_manip const& fm) - { - typedef spirit::basic_istream_iterator input_iterator; - - input_iterator f(is); - input_iterator l; - if (!qi::parse(f, l, fm.expr, fm.attr)) - { - is.setstate(std::basic_istream::failbit); - } - return is; - } - - /////////////////////////////////////////////////////////////////////////// - template - inline std::basic_istream & - operator>>(std::basic_istream &is, - match_manip const& fm) - { - typedef spirit::basic_istream_iterator input_iterator; - - input_iterator f(is); - input_iterator l; - if (!qi::phrase_parse( - f, l, fm.expr, fm.skipper, fm.post_skip)) - { - is.setstate(std::basic_istream::failbit); - } - return is; - } - - /////////////////////////////////////////////////////////////////////////// - template - inline std::basic_istream & - operator>>( - std::basic_istream &is, - match_manip const& fm) - { - typedef spirit::basic_istream_iterator input_iterator; - - input_iterator f(is); - input_iterator l; - if (!qi::phrase_parse( - f, l, fm.expr, fm.skipper, fm.post_skip, fm.attr)) - { - is.setstate(std::basic_istream::failbit); - } - return is; - } - -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/stream/detail/match_manip_auto.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/stream/detail/match_manip_auto.hpp deleted file mode 100644 index e66f85fa0724..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/stream/detail/match_manip_auto.hpp +++ /dev/null @@ -1,63 +0,0 @@ -/*============================================================================= - 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_MATCH_MANIP_AUTO_DEC_02_2009_0813PM) -#define BOOST_SPIRIT_MATCH_MANIP_AUTO_DEC_02_2009_0813PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace qi { namespace detail -{ - /////////////////////////////////////////////////////////////////////////// - template - struct match >::type> - { - typedef typename result_of::create_parser::type expr_type; - typedef match_manip< - expr_type, mpl::true_, mpl::false_, unused_type, Expr - > type; - - static type call(Expr const& expr) - { - return type(create_parser(), unused, const_cast(expr)); - } - }; - - /////////////////////////////////////////////////////////////////////////// - template - struct phrase_match >::type> - { - typedef typename result_of::create_parser::type expr_type; - typedef match_manip< - expr_type, mpl::true_, mpl::false_, Skipper, Expr - > type; - - static type call( - Expr const& expr - , Skipper const& skipper - , BOOST_SCOPED_ENUM(skip_flag) post_skip) - { - // Report invalid expression error as early as possible. - // If you got an error_invalid_expression error message here, - // then the delimiter is not a valid spirit karma expression. - BOOST_SPIRIT_ASSERT_MATCH(qi::domain, Skipper); - return type(create_parser(), skipper, post_skip - , const_cast(expr)); - } - }; - -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/stream/match_manip.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/stream/match_manip.hpp deleted file mode 100644 index 3f8e0ed9bca0..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/stream/match_manip.hpp +++ /dev/null @@ -1,125 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Hartmut Kaiser - Copyright (c) 2001-2011 Joel de Guzman - - 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_MATCH_MANIP_MAY_05_2007_1202PM) -#define BOOST_SPIRIT_MATCH_MANIP_MAY_05_2007_1202PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace qi -{ - /////////////////////////////////////////////////////////////////////////// - template - inline typename detail::match::type - match( - Expr const& expr) - { - return detail::match::call(expr); - } - - template - inline detail::match_manip< - Expr, mpl::false_, mpl::false_, unused_type, Attribute - > - match( - Expr const& xpr - , Attribute& p) - { - using qi::detail::match_manip; - - // Report invalid expression error as early as possible. - // If you got an error_invalid_expression error message here, - // then the expression (expr) is not a valid spirit qi expression. - BOOST_SPIRIT_ASSERT_MATCH(qi::domain, Expr); - return match_manip( - xpr, unused, p); - } - - /////////////////////////////////////////////////////////////////////////// - template - inline typename detail::phrase_match::type - phrase_match( - Expr const& expr - , Skipper const& s - , BOOST_SCOPED_ENUM(skip_flag) post_skip = skip_flag::postskip) - { - return detail::phrase_match::call(expr, s, post_skip); - } - - template - inline detail::match_manip< - Expr, mpl::false_, mpl::false_, Skipper, Attribute - > - phrase_match( - Expr const& xpr - , Skipper const& s - , BOOST_SCOPED_ENUM(skip_flag) post_skip - , Attribute& p) - { - using qi::detail::match_manip; - - // Report invalid expression error as early as possible. - // If you got an error_invalid_expression error message here, - // then either the expression (expr) or skipper is not a valid - // spirit qi expression. - BOOST_SPIRIT_ASSERT_MATCH(qi::domain, Expr); - BOOST_SPIRIT_ASSERT_MATCH(qi::domain, Skipper); - return match_manip( - xpr, s, post_skip, p); - } - - template - inline detail::match_manip< - Expr, mpl::false_, mpl::false_, Skipper, Attribute - > - phrase_match( - Expr const& xpr - , Skipper const& s - , Attribute& p) - { - using qi::detail::match_manip; - - // Report invalid expression error as early as possible. - // If you got an error_invalid_expression error message here, - // then either the expression (expr) or skipper is not a valid - // spirit qi expression. - BOOST_SPIRIT_ASSERT_MATCH(qi::domain, Expr); - BOOST_SPIRIT_ASSERT_MATCH(qi::domain, Skipper); - return match_manip( - xpr, s, p); - } - - /////////////////////////////////////////////////////////////////////////// - template - inline std::basic_istream& - operator>>(std::basic_istream& is, parser const& p) - { - typedef spirit::basic_istream_iterator input_iterator; - - input_iterator f(is); - input_iterator l; - if (!p.derived().parse(f, l, unused, unused, unused)) - { - is.setstate(std::basic_istream::failbit); - } - return is; - } - -}}} - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/stream/match_manip_attr.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/stream/match_manip_attr.hpp deleted file mode 100644 index 4f5cd0f3739a..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/stream/match_manip_attr.hpp +++ /dev/null @@ -1,133 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Hartmut Kaiser - Copyright (c) 2001-2011 Joel de Guzman - - 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_PP_IS_ITERATING) - -#if !defined(BOOST_SPIRIT_MATCH_MANIP_ATTR_MAY_05_2007_1202PM) -#define BOOST_SPIRIT_MATCH_MANIP_ATTR_MAY_05_2007_1202PM - -#include - -#include -#include -#include -#include -#include - -#define BOOST_PP_FILENAME_1 \ - -#define BOOST_PP_ITERATION_LIMITS (2, SPIRIT_ARGUMENTS_LIMIT) -#include BOOST_PP_ITERATE() - -#endif - -/////////////////////////////////////////////////////////////////////////////// -// -// Preprocessor vertical repetition code -// -/////////////////////////////////////////////////////////////////////////////// -#else // defined(BOOST_PP_IS_ITERATING) - -#define N BOOST_PP_ITERATION() -#define BOOST_SPIRIT_QI_ATTRIBUTE_REFERENCE(z, n, A) BOOST_PP_CAT(A, n) & - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace qi -{ - /////////////////////////////////////////////////////////////////////////// - template - inline detail::match_manip > - match( - Expr const& xpr - , BOOST_PP_ENUM_BINARY_PARAMS(N, A, & attr)) - { - using qi::detail::match_manip; - - // Report invalid expression error as early as possible. - // If you got an error_invalid_expression error message here, - // then the expression (expr) is not a valid spirit qi expression. - BOOST_SPIRIT_ASSERT_MATCH(qi::domain, Expr); - - typedef fusion::vector< - BOOST_PP_ENUM(N, BOOST_SPIRIT_QI_ATTRIBUTE_REFERENCE, A) - > vector_type; - - vector_type attr (BOOST_PP_ENUM_PARAMS(N, attr)); - return match_manip( - xpr, unused, attr); - } - - /////////////////////////////////////////////////////////////////////////// - template - inline detail::match_manip > - phrase_match( - Expr const& xpr - , Skipper const& s - , BOOST_SCOPED_ENUM(skip_flag) post_skip - , BOOST_PP_ENUM_BINARY_PARAMS(N, A, & attr)) - { - using qi::detail::match_manip; - - // Report invalid expression error as early as possible. - // If you got an error_invalid_expression error message here, - // then either the expression (expr) or skipper is not a valid - // spirit qi expression. - BOOST_SPIRIT_ASSERT_MATCH(qi::domain, Expr); - BOOST_SPIRIT_ASSERT_MATCH(qi::domain, Skipper); - - typedef fusion::vector< - BOOST_PP_ENUM(N, BOOST_SPIRIT_QI_ATTRIBUTE_REFERENCE, A) - > vector_type; - - vector_type attr (BOOST_PP_ENUM_PARAMS(N, attr)); - return match_manip( - xpr, s, post_skip, attr); - } - - template - inline detail::match_manip > - phrase_match( - Expr const& xpr - , Skipper const& s - , BOOST_PP_ENUM_BINARY_PARAMS(N, A, & attr)) - { - using qi::detail::match_manip; - - // Report invalid expression error as early as possible. - // If you got an error_invalid_expression error message here, - // then either the expression (expr) or skipper is not a valid - // spirit qi expression. - BOOST_SPIRIT_ASSERT_MATCH(qi::domain, Expr); - BOOST_SPIRIT_ASSERT_MATCH(qi::domain, Skipper); - - typedef fusion::vector< - BOOST_PP_ENUM(N, BOOST_SPIRIT_QI_ATTRIBUTE_REFERENCE, A) - > vector_type; - - vector_type attr (BOOST_PP_ENUM_PARAMS(N, attr)); - return match_manip( - xpr, s, attr); - } - -}}} - -#undef BOOST_SPIRIT_QI_ATTRIBUTE_REFERENCE -#undef N - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/stream/stream.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/stream/stream.hpp deleted file mode 100644 index 796f0248305f..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/stream/stream.hpp +++ /dev/null @@ -1,144 +0,0 @@ -/*============================================================================= - 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_STREAM_MAY_05_2007_1228PM) -#define BOOST_SPIRIT_STREAM_MAY_05_2007_1228PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template <> - struct use_terminal // enables stream - : mpl::true_ {}; - - template <> - struct use_terminal // enables wstream - : mpl::true_ {}; -}} - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace qi -{ -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using spirit::stream; - using spirit::wstream; -#endif - using spirit::stream_type; - using spirit::wstream_type; - -namespace detail -{ -#ifdef _MSC_VER -# pragma warning(push) -# pragma warning(disable: 4512) // assignment operator could not be generated. -#endif - template - struct psbuf - : std::basic_streambuf::value_type> - { - psbuf(Iterator first_, Iterator const& last_) - : first(first_), last(last_) {} - - protected: - typename psbuf::int_type underflow() BOOST_OVERRIDE - { - return first == last ? psbuf::traits_type::eof() - : psbuf::traits_type::to_int_type(*first); - } - - typename psbuf::int_type uflow() BOOST_OVERRIDE - { - return first == last ? psbuf::traits_type::eof() - : psbuf::traits_type::to_int_type(*first++); - } - - public: - Iterator first; - Iterator const& last; - }; -#ifdef _MSC_VER -# pragma warning(pop) -#endif -} - - template > - struct stream_parser - : primitive_parser > - { - template - struct attribute - { - typedef T type; - }; - - template - bool parse(Iterator& first, Iterator const& last - , Context& /*context*/, Skipper const& skipper - , Attribute& attr_) const - { - qi::skip_over(first, last, skipper); - - detail::psbuf pseudobuf(first, last); - std::basic_istream in(&pseudobuf); - in >> attr_; // use existing operator>>() - - // advance the iterator if everything is ok - if (in) { - first = pseudobuf.first; - return true; - } - - return false; - } - - template - info what(Context& /*context*/) const - { - return info("stream"); - } - }; - - template - struct typed_stream - : proto::terminal >::type - { - }; - - /////////////////////////////////////////////////////////////////////////// - // Parser generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_stream - { - typedef stream_parser result_type; - result_type operator()(unused_type, unused_type) const - { - return result_type(); - } - }; - - template - struct make_primitive : make_stream {}; - - template - struct make_primitive : make_stream {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/string.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/string.hpp deleted file mode 100644 index 70de51bdc5e5..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/string.hpp +++ /dev/null @@ -1,17 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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_STRING_FEBRUARY_03_2007_0355PM) -#define BOOST_SPIRIT_STRING_FEBRUARY_03_2007_0355PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/string/detail/tst.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/string/detail/tst.hpp deleted file mode 100644 index 73f2528c807f..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/string/detail/tst.hpp +++ /dev/null @@ -1,212 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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_TST_MARCH_09_2007_0905AM) -#define BOOST_SPIRIT_TST_MARCH_09_2007_0905AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include // for std::iterator_traits -#include - -namespace boost { namespace spirit { namespace qi { namespace detail -{ - // This file contains low level TST routines, not for - // public consumption. - - template - struct tst_node - { - tst_node(Char id_) - : id(id_), data(0), lt(0), eq(0), gt(0) - { - } - - template - static void - destruct_node(tst_node* p, Alloc* alloc) - { - if (p) - { - if (p->data) - alloc->delete_data(p->data); - destruct_node(p->lt, alloc); - destruct_node(p->eq, alloc); - destruct_node(p->gt, alloc); - alloc->delete_node(p); - } - } - - template - static tst_node* - clone_node(tst_node* p, Alloc* alloc) - { - if (p) - { - tst_node* clone = alloc->new_node(p->id); - if (p->data) - clone->data = alloc->new_data(*p->data); - clone->lt = clone_node(p->lt, alloc); - clone->eq = clone_node(p->eq, alloc); - clone->gt = clone_node(p->gt, alloc); - return clone; - } - return 0; - } - - template - static T* - find(tst_node* start, Iterator& first, Iterator last, Filter filter) - { - if (first == last) - return 0; - - Iterator i = first; - Iterator latest = first; - tst_node* p = start; - T* found = 0; - - while (p && i != last) - { - typename - std::iterator_traits::value_type - c = filter(*i); // filter only the input - - if (c == p->id) - { - if (p->data) - { - found = p->data; - latest = i; - } - p = p->eq; - i++; - } - else if (c < p->id) - { - p = p->lt; - } - else - { - p = p->gt; - } - } - - if (found) - first = ++latest; // one past the last matching char - return found; - } - - template - static T* - add( - tst_node*& start - , Iterator first - , Iterator last - , typename boost::call_traits::param_type val - , Alloc* alloc) - { - if (first == last) - return 0; - - tst_node** pp = &start; - for(;;) - { - typename - std::iterator_traits::value_type - c = *first; - - if (*pp == 0) - *pp = alloc->new_node(c); - tst_node* p = *pp; - - if (c == p->id) - { - if (++first == last) - { - if (p->data == 0) - p->data = alloc->new_data(val); - return p->data; - } - pp = &p->eq; - } - else if (c < p->id) - { - pp = &p->lt; - } - else - { - pp = &p->gt; - } - } - } - - template - static void - remove(tst_node*& p, Iterator first, Iterator last, Alloc* alloc) - { - if (p == 0 || first == last) - return; - - typename - std::iterator_traits::value_type - c = *first; - - if (c == p->id) - { - if (++first == last) - { - if (p->data) - { - alloc->delete_data(p->data); - p->data = 0; - } - } - remove(p->eq, first, last, alloc); - } - else if (c < p->id) - { - remove(p->lt, first, last, alloc); - } - else - { - remove(p->gt, first, last, alloc); - } - - if (p->data == 0 && p->lt == 0 && p->eq == 0 && p->gt == 0) - { - alloc->delete_node(p); - p = 0; - } - } - - template - static void - for_each(tst_node* p, std::basic_string prefix, F f) - { - if (p) - { - for_each(p->lt, prefix, f); - std::basic_string s = prefix + p->id; - for_each(p->eq, s, f); - if (p->data) - f(s, *p->data); - for_each(p->gt, prefix, f); - } - } - - Char id; // the node's identity character - T* data; // optional data - tst_node* lt; // left pointer - tst_node* eq; // middle pointer - tst_node* gt; // right pointer - }; -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/string/lit.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/string/lit.hpp deleted file mode 100644 index 9ee9231229cb..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/string/lit.hpp +++ /dev/null @@ -1,308 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - Copyright (c) 2001-2011 Hartmut Kaiser - Copyright (c) 2010 Bryce Lelbach - - 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_LIT_APR_18_2006_1125PM) -#define BOOST_SPIRIT_LIT_APR_18_2006_1125PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // Enablers - /////////////////////////////////////////////////////////////////////////// - template - struct use_terminal >::type> // enables strings - : mpl::true_ {}; - - template - struct use_terminal // enables string(str) - , fusion::vector1 > - > : traits::is_string {}; - - template // enables string(f) - struct use_lazy_terminal< - qi::domain - , tag::char_code - , 1 /*arity*/ - > : mpl::true_ {}; - - // enables lit(...) - template - struct use_terminal > - , typename enable_if >::type> - : mpl::true_ {}; -}} - -namespace boost { namespace spirit { namespace qi -{ -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using spirit::lit; -#endif - using spirit::lit_type; - - /////////////////////////////////////////////////////////////////////////// - // Parse for literal strings - /////////////////////////////////////////////////////////////////////////// - template - struct literal_string - : primitive_parser > - { - typedef typename - remove_const::type>::type - char_type; - typedef std::basic_string string_type; - - literal_string(typename add_reference::type str_) - : str(str_) - {} - - template - struct attribute - { - typedef typename mpl::if_c< - no_attribute, unused_type, string_type>::type - type; - }; - - template - bool parse(Iterator& first, Iterator const& last - , Context& /*context*/, Skipper const& skipper, Attribute& attr_) const - { - qi::skip_over(first, last, skipper); - return detail::string_parse(str, first, last, attr_); - } - - template - info what(Context& /*context*/) const - { - return info("literal-string", str); - } - - String str; - }; - - template - struct no_case_literal_string - : primitive_parser > - { - typedef typename - remove_const::type>::type - char_type; - typedef std::basic_string string_type; - - template - no_case_literal_string(char_type const* in, CharEncoding encoding) - : str_lo(in) - , str_hi(in) - { -#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1600)) - (void)encoding; // suppresses warning: C4100: 'encoding' : unreferenced formal parameter -#endif - typename string_type::iterator loi = str_lo.begin(); - typename string_type::iterator hii = str_hi.begin(); - - for (; loi != str_lo.end(); ++loi, ++hii, ++in) - { - typedef typename CharEncoding::char_type encoded_char_type; - - *loi = static_cast(encoding.tolower(encoded_char_type(*loi))); - *hii = static_cast(encoding.toupper(encoded_char_type(*hii))); - } - } - - template - struct attribute - { - typedef typename mpl::if_c< - no_attribute, unused_type, string_type>::type - type; - }; - - template - bool parse(Iterator& first, Iterator const& last - , Context& /*context*/, Skipper const& skipper, Attribute& attr_) const - { - qi::skip_over(first, last, skipper); - return detail::string_parse(str_lo, str_hi, first, last, attr_); - } - - template - info what(Context& /*context*/) const - { - return info("no-case-literal-string", str_lo); - } - - string_type str_lo, str_hi; - }; - - /////////////////////////////////////////////////////////////////////////// - // Parser generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_primitive >::type> - { - typedef has_modifier > no_case; - - typedef typename add_const::type const_string; - typedef typename mpl::if_< - no_case - , no_case_literal_string - , literal_string >::type - result_type; - - result_type operator()( - typename add_reference::type str, unused_type) const - { - return op(str, no_case()); - } - - template - result_type op(String const& str, mpl::false_) const - { - return result_type(str); - } - - template - result_type op(String const& str, mpl::true_) const - { - typename spirit::detail::get_encoding::type encoding; - return result_type(traits::get_c_string(str), encoding); - } - }; - - // lit("...") - template - struct make_primitive< - terminal_ex > - , Modifiers - , typename enable_if >::type> - { - typedef has_modifier > no_case; - - typedef typename add_const::type const_string; - typedef typename mpl::if_< - no_case - , no_case_literal_string - , literal_string >::type - result_type; - - template - result_type operator()(Terminal const& term, unused_type) const - { - return op(fusion::at_c<0>(term.args), no_case()); - } - - template - result_type op(String const& str, mpl::false_) const - { - return result_type(str); - } - - template - result_type op(String const& str, mpl::true_) const - { - typedef typename traits::char_encoding_from_char< - typename traits::char_type_of::type>::type encoding_type; - typename spirit::detail::get_encoding::type encoding; - return result_type(traits::get_c_string(str), encoding); - } - }; - - /////////////////////////////////////////////////////////////////////////// - // string("...") - template - struct make_primitive< - terminal_ex< - tag::char_code - , fusion::vector1 > - , Modifiers> - { - typedef CharEncoding encoding; - typedef has_modifier > no_case; - - typedef typename add_const::type const_string; - typedef typename mpl::if_< - no_case - , no_case_literal_string - , literal_string >::type - result_type; - - template - result_type operator()(Terminal const& term, unused_type) const - { - return op(fusion::at_c<0>(term.args), no_case()); - } - - template - result_type op(String const& str, mpl::false_) const - { - return result_type(str); - } - - template - result_type op(String const& str, mpl::true_) const - { - return result_type(traits::get_c_string(str), encoding()); - } - }; -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container - , Attribute, Context, Iterator> - : mpl::true_ {}; - - template - struct handles_container - , Attribute, Context, Iterator> - : mpl::true_ {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/string/symbols.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/string/symbols.hpp deleted file mode 100644 index 4647349c73e6..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/string/symbols.hpp +++ /dev/null @@ -1,430 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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_SYMBOLS_MARCH_11_2007_1055AM) -#define BOOST_SPIRIT_SYMBOLS_MARCH_11_2007_1055AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if defined(BOOST_MSVC) -# pragma warning(push) -# pragma warning(disable: 4355) // 'this' : used in base member initializer list warning -#endif - -namespace boost { namespace spirit { namespace qi -{ - template < - typename Char = char - , typename T = unused_type - , typename Lookup = tst - , typename Filter = tst_pass_through> - struct symbols - : proto::extends< - typename proto::terminal< - reference > - >::type - , symbols - > - , primitive_parser > - { - typedef Char char_type; // the character type - typedef T value_type; // the value associated with each entry - typedef symbols this_type; - typedef reference reference_; - typedef typename proto::terminal::type terminal; - typedef proto::extends base_type; - - template - struct attribute - { - typedef value_type type; - }; - - symbols(std::string const& name = "symbols") - : base_type(terminal::make(reference_(*this))) - , add(*this) - , remove(*this) - , lookup(new Lookup()) - , name_(name) - { - } - - symbols(symbols const& syms) - : base_type(terminal::make(reference_(*this))) - , add(*this) - , remove(*this) - , lookup(syms.lookup) - , name_(syms.name_) - { - } - - template - symbols(symbols const& syms) - : base_type(terminal::make(reference_(*this))) - , add(*this) - , remove(*this) - , lookup(syms.lookup) - , name_(syms.name_) - { - } - - template - symbols(Symbols const& syms, std::string const& name = "symbols") - : base_type(terminal::make(reference_(*this))) - , add(*this) - , remove(*this) - , lookup(new Lookup()) - , name_(name) - { - typename range_const_iterator::type si = boost::begin(syms); - while (si != boost::end(syms)) - add(*si++); - } - - template - symbols(Symbols const& syms, Data const& data - , std::string const& name = "symbols") - : base_type(terminal::make(reference_(*this))) - , add(*this) - , remove(*this) - , lookup(new Lookup()) - , name_(name) - { - typename range_const_iterator::type si = boost::begin(syms); - typename range_const_iterator::type di = boost::begin(data); - while (si != boost::end(syms)) - add(*si++, *di++); - } - - symbols& - operator=(symbols const& rhs) - { - name_ = rhs.name_; - *lookup = *rhs.lookup; - return *this; - } - - template - symbols& - operator=(symbols const& rhs) - { - name_ = rhs.name_; - *lookup = *rhs.lookup; - return *this; - } - - void clear() - { - lookup->clear(); - } - - struct adder; - struct remover; - - template - adder const& - operator=(Str const& str) - { - lookup->clear(); - return add(str); - } - - template - friend adder const& - operator+=(symbols& sym, Str const& str) - { - return sym.add(str); - } - - template - friend remover const& - operator-=(symbols& sym, Str const& str) - { - return sym.remove(str); - } - -#if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) - // non-const version needed to suppress proto's += kicking in - template - friend adder const& - operator+=(symbols& sym, Str& str) - { - return sym.add(str); - } - - // non-const version needed to suppress proto's -= kicking in - template - friend remover const& - operator-=(symbols& sym, Str& str) - { - return sym.remove(str); - } -#else - // for rvalue references - template - friend adder const& - operator+=(symbols& sym, Str&& str) - { - return sym.add(str); - } - - // for rvalue references - template - friend remover const& - operator-=(symbols& sym, Str&& str) - { - return sym.remove(str); - } -#endif - template - void for_each(F f) const - { - lookup->for_each(f); - } - - template - value_type& at(Str const& str) - { - return *lookup->add(traits::get_begin(str) - , traits::get_end(str), T()); - } - - template - value_type* prefix_find(Iterator& first, Iterator const& last) - { - return lookup->find(first, last, Filter()); - } - - template - value_type const* prefix_find(Iterator& first, Iterator const& last) const - { - return lookup->find(first, last, Filter()); - } - - template - value_type* find(Str const& str) - { - return find_impl(traits::get_begin(str) - , traits::get_end(str)); - } - - template - value_type const* find(Str const& str) const - { - return find_impl(traits::get_begin(str) - , traits::get_end(str)); - } - -private: - template - value_type* find_impl(Iterator begin, Iterator end) - { - value_type* r = lookup->find(begin, end, Filter()); - return begin == end ? r : 0; - } - - template - value_type const* find_impl(Iterator begin, Iterator end) const - { - value_type const* r = lookup->find(begin, end, Filter()); - return begin == end ? r : 0; - } - -public: - template - bool parse(Iterator& first, Iterator const& last - , Context& /*context*/, Skipper const& skipper, Attribute& attr_) const - { - qi::skip_over(first, last, skipper); - - if (value_type* val_ptr - = lookup->find(first, last, Filter())) - { - spirit::traits::assign_to(*val_ptr, attr_); - return true; - } - return false; - } - - template - info what(Context& /*context*/) const - { - return info(name_); - } - - void name(std::string const &str) - { - name_ = str; - } - std::string const &name() const - { - return name_; - } - -#ifdef _MSC_VER -# pragma warning(push) -# pragma warning(disable: 4512) // assignment operator could not be generated. -#endif - struct adder - { - template - struct result { typedef adder const& type; }; - - adder(symbols& sym_) - : sym(sym_) - { - } - - template - adder const& - operator()(Iterator const& first, Iterator const& last, T const& val) const - { - sym.lookup->add(first, last, val); - return *this; - } - - template - adder const& - operator()(Str const& s, T const& val = T()) const - { - sym.lookup->add(traits::get_begin(s) - , traits::get_end(s), val); - return *this; - } - - template - adder const& - operator,(Str const& s) const - { - sym.lookup->add(traits::get_begin(s) - , traits::get_end(s), T()); - return *this; - } - - symbols& sym; - }; - - struct remover - { - template - struct result { typedef remover const& type; }; - - remover(symbols& sym_) - : sym(sym_) - { - } - - template - remover const& - operator()(Iterator const& first, Iterator const& last) const - { - sym.lookup->remove(first, last); - return *this; - } - - template - remover const& - operator()(Str const& s) const - { - sym.lookup->remove(traits::get_begin(s) - , traits::get_end(s)); - return *this; - } - - template - remover const& - operator,(Str const& s) const - { - sym.lookup->remove(traits::get_begin(s) - , traits::get_end(s)); - return *this; - } - - symbols& sym; - }; -#ifdef _MSC_VER -# pragma warning(pop) -#endif - - adder add; - remover remove; - shared_ptr lookup; - std::string name_; - }; - - /////////////////////////////////////////////////////////////////////////// - // Parser generators: make_xxx function (objects) - /////////////////////////////////////////////////////////////////////////// - template - struct make_primitive >, Modifiers> - { - template - struct no_case_filter - { - Char operator()(Char ch) const - { - return static_cast(CharEncoding::tolower(ch)); - } - }; - - typedef has_modifier > no_case; - typedef reference > reference_; - typedef no_case_filter< - typename spirit::detail::get_encoding_with_case< - Modifiers - , char_encoding::standard - , no_case::value>::type> - nc_filter; - - typedef typename mpl::if_< - no_case - , symbols - , reference_>::type - result_type; - - result_type operator()(reference_ ref, unused_type) const - { - return result_type(ref.ref.get()); - } - }; -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container, Attr, Context, Iterator> - : traits::is_container {}; -}}} - -#if defined(BOOST_MSVC) -# pragma warning(pop) -#endif - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/string/tst.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/string/tst.hpp deleted file mode 100644 index 200894fdc1fd..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/string/tst.hpp +++ /dev/null @@ -1,137 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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_TST_JUNE_03_2007_1031AM) -#define BOOST_SPIRIT_TST_JUNE_03_2007_1031AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include - -namespace boost { namespace spirit { namespace qi -{ - struct tst_pass_through - { - template - Char operator()(Char ch) const - { - return ch; - } - }; - - template - struct tst - { - typedef Char char_type; // the character type - typedef T value_type; // the value associated with each entry - typedef detail::tst_node node; - - tst() - : root(0) - { - } - - ~tst() - { - clear(); - } - - tst(tst const& rhs) - : root(0) - { - copy(rhs); - } - - tst& operator=(tst const& rhs) - { - return assign(rhs); - } - - template - T* find(Iterator& first, Iterator last, Filter filter) const - { - return node::find(root, first, last, filter); - } - - template - T* find(Iterator& first, Iterator last) const - { - return find(first, last, tst_pass_through()); - } - - template - T* add( - Iterator first - , Iterator last - , typename boost::call_traits::param_type val) - { - return node::add(root, first, last, val, this); - } - - template - void remove(Iterator first, Iterator last) - { - node::remove(root, first, last, this); - } - - void clear() - { - node::destruct_node(root, this); - root = 0; - } - - template - void for_each(F f) const - { - node::for_each(root, std::basic_string(), f); - } - - private: - - friend struct detail::tst_node; - - void copy(tst const& rhs) - { - root = node::clone_node(rhs.root, this); - } - - tst& assign(tst const& rhs) - { - if (this != &rhs) - { - clear(); - copy(rhs); - } - return *this; - } - - node* root; - - node* new_node(Char id) - { - return new node(id); - } - - T* new_data(typename boost::call_traits::param_type val) - { - return new T(val); - } - - void delete_node(node* p) - { - delete p; - } - - void delete_data(T* p) - { - delete p; - } - }; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/string/tst_map.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/string/tst_map.hpp deleted file mode 100644 index 33e6c70f39f0..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/string/tst_map.hpp +++ /dev/null @@ -1,223 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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_TST_MAP_JUNE_03_2007_1143AM) -#define BOOST_SPIRIT_TST_MAP_JUNE_03_2007_1143AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace qi -{ - template - struct tst_map - { - typedef Char char_type; // the character type - typedef T value_type; // the value associated with each entry - typedef detail::tst_node node; - - tst_map() - { - } - - ~tst_map() - { - // Nothing to do here. - // The pools do the right thing for us - } - - tst_map(tst_map const& rhs) - { - copy(rhs); - } - - tst_map& operator=(tst_map const& rhs) - { - return assign(rhs); - } - - template - T* find(Iterator& first, Iterator last, Filter filter) const - { - if (first != last) - { - Iterator save = first; - typename map_type::const_iterator - i = map.find(filter(*first++)); - - if (i != map.end()) - { - if (T* p = node::find(i->second.root, first, last, filter)) - { - return p; - } - - if (i->second.data) - { - return i->second.data; - } - } - first = save; - } - return 0; - } - - template - T* find(Iterator& first, Iterator last) const - { - return find(first, last, tst_pass_through()); - } - - template - bool add( - Iterator first - , Iterator last - , typename boost::call_traits::param_type val) - { - if (first != last) - { - map_data x = {0, 0}; - std::pair - r = map.insert(std::pair(*first++, x)); - - if (first != last) - { - return node::add(r.first->second.root - , first, last, val, this) ? true : false; - } - else - { - if (r.first->second.data) - return false; - r.first->second.data = this->new_data(val); - } - return true; - } - return false; - } - - template - void remove(Iterator first, Iterator last) - { - if (first != last) - { - typename map_type::iterator i = map.find(*first++); - if (i != map.end()) - { - if (first != last) - { - node::remove(i->second.root, first, last, this); - } - else if (i->second.data) - { - this->delete_data(i->second.data); - i->second.data = 0; - } - if (i->second.data == 0 && i->second.root == 0) - { - map.erase(i); - } - } - } - } - - void clear() - { - typedef typename map_type::iterator iter_t; - for (iter_t it = map.begin(), end = map.end(); it != end; ++it) - { - node::destruct_node(it->second.root, this); - if (it->second.data) - this->delete_data(it->second.data); - } - map.clear(); - } - - template - void for_each(F f) const - { - typedef typename map_type::const_iterator iter_t; - for (iter_t it = map.begin(), end = map.end(); it != end; ++it) - { - std::basic_string s(1, it->first); - node::for_each(it->second.root, s, f); - if (it->second.data) - f(s, *it->second.data); - } - } - - private: - - friend struct detail::tst_node; - - struct map_data - { - node* root; - T* data; - }; - - typedef unordered_map map_type; - - void copy(tst_map const& rhs) - { - typedef typename map_type::const_iterator iter_t; - for (iter_t it = rhs.map.begin(), end = rhs.map.end(); it != end; ++it) - { - map_data xx = {node::clone_node(it->second.root, this), 0}; - if (it->second.data) - xx.data = data_pool.construct(*it->second.data); - map[it->first] = xx; - } - } - - tst_map& assign(tst_map const& rhs) - { - if (this != &rhs) - { - typedef typename map_type::const_iterator iter_t; - for (iter_t it = map.begin(), end = map.end(); it != end; ++it) - { - node::destruct_node(it->second.root, this); - } - map.clear(); - copy(rhs); - } - return *this; - } - - node* new_node(Char id) - { - return node_pool.construct(id); - } - - T* new_data(typename boost::call_traits::param_type val) - { - return data_pool.construct(val); - } - - void delete_node(node* p) - { - node_pool.destroy(p); - } - - void delete_data(T* p) - { - data_pool.destroy(p); - } - - map_type map; - object_pool node_pool; - object_pool data_pool; - }; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/qi/what.hpp b/framework/contrib/boost/include/boost/spirit/home/qi/what.hpp deleted file mode 100644 index ae26b7bed1b1..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/qi/what.hpp +++ /dev/null @@ -1,33 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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_WHAT_APRIL_21_2007_0732AM) -#define BOOST_SPIRIT_WHAT_APRIL_21_2007_0732AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include - -namespace boost { namespace spirit { namespace qi -{ - template - inline info what(Expr const& expr) - { - // Report invalid expression error as early as possible. - // If you got an error_expr_is_not_convertible_to_a_parser - // error message here, then the expression (expr) is not a - // valid spirit qi expression. - BOOST_SPIRIT_ASSERT_MATCH(qi::domain, Expr); - return compile(expr).what(unused); - } -}}} - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/support.hpp b/framework/contrib/boost/include/boost/spirit/home/support.hpp deleted file mode 100644 index 5c341fdf2bef..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support.hpp +++ /dev/null @@ -1,34 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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_SUPPORT_SEPTEMBER_26_2008_0340AM) -#define BOOST_SPIRIT_SUPPORT_SEPTEMBER_26_2008_0340AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/support/action_dispatch.hpp b/framework/contrib/boost/include/boost/spirit/home/support/action_dispatch.hpp deleted file mode 100644 index df72ef4edefd..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/action_dispatch.hpp +++ /dev/null @@ -1,222 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - Copyright (c) 2001-2011 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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_ACTION_DISPATCH_APRIL_18_2008_0720AM) -#define BOOST_SPIRIT_ACTION_DISPATCH_APRIL_18_2008_0720AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include - -#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && !defined(BOOST_NO_CXX11_LAMBDAS) && \ - !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && !defined(BOOST_NO_CXX11_DECLTYPE) -#include -#include -#endif - - -#include - -namespace boost { namespace phoenix -{ - template - struct actor; -}} - -namespace boost { namespace spirit { namespace traits -{ - template - struct action_dispatch - { -#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && !defined(BOOST_NO_CXX11_LAMBDAS) && \ - !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && !defined(BOOST_NO_CXX11_DECLTYPE) - // omit function parameters without specializing for each possible - // type of callable entity - // many thanks to Eelis/##iso-c++ for this contribution - - private: - // this will be used to pass around POD types which are safe - // to go through the ellipsis operator (if ever used) - template - struct fwd_tag {}; - - // the first parameter is a placeholder to obtain SFINAE when - // doing overload resolution, the second one is the actual - // forwarder, where we can apply our implementation - template - struct fwd_storage { typedef T type; }; - - // gcc should accept fake() but it prints a sorry, needs - // a check once the bug is sorted out, use a FAKE_CALL macro for now - template - T fake_call(); - -#define BOOST_SPIRIT_FAKE_CALL(T) (*(T*)0) - - // the forwarders, here we could tweak the implementation of - // how parameters are passed to the functions, if needed - struct fwd_none - { - template - auto operator()(F && f, Rest&&...) -> decltype(f()) - { - return f(); - } - }; - - struct fwd_attrib - { - template - auto operator()(F && f, A && a, Rest&&...) -> decltype(f(a)) - { - return f(a); - } - }; - - struct fwd_attrib_context - { - template - auto operator()(F && f, A && a, B && b, Rest&&...) - -> decltype(f(a, b)) - { - return f(a, b); - } - }; - - struct fwd_attrib_context_pass - { - template - auto operator()(F && f, A && a, B && b, C && c, Rest&&...) - -> decltype(f(a, b, c)) - { - return f(a, b, c); - } - }; - - // SFINAE for our calling syntax, the forwarders are stored based - // on what function call gives a proper result - // this code can probably be more generic once implementations are - // steady - template - static auto do_call(F && f, ...) - -> typename fwd_storage::type - { - return {}; - } - - template - static auto do_call(F && f, fwd_tag, ...) - -> typename fwd_storage::type - { - return {}; - } - - template - static auto do_call(F && f, fwd_tag, fwd_tag, ...) - -> typename fwd_storage< - decltype(f(BOOST_SPIRIT_FAKE_CALL(A), BOOST_SPIRIT_FAKE_CALL(B))) - , fwd_attrib_context>::type - { - return {}; - } - - template - static auto do_call(F && f, fwd_tag, fwd_tag, fwd_tag, ...) - -> typename fwd_storage< - decltype(f(BOOST_SPIRIT_FAKE_CALL(A), BOOST_SPIRIT_FAKE_CALL(B) - , BOOST_SPIRIT_FAKE_CALL(C))) - , fwd_attrib_context_pass>::type - { - return {}; - } - - // this function calls the forwarder and is responsible for - // stripping the tail of the parameters - template - static void caller(F && f, A && ... a) - { - do_call(f, fwd_tag::type>()...) - (std::forward(f), std::forward(a)...); - } - -#undef BOOST_SPIRIT_FAKE_CALL - - public: - template - bool operator()(F const& f, Attribute& attr, Context& context) - { - bool pass = true; - caller(f, attr, context, pass); - return pass; - } -#else - // general handler for everything not explicitly specialized below - template - bool operator()(F const& f, Attribute& attr, Context& context) - { - bool pass = true; - f(attr, context, pass); - return pass; - } -#endif - - // handler for phoenix actors - - // If the component this action has to be invoked for is a tuple, we - // wrap any non-fusion tuple into a fusion tuple (done by pass_attribute) - // and pass through any fusion tuple. - template - bool operator()(phoenix::actor const& f - , Attribute& attr, Context& context) - { - bool pass = true; - typename pass_attribute::type attr_wrap(attr); - f(attr_wrap, context, pass); - return pass; - } - - // specializations for plain function pointers taking different number of - // arguments - template - bool operator()(RT(*f)(A0, A1, A2), Attribute& attr, Context& context) - { - bool pass = true; - f(attr, context, pass); - return pass; - } - - template - bool operator()(RT(*f)(A0, A1), Attribute& attr, Context& context) - { - f(attr, context); - return true; - } - - template - bool operator()(RT(*f)(A0), Attribute& attr, Context&) - { - f(attr); - return true; - } - - template - bool operator()(RT(*f)(), Attribute&, Context&) - { - f(); - return true; - } - }; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/adapt_adt_attributes.hpp b/framework/contrib/boost/include/boost/spirit/home/support/adapt_adt_attributes.hpp deleted file mode 100644 index 4e6c5bb94bf7..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/adapt_adt_attributes.hpp +++ /dev/null @@ -1,417 +0,0 @@ -// 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_ADAPT_ADT_ATTRIBUTES_SEP_15_2010_1219PM) -#define BOOST_SPIRIT_ADAPT_ADT_ATTRIBUTES_SEP_15_2010_1219PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -// customization points allowing to use adapted classes with spirit -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct not_is_variant< - fusion::extension::adt_attribute_proxy, Domain> - : not_is_variant< - typename fusion::extension::adt_attribute_proxy::type - , Domain> - {}; - - template - struct not_is_optional< - fusion::extension::adt_attribute_proxy, Domain> - : not_is_optional< - typename fusion::extension::adt_attribute_proxy::type - , Domain> - {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct is_container > - : is_container< - typename fusion::extension::adt_attribute_proxy::type - > - {}; - - template - struct container_value > - : container_value< - typename remove_reference< - typename fusion::extension::adt_attribute_proxy< - T, N, Const - >::type - >::type - > - {}; - - template - struct container_value< - fusion::extension::adt_attribute_proxy const> - : container_value< - typename add_const< - typename remove_reference< - typename fusion::extension::adt_attribute_proxy< - T, N, Const - >::type - >::type - >::type - > - {}; - - template - struct push_back_container< - fusion::extension::adt_attribute_proxy - , Val - , typename enable_if::type - > >::type> - { - static bool call( - fusion::extension::adt_attribute_proxy& p - , Val const& val) - { - typedef typename - fusion::extension::adt_attribute_proxy::type - type; - return push_back(type(p), val); - } - }; - - template - struct container_iterator< - fusion::extension::adt_attribute_proxy > - : container_iterator< - typename remove_reference< - typename fusion::extension::adt_attribute_proxy< - T, N, Const - >::type - >::type - > - {}; - - template - struct container_iterator< - fusion::extension::adt_attribute_proxy const> - : container_iterator< - typename add_const< - typename remove_reference< - typename fusion::extension::adt_attribute_proxy< - T, N, Const - >::type - >::type - >::type - > - {}; - - template - struct begin_container > - { - typedef typename remove_reference< - typename fusion::extension::adt_attribute_proxy::type - >::type container_type; - - static typename container_iterator::type - call(fusion::extension::adt_attribute_proxy& c) - { - return c.get().begin(); - } - }; - - template - struct begin_container const> - { - typedef typename add_const< - typename remove_reference< - typename fusion::extension::adt_attribute_proxy::type - >::type - >::type container_type; - - static typename container_iterator::type - call(fusion::extension::adt_attribute_proxy const& c) - { - return c.get().begin(); - } - }; - - template - struct end_container > - { - typedef typename remove_reference< - typename fusion::extension::adt_attribute_proxy::type - >::type container_type; - - static typename container_iterator::type - call(fusion::extension::adt_attribute_proxy& c) - { - return c.get().end(); - } - }; - - template - struct end_container const> - { - typedef typename add_const< - typename remove_reference< - typename fusion::extension::adt_attribute_proxy::type - >::type - >::type container_type; - - static typename container_iterator::type - call(fusion::extension::adt_attribute_proxy const& c) - { - return c.get().end(); - } - }; - - /////////////////////////////////////////////////////////////////////////// - template - struct assign_to_attribute_from_value< - fusion::extension::adt_attribute_proxy - , Val> - { - static void - call(Val const& val - , fusion::extension::adt_attribute_proxy& attr) - { - attr = val; - } - }; - - template - struct extract_from_attribute< - fusion::extension::adt_attribute_proxy, Exposed> - { - typedef - typename fusion::extension::adt_attribute_proxy::type - get_return_type; - typedef typename remove_const< - typename remove_reference< - get_return_type - >::type - >::type embedded_type; - typedef - typename spirit::result_of::extract_from::type - extracted_type; - - // If adt_attribute_proxy returned a value we must pass the attribute - // by value, otherwise we will end up with a reference to a temporary - // that will expire out of scope of the function call. - typedef typename mpl::if_c::value - , extracted_type - , typename remove_reference::type - >::type type; - - template - static type - call(fusion::extension::adt_attribute_proxy const& val, Context& ctx) - { - return extract_from(val.get(), ctx); - } - }; - - /////////////////////////////////////////////////////////////////////////// - template - struct attribute_type > - : fusion::extension::adt_attribute_proxy - {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct optional_attribute< - fusion::extension::adt_attribute_proxy > - { - typedef typename result_of::optional_value< - typename remove_reference< - typename fusion::extension::adt_attribute_proxy::type - >::type - >::type type; - - static type - call(fusion::extension::adt_attribute_proxy const& val) - { - return optional_value(val.get()); - } - - static bool - is_valid(fusion::extension::adt_attribute_proxy const& val) - { - return has_optional_value(val.get()); - } - }; - - /////////////////////////////////////////////////////////////////////////// - template - struct transform_attribute< - fusion::extension::adt_attribute_proxy - , Attribute - , Domain - , typename disable_if::type - > >::type> - { - typedef Attribute type; - - static Attribute - pre(fusion::extension::adt_attribute_proxy& val) - { - return val; - } - static void - post( - fusion::extension::adt_attribute_proxy& val - , Attribute const& attr) - { - val = attr; - } - static void - fail(fusion::extension::adt_attribute_proxy&) - { - } - }; - - template < - typename T, int N, bool Const, typename Attribute, typename Domain> - struct transform_attribute< - fusion::extension::adt_attribute_proxy - , Attribute - , Domain - , typename enable_if::type - > >::type> - { - typedef Attribute& type; - - static Attribute& - pre(fusion::extension::adt_attribute_proxy& val) - { - return val; - } - static void - post( - fusion::extension::adt_attribute_proxy& - , Attribute const&) - { - } - static void - fail(fusion::extension::adt_attribute_proxy&) - { - } - }; - - template - struct clear_value > - { - static void call( - fusion::extension::adt_attribute_proxy& val) - { - typedef typename - fusion::extension::adt_attribute_proxy::type - type; - clear(type(val)); - } - }; - - template - struct attribute_size > - { - typedef typename remove_const< - typename remove_reference< - typename fusion::extension::adt_attribute_proxy::type - >::type - >::type embedded_type; - - typedef typename attribute_size::type type; - - static type - call(fusion::extension::adt_attribute_proxy const& val) - { - return attribute_size::call(val.get()); - } - }; - - /////////////////////////////////////////////////////////////////////////// - // customization point specializations for numeric generators - template - struct absolute_value > - { - typedef typename - fusion::extension::adt_attribute_proxy::type - type; - - static type - call (fusion::extension::adt_attribute_proxy const& val) - { - return get_absolute_value(val.get()); - } - }; - - template - struct is_negative > - { - static bool - call(fusion::extension::adt_attribute_proxy const& val) - { - return test_negative(val.get()); - } - }; - - template - struct is_zero > - { - static bool - call(fusion::extension::adt_attribute_proxy const& val) - { - return test_zero(val.get()); - } - }; - - template - struct is_nan > - { - static bool - call(fusion::extension::adt_attribute_proxy const& val) - { - return test_nan(val.get()); - } - }; - - template - struct is_infinite > - { - static bool - call(fusion::extension::adt_attribute_proxy const& val) - { - return test_infinite(val.get()); - } - }; -}}} - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace result_of -{ - template - struct optional_value > - : result_of::optional_value< - typename remove_const< - typename remove_reference< - typename fusion::extension::adt_attribute_proxy::type - >::type - >::type> - {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/algorithm/any.hpp b/framework/contrib/boost/include/boost/spirit/home/support/algorithm/any.hpp deleted file mode 100644 index a62201f78110..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/algorithm/any.hpp +++ /dev/null @@ -1,76 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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_ANY_APRIL_22_2006_1147AM) -#define BOOST_SPIRIT_ANY_APRIL_22_2006_1147AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - // This is the binary version of fusion::any. This might - // be a good candidate for inclusion in fusion algorithm - - namespace detail - { - template - inline bool - any(First1 const&, First2 const&, Last const&, F const&, mpl::true_) - { - return false; - } - - template - inline bool - any(First1 const& first1, First2 const& first2, Last const& last, F& f, mpl::false_) - { - return f(*first1, *first2) || - detail::any( - fusion::next(first1) - , fusion::next(first2) - , last - , f - , fusion::result_of::equal_to< - typename fusion::result_of::next::type, Last>()); - } - } - - template - inline bool - any(Sequence1 const& seq1, Sequence2& seq2, F f) - { - return detail::any( - fusion::begin(seq1) - , fusion::begin(seq2) - , fusion::end(seq1) - , f - , fusion::result_of::equal_to< - typename fusion::result_of::begin::type - , typename fusion::result_of::end::type>()); - } - - template - inline bool - any(Sequence const& seq, unused_type, F f) - { - return fusion::any(seq, f); - } - -}} - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/support/algorithm/any_if.hpp b/framework/contrib/boost/include/boost/spirit/home/support/algorithm/any_if.hpp deleted file mode 100644 index c4671cb32c96..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/algorithm/any_if.hpp +++ /dev/null @@ -1,220 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Hartmut Kaiser - Copyright (c) 2001-2011 Joel de Guzman - - 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_ANY_IF_MARCH_30_2007_1220PM) -#define BOOST_SPIRIT_ANY_IF_MARCH_30_2007_1220PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // This is a special version for a binary fusion::any. The predicate - // is used to decide whether to advance the second iterator or not. - // This is needed for sequences containing components with unused - // attributes. The second iterator is advanced only if the attribute - // of the corresponding component iterator is not unused. - /////////////////////////////////////////////////////////////////////////// - namespace detail - { - /////////////////////////////////////////////////////////////////////// - template - struct apply_predicate - : mpl::apply1::type> - {}; - - /////////////////////////////////////////////////////////////////////// - // if the predicate is true, attribute_next returns next(Iterator2), - // otherwise Iterator2 - namespace result_of - { - template < - typename Iterator1, typename Iterator2, typename Last2 - , typename Pred> - struct attribute_next - { - typedef mpl::and_< - apply_predicate - , mpl::not_ > - > pred; - - typedef typename - mpl::eval_if< - pred - , fusion::result_of::next - , mpl::identity - >::type - type; - - template - static type - call(Iterator const& i, mpl::true_) - { - return fusion::next(i); - } - - template - static type - call(Iterator const& i, mpl::false_) - { - return i; - } - - template - static type - call(Iterator const& i) - { - return call(i, pred()); - } - }; - } - - template < - typename Pred, typename Iterator1, typename Last2 - , typename Iterator2> - inline typename - result_of::attribute_next::type const - attribute_next(Iterator2 const& i) - { - return result_of::attribute_next< - Iterator1, Iterator2, Last2, Pred>::call(i); - } - - /////////////////////////////////////////////////////////////////////// - // if the predicate is true, attribute_value returns deref(Iterator2), - // otherwise unused - namespace result_of - { - template < - typename Iterator1, typename Iterator2, typename Last2 - , typename Pred> - struct attribute_value - { - typedef mpl::and_< - apply_predicate - , mpl::not_ > - > pred; - - typedef typename - mpl::eval_if< - pred - , fusion::result_of::deref - , mpl::identity - >::type - type; - - template - static type - call(Iterator const& i, mpl::true_) - { - return fusion::deref(i); - } - - template - static type - call(Iterator const&, mpl::false_) - { - return unused; - } - - template - static type - call(Iterator const& i) - { - return call(i, pred()); - } - }; - } - - template < - typename Pred, typename Iterator1, typename Last2 - , typename Iterator2> - inline typename - result_of::attribute_value::type - attribute_value(Iterator2 const& i) - { - return result_of::attribute_value< - Iterator1, Iterator2, Last2, Pred>::call(i); - } - - /////////////////////////////////////////////////////////////////////// - template < - typename Pred, typename First1, typename Last1, typename First2 - , typename Last2, typename F> - inline bool - any_if (First1 const&, First2 const&, Last1 const&, Last2 const& - , F const&, mpl::true_) - { - return false; - } - - template < - typename Pred, typename First1, typename Last1, typename First2 - , typename Last2, typename F> - inline bool - any_if (First1 const& first1, First2 const& first2, Last1 const& last1 - , Last2 const& last2, F& f, mpl::false_) - { - typename result_of::attribute_value::type - attribute = spirit::detail::attribute_value(first2); - - return f(*first1, attribute) || - detail::any_if( - fusion::next(first1) - , attribute_next(first2) - , last1, last2 - , f - , fusion::result_of::equal_to< - typename fusion::result_of::next::type, Last1>()); - } - } - - template - inline bool - any_if(Sequence1 const& seq1, Sequence2& seq2, F f, Pred) - { - return detail::any_if( - fusion::begin(seq1), fusion::begin(seq2) - , fusion::end(seq1), fusion::end(seq2) - , f - , fusion::result_of::equal_to< - typename fusion::result_of::begin::type - , typename fusion::result_of::end::type>()); - } - - template - inline bool - any_if(Sequence const& seq, unused_type const, F f, Pred) - { - return fusion::any(seq, f); - } - -}} - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/support/algorithm/any_if_ns.hpp b/framework/contrib/boost/include/boost/spirit/home/support/algorithm/any_if_ns.hpp deleted file mode 100644 index c82d28c21d2a..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/algorithm/any_if_ns.hpp +++ /dev/null @@ -1,95 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Hartmut Kaiser - Copyright (c) 2001-2011 Joel de Guzman - - 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_ANY_IF_NS_NOVEMBER_04_2008_0906PM) -#define BOOST_SPIRIT_ANY_IF_NS_NOVEMBER_04_2008_0906PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // This is a special version for a binary fusion::any. The predicate - // is used to decide whether to advance the second iterator or not. - // This is needed for sequences containing components with unused - // attributes. The second iterator is advanced only if the attribute - // of the corresponding component iterator is not unused. - // - // This is a non-short circuiting (ns) version of the any_if algorithm. - // see any_if.hpp (uses | instead of ||). - /////////////////////////////////////////////////////////////////////////// - namespace detail - { - template < - typename Pred, typename First1, typename Last1, typename First2 - , typename Last2, typename F - > - inline bool - any_if_ns(First1 const&, First2 const&, Last1 const&, Last2 const& - , F const&, mpl::true_) - { - return false; - } - - template < - typename Pred, typename First1, typename Last1, typename First2 - , typename Last2, typename F - > - inline bool - any_if_ns(First1 const& first1, First2 const& first2 - , Last1 const& last1, Last2 const& last2, F& f, mpl::false_) - { - typename result_of::attribute_value::type - attribute = spirit::detail::attribute_value(first2); - - // cast bool to int to avoid -Wbitwise-instead-of-logical warning - return (0 != (static_cast(f(*first1, attribute)) | - detail::any_if_ns( - fusion::next(first1) - , attribute_next(first2) - , last1, last2 - , f - , fusion::result_of::equal_to< - typename fusion::result_of::next::type, Last1>()))); - } - } - - template - inline bool - any_if_ns(Sequence1 const& seq1, Sequence2& seq2, F f, Pred) - { - return detail::any_if_ns( - fusion::begin(seq1), fusion::begin(seq2) - , fusion::end(seq1), fusion::end(seq2) - , f - , fusion::result_of::equal_to< - typename fusion::result_of::begin::type - , typename fusion::result_of::end::type>()); - } - - template - inline bool - any_if_ns(Sequence const& seq, unused_type const, F f, Pred) - { - return detail::any_ns( - fusion::begin(seq) - , fusion::end(seq) - , f - , fusion::result_of::equal_to< - typename fusion::result_of::begin::type - , typename fusion::result_of::end::type>()); - } - -}} - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/support/algorithm/any_if_ns_so.hpp b/framework/contrib/boost/include/boost/spirit/home/support/algorithm/any_if_ns_so.hpp deleted file mode 100644 index 43528921e813..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/algorithm/any_if_ns_so.hpp +++ /dev/null @@ -1,96 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Hartmut Kaiser - Copyright (c) 2001-2011 Joel de Guzman - - 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_ANY_IF_NS_SO_DECEMBER_03_2017_0826PM) -#define BOOST_SPIRIT_ANY_IF_NS_SO_DECEMBER_03_2017_0826PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // This is a special version for a binary fusion::any. The predicate - // is used to decide whether to advance the second iterator or not. - // This is needed for sequences containing components with unused - // attributes. The second iterator is advanced only if the attribute - // of the corresponding component iterator is not unused. - // - // This is a non-short circuiting (ns) strict order (so) version of the - // any_if algorithm. - /////////////////////////////////////////////////////////////////////////// - namespace detail - { - template < - typename Pred, typename First1, typename Last1, typename First2 - , typename Last2, typename F - > - inline bool - any_if_ns_so(First1 const&, First2 const&, Last1 const&, Last2 const& - , F const&, mpl::true_) - { - return false; - } - - template < - typename Pred, typename First1, typename Last1, typename First2 - , typename Last2, typename F - > - inline bool - any_if_ns_so(First1 const& first1, First2 const& first2 - , Last1 const& last1, Last2 const& last2, F& f, mpl::false_) - { - typename result_of::attribute_value::type - attribute = spirit::detail::attribute_value(first2); - - bool head = f(*first1, attribute); - bool tail = - detail::any_if_ns_so( - fusion::next(first1) - , attribute_next(first2) - , last1, last2 - , f - , fusion::result_of::equal_to< - typename fusion::result_of::next::type, Last1>()); - return head || tail; - } - } - - template - inline bool - any_if_ns_so(Sequence1 const& seq1, Sequence2& seq2, F f, Pred) - { - return detail::any_if_ns_so( - fusion::begin(seq1), fusion::begin(seq2) - , fusion::end(seq1), fusion::end(seq2) - , f - , fusion::result_of::equal_to< - typename fusion::result_of::begin::type - , typename fusion::result_of::end::type>()); - } - - template - inline bool - any_if_ns_so(Sequence const& seq, unused_type const, F f, Pred) - { - return detail::any_ns_so( - fusion::begin(seq) - , fusion::end(seq) - , f - , fusion::result_of::equal_to< - typename fusion::result_of::begin::type - , typename fusion::result_of::end::type>()); - } - -}} - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/support/algorithm/any_ns.hpp b/framework/contrib/boost/include/boost/spirit/home/support/algorithm/any_ns.hpp deleted file mode 100644 index aa1e2330dba2..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/algorithm/any_ns.hpp +++ /dev/null @@ -1,104 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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_ANY_NS_MARCH_13_2007_0827AM) -#define BOOST_SPIRIT_ANY_NS_MARCH_13_2007_0827AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - // A non-short circuiting (ns) version of the any algorithm (uses - // | instead of ||. - - namespace detail - { - template - inline bool - any_ns(First1 const&, First2 const&, Last const&, F const&, mpl::true_) - { - return false; - } - - template - inline bool - any_ns(First1 const& first1, First2 const& first2, Last const& last, F& f, mpl::false_) - { - // cast bool to int to avoid -Wbitwise-instead-of-logical warning - return (0 != (static_cast(f(*first1, *first2)) | - detail::any_ns( - fusion::next(first1) - , fusion::next(first2) - , last - , f - , fusion::result_of::equal_to< - typename fusion::result_of::next::type, Last>()))); - } - - template - inline bool - any_ns(First const&, Last const&, F const&, mpl::true_) - { - return false; - } - - template - inline bool - any_ns(First const& first, Last const& last, F& f, mpl::false_) - { - // cast bool to int to avoid -Wbitwise-instead-of-logical warning - return (0 != (static_cast(f(*first)) | - detail::any_ns( - fusion::next(first) - , last - , f - , fusion::result_of::equal_to< - typename fusion::result_of::next::type, Last>()))); - } - } - - template - inline bool - any_ns(Sequence1 const& seq1, Sequence2& seq2, F f) - { - return detail::any_ns( - fusion::begin(seq1) - , fusion::begin(seq2) - , fusion::end(seq1) - , f - , fusion::result_of::equal_to< - typename fusion::result_of::begin::type - , typename fusion::result_of::end::type>()); - } - - template - inline bool - any_ns(Sequence const& seq, unused_type, F f) - { - return detail::any_ns( - fusion::begin(seq) - , fusion::end(seq) - , f - , fusion::result_of::equal_to< - typename fusion::result_of::begin::type - , typename fusion::result_of::end::type>()); - } - -}} - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/support/algorithm/any_ns_so.hpp b/framework/contrib/boost/include/boost/spirit/home/support/algorithm/any_ns_so.hpp deleted file mode 100644 index e0b0e495a20d..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/algorithm/any_ns_so.hpp +++ /dev/null @@ -1,106 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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_ANY_NS_SO_DECEMBER_03_2017_0826PM) -#define BOOST_SPIRIT_ANY_NS_SO_DECEMBER_03_2017_0826PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - // A non-short circuiting (ns) strict order (so) version of the any - // algorithm - - namespace detail - { - template - inline bool - any_ns_so(First1 const&, First2 const&, Last const&, F const&, mpl::true_) - { - return false; - } - - template - inline bool - any_ns_so(First1 const& first1, First2 const& first2, Last const& last, F& f, mpl::false_) - { - bool head = f(*first1, *first2); - bool tail = - detail::any_ns_so( - fusion::next(first1) - , fusion::next(first2) - , last - , f - , fusion::result_of::equal_to< - typename fusion::result_of::next::type, Last>()); - return head || tail; - } - - template - inline bool - any_ns_so(First const&, Last const&, F const&, mpl::true_) - { - return false; - } - - template - inline bool - any_ns_so(First const& first, Last const& last, F& f, mpl::false_) - { - bool head = f(*first); - bool tail = - detail::any_ns_so( - fusion::next(first) - , last - , f - , fusion::result_of::equal_to< - typename fusion::result_of::next::type, Last>()); - return head || tail; - } - } - - template - inline bool - any_ns_so(Sequence1 const& seq1, Sequence2& seq2, F f) - { - return detail::any_ns_so( - fusion::begin(seq1) - , fusion::begin(seq2) - , fusion::end(seq1) - , f - , fusion::result_of::equal_to< - typename fusion::result_of::begin::type - , typename fusion::result_of::end::type>()); - } - - template - inline bool - any_ns_so(Sequence const& seq, unused_type, F f) - { - return detail::any_ns_so( - fusion::begin(seq) - , fusion::end(seq) - , f - , fusion::result_of::equal_to< - typename fusion::result_of::begin::type - , typename fusion::result_of::end::type>()); - } - -}} - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/support/argument.hpp b/framework/contrib/boost/include/boost/spirit/home/support/argument.hpp deleted file mode 100644 index add245a0bca5..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/argument.hpp +++ /dev/null @@ -1,221 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - Copyright (c) 2001-2011 Hartmut Kaiser - Copyright (c) 2011 Thomas Heller - - 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_ARGUMENT_FEBRUARY_17_2007_0339PM) -#define BOOST_SPIRIT_ARGUMENT_FEBRUARY_17_2007_0339PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include // for transform placeholders - -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - -#define SPIRIT_DECLARE_ARG(z, n, data) \ - typedef phoenix::actor > \ - BOOST_PP_CAT(BOOST_PP_CAT(_, BOOST_PP_INC(n)), _type); \ - phoenix::actor > const \ - BOOST_PP_CAT(_, BOOST_PP_INC(n)) = \ - BOOST_PP_CAT(BOOST_PP_CAT(_, BOOST_PP_INC(n)), _type)(); \ - /***/ - -#define SPIRIT_USING_ARGUMENT(z, n, data) \ - using spirit::BOOST_PP_CAT(BOOST_PP_CAT(_, n), _type); \ - using spirit::BOOST_PP_CAT(_, n); \ - /***/ - -#else - -#define SPIRIT_DECLARE_ARG(z, n, data) \ - typedef phoenix::actor > \ - BOOST_PP_CAT(BOOST_PP_CAT(_, BOOST_PP_INC(n)), _type); \ - /***/ - -#define SPIRIT_USING_ARGUMENT(z, n, data) \ - using spirit::BOOST_PP_CAT(BOOST_PP_CAT(_, n), _type); \ - /***/ - -#endif - -namespace boost { namespace spirit -{ - template - struct argument; - - template - struct attribute_context; -}} - -BOOST_PHOENIX_DEFINE_CUSTOM_TERMINAL( - template - , boost::spirit::argument - , mpl::false_ // is not nullary - , v2_eval( - proto::make< - boost::spirit::argument() - > - , proto::call< - functional::env(proto::_state) - > - ) -) - -BOOST_PHOENIX_DEFINE_CUSTOM_TERMINAL( - template - , boost::spirit::attribute_context - , mpl::false_ // is not nullary - , v2_eval( - proto::make< - boost::spirit::attribute_context() - > - , proto::call< - functional::env(proto::_state) - > - ) -) - -namespace boost { namespace spirit -{ - namespace result_of - { - template - struct get_arg - { - typedef typename - fusion::result_of::size::type - sequence_size; - - // report invalid argument not found (N is out of bounds) - BOOST_SPIRIT_ASSERT_MSG( - (N < sequence_size::value), - index_is_out_of_bounds, ()); - - typedef typename - fusion::result_of::at_c::type - type; - - static type call(Sequence& seq) - { - return fusion::at_c(seq); - } - }; - - template - struct get_arg : get_arg - { - }; - } - - template - typename result_of::get_arg::type - get_arg(T& val) - { - return result_of::get_arg::call(val); - } - - template - struct attribute_context - { - typedef mpl::true_ no_nullary; - - template - struct result - { - // FIXME: is this remove_const really necessary? - typedef typename - remove_const< - typename mpl::at_c::type - >::type - type; - }; - - template - typename result::type - eval(Env const& env) const - { - return fusion::at_c<0>(env.args()); - } - }; - - template - struct argument - { - typedef mpl::true_ no_nullary; - - template - struct result - { - typedef typename - mpl::at_c::type - arg_type; - - typedef typename result_of::get_arg::type type; - }; - - template - typename result::type - eval(Env const& env) const - { - return get_arg(fusion::at_c<0>(env.args())); - } - }; - - // _0 refers to the whole attribute as generated by the lhs parser - typedef phoenix::actor > _0_type; -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - _0_type const _0 = _0_type(); -#endif - - // _1, _2, ... refer to the attributes of the single components the lhs - // parser is composed of - typedef phoenix::actor > _1_type; - typedef phoenix::actor > _2_type; - typedef phoenix::actor > _3_type; - -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - _1_type const _1 = _1_type(); - _2_type const _2 = _2_type(); - _3_type const _3 = _3_type(); -#endif - - // '_pass' may be used to make a match fail in retrospective - typedef phoenix::arg_names::_3_type _pass_type; -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - _pass_type const _pass = _pass_type(); -#endif - - // Bring in the rest of the arguments and attributes (_4 .. _N+1), using PP - BOOST_PP_REPEAT_FROM_TO( - 3, SPIRIT_ARGUMENTS_LIMIT, SPIRIT_DECLARE_ARG, _) - -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - // You can bring these in with the using directive - // without worrying about bringing in too much. - namespace labels - { - BOOST_PP_REPEAT(SPIRIT_ARGUMENTS_LIMIT, SPIRIT_USING_ARGUMENT, _) - } -#endif - -}} - -#undef SPIRIT_DECLARE_ARG -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/argument_expression.hpp b/framework/contrib/boost/include/boost/spirit/home/support/argument_expression.hpp deleted file mode 100644 index e3831004974e..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/argument_expression.hpp +++ /dev/null @@ -1,108 +0,0 @@ -/*============================================================================= - Copyright (c) 2011 Thomas Heller - Copyright (c) 2001-2011 Hartmut Kaiser - Copyright (c) 2011 Thomas Heller - - 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_ARGUMENT_MARCH_22_2011_0939PM) -#define BOOST_SPIRIT_ARGUMENT_MARCH_22_2011_0939PM - -#include -#include -#include // for transform placeholders - -namespace boost { namespace spirit -{ - template - struct argument; - - template - struct attribute_context; - - namespace expression - { - template - struct argument - : phoenix::expression::terminal > - { - typedef typename phoenix::expression::terminal< - spirit::argument - >::type type; - - static type make() - { - type const e = {{{}}}; - return e; - } - }; - - template - struct attribute_context - : phoenix::expression::terminal > - { - typedef typename phoenix::expression::terminal< - spirit::attribute_context - >::type type; - - static type make() - { - type const e = {{{}}}; - return e; - } - }; - } -}} - -namespace boost { namespace phoenix -{ - namespace result_of - { - template - struct is_nullary > > - : mpl::false_ - {}; - - template - struct is_nullary > > - : mpl::false_ - {}; - } - - template - struct is_custom_terminal > - : mpl::true_ - {}; - - template - struct is_custom_terminal > - : mpl::true_ - {}; - - template - struct custom_terminal > - : proto::call< - v2_eval( - proto::make()> - , proto::call< - functional::env(proto::_state) - > - ) - > - {}; - - template - struct custom_terminal > - : proto::call< - v2_eval( - proto::make()> - , proto::call< - functional::env(proto::_state) - > - ) - > - {}; -}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/assert_msg.hpp b/framework/contrib/boost/include/boost/spirit/home/support/assert_msg.hpp deleted file mode 100644 index f1433daac580..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/assert_msg.hpp +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright (c) 2001-2013 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_ASSERT_MSG_JUN_23_2009_0836AM) -#define BOOST_SPIRIT_ASSERT_MSG_JUN_23_2009_0836AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include - -// Work around the MPL problem in BOOST_MPL_ASSERT_MSG generating -// multiple definition linker errors for certain compilers (VC++ 8). -// BOOST_SPIRIT_DONT_USE_MPL_ASSERT_MSG can also be defined by user. -#if !defined(BOOST_SPIRIT_DONT_USE_MPL_ASSERT_MSG) -# if defined(BOOST_MSVC) && BOOST_MSVC < 1500 -# define BOOST_SPIRIT_DONT_USE_MPL_ASSERT_MSG 1 -# endif -#endif - -#if !defined(BOOST_NO_CXX11_STATIC_ASSERT) || BOOST_SPIRIT_DONT_USE_MPL_ASSERT_MSG != 0 -#include -#define BOOST_SPIRIT_ASSERT_MSG(Cond, Msg, Types) \ - BOOST_STATIC_ASSERT_MSG(Cond, # Msg) -#else -#include -#define BOOST_SPIRIT_ASSERT_MSG(Cond, Msg, Types) \ - BOOST_MPL_ASSERT_MSG(Cond, Msg, Types) -#endif - -#define BOOST_SPIRIT_ASSERT_MATCH(Domain, Expr) \ - BOOST_SPIRIT_ASSERT_MSG(( \ - boost::spirit::traits::matches< Domain, Expr >::value \ - ), error_invalid_expression, (Expr)) - -// GCC 4.7 will overeagerly instantiate static_asserts in template functions, -// if the assert condition does not depend on template parameters -// (see https://svn.boost.org/trac/boost/ticket/8381). -// There are places where we want to use constant false as the condition in -// template functions to indicate that these function overloads should never -// be called. This allows to generate better error messages. To solve this -// problem we make the condition dependent on the template argument and use -// the following macro in such places. -#include - -#define BOOST_SPIRIT_ASSERT_FAIL(TemplateParam, Msg, Types) \ - BOOST_SPIRIT_ASSERT_MSG((!boost::is_same< \ - TemplateParam, TemplateParam >::value), Msg, Types) - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/support/attributes.hpp b/framework/contrib/boost/include/boost/spirit/home/support/attributes.hpp deleted file mode 100644 index b4d4597ed988..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/attributes.hpp +++ /dev/null @@ -1,1344 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - Copyright (c) 2001-2012 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_ATTRIBUTES_JANUARY_29_2007_0954AM) -#define BOOST_SPIRIT_ATTRIBUTES_JANUARY_29_2007_0954AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include // for std::iterator_traits, std::distance -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - // This file deals with attribute related functions and meta-functions - // including generalized attribute transformation utilities for Spirit - // components. - /////////////////////////////////////////////////////////////////////////// - - /////////////////////////////////////////////////////////////////////////// - // Find out if T can be a (strong) substitute for Expected attribute - namespace detail - { - template - struct value_type_is_substitute - : is_substitute< - typename container_value::type - , typename container_value::type> - {}; - - template - struct is_substitute_impl : is_same {}; - - template - struct is_substitute_impl, - fusion::traits::is_sequence, - mpl::equal > - > - >::type> - : mpl::true_ {}; - - template - struct is_substitute_impl, - is_container, - detail::value_type_is_substitute - > - >::type> - : mpl::true_ {}; - } - - template - struct is_substitute - : detail::is_substitute_impl {}; - - template - struct is_substitute, optional > - : is_substitute {}; - - template - struct is_substitute >::type> - : mpl::true_ {}; - - /////////////////////////////////////////////////////////////////////////// - // Find out if T can be a weak substitute for Expected attribute - namespace detail - { - // A type, which is convertible to the attribute is at the same time - // usable as its weak substitute. - template - struct is_weak_substitute_impl : is_convertible {}; - -// // An exposed attribute is a weak substitute for a supplied container -// // attribute if it is a weak substitute for its value_type. This is -// // true as all character parsers are compatible with a container -// // attribute having the corresponding character type as its value_type. -// template -// struct is_weak_substitute_for_value_type -// : is_weak_substitute::type> -// {}; -// -// template -// struct is_weak_substitute_impl > -// , is_string -// , is_weak_substitute_for_value_type > -// >::type> -// : mpl::true_ -// {}; - - // An exposed container attribute is a weak substitute for a supplied - // container attribute if and only if their value_types are weak - // substitutes. - template - struct value_type_is_weak_substitute - : is_weak_substitute< - typename container_value::type - , typename container_value::type> - {}; - - template - struct is_weak_substitute_impl - , is_container - , value_type_is_weak_substitute > - >::type> - : mpl::true_ {}; - - // Two fusion sequences are weak substitutes if and only if their - // elements are pairwise weak substitutes. - template - struct is_weak_substitute_impl - , fusion::traits::is_sequence - , mpl::equal > > - >::type> - : mpl::true_ {}; - - // If this is not defined, the main template definition above will return - // true if T is convertible to the first type in a fusion::vector. We - // globally declare any non-Fusion sequence T as not compatible with any - // Fusion sequence 'Expected'. - template - struct is_weak_substitute_impl > - , fusion::traits::is_sequence > - >::type> - : mpl::false_ {}; - } - - // main template forwards to detail namespace, this helps older compilers - // to disambiguate things - template - struct is_weak_substitute - : detail::is_weak_substitute_impl {}; - - template - struct is_weak_substitute, optional > - : is_weak_substitute {}; - - template - struct is_weak_substitute, Expected> - : is_weak_substitute {}; - - template - struct is_weak_substitute > - : is_weak_substitute {}; - -#if !defined(BOOST_VARIANT_DO_NOT_USE_VARIADIC_TEMPLATES) - template - struct is_weak_substitute, Expected> - : is_weak_substitute - {}; - - template - struct is_weak_substitute, - Expected> - : mpl::bool_::type::value && - is_weak_substitute, Expected>::type::value> - {}; -#else -#define BOOST_SPIRIT_IS_WEAK_SUBSTITUTE(z, N, _) \ - is_weak_substitute::type::value && \ - /***/ - - // make sure unused variant parameters do not affect the outcome - template - struct is_weak_substitute - : mpl::true_ - {}; - - template - struct is_weak_substitute< - boost::variant, Expected> - : mpl::bool_ - {}; - -#undef BOOST_SPIRIT_IS_WEAK_SUBSTITUTE -#endif - - template - struct is_weak_substitute, not_is_variant > - >::type> - : mpl::true_ {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct is_proxy : mpl::false_ {}; - - template - struct is_proxy, - fusion::traits::is_view - > - >::type> - : mpl::true_ {}; - - namespace detail - { - // By declaring a nested struct in your class/struct, you tell - // spirit that it is regarded as a variant type. The minimum - // required interface for such a variant is that it has constructors - // for various types supported by your variant and a typedef 'types' - // which is an mpl sequence of the contained types. - // - // This is an intrusive interface. For a non-intrusive interface, - // use the not_is_variant trait. - BOOST_MPL_HAS_XXX_TRAIT_DEF(adapted_variant_tag) - } - - template - struct not_is_variant - : mpl::not_ > - {}; - - template - struct not_is_variant, Domain> - : mpl::false_ - {}; - - // we treat every type as if it where the variant (as this meta function is - // invoked for variant types only) - template - struct variant_type - : mpl::identity - {}; - - template - struct variant_type > - : variant_type - {}; - - template - struct not_is_variant_or_variant_in_optional - : not_is_variant::type, Domain> - {}; - - /////////////////////////////////////////////////////////////////////////// - // The compute_compatible_component_variant - /////////////////////////////////////////////////////////////////////////// - namespace detail - { - // A component is compatible to a given Attribute type if the - // Attribute is the same as the expected type of the component or if - // it is convertible to the expected type. - template - struct attribute_is_compatible - : is_convertible - {}; - - template - struct attribute_is_compatible > - : is_convertible - {}; - - template - struct is_hold_any_container - : traits::is_hold_any::type> - {}; - } - - template - struct compute_compatible_component_variant - : mpl::or_< - traits::detail::attribute_is_compatible - , traits::is_hold_any - , mpl::eval_if< - is_container - , traits::detail::is_hold_any_container - , mpl::false_> > - {}; - - namespace detail - { - BOOST_MPL_HAS_XXX_TRAIT_DEF(types) - } - - template - struct compute_compatible_component_variant::type> >::type> - { - typedef typename traits::variant_type::type variant_type; - typedef typename variant_type::types types; - typedef typename mpl::end::type end; - - typedef typename - mpl::find_if >::type - iter; - - typedef typename mpl::distance< - typename mpl::begin::type, iter - >::type distance; - - // true_ if the attribute matches one of the types in the variant - typedef typename mpl::not_ >::type type; - enum { value = type::value }; - - // return the type in the variant the attribute is compatible with - typedef typename - mpl::eval_if, mpl::identity >::type - compatible_type; - - // return whether the given type is compatible with the Expected type - static bool is_compatible(int which) - { - return which == distance::value; - } - }; - - template - struct compute_compatible_component - : compute_compatible_component_variant::type> {}; - - template - struct compute_compatible_component - : mpl::false_ {}; - - template - struct compute_compatible_component - : mpl::false_ {}; - - template - struct compute_compatible_component - : mpl::false_ {}; - - /////////////////////////////////////////////////////////////////////////// - // return the type currently stored in the given variant - template - struct variant_which > - { - static int call(boost::variant const& v) - { - return v.which(); - } - }; - - template - int which(T const& v) - { - return variant_which::call(v); - } - - /////////////////////////////////////////////////////////////////////////// - template - struct not_is_optional - : mpl::true_ - {}; - - template - struct not_is_optional, Domain> - : mpl::false_ - {}; - - /////////////////////////////////////////////////////////////////////////// - // attribute_of - // - // Get the component's attribute - /////////////////////////////////////////////////////////////////////////// - template - struct attribute_of - { - typedef typename Component::template - attribute::type type; - }; - - /////////////////////////////////////////////////////////////////////////// - // attribute_not_unused - // - // An mpl meta-function class that determines whether a component's - // attribute is not unused. - /////////////////////////////////////////////////////////////////////////// - template - struct attribute_not_unused - { - template - struct apply - : not_is_unused::type> - {}; - }; - - /////////////////////////////////////////////////////////////////////////// - // Retrieve the attribute type to use from the given type - // - // This is needed to extract the correct attribute type from proxy classes - // as utilized in FUSION_ADAPT_ADT et. al. - /////////////////////////////////////////////////////////////////////////// - template - struct attribute_type : mpl::identity {}; - - /////////////////////////////////////////////////////////////////////////// - // Retrieve the size of a fusion sequence (compile time) - /////////////////////////////////////////////////////////////////////////// - template - struct sequence_size - : fusion::result_of::size - {}; - - template <> - struct sequence_size - : mpl::int_<0> - {}; - - /////////////////////////////////////////////////////////////////////////// - // Retrieve the size of an attribute (runtime) - /////////////////////////////////////////////////////////////////////////// - namespace detail - { - template - struct attribute_size_impl - { - typedef std::size_t type; - - static type call(Attribute const&) - { - return 1; - } - }; - - template - struct attribute_size_impl - , mpl::not_ > - > - >::type> - { - typedef typename fusion::result_of::size::value_type type; - - static type call(Attribute const& attr) - { - return fusion::size(attr); - } - }; - - template - struct attribute_size_impl - , mpl::not_ > - > - >::type> - { - typedef typename Attribute::size_type type; - - static type call(Attribute const& attr) - { - return attr.size(); - } - }; - } - - template - struct attribute_size - : detail::attribute_size_impl - {}; - - template - struct attribute_size > - { - typedef typename attribute_size::type type; - - static type call(optional const& val) - { - if (!val) - return 0; - return traits::size(val.get()); - } - }; - - namespace detail - { - struct attribute_size_visitor : static_visitor - { - template - std::size_t operator()(T const& val) const - { - return spirit::traits::size(val); - } - }; - } - - template - struct attribute_size > - { - typedef std::size_t type; - - static type call(variant const& val) - { - return apply_visitor(detail::attribute_size_visitor(), val); - } - }; - - template - struct attribute_size > - { - typedef typename std::iterator_traits:: - difference_type type; - - static type call(iterator_range const& r) - { - return std::distance(r.begin(), r.end()); - } - }; - - template <> - struct attribute_size - { - typedef std::size_t type; - - static type call(unused_type) - { - return 0; - } - }; - - template - typename attribute_size::type - size (Attribute const& attr) - { - return attribute_size::call(attr); - } - - /////////////////////////////////////////////////////////////////////////// - // pass_attribute - // - // Determines how we pass attributes to semantic actions. This - // may be specialized. By default, all attributes are wrapped in - // a fusion sequence, because the attribute has to be treated as being - // a single value in any case (even if it actually already is a fusion - // sequence in its own). - /////////////////////////////////////////////////////////////////////////// - template - struct pass_attribute - { - typedef fusion::vector1 type; - }; - - /////////////////////////////////////////////////////////////////////////// - // Subclass a pass_attribute specialization from this to wrap - // the attribute in a tuple only IFF it is not already a fusion tuple. - /////////////////////////////////////////////////////////////////////////// - template - struct wrap_if_not_tuple - : mpl::if_< - fusion::traits::is_sequence - , Attribute&, fusion::vector1 > - {}; - - template - struct wrap_if_not_tuple - { - typedef fusion::vector1 type; - }; - - template <> - struct wrap_if_not_tuple - { - typedef unused_type type; - }; - - template <> - struct wrap_if_not_tuple - { - typedef unused_type type; - }; - - /////////////////////////////////////////////////////////////////////////// - // build_optional - // - // Build a boost::optional from T. Return unused_type if T is unused_type. - /////////////////////////////////////////////////////////////////////////// - template - struct build_optional - { - typedef boost::optional type; - }; - - template - struct build_optional > - { - typedef boost::optional type; - }; - - template <> - struct build_optional - { - typedef unused_type type; - }; - - /////////////////////////////////////////////////////////////////////////// - // build_std_vector - // - // Build a std::vector from T. Return unused_type if T is unused_type. - /////////////////////////////////////////////////////////////////////////// - template - struct build_std_vector - { - typedef std::vector type; - }; - - template <> - struct build_std_vector - { - typedef unused_type type; - }; - - /////////////////////////////////////////////////////////////////////////// - // filter_unused_attributes - // - // Remove unused_types from a sequence - /////////////////////////////////////////////////////////////////////////// - - // Compute the list of all *used* attributes of sub-components - // (filter all unused attributes from the list) - template - struct filter_unused_attributes - : fusion::result_of::filter_if > - {}; - - /////////////////////////////////////////////////////////////////////////// - // sequence_attribute_transform - // - // This transform is invoked for every attribute in a sequence allowing - // to modify the attribute type exposed by a component to the enclosing - // sequence component. By default no transformation is performed. - /////////////////////////////////////////////////////////////////////////// - template - struct sequence_attribute_transform - : mpl::identity - {}; - - /////////////////////////////////////////////////////////////////////////// - // permutation_attribute_transform - // - // This transform is invoked for every attribute in a sequence allowing - // to modify the attribute type exposed by a component to the enclosing - // permutation component. By default a build_optional transformation is - // performed. - /////////////////////////////////////////////////////////////////////////// - template - struct permutation_attribute_transform - : traits::build_optional - {}; - - /////////////////////////////////////////////////////////////////////////// - // sequential_or_attribute_transform - // - // This transform is invoked for every attribute in a sequential_or allowing - // to modify the attribute type exposed by a component to the enclosing - // sequential_or component. By default a build_optional transformation is - // performed. - /////////////////////////////////////////////////////////////////////////// - template - struct sequential_or_attribute_transform - : traits::build_optional - {}; - - /////////////////////////////////////////////////////////////////////////// - // build_fusion_vector - // - // Build a fusion vector from a fusion sequence. All unused attributes - // are filtered out. If the result is empty after the removal of unused - // types, return unused_type. If the input sequence is an unused_type, - // also return unused_type. - /////////////////////////////////////////////////////////////////////////// - template - struct build_fusion_vector - { - // Remove all unused attributes - typedef typename - filter_unused_attributes::type - filtered_attributes; - - // Build a fusion vector from a fusion sequence (Sequence), - // But *only if* the sequence is not empty. i.e. if the - // sequence is empty, our result will be unused_type. - - typedef typename - mpl::eval_if< - fusion::result_of::empty - , mpl::identity - , fusion::result_of::as_vector - >::type - type; - }; - - template <> - struct build_fusion_vector - { - typedef unused_type type; - }; - - /////////////////////////////////////////////////////////////////////////// - // build_attribute_sequence - // - // Build a fusion sequence attribute sequence from a sequence of - // components. Transform::type is called on each element. - /////////////////////////////////////////////////////////////////////////// - template class Transform - , typename Iterator = unused_type, typename Domain = unused_type> - struct build_attribute_sequence - { - struct element_attribute - { - template - struct result; - - template - struct result - { - typedef typename - Transform< - typename attribute_of::type - , Domain - >::type - type; - }; - - // never called, but needed for decltype-based result_of (C++0x) -#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES - template - typename result::type - operator()(Element&&) const; -#endif - }; - - // Compute the list of attributes of all sub-components - typedef typename - fusion::result_of::transform::type - type; - }; - - /////////////////////////////////////////////////////////////////////////// - // has_no_unused - // - // Test if there are no unused attributes in Sequence - /////////////////////////////////////////////////////////////////////////// - template - struct has_no_unused - : is_same< - typename mpl::find_if >::type - , typename mpl::end::type> - {}; - - namespace detail - { - template ::value> - struct build_collapsed_variant; - - // N element case, no unused - template - struct build_collapsed_variant - : spirit::detail::as_variant {}; - - // N element case with unused - template - struct build_collapsed_variant - { - typedef boost::optional< - typename spirit::detail::as_variant< - typename fusion::result_of::pop_front::type - >::type - > type; - }; - - // 1 element case, no unused - template - struct build_collapsed_variant - : mpl::front {}; - - // 1 element case, with unused - template - struct build_collapsed_variant - : mpl::front {}; - - // 2 element case, no unused - template - struct build_collapsed_variant - : spirit::detail::as_variant {}; - - // 2 element case, with unused - template - struct build_collapsed_variant - { - typedef boost::optional< - typename mpl::deref< - typename mpl::next< - typename mpl::begin::type - >::type - >::type - > - type; - }; - } - - /////////////////////////////////////////////////////////////////////////// - // alternative_attribute_transform - // - // This transform is invoked for every attribute in an alternative allowing - // to modify the attribute type exposed by a component to the enclosing - // alternative component. By default no transformation is performed. - /////////////////////////////////////////////////////////////////////////// - template - struct alternative_attribute_transform - : mpl::identity - {}; - - /////////////////////////////////////////////////////////////////////////// - // build_variant - // - // Build a boost::variant from a fusion sequence. build_variant makes sure - // that 1) all attributes in the variant are unique 2) puts the unused - // attribute, if there is any, to the front and 3) collapses single element - // variants, variant to T. - /////////////////////////////////////////////////////////////////////////// - template - struct build_variant - { - // Remove all unused attributes. - typedef typename - filter_unused_attributes::type - filtered_attributes; - - typedef has_no_unused no_unused; - - // If the original attribute list does not contain any unused - // attributes, it is used, otherwise a single unused_type is - // pushed to the front of the list. This is to make sure that if - // there is an unused_type in the list, it is the first one. - typedef typename - mpl::eval_if< - no_unused, - mpl::identity, - fusion::result_of::push_front - >::type - attribute_sequence; - - // Make sure each of the types occur only once in the type list - typedef typename - mpl::fold< - attribute_sequence, mpl::vector<>, - mpl::if_< - mpl::contains, - mpl::_1, mpl::push_back - > - >::type - no_duplicates; - - // If there is only one type in the list of types we strip off the - // variant. IOTW, collapse single element variants, variant to T. - // Take note that this also collapses variant to T. - typedef typename - traits::detail::build_collapsed_variant< - no_duplicates, no_unused::value>::type - type; - }; - - namespace detail { - // Domain-agnostic class template partial specializations and - // type agnostic domain partial specializations are ambious. - // To resolve the ambiguity type agnostic domain partial - // specializations are dispatched via intermediate type. - template - struct transform_attribute_base; - - template - struct synthesize_attribute - { - typedef Attribute type; - static Attribute pre(unused_type) { return Attribute(); } - static void post(unused_type, Attribute const&) {} - static void fail(unused_type) {} - }; - } - /////////////////////////////////////////////////////////////////////////// - // transform_attribute - // - // Sometimes the user needs to transform the attribute types for certain - // attributes. This template can be used as a customization point, where - // the user is able specify specific transformation rules for any attribute - // type. - // - // Note: the transformations involving unused_type are internal details - // and may be subject to change at any time. - // - /////////////////////////////////////////////////////////////////////////// - template - struct transform_attribute - : detail::transform_attribute_base - { - BOOST_STATIC_ASSERT_MSG(!is_reference::value, - "Exposed cannot be a reference type"); - BOOST_STATIC_ASSERT_MSG(!is_reference::value, - "Transformed cannot be a reference type"); - }; - - template - struct transform_attribute - : detail::synthesize_attribute - {}; - - template - struct transform_attribute - : detail::synthesize_attribute - {}; - - /////////////////////////////////////////////////////////////////////////// - // swap_impl - // - // Swap (with proper handling of unused_types) - /////////////////////////////////////////////////////////////////////////// - template - void swap_impl(A& a, B& b) - { - A temp = a; - a = b; - b = temp; - } - - template - void swap_impl(T& a, T& b) - { - boost::core::invoke_swap(a, b); - } - - template - void swap_impl(A&, unused_type) - { - } - - template - void swap_impl(unused_type, A&) - { - } - - inline void swap_impl(unused_type, unused_type) - { - } - - /////////////////////////////////////////////////////////////////////////// - // Strips single element fusion vectors into its 'naked' - // form: vector --> T - /////////////////////////////////////////////////////////////////////////// - template - struct strip_single_element_vector - { - typedef T type; - }; - -#if !defined(BOOST_FUSION_HAS_VARIADIC_VECTOR) - template - struct strip_single_element_vector > - { - typedef T type; - }; -#endif - template - struct strip_single_element_vector > - { - typedef T type; - }; - - /////////////////////////////////////////////////////////////////////////// - // meta function to return whether the argument is a one element fusion - // sequence - /////////////////////////////////////////////////////////////////////////// - template ::value - , bool IsProtoExpr = proto::is_expr::value> - struct one_element_sequence - : mpl::false_ - {}; - - template - struct one_element_sequence - : mpl::bool_::value == 1> - {}; - - /////////////////////////////////////////////////////////////////////////// - // clear - // - // Clear data efficiently - /////////////////////////////////////////////////////////////////////////// - template - void clear(T& val); - - namespace detail - { - // this is used by the variant and fusion sequence dispatch - struct clear_visitor : static_visitor<> - { - template - void operator()(T& val) const - { - spirit::traits::clear(val); - } - }; - - // default - template - void clear_impl2(T& val, mpl::false_) - { - val = T(); - } - - // for fusion sequences - template - void clear_impl2(T& val, mpl::true_) - { - fusion::for_each(val, clear_visitor()); - } - - // dispatch default or fusion sequence - template - void clear_impl(T& val, mpl::false_) - { - clear_impl2(val, fusion::traits::is_sequence()); - } - - // STL containers - template - void clear_impl(T& val, mpl::true_) - { - val.clear(); - } - } - - template - struct clear_value - { - static void call(T& val) - { - detail::clear_impl(val, typename is_container::type()); - } - }; - - // optionals - template - struct clear_value > - { - static void call(boost::optional& val) - { - if (val) - val = none; // leave optional uninitialized - } - }; - - // variants - template - struct clear_value > - { - static void call(variant& val) - { - apply_visitor(detail::clear_visitor(), val); - } - }; - - // iterator range - template - struct clear_value > - { - static void call(iterator_range& val) - { - val = iterator_range(val.end(), val.end()); - } - }; - - // main dispatch - template - void clear(T& val) - { - clear_value::call(val); - } - - // for unused - inline void clear(unused_type) - { - } - - /////////////////////////////////////////////////////////////////////////// - namespace detail - { - template - struct print_fusion_sequence - { - print_fusion_sequence(Out& out_) - : out(out_), is_first(true) {} - - typedef void result_type; - - template - void operator()(T const& val) const - { - if (is_first) - is_first = false; - else - out << ", "; - spirit::traits::print_attribute(out, val); - } - - Out& out; - mutable bool is_first; - }; - - // print elements in a variant - template - struct print_visitor : static_visitor<> - { - print_visitor(Out& out_) : out(out_) {} - - template - void operator()(T const& val) const - { - spirit::traits::print_attribute(out, val); - } - - Out& out; - }; - } - - template - struct print_attribute_debug - { - // for plain data types - template - static void call_impl3(Out& out, T_ const& val, mpl::false_) - { - out << val; - } - - // for fusion data types - template - static void call_impl3(Out& out, T_ const& val, mpl::true_) - { - out << '['; - fusion::for_each(val, detail::print_fusion_sequence(out)); - out << ']'; - } - - // non-stl container - template - static void call_impl2(Out& out, T_ const& val, mpl::false_) - { - call_impl3(out, val, fusion::traits::is_sequence()); - } - - // stl container - template - static void call_impl2(Out& out, T_ const& val, mpl::true_) - { - out << '['; - if (!traits::is_empty(val)) - { - bool first = true; - typename container_iterator::type iend = traits::end(val); - for (typename container_iterator::type i = traits::begin(val); - !traits::compare(i, iend); traits::next(i)) - { - if (!first) - out << ", "; - first = false; - spirit::traits::print_attribute(out, traits::deref(i)); - } - } - out << ']'; - } - - // for variant types - template - static void call_impl(Out& out, T_ const& val, mpl::false_) - { - apply_visitor(detail::print_visitor(out), val); - } - - // for non-variant types - template - static void call_impl(Out& out, T_ const& val, mpl::true_) - { - call_impl2(out, val, is_container()); - } - - // main entry point - static void call(Out& out, T const& val) - { - call_impl(out, val, not_is_variant()); - } - }; - - template - struct print_attribute_debug > - { - static void call(Out& out, boost::optional const& val) - { - if (val) - spirit::traits::print_attribute(out, *val); - else - out << "[empty]"; - } - }; - - /////////////////////////////////////////////////////////////////////////// - template - inline void print_attribute(Out& out, T const& val) - { - print_attribute_debug::call(out, val); - } - - template - inline void print_attribute(Out&, unused_type) - { - } - - /////////////////////////////////////////////////////////////////////////// - // generate debug output for lookahead token (character) stream - namespace detail - { - struct token_printer_debug_for_chars - { - template - static void print(Out& o, Char c) - { - using namespace std; // allow for ADL to find the proper iscntrl - - if (c == static_cast('\a')) - o << "\\a"; - else if (c == static_cast('\b')) - o << "\\b"; - else if (c == static_cast('\f')) - o << "\\f"; - else if (c == static_cast('\n')) - o << "\\n"; - else if (c == static_cast('\r')) - o << "\\r"; - else if (c == static_cast('\t')) - o << "\\t"; - else if (c == static_cast('\v')) - o << "\\v"; - else if (c >= 0 && c < 127 && iscntrl(c)) - o << "\\" << std::oct << static_cast(c); - else - o << static_cast(c); - } - }; - - // for token types where the comparison with char constants wouldn't work - struct token_printer_debug - { - template - static void print(Out& o, T const& val) - { - o << val; - } - }; - } - - template - struct token_printer_debug - : mpl::if_< - mpl::and_< - is_convertible, is_convertible > - , detail::token_printer_debug_for_chars - , detail::token_printer_debug>::type - {}; - - template - inline void print_token(Out& out, T const& val) - { - // allow to customize the token printer routine - token_printer_debug::print(out, val); - } -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/attributes_fwd.hpp b/framework/contrib/boost/include/boost/spirit/home/support/attributes_fwd.hpp deleted file mode 100644 index a9a62fedb5f8..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/attributes_fwd.hpp +++ /dev/null @@ -1,294 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Hartmut Kaiser - Copyright (c) 2001-2011 Joel de Guzman - Copyright (c) 2010 Bryce Lelbach - - 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_ATTRIBUTES_FWD_OCT_01_2009_0715AM) -#define BOOST_SPIRIT_ATTRIBUTES_FWD_OCT_01_2009_0715AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#if (defined(__GNUC__) && (__GNUC__ < 4)) || \ - (defined(__APPLE__) && defined(__INTEL_COMPILER)) -#include -#endif -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace result_of -{ - // forward declaration only - template - struct extract_from; - - template - struct attribute_as; - - template - struct optional_value; - - template - struct begin; - - template - struct end; - - template - struct deref; -}}} - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - // Find out if T can be a strong substitute for Expected attribute - /////////////////////////////////////////////////////////////////////////// - template - struct is_substitute; - - /////////////////////////////////////////////////////////////////////////// - // Find out if T can be a weak substitute for Expected attribute - /////////////////////////////////////////////////////////////////////////// - template - struct is_weak_substitute; - - /////////////////////////////////////////////////////////////////////////// - // Determine if T is a proxy - /////////////////////////////////////////////////////////////////////////// - template - struct is_proxy; - - /////////////////////////////////////////////////////////////////////////// - // Retrieve the attribute type to use from the given type - // - // This is needed to extract the correct attribute type from proxy classes - // as utilized in FUSION_ADAPT_ADT et. al. - /////////////////////////////////////////////////////////////////////////// - template - struct attribute_type; - - /////////////////////////////////////////////////////////////////////////// - // Retrieve the size of a fusion sequence (compile time) - /////////////////////////////////////////////////////////////////////////// - template - struct sequence_size; - - /////////////////////////////////////////////////////////////////////////// - // Retrieve the size of an attribute (runtime) - /////////////////////////////////////////////////////////////////////////// - template - struct attribute_size; - - template - typename attribute_size::type - size(Attribute const& attr); - - /////////////////////////////////////////////////////////////////////////// - // Determines how we pass attributes to semantic actions. This - // may be specialized. By default, all attributes are wrapped in - // a fusion sequence, because the attribute has to be treated as being - // a single value in any case (even if it actually already is a fusion - // sequence in its own). - /////////////////////////////////////////////////////////////////////////// - template - struct pass_attribute; - - /////////////////////////////////////////////////////////////////////////// - template - struct optional_attribute; - - /////////////////////////////////////////////////////////////////////////// - // Sometimes the user needs to transform the attribute types for certain - // attributes. This template can be used as a customization point, where - // the user is able specify specific transformation rules for any attribute - // type. - /////////////////////////////////////////////////////////////////////////// - template - struct transform_attribute; - - /////////////////////////////////////////////////////////////////////////// - // Qi only - template - struct assign_to_attribute_from_iterators; - - template - void assign_to(Iterator const& first, Iterator const& last, Attribute& attr); - - template - void assign_to(Iterator const&, Iterator const&, unused_type); - - template - struct assign_to_attribute_from_value; - - template - struct assign_to_container_from_value; - - template - void assign_to(T const& val, Attribute& attr); - - template - void assign_to(T const&, unused_type); - - /////////////////////////////////////////////////////////////////////////// - // Karma only - template - struct extract_from_attribute; - - template - struct extract_from_container; - - template - typename spirit::result_of::extract_from::type - extract_from(Attribute const& attr, Context& ctx -#if (defined(__GNUC__) && (__GNUC__ < 4)) || \ - (defined(__APPLE__) && defined(__INTEL_COMPILER)) - , typename enable_if >::type* = NULL -#endif - ); - - /////////////////////////////////////////////////////////////////////////// - // Karma only - template - struct attribute_as; - - template - typename spirit::result_of::attribute_as::type - as(Attribute const& attr); - - template - bool valid_as(Attribute const& attr); - - /////////////////////////////////////////////////////////////////////////// - // return the type currently stored in the given variant - /////////////////////////////////////////////////////////////////////////// - template - struct variant_which; - - template - int which(T const& v); - - /////////////////////////////////////////////////////////////////////////// - // Determine, whether T is a variant like type - /////////////////////////////////////////////////////////////////////////// - template - struct not_is_variant; - - /////////////////////////////////////////////////////////////////////////// - // Determine, whether T is a variant like type - /////////////////////////////////////////////////////////////////////////// - template - struct not_is_optional; - - /////////////////////////////////////////////////////////////////////////// - // Clear data efficiently - /////////////////////////////////////////////////////////////////////////// - template - struct clear_value; - - /////////////////////////////////////////////////////////////////////// - // Determine the value type of the given container type - /////////////////////////////////////////////////////////////////////// - template - struct container_value; - - template - struct container_iterator; - - template - struct is_container; - - template - struct is_iterator_range; - - /////////////////////////////////////////////////////////////////////////// - template - struct handles_container; - - template - struct pass_through_container; - - /////////////////////////////////////////////////////////////////////////// - // Qi only - template - struct push_back_container; - - template - struct is_empty_container; - - template - struct make_container_attribute; - - /////////////////////////////////////////////////////////////////////// - // Determine the iterator type of the given container type - // Karma only - /////////////////////////////////////////////////////////////////////// - template - struct begin_container; - - template - struct end_container; - - template - struct deref_iterator; - - template - struct next_iterator; - - template - struct compare_iterators; - - /////////////////////////////////////////////////////////////////////////// - // Print the given attribute of type T to the stream given as Out - /////////////////////////////////////////////////////////////////////////// - template - struct print_attribute_debug; - - template - void print_attribute(Out&, T const&); - - template - void print_attribute(Out&, unused_type); - - /////////////////////////////////////////////////////////////////////////// - template - struct token_printer_debug; - - template - void print_token(Out&, T const&); - - /////////////////////////////////////////////////////////////////////////// - // Access attributes from a karma symbol table - /////////////////////////////////////////////////////////////////////////// - template - struct symbols_lookup; - - template - struct symbols_value; - - /////////////////////////////////////////////////////////////////////////// - // transform attribute types exposed from compound operator components - /////////////////////////////////////////////////////////////////////////// - template - struct alternative_attribute_transform; - - template - struct sequence_attribute_transform; - - template - struct permutation_attribute_transform; - - template - struct sequential_or_attribute_transform; -}}} - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/support/auto.hpp b/framework/contrib/boost/include/boost/spirit/home/support/auto.hpp deleted file mode 100644 index 69aa76094ecb..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/auto.hpp +++ /dev/null @@ -1,35 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2012 Joel de Guzman - - 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_AUTO_FEBRUARY_7_2012_0159PM) -#define BOOST_SPIRIT_AUTO_FEBRUARY_7_2012_0159PM - -#include -#include - -#if defined(_MSC_VER) -#pragma once -#endif - -#include - -// Support for c++11 auto. See: -// http://boost-spirit.com/home/articles/qi-example/zero-to-60-mph-in-2-seconds/ -// for more info - -#if defined(BOOST_NO_CXX11_AUTO_DECLARATIONS) - -#define BOOST_SPIRIT_AUTO(domain_, name, expr) \ - typedef boost::proto::result_of:: \ - deep_copy::type name##_expr_type; \ - BOOST_SPIRIT_ASSERT_MATCH( \ - boost::spirit::domain_::domain, name##_expr_type); \ - BOOST_AUTO(name, boost::proto::deep_copy(expr)); \ - /****/ - -#endif - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/auto/meta_create.hpp b/framework/contrib/boost/include/boost/spirit/home/support/auto/meta_create.hpp deleted file mode 100644 index e09d3e3d9627..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/auto/meta_create.hpp +++ /dev/null @@ -1,212 +0,0 @@ -// 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_SUPPORT_META_CREATE_NOV_21_2009_0327PM) -#define BOOST_SPIRIT_SUPPORT_META_CREATE_NOV_21_2009_0327PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// needed for workaround below -#if defined(__GNUC__) && ((__GNUC__ < 4) || (__GNUC__ == 4) && (__GNUC_MINOR__ < 3)) -#include -#endif - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - // This is the main dispatch point for meta_create to the correct domain - template - struct meta_create; - - /////////////////////////////////////////////////////////////////////////// - // This allows to query whether a valid mapping exists for the given data - // type to a component in the given domain - template - struct meta_create_exists : mpl::false_ {}; -}}} - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - namespace detail - { - template - struct add_const_ref - : add_reference::type> {}; - - template - struct remove_const_ref - : remove_const::type> {}; - -// starting with Boost V1.42 fusion::fold has been changed to be compatible -// with mpl::fold (the sequence of template parameters for the meta-function -// object has been changed) -#if BOOST_VERSION < 104200 - /////////////////////////////////////////////////////////////////////// - template - struct nary_proto_expr_function - { - template - struct result; - -// this is a workaround for older versions of g++ (< V4.3) which apparently have -// problems with the following template specialization -#if defined(__GNUC__) && ((__GNUC__ < 4) || (__GNUC__ == 4) && (__GNUC_MINOR__ < 3)) - template - struct result - { - BOOST_STATIC_ASSERT((is_same::value)); -#else - template - struct result - { -#endif - typedef typename remove_const_ref::type left_type; - typedef typename - spirit::traits::meta_create::type - right_type; - - typedef typename mpl::eval_if< - traits::not_is_unused - , proto::result_of::make_expr - , mpl::identity - >::type type; - }; - - template - typename result::type - operator()(T, unused_type const&) const - { - typedef spirit::traits::meta_create right_type; - return right_type::call(); - } - - template - typename result::type - operator()(T1, T2 const& t2) const - { - // we variants to the alternative operator - typedef spirit::traits::meta_create right_type; - return proto::make_expr(t2, right_type::call()); - } - }; -#else - /////////////////////////////////////////////////////////////////////// - template - struct nary_proto_expr_function - { - template - struct result; - -// this is a workaround for older versions of g++ (< V4.3) which apparently have -// problems with the following template specialization -#if defined(__GNUC__) && ((__GNUC__ < 4) || (__GNUC__ == 4) && (__GNUC_MINOR__ < 3)) - template - struct result - { - BOOST_STATIC_ASSERT((is_same::value)); -#else - template - struct result - { -#endif - typedef typename remove_const_ref::type left_type; - typedef typename - spirit::traits::meta_create::type - right_type; - - typedef typename mpl::eval_if< - traits::not_is_unused - , proto::result_of::make_expr - , mpl::identity - >::type type; - }; - - template - typename result::type - operator()(unused_type const&, T) const - { - typedef spirit::traits::meta_create right_type; - return right_type::call(); - } - - template - typename result::type - operator()(T1 const& t1, T2) const - { - // we variants to the alternative operator - typedef spirit::traits::meta_create right_type; - return proto::make_expr(t1, right_type::call()); - } - }; -#endif - } - - /////////////////////////////////////////////////////////////////////// - template - struct make_unary_proto_expr - { - typedef spirit::traits::meta_create subject_type; - - typedef typename proto::result_of::make_expr< - OpTag, typename subject_type::type - >::type type; - - static type call() - { - return proto::make_expr(subject_type::call()); - } - }; - - /////////////////////////////////////////////////////////////////////////// - template - struct make_nary_proto_expr - { - typedef detail::nary_proto_expr_function - make_proto_expr; - - typedef typename fusion::result_of::fold< - Sequence, unused_type, make_proto_expr - >::type type; - - static type call() - { - return fusion::fold(Sequence(), unused, make_proto_expr()); - } - }; - - /////////////////////////////////////////////////////////////////////////// - namespace detail - { - // Starting with newer versions of Proto, all Proto expressions are at - // the same time Fusion sequences. This is the correct behavior, but - // we need to distinguish between Fusion sequences and Proto - // expressions. This meta-function does exactly that. - template - struct is_fusion_sequence_but_not_proto_expr - : mpl::and_< - fusion::traits::is_sequence - , mpl::not_ > > - {}; - } -}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/auxiliary/attr_cast.hpp b/framework/contrib/boost/include/boost/spirit/home/support/auxiliary/attr_cast.hpp deleted file mode 100644 index e5be207716d7..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/auxiliary/attr_cast.hpp +++ /dev/null @@ -1,48 +0,0 @@ -// 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) - -#ifndef BOOST_SPIRIT_SUPPORT_AUXILIARY_ATTR_CAST_HPP -#define BOOST_SPIRIT_SUPPORT_AUXILIARY_ATTR_CAST_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // This one is the function that the user can call directly in order - // to create a customized attr_cast component - template - typename enable_if - , stateful_tag_type >::type - attr_cast(Expr const& expr) - { - return stateful_tag_type(expr); - } - - template - typename enable_if - , stateful_tag_type >::type - attr_cast(Expr const& expr) - { - return stateful_tag_type(expr); - } - - template - typename enable_if - , stateful_tag_type >::type - attr_cast(Expr const& expr) - { - return stateful_tag_type(expr); - } -}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/char_class.hpp b/framework/contrib/boost/include/boost/spirit/home/support/char_class.hpp deleted file mode 100644 index 5911f57a68d1..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/char_class.hpp +++ /dev/null @@ -1,982 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - 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_CHAR_CLASS_NOVEMBER_10_2006_0907AM) -#define BOOST_SPIRIT_CHAR_CLASS_NOVEMBER_10_2006_0907AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include - -#if defined(BOOST_MSVC) -# pragma warning(push) -# pragma warning(disable: 4127) // conditional expression is constant -# pragma warning(disable: 4800) // 'int' : forcing value to bool 'true' or 'false' warning -#endif - -namespace boost { namespace spirit { namespace detail -{ - // Here's the thing... typical encodings (except ASCII) deal with unsigned - // integers > 127. ASCII uses only 127. Yet, most char and wchar_t are signed. - // Thus, a char with value > 127 is negative (e.g. char 233 is -23). When you - // cast this to an unsigned int with 32 bits, you get 4294967273! - // - // The trick is to cast to an unsigned version of the source char first - // before casting to the target. {P.S. Don't worry about the code, the - // optimizer will optimize the if-else branches} - - template - TargetChar cast_char(SourceChar ch) - { - if (is_signed::value != is_signed::value) - { - if (is_signed::value) - { - // source is signed, target is unsigned - typedef typename make_unsigned::type USourceChar; - return TargetChar(USourceChar(ch)); - } - else - { - // source is unsigned, target is signed - typedef typename make_signed::type SSourceChar; - return TargetChar(SSourceChar(ch)); - } - } - else - { - // source and target has same signedness - return TargetChar(ch); // just cast - } - } -}}} - -namespace boost { namespace spirit { namespace tag -{ - struct char_ { BOOST_SPIRIT_IS_TAG() }; - struct string { BOOST_SPIRIT_IS_TAG() }; - - /////////////////////////////////////////////////////////////////////////// - // classification tags - struct alnum { BOOST_SPIRIT_IS_TAG() }; - struct alpha { BOOST_SPIRIT_IS_TAG() }; - struct digit { BOOST_SPIRIT_IS_TAG() }; - struct xdigit { BOOST_SPIRIT_IS_TAG() }; - struct cntrl { BOOST_SPIRIT_IS_TAG() }; - struct graph { BOOST_SPIRIT_IS_TAG() }; - struct print { BOOST_SPIRIT_IS_TAG() }; - struct punct { BOOST_SPIRIT_IS_TAG() }; - struct space { BOOST_SPIRIT_IS_TAG() }; - struct blank { BOOST_SPIRIT_IS_TAG() }; - - /////////////////////////////////////////////////////////////////////////// - // classification/conversion tags - struct no_case { BOOST_SPIRIT_IS_TAG() }; - struct lower { BOOST_SPIRIT_IS_TAG() }; - struct upper { BOOST_SPIRIT_IS_TAG() }; - struct lowernum { BOOST_SPIRIT_IS_TAG() }; - struct uppernum { BOOST_SPIRIT_IS_TAG() }; - struct ucs4 { BOOST_SPIRIT_IS_TAG() }; - struct encoding { BOOST_SPIRIT_IS_TAG() }; - -#if defined(BOOST_SPIRIT_UNICODE) -/////////////////////////////////////////////////////////////////////////// -// Unicode Major Categories -/////////////////////////////////////////////////////////////////////////// - struct letter { BOOST_SPIRIT_IS_TAG() }; - struct mark { BOOST_SPIRIT_IS_TAG() }; - struct number { BOOST_SPIRIT_IS_TAG() }; - struct separator { BOOST_SPIRIT_IS_TAG() }; - struct other { BOOST_SPIRIT_IS_TAG() }; - struct punctuation { BOOST_SPIRIT_IS_TAG() }; - struct symbol { BOOST_SPIRIT_IS_TAG() }; - -/////////////////////////////////////////////////////////////////////////// -// Unicode General Categories -/////////////////////////////////////////////////////////////////////////// - struct uppercase_letter { BOOST_SPIRIT_IS_TAG() }; - struct lowercase_letter { BOOST_SPIRIT_IS_TAG() }; - struct titlecase_letter { BOOST_SPIRIT_IS_TAG() }; - struct modifier_letter { BOOST_SPIRIT_IS_TAG() }; - struct other_letter { BOOST_SPIRIT_IS_TAG() }; - - struct nonspacing_mark { BOOST_SPIRIT_IS_TAG() }; - struct enclosing_mark { BOOST_SPIRIT_IS_TAG() }; - struct spacing_mark { BOOST_SPIRIT_IS_TAG() }; - - struct decimal_number { BOOST_SPIRIT_IS_TAG() }; - struct letter_number { BOOST_SPIRIT_IS_TAG() }; - struct other_number { BOOST_SPIRIT_IS_TAG() }; - - struct space_separator { BOOST_SPIRIT_IS_TAG() }; - struct line_separator { BOOST_SPIRIT_IS_TAG() }; - struct paragraph_separator { BOOST_SPIRIT_IS_TAG() }; - - struct control { BOOST_SPIRIT_IS_TAG() }; - struct format { BOOST_SPIRIT_IS_TAG() }; - struct private_use { BOOST_SPIRIT_IS_TAG() }; - struct surrogate { BOOST_SPIRIT_IS_TAG() }; - struct unassigned { BOOST_SPIRIT_IS_TAG() }; - - struct dash_punctuation { BOOST_SPIRIT_IS_TAG() }; - struct open_punctuation { BOOST_SPIRIT_IS_TAG() }; - struct close_punctuation { BOOST_SPIRIT_IS_TAG() }; - struct connector_punctuation { BOOST_SPIRIT_IS_TAG() }; - struct other_punctuation { BOOST_SPIRIT_IS_TAG() }; - struct initial_punctuation { BOOST_SPIRIT_IS_TAG() }; - struct final_punctuation { BOOST_SPIRIT_IS_TAG() }; - - struct math_symbol { BOOST_SPIRIT_IS_TAG() }; - struct currency_symbol { BOOST_SPIRIT_IS_TAG() }; - struct modifier_symbol { BOOST_SPIRIT_IS_TAG() }; - struct other_symbol { BOOST_SPIRIT_IS_TAG() }; - -/////////////////////////////////////////////////////////////////////////// -// Unicode Derived Categories -/////////////////////////////////////////////////////////////////////////// - struct alphabetic { BOOST_SPIRIT_IS_TAG() }; - struct uppercase { BOOST_SPIRIT_IS_TAG() }; - struct lowercase { BOOST_SPIRIT_IS_TAG() }; - struct white_space { BOOST_SPIRIT_IS_TAG() }; - struct hex_digit { BOOST_SPIRIT_IS_TAG() }; - struct noncharacter_code_point { BOOST_SPIRIT_IS_TAG() }; - struct default_ignorable_code_point { BOOST_SPIRIT_IS_TAG() }; - -/////////////////////////////////////////////////////////////////////////// -// Unicode Scripts -/////////////////////////////////////////////////////////////////////////// - struct adlam { BOOST_SPIRIT_IS_TAG() }; - struct caucasian_albanian { BOOST_SPIRIT_IS_TAG() }; - struct ahom { BOOST_SPIRIT_IS_TAG() }; - struct arabic { BOOST_SPIRIT_IS_TAG() }; - struct imperial_aramaic { BOOST_SPIRIT_IS_TAG() }; - struct armenian { BOOST_SPIRIT_IS_TAG() }; - struct avestan { BOOST_SPIRIT_IS_TAG() }; - struct balinese { BOOST_SPIRIT_IS_TAG() }; - struct bamum { BOOST_SPIRIT_IS_TAG() }; - struct bassa_vah { BOOST_SPIRIT_IS_TAG() }; - struct batak { BOOST_SPIRIT_IS_TAG() }; - struct bengali { BOOST_SPIRIT_IS_TAG() }; - struct bhaiksuki { BOOST_SPIRIT_IS_TAG() }; - struct bopomofo { BOOST_SPIRIT_IS_TAG() }; - struct brahmi { BOOST_SPIRIT_IS_TAG() }; - struct braille { BOOST_SPIRIT_IS_TAG() }; - struct buginese { BOOST_SPIRIT_IS_TAG() }; - struct buhid { BOOST_SPIRIT_IS_TAG() }; - struct chakma { BOOST_SPIRIT_IS_TAG() }; - struct canadian_aboriginal { BOOST_SPIRIT_IS_TAG() }; - struct carian { BOOST_SPIRIT_IS_TAG() }; - struct cham { BOOST_SPIRIT_IS_TAG() }; - struct cherokee { BOOST_SPIRIT_IS_TAG() }; - struct chorasmian { BOOST_SPIRIT_IS_TAG() }; - struct coptic { BOOST_SPIRIT_IS_TAG() }; - struct cypro_minoan { BOOST_SPIRIT_IS_TAG() }; - struct cypriot { BOOST_SPIRIT_IS_TAG() }; - struct cyrillic { BOOST_SPIRIT_IS_TAG() }; - struct devanagari { BOOST_SPIRIT_IS_TAG() }; - struct dives_akuru { BOOST_SPIRIT_IS_TAG() }; - struct dogra { BOOST_SPIRIT_IS_TAG() }; - struct deseret { BOOST_SPIRIT_IS_TAG() }; - struct duployan { BOOST_SPIRIT_IS_TAG() }; - struct egyptian_hieroglyphs { BOOST_SPIRIT_IS_TAG() }; - struct elbasan { BOOST_SPIRIT_IS_TAG() }; - struct elymaic { BOOST_SPIRIT_IS_TAG() }; - struct ethiopic { BOOST_SPIRIT_IS_TAG() }; - struct georgian { BOOST_SPIRIT_IS_TAG() }; - struct glagolitic { BOOST_SPIRIT_IS_TAG() }; - struct gunjala_gondi { BOOST_SPIRIT_IS_TAG() }; - struct masaram_gondi { BOOST_SPIRIT_IS_TAG() }; - struct gothic { BOOST_SPIRIT_IS_TAG() }; - struct grantha { BOOST_SPIRIT_IS_TAG() }; - struct greek { BOOST_SPIRIT_IS_TAG() }; - struct gujarati { BOOST_SPIRIT_IS_TAG() }; - struct gurmukhi { BOOST_SPIRIT_IS_TAG() }; - struct hangul { BOOST_SPIRIT_IS_TAG() }; - struct han { BOOST_SPIRIT_IS_TAG() }; - struct hanunoo { BOOST_SPIRIT_IS_TAG() }; - struct hatran { BOOST_SPIRIT_IS_TAG() }; - struct hebrew { BOOST_SPIRIT_IS_TAG() }; - struct hiragana { BOOST_SPIRIT_IS_TAG() }; - struct anatolian_hieroglyphs { BOOST_SPIRIT_IS_TAG() }; - struct pahawh_hmong { BOOST_SPIRIT_IS_TAG() }; - struct nyiakeng_puachue_hmong { BOOST_SPIRIT_IS_TAG() }; - struct katakana_or_hiragana { BOOST_SPIRIT_IS_TAG() }; - struct old_hungarian { BOOST_SPIRIT_IS_TAG() }; - struct old_italic { BOOST_SPIRIT_IS_TAG() }; - struct javanese { BOOST_SPIRIT_IS_TAG() }; - struct kayah_li { BOOST_SPIRIT_IS_TAG() }; - struct katakana { BOOST_SPIRIT_IS_TAG() }; - struct kawi { BOOST_SPIRIT_IS_TAG() }; - struct kharoshthi { BOOST_SPIRIT_IS_TAG() }; - struct khmer { BOOST_SPIRIT_IS_TAG() }; - struct khojki { BOOST_SPIRIT_IS_TAG() }; - struct khitan_small_script { BOOST_SPIRIT_IS_TAG() }; - struct kannada { BOOST_SPIRIT_IS_TAG() }; - struct kaithi { BOOST_SPIRIT_IS_TAG() }; - struct tai_tham { BOOST_SPIRIT_IS_TAG() }; - struct lao { BOOST_SPIRIT_IS_TAG() }; - struct latin { BOOST_SPIRIT_IS_TAG() }; - struct lepcha { BOOST_SPIRIT_IS_TAG() }; - struct limbu { BOOST_SPIRIT_IS_TAG() }; - struct linear_a { BOOST_SPIRIT_IS_TAG() }; - struct linear_b { BOOST_SPIRIT_IS_TAG() }; - struct lisu { BOOST_SPIRIT_IS_TAG() }; - struct lycian { BOOST_SPIRIT_IS_TAG() }; - struct lydian { BOOST_SPIRIT_IS_TAG() }; - struct mahajani { BOOST_SPIRIT_IS_TAG() }; - struct makasar { BOOST_SPIRIT_IS_TAG() }; - struct mandaic { BOOST_SPIRIT_IS_TAG() }; - struct manichaean { BOOST_SPIRIT_IS_TAG() }; - struct marchen { BOOST_SPIRIT_IS_TAG() }; - struct medefaidrin { BOOST_SPIRIT_IS_TAG() }; - struct mende_kikakui { BOOST_SPIRIT_IS_TAG() }; - struct meroitic_cursive { BOOST_SPIRIT_IS_TAG() }; - struct meroitic_hieroglyphs { BOOST_SPIRIT_IS_TAG() }; - struct malayalam { BOOST_SPIRIT_IS_TAG() }; - struct modi { BOOST_SPIRIT_IS_TAG() }; - struct mongolian { BOOST_SPIRIT_IS_TAG() }; - struct mro { BOOST_SPIRIT_IS_TAG() }; - struct meetei_mayek { BOOST_SPIRIT_IS_TAG() }; - struct multani { BOOST_SPIRIT_IS_TAG() }; - struct myanmar { BOOST_SPIRIT_IS_TAG() }; - struct nag_mundari { BOOST_SPIRIT_IS_TAG() }; - struct nandinagari { BOOST_SPIRIT_IS_TAG() }; - struct old_north_arabian { BOOST_SPIRIT_IS_TAG() }; - struct nabataean { BOOST_SPIRIT_IS_TAG() }; - struct newa { BOOST_SPIRIT_IS_TAG() }; - struct nko { BOOST_SPIRIT_IS_TAG() }; - struct nushu { BOOST_SPIRIT_IS_TAG() }; - struct ogham { BOOST_SPIRIT_IS_TAG() }; - struct ol_chiki { BOOST_SPIRIT_IS_TAG() }; - struct old_turkic { BOOST_SPIRIT_IS_TAG() }; - struct oriya { BOOST_SPIRIT_IS_TAG() }; - struct osage { BOOST_SPIRIT_IS_TAG() }; - struct osmanya { BOOST_SPIRIT_IS_TAG() }; - struct old_uyghur { BOOST_SPIRIT_IS_TAG() }; - struct palmyrene { BOOST_SPIRIT_IS_TAG() }; - struct pau_cin_hau { BOOST_SPIRIT_IS_TAG() }; - struct old_permic { BOOST_SPIRIT_IS_TAG() }; - struct phags_pa { BOOST_SPIRIT_IS_TAG() }; - struct inscriptional_pahlavi { BOOST_SPIRIT_IS_TAG() }; - struct psalter_pahlavi { BOOST_SPIRIT_IS_TAG() }; - struct phoenician { BOOST_SPIRIT_IS_TAG() }; - struct miao { BOOST_SPIRIT_IS_TAG() }; - struct inscriptional_parthian { BOOST_SPIRIT_IS_TAG() }; - struct rejang { BOOST_SPIRIT_IS_TAG() }; - struct hanifi_rohingya { BOOST_SPIRIT_IS_TAG() }; - struct runic { BOOST_SPIRIT_IS_TAG() }; - struct samaritan { BOOST_SPIRIT_IS_TAG() }; - struct old_south_arabian { BOOST_SPIRIT_IS_TAG() }; - struct saurashtra { BOOST_SPIRIT_IS_TAG() }; - struct signwriting { BOOST_SPIRIT_IS_TAG() }; - struct shavian { BOOST_SPIRIT_IS_TAG() }; - struct sharada { BOOST_SPIRIT_IS_TAG() }; - struct siddham { BOOST_SPIRIT_IS_TAG() }; - struct khudawadi { BOOST_SPIRIT_IS_TAG() }; - struct sinhala { BOOST_SPIRIT_IS_TAG() }; - struct sogdian { BOOST_SPIRIT_IS_TAG() }; - struct old_sogdian { BOOST_SPIRIT_IS_TAG() }; - struct sora_sompeng { BOOST_SPIRIT_IS_TAG() }; - struct soyombo { BOOST_SPIRIT_IS_TAG() }; - struct sundanese { BOOST_SPIRIT_IS_TAG() }; - struct syloti_nagri { BOOST_SPIRIT_IS_TAG() }; - struct syriac { BOOST_SPIRIT_IS_TAG() }; - struct tagbanwa { BOOST_SPIRIT_IS_TAG() }; - struct takri { BOOST_SPIRIT_IS_TAG() }; - struct tai_le { BOOST_SPIRIT_IS_TAG() }; - struct new_tai_lue { BOOST_SPIRIT_IS_TAG() }; - struct tamil { BOOST_SPIRIT_IS_TAG() }; - struct tangut { BOOST_SPIRIT_IS_TAG() }; - struct tai_viet { BOOST_SPIRIT_IS_TAG() }; - struct telugu { BOOST_SPIRIT_IS_TAG() }; - struct tifinagh { BOOST_SPIRIT_IS_TAG() }; - struct tagalog { BOOST_SPIRIT_IS_TAG() }; - struct thaana { BOOST_SPIRIT_IS_TAG() }; - struct thai { BOOST_SPIRIT_IS_TAG() }; - struct tibetan { BOOST_SPIRIT_IS_TAG() }; - struct tirhuta { BOOST_SPIRIT_IS_TAG() }; - struct tangsa { BOOST_SPIRIT_IS_TAG() }; - struct toto { BOOST_SPIRIT_IS_TAG() }; - struct ugaritic { BOOST_SPIRIT_IS_TAG() }; - struct vai { BOOST_SPIRIT_IS_TAG() }; - struct vithkuqi { BOOST_SPIRIT_IS_TAG() }; - struct warang_citi { BOOST_SPIRIT_IS_TAG() }; - struct wancho { BOOST_SPIRIT_IS_TAG() }; - struct old_persian { BOOST_SPIRIT_IS_TAG() }; - struct cuneiform { BOOST_SPIRIT_IS_TAG() }; - struct yezidi { BOOST_SPIRIT_IS_TAG() }; - struct yi { BOOST_SPIRIT_IS_TAG() }; - struct zanabazar_square { BOOST_SPIRIT_IS_TAG() }; - struct inherited { BOOST_SPIRIT_IS_TAG() }; - struct common { BOOST_SPIRIT_IS_TAG() }; - struct unknown { BOOST_SPIRIT_IS_TAG() }; -#endif - - /////////////////////////////////////////////////////////////////////////// - // This composite tag type encodes both the character - // set and the specific char tag (used for classification - // or conversion). char_code_base and char_encoding_base - // can be used to test for modifier membership (see modifier.hpp) - template - struct char_code_base {}; - - template - struct char_encoding_base {}; - - template - struct char_code - : char_code_base, char_encoding_base - { - BOOST_SPIRIT_IS_TAG() - typedef CharEncoding char_encoding; // e.g. ascii - typedef CharClass char_class; // e.g. tag::alnum - }; -}}} - -namespace boost { namespace spirit { namespace char_class -{ - /////////////////////////////////////////////////////////////////////////// - // Test characters for classification - template - struct classify - { - typedef typename CharEncoding::classify_type char_type; - -#define BOOST_SPIRIT_CLASSIFY(name, isname) \ - template \ - static bool \ - is(tag::name, Char ch) \ - { \ - return CharEncoding::isname \ - BOOST_PREVENT_MACRO_SUBSTITUTION \ - (detail::cast_char(ch)); \ - } \ - /***/ - - BOOST_SPIRIT_CLASSIFY(char_, ischar) - BOOST_SPIRIT_CLASSIFY(alnum, isalnum) - BOOST_SPIRIT_CLASSIFY(alpha, isalpha) - BOOST_SPIRIT_CLASSIFY(digit, isdigit) - BOOST_SPIRIT_CLASSIFY(xdigit, isxdigit) - BOOST_SPIRIT_CLASSIFY(cntrl, iscntrl) - BOOST_SPIRIT_CLASSIFY(graph, isgraph) - BOOST_SPIRIT_CLASSIFY(lower, islower) - BOOST_SPIRIT_CLASSIFY(print, isprint) - BOOST_SPIRIT_CLASSIFY(punct, ispunct) - BOOST_SPIRIT_CLASSIFY(space, isspace) - BOOST_SPIRIT_CLASSIFY(blank, isblank) - BOOST_SPIRIT_CLASSIFY(upper, isupper) - -#undef BOOST_SPIRIT_CLASSIFY - - template - static bool - is(tag::lowernum, Char ch) - { - return CharEncoding::islower(detail::cast_char(ch)) || - CharEncoding::isdigit(detail::cast_char(ch)); - } - - template - static bool - is(tag::uppernum, Char ch) - { - return CharEncoding::isupper(detail::cast_char(ch)) || - CharEncoding::isdigit(detail::cast_char(ch)); - } - -#if defined(BOOST_SPIRIT_UNICODE) - -#define BOOST_SPIRIT_UNICODE_CLASSIFY(name) \ - template \ - static bool \ - is(tag::name, Char ch) \ - { \ - return CharEncoding::is_##name(detail::cast_char(ch)); \ - } \ - /***/ - -/////////////////////////////////////////////////////////////////////////// -// Unicode Major Categories -/////////////////////////////////////////////////////////////////////////// - BOOST_SPIRIT_UNICODE_CLASSIFY(letter) - BOOST_SPIRIT_UNICODE_CLASSIFY(mark) - BOOST_SPIRIT_UNICODE_CLASSIFY(number) - BOOST_SPIRIT_UNICODE_CLASSIFY(separator) - BOOST_SPIRIT_UNICODE_CLASSIFY(other) - BOOST_SPIRIT_UNICODE_CLASSIFY(punctuation) - BOOST_SPIRIT_UNICODE_CLASSIFY(symbol) - -/////////////////////////////////////////////////////////////////////////// -// Unicode General Categories -/////////////////////////////////////////////////////////////////////////// - BOOST_SPIRIT_UNICODE_CLASSIFY(uppercase_letter) - BOOST_SPIRIT_UNICODE_CLASSIFY(lowercase_letter) - BOOST_SPIRIT_UNICODE_CLASSIFY(titlecase_letter) - BOOST_SPIRIT_UNICODE_CLASSIFY(modifier_letter) - BOOST_SPIRIT_UNICODE_CLASSIFY(other_letter) - - BOOST_SPIRIT_UNICODE_CLASSIFY(nonspacing_mark) - BOOST_SPIRIT_UNICODE_CLASSIFY(enclosing_mark) - BOOST_SPIRIT_UNICODE_CLASSIFY(spacing_mark) - - BOOST_SPIRIT_UNICODE_CLASSIFY(decimal_number) - BOOST_SPIRIT_UNICODE_CLASSIFY(letter_number) - BOOST_SPIRIT_UNICODE_CLASSIFY(other_number) - - BOOST_SPIRIT_UNICODE_CLASSIFY(space_separator) - BOOST_SPIRIT_UNICODE_CLASSIFY(line_separator) - BOOST_SPIRIT_UNICODE_CLASSIFY(paragraph_separator) - - BOOST_SPIRIT_UNICODE_CLASSIFY(control) - BOOST_SPIRIT_UNICODE_CLASSIFY(format) - BOOST_SPIRIT_UNICODE_CLASSIFY(private_use) - BOOST_SPIRIT_UNICODE_CLASSIFY(surrogate) - BOOST_SPIRIT_UNICODE_CLASSIFY(unassigned) - - BOOST_SPIRIT_UNICODE_CLASSIFY(dash_punctuation) - BOOST_SPIRIT_UNICODE_CLASSIFY(open_punctuation) - BOOST_SPIRIT_UNICODE_CLASSIFY(close_punctuation) - BOOST_SPIRIT_UNICODE_CLASSIFY(connector_punctuation) - BOOST_SPIRIT_UNICODE_CLASSIFY(other_punctuation) - BOOST_SPIRIT_UNICODE_CLASSIFY(initial_punctuation) - BOOST_SPIRIT_UNICODE_CLASSIFY(final_punctuation) - - BOOST_SPIRIT_UNICODE_CLASSIFY(math_symbol) - BOOST_SPIRIT_UNICODE_CLASSIFY(currency_symbol) - BOOST_SPIRIT_UNICODE_CLASSIFY(modifier_symbol) - BOOST_SPIRIT_UNICODE_CLASSIFY(other_symbol) - -/////////////////////////////////////////////////////////////////////////// -// Unicode Derived Categories -/////////////////////////////////////////////////////////////////////////// - BOOST_SPIRIT_UNICODE_CLASSIFY(alphabetic) - BOOST_SPIRIT_UNICODE_CLASSIFY(uppercase) - BOOST_SPIRIT_UNICODE_CLASSIFY(lowercase) - BOOST_SPIRIT_UNICODE_CLASSIFY(white_space) - BOOST_SPIRIT_UNICODE_CLASSIFY(hex_digit) - BOOST_SPIRIT_UNICODE_CLASSIFY(noncharacter_code_point) - BOOST_SPIRIT_UNICODE_CLASSIFY(default_ignorable_code_point) - -/////////////////////////////////////////////////////////////////////////// -// Unicode Scripts -/////////////////////////////////////////////////////////////////////////// - BOOST_SPIRIT_UNICODE_CLASSIFY(adlam) - BOOST_SPIRIT_UNICODE_CLASSIFY(caucasian_albanian) - BOOST_SPIRIT_UNICODE_CLASSIFY(ahom) - BOOST_SPIRIT_UNICODE_CLASSIFY(arabic) - BOOST_SPIRIT_UNICODE_CLASSIFY(imperial_aramaic) - BOOST_SPIRIT_UNICODE_CLASSIFY(armenian) - BOOST_SPIRIT_UNICODE_CLASSIFY(avestan) - BOOST_SPIRIT_UNICODE_CLASSIFY(balinese) - BOOST_SPIRIT_UNICODE_CLASSIFY(bamum) - BOOST_SPIRIT_UNICODE_CLASSIFY(bassa_vah) - BOOST_SPIRIT_UNICODE_CLASSIFY(batak) - BOOST_SPIRIT_UNICODE_CLASSIFY(bengali) - BOOST_SPIRIT_UNICODE_CLASSIFY(bhaiksuki) - BOOST_SPIRIT_UNICODE_CLASSIFY(bopomofo) - BOOST_SPIRIT_UNICODE_CLASSIFY(brahmi) - BOOST_SPIRIT_UNICODE_CLASSIFY(braille) - BOOST_SPIRIT_UNICODE_CLASSIFY(buginese) - BOOST_SPIRIT_UNICODE_CLASSIFY(buhid) - BOOST_SPIRIT_UNICODE_CLASSIFY(chakma) - BOOST_SPIRIT_UNICODE_CLASSIFY(canadian_aboriginal) - BOOST_SPIRIT_UNICODE_CLASSIFY(carian) - BOOST_SPIRIT_UNICODE_CLASSIFY(cham) - BOOST_SPIRIT_UNICODE_CLASSIFY(cherokee) - BOOST_SPIRIT_UNICODE_CLASSIFY(chorasmian) - BOOST_SPIRIT_UNICODE_CLASSIFY(coptic) - BOOST_SPIRIT_UNICODE_CLASSIFY(cypro_minoan) - BOOST_SPIRIT_UNICODE_CLASSIFY(cypriot) - BOOST_SPIRIT_UNICODE_CLASSIFY(cyrillic) - BOOST_SPIRIT_UNICODE_CLASSIFY(devanagari) - BOOST_SPIRIT_UNICODE_CLASSIFY(dives_akuru) - BOOST_SPIRIT_UNICODE_CLASSIFY(dogra) - BOOST_SPIRIT_UNICODE_CLASSIFY(deseret) - BOOST_SPIRIT_UNICODE_CLASSIFY(duployan) - BOOST_SPIRIT_UNICODE_CLASSIFY(egyptian_hieroglyphs) - BOOST_SPIRIT_UNICODE_CLASSIFY(elbasan) - BOOST_SPIRIT_UNICODE_CLASSIFY(elymaic) - BOOST_SPIRIT_UNICODE_CLASSIFY(ethiopic) - BOOST_SPIRIT_UNICODE_CLASSIFY(georgian) - BOOST_SPIRIT_UNICODE_CLASSIFY(glagolitic) - BOOST_SPIRIT_UNICODE_CLASSIFY(gunjala_gondi) - BOOST_SPIRIT_UNICODE_CLASSIFY(masaram_gondi) - BOOST_SPIRIT_UNICODE_CLASSIFY(gothic) - BOOST_SPIRIT_UNICODE_CLASSIFY(grantha) - BOOST_SPIRIT_UNICODE_CLASSIFY(greek) - BOOST_SPIRIT_UNICODE_CLASSIFY(gujarati) - BOOST_SPIRIT_UNICODE_CLASSIFY(gurmukhi) - BOOST_SPIRIT_UNICODE_CLASSIFY(hangul) - BOOST_SPIRIT_UNICODE_CLASSIFY(han) - BOOST_SPIRIT_UNICODE_CLASSIFY(hanunoo) - BOOST_SPIRIT_UNICODE_CLASSIFY(hatran) - BOOST_SPIRIT_UNICODE_CLASSIFY(hebrew) - BOOST_SPIRIT_UNICODE_CLASSIFY(hiragana) - BOOST_SPIRIT_UNICODE_CLASSIFY(anatolian_hieroglyphs) - BOOST_SPIRIT_UNICODE_CLASSIFY(pahawh_hmong) - BOOST_SPIRIT_UNICODE_CLASSIFY(nyiakeng_puachue_hmong) - BOOST_SPIRIT_UNICODE_CLASSIFY(katakana_or_hiragana) - BOOST_SPIRIT_UNICODE_CLASSIFY(old_hungarian) - BOOST_SPIRIT_UNICODE_CLASSIFY(old_italic) - BOOST_SPIRIT_UNICODE_CLASSIFY(javanese) - BOOST_SPIRIT_UNICODE_CLASSIFY(kayah_li) - BOOST_SPIRIT_UNICODE_CLASSIFY(katakana) - BOOST_SPIRIT_UNICODE_CLASSIFY(kawi) - BOOST_SPIRIT_UNICODE_CLASSIFY(kharoshthi) - BOOST_SPIRIT_UNICODE_CLASSIFY(khmer) - BOOST_SPIRIT_UNICODE_CLASSIFY(khojki) - BOOST_SPIRIT_UNICODE_CLASSIFY(khitan_small_script) - BOOST_SPIRIT_UNICODE_CLASSIFY(kannada) - BOOST_SPIRIT_UNICODE_CLASSIFY(kaithi) - BOOST_SPIRIT_UNICODE_CLASSIFY(tai_tham) - BOOST_SPIRIT_UNICODE_CLASSIFY(lao) - BOOST_SPIRIT_UNICODE_CLASSIFY(latin) - BOOST_SPIRIT_UNICODE_CLASSIFY(lepcha) - BOOST_SPIRIT_UNICODE_CLASSIFY(limbu) - BOOST_SPIRIT_UNICODE_CLASSIFY(linear_a) - BOOST_SPIRIT_UNICODE_CLASSIFY(linear_b) - BOOST_SPIRIT_UNICODE_CLASSIFY(lisu) - BOOST_SPIRIT_UNICODE_CLASSIFY(lycian) - BOOST_SPIRIT_UNICODE_CLASSIFY(lydian) - BOOST_SPIRIT_UNICODE_CLASSIFY(mahajani) - BOOST_SPIRIT_UNICODE_CLASSIFY(makasar) - BOOST_SPIRIT_UNICODE_CLASSIFY(mandaic) - BOOST_SPIRIT_UNICODE_CLASSIFY(manichaean) - BOOST_SPIRIT_UNICODE_CLASSIFY(marchen) - BOOST_SPIRIT_UNICODE_CLASSIFY(medefaidrin) - BOOST_SPIRIT_UNICODE_CLASSIFY(mende_kikakui) - BOOST_SPIRIT_UNICODE_CLASSIFY(meroitic_cursive) - BOOST_SPIRIT_UNICODE_CLASSIFY(meroitic_hieroglyphs) - BOOST_SPIRIT_UNICODE_CLASSIFY(malayalam) - BOOST_SPIRIT_UNICODE_CLASSIFY(modi) - BOOST_SPIRIT_UNICODE_CLASSIFY(mongolian) - BOOST_SPIRIT_UNICODE_CLASSIFY(mro) - BOOST_SPIRIT_UNICODE_CLASSIFY(meetei_mayek) - BOOST_SPIRIT_UNICODE_CLASSIFY(multani) - BOOST_SPIRIT_UNICODE_CLASSIFY(myanmar) - BOOST_SPIRIT_UNICODE_CLASSIFY(nag_mundari) - BOOST_SPIRIT_UNICODE_CLASSIFY(nandinagari) - BOOST_SPIRIT_UNICODE_CLASSIFY(old_north_arabian) - BOOST_SPIRIT_UNICODE_CLASSIFY(nabataean) - BOOST_SPIRIT_UNICODE_CLASSIFY(newa) - BOOST_SPIRIT_UNICODE_CLASSIFY(nko) - BOOST_SPIRIT_UNICODE_CLASSIFY(nushu) - BOOST_SPIRIT_UNICODE_CLASSIFY(ogham) - BOOST_SPIRIT_UNICODE_CLASSIFY(ol_chiki) - BOOST_SPIRIT_UNICODE_CLASSIFY(old_turkic) - BOOST_SPIRIT_UNICODE_CLASSIFY(oriya) - BOOST_SPIRIT_UNICODE_CLASSIFY(osage) - BOOST_SPIRIT_UNICODE_CLASSIFY(osmanya) - BOOST_SPIRIT_UNICODE_CLASSIFY(old_uyghur) - BOOST_SPIRIT_UNICODE_CLASSIFY(palmyrene) - BOOST_SPIRIT_UNICODE_CLASSIFY(pau_cin_hau) - BOOST_SPIRIT_UNICODE_CLASSIFY(old_permic) - BOOST_SPIRIT_UNICODE_CLASSIFY(phags_pa) - BOOST_SPIRIT_UNICODE_CLASSIFY(inscriptional_pahlavi) - BOOST_SPIRIT_UNICODE_CLASSIFY(psalter_pahlavi) - BOOST_SPIRIT_UNICODE_CLASSIFY(phoenician) - BOOST_SPIRIT_UNICODE_CLASSIFY(miao) - BOOST_SPIRIT_UNICODE_CLASSIFY(inscriptional_parthian) - BOOST_SPIRIT_UNICODE_CLASSIFY(rejang) - BOOST_SPIRIT_UNICODE_CLASSIFY(hanifi_rohingya) - BOOST_SPIRIT_UNICODE_CLASSIFY(runic) - BOOST_SPIRIT_UNICODE_CLASSIFY(samaritan) - BOOST_SPIRIT_UNICODE_CLASSIFY(old_south_arabian) - BOOST_SPIRIT_UNICODE_CLASSIFY(saurashtra) - BOOST_SPIRIT_UNICODE_CLASSIFY(signwriting) - BOOST_SPIRIT_UNICODE_CLASSIFY(shavian) - BOOST_SPIRIT_UNICODE_CLASSIFY(sharada) - BOOST_SPIRIT_UNICODE_CLASSIFY(siddham) - BOOST_SPIRIT_UNICODE_CLASSIFY(khudawadi) - BOOST_SPIRIT_UNICODE_CLASSIFY(sinhala) - BOOST_SPIRIT_UNICODE_CLASSIFY(sogdian) - BOOST_SPIRIT_UNICODE_CLASSIFY(old_sogdian) - BOOST_SPIRIT_UNICODE_CLASSIFY(sora_sompeng) - BOOST_SPIRIT_UNICODE_CLASSIFY(soyombo) - BOOST_SPIRIT_UNICODE_CLASSIFY(sundanese) - BOOST_SPIRIT_UNICODE_CLASSIFY(syloti_nagri) - BOOST_SPIRIT_UNICODE_CLASSIFY(syriac) - BOOST_SPIRIT_UNICODE_CLASSIFY(tagbanwa) - BOOST_SPIRIT_UNICODE_CLASSIFY(takri) - BOOST_SPIRIT_UNICODE_CLASSIFY(tai_le) - BOOST_SPIRIT_UNICODE_CLASSIFY(new_tai_lue) - BOOST_SPIRIT_UNICODE_CLASSIFY(tamil) - BOOST_SPIRIT_UNICODE_CLASSIFY(tangut) - BOOST_SPIRIT_UNICODE_CLASSIFY(tai_viet) - BOOST_SPIRIT_UNICODE_CLASSIFY(telugu) - BOOST_SPIRIT_UNICODE_CLASSIFY(tifinagh) - BOOST_SPIRIT_UNICODE_CLASSIFY(tagalog) - BOOST_SPIRIT_UNICODE_CLASSIFY(thaana) - BOOST_SPIRIT_UNICODE_CLASSIFY(thai) - BOOST_SPIRIT_UNICODE_CLASSIFY(tibetan) - BOOST_SPIRIT_UNICODE_CLASSIFY(tirhuta) - BOOST_SPIRIT_UNICODE_CLASSIFY(tangsa) - BOOST_SPIRIT_UNICODE_CLASSIFY(toto) - BOOST_SPIRIT_UNICODE_CLASSIFY(ugaritic) - BOOST_SPIRIT_UNICODE_CLASSIFY(vai) - BOOST_SPIRIT_UNICODE_CLASSIFY(vithkuqi) - BOOST_SPIRIT_UNICODE_CLASSIFY(warang_citi) - BOOST_SPIRIT_UNICODE_CLASSIFY(wancho) - BOOST_SPIRIT_UNICODE_CLASSIFY(old_persian) - BOOST_SPIRIT_UNICODE_CLASSIFY(cuneiform) - BOOST_SPIRIT_UNICODE_CLASSIFY(yezidi) - BOOST_SPIRIT_UNICODE_CLASSIFY(yi) - BOOST_SPIRIT_UNICODE_CLASSIFY(zanabazar_square) - BOOST_SPIRIT_UNICODE_CLASSIFY(inherited) - BOOST_SPIRIT_UNICODE_CLASSIFY(common) - BOOST_SPIRIT_UNICODE_CLASSIFY(unknown) - -#undef BOOST_SPIRIT_UNICODE_CLASSIFY -#endif - - }; - - /////////////////////////////////////////////////////////////////////////// - // Convert characters - template - struct convert - { - typedef typename CharEncoding::classify_type char_type; - - template - static Char - to(tag::lower, Char ch) - { - return static_cast( - CharEncoding::tolower(detail::cast_char(ch))); - } - - template - static Char - to(tag::upper, Char ch) - { - return static_cast( - CharEncoding::toupper(detail::cast_char(ch))); - } - - template - static Char - to(tag::ucs4, Char ch) - { - return static_cast( - CharEncoding::toucs4(detail::cast_char(ch))); - } - - template - static Char - to(unused_type, Char ch) - { - return ch; - } - }; - - /////////////////////////////////////////////////////////////////////////// - // Info on character classification - template - struct what - { -#define BOOST_SPIRIT_CLASSIFY_WHAT(name, isname) \ - static char const* is(tag::name) \ - { \ - return isname; \ - } \ - /***/ - - BOOST_SPIRIT_CLASSIFY_WHAT(char_, "char") - BOOST_SPIRIT_CLASSIFY_WHAT(alnum, "alnum") - BOOST_SPIRIT_CLASSIFY_WHAT(alpha, "alpha") - BOOST_SPIRIT_CLASSIFY_WHAT(digit, "digit") - BOOST_SPIRIT_CLASSIFY_WHAT(xdigit, "xdigit") - BOOST_SPIRIT_CLASSIFY_WHAT(cntrl, "cntrl") - BOOST_SPIRIT_CLASSIFY_WHAT(graph, "graph") - BOOST_SPIRIT_CLASSIFY_WHAT(lower, "lower") - BOOST_SPIRIT_CLASSIFY_WHAT(lowernum, "lowernum") - BOOST_SPIRIT_CLASSIFY_WHAT(print, "print") - BOOST_SPIRIT_CLASSIFY_WHAT(punct, "punct") - BOOST_SPIRIT_CLASSIFY_WHAT(space, "space") - BOOST_SPIRIT_CLASSIFY_WHAT(blank, "blank") - BOOST_SPIRIT_CLASSIFY_WHAT(upper, "upper") - BOOST_SPIRIT_CLASSIFY_WHAT(uppernum, "uppernum") - BOOST_SPIRIT_CLASSIFY_WHAT(ucs4, "ucs4") - -#undef BOOST_SPIRIT_CLASSIFY_WHAT - -#if defined(BOOST_SPIRIT_UNICODE) - -#define BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(name) \ - static char const* is(tag::name) \ - { \ - return BOOST_PP_STRINGIZE(name); \ - } \ - /***/ - -/////////////////////////////////////////////////////////////////////////// -// Unicode Major Categories -/////////////////////////////////////////////////////////////////////////// - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(letter) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(mark) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(number) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(separator) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(other) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(punctuation) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(symbol) - -/////////////////////////////////////////////////////////////////////////// -// Unicode General Categories -/////////////////////////////////////////////////////////////////////////// - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(uppercase_letter) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(lowercase_letter) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(titlecase_letter) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(modifier_letter) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(other_letter) - - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(nonspacing_mark) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(enclosing_mark) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(spacing_mark) - - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(decimal_number) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(letter_number) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(other_number) - - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(space_separator) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(line_separator) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(paragraph_separator) - - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(control) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(format) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(private_use) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(surrogate) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(unassigned) - - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(dash_punctuation) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(open_punctuation) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(close_punctuation) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(connector_punctuation) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(other_punctuation) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(initial_punctuation) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(final_punctuation) - - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(math_symbol) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(currency_symbol) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(modifier_symbol) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(other_symbol) - -/////////////////////////////////////////////////////////////////////////// -// Unicode Derived Categories -/////////////////////////////////////////////////////////////////////////// - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(alphabetic) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(uppercase) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(lowercase) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(white_space) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(hex_digit) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(noncharacter_code_point) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(default_ignorable_code_point) - -/////////////////////////////////////////////////////////////////////////// -// Unicode Scripts -/////////////////////////////////////////////////////////////////////////// - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(adlam) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(caucasian_albanian) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(ahom) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(arabic) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(imperial_aramaic) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(armenian) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(avestan) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(balinese) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(bamum) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(bassa_vah) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(batak) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(bengali) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(bhaiksuki) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(bopomofo) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(brahmi) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(braille) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(buginese) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(buhid) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(chakma) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(canadian_aboriginal) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(carian) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(cham) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(cherokee) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(chorasmian) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(coptic) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(cypro_minoan) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(cypriot) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(cyrillic) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(devanagari) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(dives_akuru) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(dogra) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(deseret) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(duployan) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(egyptian_hieroglyphs) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(elbasan) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(elymaic) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(ethiopic) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(georgian) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(glagolitic) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(gunjala_gondi) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(masaram_gondi) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(gothic) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(grantha) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(greek) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(gujarati) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(gurmukhi) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(hangul) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(han) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(hanunoo) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(hatran) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(hebrew) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(hiragana) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(anatolian_hieroglyphs) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(pahawh_hmong) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(nyiakeng_puachue_hmong) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(katakana_or_hiragana) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(old_hungarian) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(old_italic) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(javanese) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(kayah_li) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(katakana) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(kawi) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(kharoshthi) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(khmer) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(khojki) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(khitan_small_script) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(kannada) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(kaithi) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(tai_tham) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(lao) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(latin) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(lepcha) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(limbu) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(linear_a) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(linear_b) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(lisu) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(lycian) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(lydian) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(mahajani) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(makasar) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(mandaic) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(manichaean) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(marchen) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(medefaidrin) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(mende_kikakui) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(meroitic_cursive) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(meroitic_hieroglyphs) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(malayalam) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(modi) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(mongolian) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(mro) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(meetei_mayek) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(multani) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(myanmar) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(nag_mundari) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(nandinagari) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(old_north_arabian) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(nabataean) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(newa) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(nko) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(nushu) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(ogham) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(ol_chiki) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(old_turkic) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(oriya) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(osage) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(osmanya) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(old_uyghur) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(palmyrene) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(pau_cin_hau) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(old_permic) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(phags_pa) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(inscriptional_pahlavi) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(psalter_pahlavi) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(phoenician) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(miao) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(inscriptional_parthian) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(rejang) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(hanifi_rohingya) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(runic) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(samaritan) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(old_south_arabian) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(saurashtra) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(signwriting) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(shavian) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(sharada) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(siddham) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(khudawadi) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(sinhala) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(sogdian) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(old_sogdian) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(sora_sompeng) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(soyombo) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(sundanese) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(syloti_nagri) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(syriac) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(tagbanwa) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(takri) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(tai_le) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(new_tai_lue) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(tamil) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(tangut) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(tai_viet) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(telugu) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(tifinagh) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(tagalog) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(thaana) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(thai) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(tibetan) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(tirhuta) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(tangsa) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(toto) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(ugaritic) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(vai) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(vithkuqi) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(warang_citi) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(wancho) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(old_persian) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(cuneiform) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(yezidi) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(yi) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(zanabazar_square) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(inherited) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(common) - BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT(unknown) - -#undef BOOST_SPIRIT_UNICODE_CLASSIFY_WHAT -#endif - - }; -}}} - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - template - struct ischar - { - static bool call(CharParam const& ch) - { - return CharEncoding::ischar(int(ch)); - } - }; -}}} - -#if defined(BOOST_MSVC) -# pragma warning(pop) -#endif - -#endif - - diff --git a/framework/contrib/boost/include/boost/spirit/home/support/char_encoding/ascii.hpp b/framework/contrib/boost/include/boost/spirit/home/support/char_encoding/ascii.hpp deleted file mode 100644 index db215ce9503a..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/char_encoding/ascii.hpp +++ /dev/null @@ -1,337 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Hartmut Kaiser - Copyright (c) 2001-2011 Joel de Guzman - - 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_ASCII_APRIL_26_2006_1106PM) -#define BOOST_SPIRIT_ASCII_APRIL_26_2006_1106PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -// constants used to classify the single characters -/////////////////////////////////////////////////////////////////////////////// -#define BOOST_CC_DIGIT 0x0001 -#define BOOST_CC_XDIGIT 0x0002 -#define BOOST_CC_ALPHA 0x0004 -#define BOOST_CC_CTRL 0x0008 -#define BOOST_CC_LOWER 0x0010 -#define BOOST_CC_UPPER 0x0020 -#define BOOST_CC_SPACE 0x0040 -#define BOOST_CC_PUNCT 0x0080 - -namespace boost { namespace spirit { namespace char_encoding -{ - // The detection of isgraph(), isprint() and isblank() is done programmatically - // to keep the character type table small. Additionally, these functions are - // rather seldom used and the programmatic detection is very simple. - - /////////////////////////////////////////////////////////////////////////// - // ASCII character classification table - /////////////////////////////////////////////////////////////////////////// - const unsigned char ascii_char_types[] = - { - /* NUL 0 0 */ BOOST_CC_CTRL, - /* SOH 1 1 */ BOOST_CC_CTRL, - /* STX 2 2 */ BOOST_CC_CTRL, - /* ETX 3 3 */ BOOST_CC_CTRL, - /* EOT 4 4 */ BOOST_CC_CTRL, - /* ENQ 5 5 */ BOOST_CC_CTRL, - /* ACK 6 6 */ BOOST_CC_CTRL, - /* BEL 7 7 */ BOOST_CC_CTRL, - /* BS 8 8 */ BOOST_CC_CTRL, - /* HT 9 9 */ BOOST_CC_CTRL|BOOST_CC_SPACE, - /* NL 10 a */ BOOST_CC_CTRL|BOOST_CC_SPACE, - /* VT 11 b */ BOOST_CC_CTRL|BOOST_CC_SPACE, - /* NP 12 c */ BOOST_CC_CTRL|BOOST_CC_SPACE, - /* CR 13 d */ BOOST_CC_CTRL|BOOST_CC_SPACE, - /* SO 14 e */ BOOST_CC_CTRL, - /* SI 15 f */ BOOST_CC_CTRL, - /* DLE 16 10 */ BOOST_CC_CTRL, - /* DC1 17 11 */ BOOST_CC_CTRL, - /* DC2 18 12 */ BOOST_CC_CTRL, - /* DC3 19 13 */ BOOST_CC_CTRL, - /* DC4 20 14 */ BOOST_CC_CTRL, - /* NAK 21 15 */ BOOST_CC_CTRL, - /* SYN 22 16 */ BOOST_CC_CTRL, - /* ETB 23 17 */ BOOST_CC_CTRL, - /* CAN 24 18 */ BOOST_CC_CTRL, - /* EM 25 19 */ BOOST_CC_CTRL, - /* SUB 26 1a */ BOOST_CC_CTRL, - /* ESC 27 1b */ BOOST_CC_CTRL, - /* FS 28 1c */ BOOST_CC_CTRL, - /* GS 29 1d */ BOOST_CC_CTRL, - /* RS 30 1e */ BOOST_CC_CTRL, - /* US 31 1f */ BOOST_CC_CTRL, - /* SP 32 20 */ BOOST_CC_SPACE, - /* ! 33 21 */ BOOST_CC_PUNCT, - /* " 34 22 */ BOOST_CC_PUNCT, - /* # 35 23 */ BOOST_CC_PUNCT, - /* $ 36 24 */ BOOST_CC_PUNCT, - /* % 37 25 */ BOOST_CC_PUNCT, - /* & 38 26 */ BOOST_CC_PUNCT, - /* ' 39 27 */ BOOST_CC_PUNCT, - /* ( 40 28 */ BOOST_CC_PUNCT, - /* ) 41 29 */ BOOST_CC_PUNCT, - /* * 42 2a */ BOOST_CC_PUNCT, - /* + 43 2b */ BOOST_CC_PUNCT, - /* , 44 2c */ BOOST_CC_PUNCT, - /* - 45 2d */ BOOST_CC_PUNCT, - /* . 46 2e */ BOOST_CC_PUNCT, - /* / 47 2f */ BOOST_CC_PUNCT, - /* 0 48 30 */ BOOST_CC_DIGIT|BOOST_CC_XDIGIT, - /* 1 49 31 */ BOOST_CC_DIGIT|BOOST_CC_XDIGIT, - /* 2 50 32 */ BOOST_CC_DIGIT|BOOST_CC_XDIGIT, - /* 3 51 33 */ BOOST_CC_DIGIT|BOOST_CC_XDIGIT, - /* 4 52 34 */ BOOST_CC_DIGIT|BOOST_CC_XDIGIT, - /* 5 53 35 */ BOOST_CC_DIGIT|BOOST_CC_XDIGIT, - /* 6 54 36 */ BOOST_CC_DIGIT|BOOST_CC_XDIGIT, - /* 7 55 37 */ BOOST_CC_DIGIT|BOOST_CC_XDIGIT, - /* 8 56 38 */ BOOST_CC_DIGIT|BOOST_CC_XDIGIT, - /* 9 57 39 */ BOOST_CC_DIGIT|BOOST_CC_XDIGIT, - /* : 58 3a */ BOOST_CC_PUNCT, - /* ; 59 3b */ BOOST_CC_PUNCT, - /* < 60 3c */ BOOST_CC_PUNCT, - /* = 61 3d */ BOOST_CC_PUNCT, - /* > 62 3e */ BOOST_CC_PUNCT, - /* ? 63 3f */ BOOST_CC_PUNCT, - /* @ 64 40 */ BOOST_CC_PUNCT, - /* A 65 41 */ BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_UPPER, - /* B 66 42 */ BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_UPPER, - /* C 67 43 */ BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_UPPER, - /* D 68 44 */ BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_UPPER, - /* E 69 45 */ BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_UPPER, - /* F 70 46 */ BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_UPPER, - /* G 71 47 */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* H 72 48 */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* I 73 49 */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* J 74 4a */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* K 75 4b */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* L 76 4c */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* M 77 4d */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* N 78 4e */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* O 79 4f */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* P 80 50 */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* Q 81 51 */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* R 82 52 */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* S 83 53 */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* T 84 54 */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* U 85 55 */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* V 86 56 */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* W 87 57 */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* X 88 58 */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* Y 89 59 */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* Z 90 5a */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* [ 91 5b */ BOOST_CC_PUNCT, - /* \ 92 5c */ BOOST_CC_PUNCT, - /* ] 93 5d */ BOOST_CC_PUNCT, - /* ^ 94 5e */ BOOST_CC_PUNCT, - /* _ 95 5f */ BOOST_CC_PUNCT, - /* ` 96 60 */ BOOST_CC_PUNCT, - /* a 97 61 */ BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_LOWER, - /* b 98 62 */ BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_LOWER, - /* c 99 63 */ BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_LOWER, - /* d 100 64 */ BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_LOWER, - /* e 101 65 */ BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_LOWER, - /* f 102 66 */ BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_LOWER, - /* g 103 67 */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* h 104 68 */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* i 105 69 */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* j 106 6a */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* k 107 6b */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* l 108 6c */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* m 109 6d */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* n 110 6e */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* o 111 6f */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* p 112 70 */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* q 113 71 */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* r 114 72 */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* s 115 73 */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* t 116 74 */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* u 117 75 */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* v 118 76 */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* w 119 77 */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* x 120 78 */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* y 121 79 */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* z 122 7a */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* { 123 7b */ BOOST_CC_PUNCT, - /* | 124 7c */ BOOST_CC_PUNCT, - /* } 125 7d */ BOOST_CC_PUNCT, - /* ~ 126 7e */ BOOST_CC_PUNCT, - /* DEL 127 7f */ BOOST_CC_CTRL, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - }; - - /////////////////////////////////////////////////////////////////////////// - // Test characters for specified conditions (using ASCII) - /////////////////////////////////////////////////////////////////////////// - struct ascii - { - typedef char char_type; - typedef unsigned char classify_type; - - static bool - isascii_(int ch) - { - return 0 == (ch & ~0x7f); - } - - static bool - ischar(int ch) - { - return isascii_(ch); - } - - // *** Note on assertions: The precondition is that the calls to - // these functions do not violate the required range of ch (type int) - // which is that strict_ischar(ch) should be true. It is the - // responsibility of the caller to make sure this precondition is not - // violated. - - static bool - strict_ischar(int ch) - { - return ch >= 0 && ch <= 127; - } - - static bool - isalnum(int ch) - { - BOOST_ASSERT(strict_ischar(ch)); - return (ascii_char_types[ch] & BOOST_CC_ALPHA) - || (ascii_char_types[ch] & BOOST_CC_DIGIT); - } - - static bool - isalpha(int ch) - { - BOOST_ASSERT(strict_ischar(ch)); - return (ascii_char_types[ch] & BOOST_CC_ALPHA) ? true : false; - } - - static bool - isdigit(int ch) - { - BOOST_ASSERT(strict_ischar(ch)); - return (ascii_char_types[ch] & BOOST_CC_DIGIT) ? true : false; - } - - static bool - isxdigit(int ch) - { - BOOST_ASSERT(strict_ischar(ch)); - return (ascii_char_types[ch] & BOOST_CC_XDIGIT) ? true : false; - } - - static bool - iscntrl(int ch) - { - BOOST_ASSERT(strict_ischar(ch)); - return (ascii_char_types[ch] & BOOST_CC_CTRL) ? true : false; - } - - static bool - isgraph(int ch) - { - BOOST_ASSERT(strict_ischar(ch)); - return ('\x21' <= ch && ch <= '\x7e'); - } - - static bool - islower(int ch) - { - BOOST_ASSERT(strict_ischar(ch)); - return (ascii_char_types[ch] & BOOST_CC_LOWER) ? true : false; - } - - static bool - isprint(int ch) - { - BOOST_ASSERT(strict_ischar(ch)); - return ('\x20' <= ch && ch <= '\x7e'); - } - - static bool - ispunct(int ch) - { - BOOST_ASSERT(strict_ischar(ch)); - return (ascii_char_types[ch] & BOOST_CC_PUNCT) ? true : false; - } - - static bool - isspace(int ch) - { - BOOST_ASSERT(strict_ischar(ch)); - return (ascii_char_types[ch] & BOOST_CC_SPACE) ? true : false; - } - - static bool - isblank BOOST_PREVENT_MACRO_SUBSTITUTION (int ch) - { - BOOST_ASSERT(strict_ischar(ch)); - return ('\x09' == ch || '\x20' == ch); - } - - static bool - isupper(int ch) - { - BOOST_ASSERT(strict_ischar(ch)); - return (ascii_char_types[ch] & BOOST_CC_UPPER) ? true : false; - } - - /////////////////////////////////////////////////////////////////////// - // Simple character conversions - /////////////////////////////////////////////////////////////////////// - - static int - tolower(int ch) - { - BOOST_ASSERT(strict_ischar(ch)); - return isupper(ch) ? (ch - 'A' + 'a') : ch; - } - - static int - toupper(int ch) - { - BOOST_ASSERT(strict_ischar(ch)); - return islower(ch) ? (ch - 'a' + 'A') : ch; - } - - static ::boost::uint32_t - toucs4(int ch) - { - BOOST_ASSERT(strict_ischar(ch)); - return ch; - } - }; - -}}} - -/////////////////////////////////////////////////////////////////////////////// -// undefine macros -/////////////////////////////////////////////////////////////////////////////// -#undef BOOST_CC_DIGIT -#undef BOOST_CC_XDIGIT -#undef BOOST_CC_ALPHA -#undef BOOST_CC_CTRL -#undef BOOST_CC_LOWER -#undef BOOST_CC_UPPER -#undef BOOST_CC_PUNCT -#undef BOOST_CC_SPACE - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/char_encoding/iso8859_1.hpp b/framework/contrib/boost/include/boost/spirit/home/support/char_encoding/iso8859_1.hpp deleted file mode 100644 index adaec02b653c..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/char_encoding/iso8859_1.hpp +++ /dev/null @@ -1,728 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Hartmut Kaiser - Copyright (c) 2001-2011 Joel de Guzman - - 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_ISO8859_1_APRIL_26_2006_1106PM) -#define BOOST_SPIRIT_ISO8859_1_APRIL_26_2006_1106PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -// constants used to classify the single characters -/////////////////////////////////////////////////////////////////////////////// -#define BOOST_CC_DIGIT 0x0001 -#define BOOST_CC_XDIGIT 0x0002 -#define BOOST_CC_ALPHA 0x0004 -#define BOOST_CC_CTRL 0x0008 -#define BOOST_CC_LOWER 0x0010 -#define BOOST_CC_UPPER 0x0020 -#define BOOST_CC_SPACE 0x0040 -#define BOOST_CC_PUNCT 0x0080 - -namespace boost { namespace spirit { namespace char_encoding -{ - // The detection of isgraph(), isprint() and isblank() is done programmatically - // to keep the character type table small. Additionally, these functions are - // rather seldom used and the programmatic detection is very simple. - - /////////////////////////////////////////////////////////////////////////// - // ISO 8859-1 character classification table - // - // the comments intentionally contain non-ascii characters - // boostinspect:noascii - /////////////////////////////////////////////////////////////////////////// - const unsigned char iso8859_1_char_types[] = - { - /* NUL 0 0 */ BOOST_CC_CTRL, - /* SOH 1 1 */ BOOST_CC_CTRL, - /* STX 2 2 */ BOOST_CC_CTRL, - /* ETX 3 3 */ BOOST_CC_CTRL, - /* EOT 4 4 */ BOOST_CC_CTRL, - /* ENQ 5 5 */ BOOST_CC_CTRL, - /* ACK 6 6 */ BOOST_CC_CTRL, - /* BEL 7 7 */ BOOST_CC_CTRL, - /* BS 8 8 */ BOOST_CC_CTRL, - /* HT 9 9 */ BOOST_CC_CTRL|BOOST_CC_SPACE, - /* NL 10 a */ BOOST_CC_CTRL|BOOST_CC_SPACE, - /* VT 11 b */ BOOST_CC_CTRL|BOOST_CC_SPACE, - /* NP 12 c */ BOOST_CC_CTRL|BOOST_CC_SPACE, - /* CR 13 d */ BOOST_CC_CTRL|BOOST_CC_SPACE, - /* SO 14 e */ BOOST_CC_CTRL, - /* SI 15 f */ BOOST_CC_CTRL, - /* DLE 16 10 */ BOOST_CC_CTRL, - /* DC1 17 11 */ BOOST_CC_CTRL, - /* DC2 18 12 */ BOOST_CC_CTRL, - /* DC3 19 13 */ BOOST_CC_CTRL, - /* DC4 20 14 */ BOOST_CC_CTRL, - /* NAK 21 15 */ BOOST_CC_CTRL, - /* SYN 22 16 */ BOOST_CC_CTRL, - /* ETB 23 17 */ BOOST_CC_CTRL, - /* CAN 24 18 */ BOOST_CC_CTRL, - /* EM 25 19 */ BOOST_CC_CTRL, - /* SUB 26 1a */ BOOST_CC_CTRL, - /* ESC 27 1b */ BOOST_CC_CTRL, - /* FS 28 1c */ BOOST_CC_CTRL, - /* GS 29 1d */ BOOST_CC_CTRL, - /* RS 30 1e */ BOOST_CC_CTRL, - /* US 31 1f */ BOOST_CC_CTRL, - /* SP 32 20 */ BOOST_CC_SPACE, - /* ! 33 21 */ BOOST_CC_PUNCT, - /* " 34 22 */ BOOST_CC_PUNCT, - /* # 35 23 */ BOOST_CC_PUNCT, - /* $ 36 24 */ BOOST_CC_PUNCT, - /* % 37 25 */ BOOST_CC_PUNCT, - /* & 38 26 */ BOOST_CC_PUNCT, - /* ' 39 27 */ BOOST_CC_PUNCT, - /* ( 40 28 */ BOOST_CC_PUNCT, - /* ) 41 29 */ BOOST_CC_PUNCT, - /* * 42 2a */ BOOST_CC_PUNCT, - /* + 43 2b */ BOOST_CC_PUNCT, - /* , 44 2c */ BOOST_CC_PUNCT, - /* - 45 2d */ BOOST_CC_PUNCT, - /* . 46 2e */ BOOST_CC_PUNCT, - /* / 47 2f */ BOOST_CC_PUNCT, - /* 0 48 30 */ BOOST_CC_DIGIT|BOOST_CC_XDIGIT, - /* 1 49 31 */ BOOST_CC_DIGIT|BOOST_CC_XDIGIT, - /* 2 50 32 */ BOOST_CC_DIGIT|BOOST_CC_XDIGIT, - /* 3 51 33 */ BOOST_CC_DIGIT|BOOST_CC_XDIGIT, - /* 4 52 34 */ BOOST_CC_DIGIT|BOOST_CC_XDIGIT, - /* 5 53 35 */ BOOST_CC_DIGIT|BOOST_CC_XDIGIT, - /* 6 54 36 */ BOOST_CC_DIGIT|BOOST_CC_XDIGIT, - /* 7 55 37 */ BOOST_CC_DIGIT|BOOST_CC_XDIGIT, - /* 8 56 38 */ BOOST_CC_DIGIT|BOOST_CC_XDIGIT, - /* 9 57 39 */ BOOST_CC_DIGIT|BOOST_CC_XDIGIT, - /* : 58 3a */ BOOST_CC_PUNCT, - /* ; 59 3b */ BOOST_CC_PUNCT, - /* < 60 3c */ BOOST_CC_PUNCT, - /* = 61 3d */ BOOST_CC_PUNCT, - /* > 62 3e */ BOOST_CC_PUNCT, - /* ? 63 3f */ BOOST_CC_PUNCT, - /* @ 64 40 */ BOOST_CC_PUNCT, - /* A 65 41 */ BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_UPPER, - /* B 66 42 */ BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_UPPER, - /* C 67 43 */ BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_UPPER, - /* D 68 44 */ BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_UPPER, - /* E 69 45 */ BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_UPPER, - /* F 70 46 */ BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_UPPER, - /* G 71 47 */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* H 72 48 */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* I 73 49 */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* J 74 4a */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* K 75 4b */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* L 76 4c */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* M 77 4d */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* N 78 4e */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* O 79 4f */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* P 80 50 */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* Q 81 51 */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* R 82 52 */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* S 83 53 */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* T 84 54 */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* U 85 55 */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* V 86 56 */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* W 87 57 */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* X 88 58 */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* Y 89 59 */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* Z 90 5a */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* [ 91 5b */ BOOST_CC_PUNCT, - /* \ 92 5c */ BOOST_CC_PUNCT, - /* ] 93 5d */ BOOST_CC_PUNCT, - /* ^ 94 5e */ BOOST_CC_PUNCT, - /* _ 95 5f */ BOOST_CC_PUNCT, - /* ` 96 60 */ BOOST_CC_PUNCT, - /* a 97 61 */ BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_LOWER, - /* b 98 62 */ BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_LOWER, - /* c 99 63 */ BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_LOWER, - /* d 100 64 */ BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_LOWER, - /* e 101 65 */ BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_LOWER, - /* f 102 66 */ BOOST_CC_ALPHA|BOOST_CC_XDIGIT|BOOST_CC_LOWER, - /* g 103 67 */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* h 104 68 */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* i 105 69 */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* j 106 6a */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* k 107 6b */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* l 108 6c */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* m 109 6d */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* n 110 6e */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* o 111 6f */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* p 112 70 */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* q 113 71 */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* r 114 72 */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* s 115 73 */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* t 116 74 */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* u 117 75 */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* v 118 76 */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* w 119 77 */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* x 120 78 */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* y 121 79 */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* z 122 7a */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* { 123 7b */ BOOST_CC_PUNCT, - /* | 124 7c */ BOOST_CC_PUNCT, - /* } 125 7d */ BOOST_CC_PUNCT, - /* ~ 126 7e */ BOOST_CC_PUNCT, - /* DEL 127 7f */ BOOST_CC_CTRL, - /* -- 128 80 */ BOOST_CC_CTRL, - /* -- 129 81 */ BOOST_CC_CTRL, - /* -- 130 82 */ BOOST_CC_CTRL, - /* -- 131 83 */ BOOST_CC_CTRL, - /* -- 132 84 */ BOOST_CC_CTRL, - /* -- 133 85 */ BOOST_CC_CTRL, - /* -- 134 86 */ BOOST_CC_CTRL, - /* -- 135 87 */ BOOST_CC_CTRL, - /* -- 136 88 */ BOOST_CC_CTRL, - /* -- 137 89 */ BOOST_CC_CTRL, - /* -- 138 8a */ BOOST_CC_CTRL, - /* -- 139 8b */ BOOST_CC_CTRL, - /* -- 140 8c */ BOOST_CC_CTRL, - /* -- 141 8d */ BOOST_CC_CTRL, - /* -- 142 8e */ BOOST_CC_CTRL, - /* -- 143 8f */ BOOST_CC_CTRL, - /* -- 144 90 */ BOOST_CC_CTRL, - /* -- 145 91 */ BOOST_CC_CTRL, - /* -- 146 92 */ BOOST_CC_CTRL, - /* -- 147 93 */ BOOST_CC_CTRL, - /* -- 148 94 */ BOOST_CC_CTRL, - /* -- 149 95 */ BOOST_CC_CTRL, - /* -- 150 96 */ BOOST_CC_CTRL, - /* -- 151 97 */ BOOST_CC_CTRL, - /* -- 152 98 */ BOOST_CC_CTRL, - /* -- 153 99 */ BOOST_CC_CTRL, - /* -- 154 9a */ BOOST_CC_CTRL, - /* -- 155 9b */ BOOST_CC_CTRL, - /* -- 156 9c */ BOOST_CC_CTRL, - /* -- 157 9d */ BOOST_CC_CTRL, - /* -- 158 9e */ BOOST_CC_CTRL, - /* -- 159 9f */ BOOST_CC_CTRL, - /* 160 a0 */ BOOST_CC_SPACE, - /* � 161 a1 */ BOOST_CC_PUNCT, - /* � 162 a2 */ BOOST_CC_PUNCT, - /* � 163 a3 */ BOOST_CC_PUNCT, - /* � 164 a4 */ BOOST_CC_PUNCT, - /* � 165 a5 */ BOOST_CC_PUNCT, - /* � 166 a6 */ BOOST_CC_PUNCT, - /* � 167 a7 */ BOOST_CC_PUNCT, - /* � 168 a8 */ BOOST_CC_PUNCT, - /* � 169 a9 */ BOOST_CC_PUNCT, - /* � 170 aa */ BOOST_CC_PUNCT, - /* � 171 ab */ BOOST_CC_PUNCT, - /* � 172 ac */ BOOST_CC_PUNCT, - /* � 173 ad */ BOOST_CC_PUNCT, - /* � 174 ae */ BOOST_CC_PUNCT, - /* � 175 af */ BOOST_CC_PUNCT, - /* � 176 b0 */ BOOST_CC_PUNCT, - /* � 177 b1 */ BOOST_CC_PUNCT, - /* � 178 b2 */ BOOST_CC_DIGIT|BOOST_CC_PUNCT, - /* � 179 b3 */ BOOST_CC_DIGIT|BOOST_CC_PUNCT, - /* � 180 b4 */ BOOST_CC_PUNCT, - /* � 181 b5 */ BOOST_CC_PUNCT, - /* � 182 b6 */ BOOST_CC_PUNCT, - /* � 183 b7 */ BOOST_CC_PUNCT, - /* � 184 b8 */ BOOST_CC_PUNCT, - /* � 185 b9 */ BOOST_CC_DIGIT|BOOST_CC_PUNCT, - /* � 186 ba */ BOOST_CC_PUNCT, - /* � 187 bb */ BOOST_CC_PUNCT, - /* � 188 bc */ BOOST_CC_PUNCT, - /* � 189 bd */ BOOST_CC_PUNCT, - /* � 190 be */ BOOST_CC_PUNCT, - /* � 191 bf */ BOOST_CC_PUNCT, - /* � 192 c0 */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* � 193 c1 */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* � 194 c2 */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* � 195 c3 */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* � 196 c4 */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* � 197 c5 */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* � 198 c6 */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* � 199 c7 */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* � 200 c8 */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* � 201 c9 */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* � 202 ca */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* � 203 cb */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* � 204 cc */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* � 205 cd */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* � 206 ce */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* � 207 cf */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* � 208 d0 */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* � 209 d1 */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* � 210 d2 */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* � 211 d3 */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* � 212 d4 */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* � 213 d5 */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* � 214 d6 */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* � 215 d7 */ BOOST_CC_PUNCT, - /* � 216 d8 */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* � 217 d9 */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* � 218 da */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* � 219 db */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* � 220 dc */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* � 221 dd */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* � 222 de */ BOOST_CC_ALPHA|BOOST_CC_UPPER, - /* � 223 df */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* � 224 e0 */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* � 225 e1 */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* � 226 e2 */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* � 227 e3 */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* � 228 e4 */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* � 229 e5 */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* � 230 e6 */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* � 231 e7 */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* � 232 e8 */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* � 233 e9 */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* � 234 ea */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* � 235 eb */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* � 236 ec */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* � 237 ed */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* � 238 ee */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* � 239 ef */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* � 240 f0 */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* � 241 f1 */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* � 242 f2 */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* � 243 f3 */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* � 244 f4 */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* � 245 f5 */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* � 246 f6 */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* � 247 f7 */ BOOST_CC_PUNCT, - /* � 248 f8 */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* � 249 f9 */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* � 250 fa */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* � 251 fb */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* � 252 fc */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* � 253 fd */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* � 254 fe */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - /* � 255 ff */ BOOST_CC_ALPHA|BOOST_CC_LOWER, - }; - - /////////////////////////////////////////////////////////////////////////// - // ISO 8859-1 character conversion table - /////////////////////////////////////////////////////////////////////////// - const unsigned char iso8859_1_char_conversion[] = - { - /* NUL 0 0 */ '\0', - /* SOH 1 1 */ '\0', - /* STX 2 2 */ '\0', - /* ETX 3 3 */ '\0', - /* EOT 4 4 */ '\0', - /* ENQ 5 5 */ '\0', - /* ACK 6 6 */ '\0', - /* BEL 7 7 */ '\0', - /* BS 8 8 */ '\0', - /* HT 9 9 */ '\0', - /* NL 10 a */ '\0', - /* VT 11 b */ '\0', - /* NP 12 c */ '\0', - /* CR 13 d */ '\0', - /* SO 14 e */ '\0', - /* SI 15 f */ '\0', - /* DLE 16 10 */ '\0', - /* DC1 17 11 */ '\0', - /* DC2 18 12 */ '\0', - /* DC3 19 13 */ '\0', - /* DC4 20 14 */ '\0', - /* NAK 21 15 */ '\0', - /* SYN 22 16 */ '\0', - /* ETB 23 17 */ '\0', - /* CAN 24 18 */ '\0', - /* EM 25 19 */ '\0', - /* SUB 26 1a */ '\0', - /* ESC 27 1b */ '\0', - /* FS 28 1c */ '\0', - /* GS 29 1d */ '\0', - /* RS 30 1e */ '\0', - /* US 31 1f */ '\0', - /* SP 32 20 */ '\0', - /* ! 33 21 */ '\0', - /* " 34 22 */ '\0', - /* # 35 23 */ '\0', - /* $ 36 24 */ '\0', - /* % 37 25 */ '\0', - /* & 38 26 */ '\0', - /* ' 39 27 */ '\0', - /* ( 40 28 */ '\0', - /* ) 41 29 */ '\0', - /* * 42 2a */ '\0', - /* + 43 2b */ '\0', - /* , 44 2c */ '\0', - /* - 45 2d */ '\0', - /* . 46 2e */ '\0', - /* / 47 2f */ '\0', - /* 0 48 30 */ '\0', - /* 1 49 31 */ '\0', - /* 2 50 32 */ '\0', - /* 3 51 33 */ '\0', - /* 4 52 34 */ '\0', - /* 5 53 35 */ '\0', - /* 6 54 36 */ '\0', - /* 7 55 37 */ '\0', - /* 8 56 38 */ '\0', - /* 9 57 39 */ '\0', - /* : 58 3a */ '\0', - /* ; 59 3b */ '\0', - /* < 60 3c */ '\0', - /* = 61 3d */ '\0', - /* > 62 3e */ '\0', - /* ? 63 3f */ '\0', - /* @ 64 40 */ '\0', - /* A 65 41 */ 'a', - /* B 66 42 */ 'b', - /* C 67 43 */ 'c', - /* D 68 44 */ 'd', - /* E 69 45 */ 'e', - /* F 70 46 */ 'f', - /* G 71 47 */ 'g', - /* H 72 48 */ 'h', - /* I 73 49 */ 'i', - /* J 74 4a */ 'j', - /* K 75 4b */ 'k', - /* L 76 4c */ 'l', - /* M 77 4d */ 'm', - /* N 78 4e */ 'n', - /* O 79 4f */ 'o', - /* P 80 50 */ 'p', - /* Q 81 51 */ 'q', - /* R 82 52 */ 'r', - /* S 83 53 */ 's', - /* T 84 54 */ 't', - /* U 85 55 */ 'u', - /* V 86 56 */ 'v', - /* W 87 57 */ 'w', - /* X 88 58 */ 'x', - /* Y 89 59 */ 'y', - /* Z 90 5a */ 'z', - /* [ 91 5b */ '\0', - /* \ 92 5c */ '\0', - /* ] 93 5d */ '\0', - /* ^ 94 5e */ '\0', - /* _ 95 5f */ '\0', - /* ` 96 60 */ '\0', - /* a 97 61 */ 'A', - /* b 98 62 */ 'B', - /* c 99 63 */ 'C', - /* d 100 64 */ 'D', - /* e 101 65 */ 'E', - /* f 102 66 */ 'F', - /* g 103 67 */ 'G', - /* h 104 68 */ 'H', - /* i 105 69 */ 'I', - /* j 106 6a */ 'J', - /* k 107 6b */ 'K', - /* l 108 6c */ 'L', - /* m 109 6d */ 'M', - /* n 110 6e */ 'N', - /* o 111 6f */ 'O', - /* p 112 70 */ 'P', - /* q 113 71 */ 'Q', - /* r 114 72 */ 'R', - /* s 115 73 */ 'S', - /* t 116 74 */ 'T', - /* u 117 75 */ 'U', - /* v 118 76 */ 'V', - /* w 119 77 */ 'W', - /* x 120 78 */ 'X', - /* y 121 79 */ 'Y', - /* z 122 7a */ 'Z', - /* { 123 7b */ '\0', - /* | 124 7c */ '\0', - /* } 125 7d */ '\0', - /* ~ 126 7e */ '\0', - /* DEL 127 7f */ '\0', - /* -- 128 80 */ '\0', - /* -- 129 81 */ '\0', - /* -- 130 82 */ '\0', - /* -- 131 83 */ '\0', - /* -- 132 84 */ '\0', - /* -- 133 85 */ '\0', - /* -- 134 86 */ '\0', - /* -- 135 87 */ '\0', - /* -- 136 88 */ '\0', - /* -- 137 89 */ '\0', - /* -- 138 8a */ '\0', - /* -- 139 8b */ '\0', - /* -- 140 8c */ '\0', - /* -- 141 8d */ '\0', - /* -- 142 8e */ '\0', - /* -- 143 8f */ '\0', - /* -- 144 90 */ '\0', - /* -- 145 91 */ '\0', - /* -- 146 92 */ '\0', - /* -- 147 93 */ '\0', - /* -- 148 94 */ '\0', - /* -- 149 95 */ '\0', - /* -- 150 96 */ '\0', - /* -- 151 97 */ '\0', - /* -- 152 98 */ '\0', - /* -- 153 99 */ '\0', - /* -- 154 9a */ '\0', - /* -- 155 9b */ '\0', - /* -- 156 9c */ '\0', - /* -- 157 9d */ '\0', - /* -- 158 9e */ '\0', - /* -- 159 9f */ '\0', - /* 160 a0 */ '\0', - /* � 161 a1 */ '\0', - /* � 162 a2 */ '\0', - /* � 163 a3 */ '\0', - /* � 164 a4 */ '\0', - /* � 165 a5 */ '\0', - /* � 166 a6 */ '\0', - /* � 167 a7 */ '\0', - /* � 168 a8 */ '\0', - /* � 169 a9 */ '\0', - /* � 170 aa */ '\0', - /* � 171 ab */ '\0', - /* � 172 ac */ '\0', - /* � 173 ad */ '\0', - /* � 174 ae */ '\0', - /* � 175 af */ '\0', - /* � 176 b0 */ '\0', - /* � 177 b1 */ '\0', - /* � 178 b2 */ '\0', - /* � 179 b3 */ '\0', - /* � 180 b4 */ '\0', - /* � 181 b5 */ '\0', - /* � 182 b6 */ '\0', - /* � 183 b7 */ '\0', - /* � 184 b8 */ '\0', - /* � 185 b9 */ '\0', - /* � 186 ba */ '\0', - /* � 187 bb */ '\0', - /* � 188 bc */ '\0', - /* � 189 bd */ '\0', - /* � 190 be */ '\0', - /* � 191 bf */ '\0', - /* � 192 c0 */ 0xe0, - /* � 193 c1 */ 0xe1, - /* � 194 c2 */ 0xe2, - /* � 195 c3 */ 0xe3, - /* � 196 c4 */ 0xe4, - /* � 197 c5 */ 0xe5, - /* � 198 c6 */ 0xe6, - /* � 199 c7 */ 0xe7, - /* � 200 c8 */ 0xe8, - /* � 201 c9 */ 0xe9, - /* � 202 ca */ 0xea, - /* � 203 cb */ 0xeb, - /* � 204 cc */ 0xec, - /* � 205 cd */ 0xed, - /* � 206 ce */ 0xee, - /* � 207 cf */ 0xef, - /* � 208 d0 */ 0xf0, - /* � 209 d1 */ 0xf1, - /* � 210 d2 */ 0xf2, - /* � 211 d3 */ 0xf3, - /* � 212 d4 */ 0xf4, - /* � 213 d5 */ 0xf5, - /* � 214 d6 */ 0xf6, - /* � 215 d7 */ '\0', - /* � 216 d8 */ 0xf8, - /* � 217 d9 */ 0xf9, - /* � 218 da */ 0xfa, - /* � 219 db */ 0xfb, - /* � 220 dc */ 0xfc, - /* � 221 dd */ 0xfd, - /* � 222 de */ 0xfe, - /* � 223 df */ '\0', - /* � 224 e0 */ 0xc0, - /* � 225 e1 */ 0xc1, - /* � 226 e2 */ 0xc2, - /* � 227 e3 */ 0xc3, - /* � 228 e4 */ 0xc4, - /* � 229 e5 */ 0xc5, - /* � 230 e6 */ 0xc6, - /* � 231 e7 */ 0xc7, - /* � 232 e8 */ 0xc8, - /* � 233 e9 */ 0xc9, - /* � 234 ea */ 0xca, - /* � 235 eb */ 0xcb, - /* � 236 ec */ 0xcc, - /* � 237 ed */ 0xcd, - /* � 238 ee */ 0xce, - /* � 239 ef */ 0xcf, - /* � 240 f0 */ 0xd0, - /* � 241 f1 */ 0xd1, - /* � 242 f2 */ 0xd2, - /* � 243 f3 */ 0xd3, - /* � 244 f4 */ 0xd4, - /* � 245 f5 */ 0xd5, - /* � 246 f6 */ 0xd6, - /* � 247 f7 */ '\0', - /* � 248 f8 */ 0xd8, - /* � 249 f9 */ 0xd9, - /* � 250 fa */ 0xda, - /* � 251 fb */ 0xdb, - /* � 252 fc */ 0xdc, - /* � 253 fd */ 0xdd, - /* � 254 fe */ 0xde, - /* � 255 ff */ '\0', - }; - - /////////////////////////////////////////////////////////////////////////// - // Test characters for specified conditions (using iso8859-1) - /////////////////////////////////////////////////////////////////////////// - struct iso8859_1 - { - typedef unsigned char char_type; - typedef unsigned char classify_type; - - static bool - isascii_(int ch) - { - return 0 == (ch & ~0x7f); - } - - static bool - ischar(int ch) - { - // iso8859.1 uses all 8 bits - // we have to watch out for sign extensions - return (0 == (ch & ~0xff) || ~0 == (ch | 0xff)) != 0; - } - - // *** Note on assertions: The precondition is that the calls to - // these functions do not violate the required range of ch (type int) - // which is that strict_ischar(ch) should be true. It is the - // responsibility of the caller to make sure this precondition is not - // violated. - - static bool - strict_ischar(int ch) - { - return ch >= 0 && ch <= 255; - } - - static bool - isalnum(int ch) - { - BOOST_ASSERT(strict_ischar(ch)); - return (iso8859_1_char_types[ch] & BOOST_CC_ALPHA) - || (iso8859_1_char_types[ch] & BOOST_CC_DIGIT); - } - - static bool - isalpha(int ch) - { - BOOST_ASSERT(strict_ischar(ch)); - return (iso8859_1_char_types[ch] & BOOST_CC_ALPHA) != 0; - } - - static bool - isdigit(int ch) - { - BOOST_ASSERT(strict_ischar(ch)); - return (iso8859_1_char_types[ch] & BOOST_CC_DIGIT) != 0; - } - - static bool - isxdigit(int ch) - { - BOOST_ASSERT(strict_ischar(ch)); - return (iso8859_1_char_types[ch] & BOOST_CC_XDIGIT) != 0; - } - - static bool - iscntrl(int ch) - { - BOOST_ASSERT(strict_ischar(ch)); - return (iso8859_1_char_types[ch] & BOOST_CC_CTRL) != 0; - } - - static bool - isgraph(int ch) - { - return ('\x21' <= ch && ch <= '\x7e') || ('\xa1' <= ch && ch <= '\xff'); - } - - static bool - islower(int ch) - { - BOOST_ASSERT(strict_ischar(ch)); - return (iso8859_1_char_types[ch] & BOOST_CC_LOWER) != 0; - } - - static bool - isprint(int ch) - { - return ('\x20' <= ch && ch <= '\x7e') || ('\xa0' <= ch && ch <= '\xff'); - } - - static bool - ispunct(int ch) - { - BOOST_ASSERT(strict_ischar(ch)); - return (iso8859_1_char_types[ch] & BOOST_CC_PUNCT) != 0; - } - - static bool - isspace(int ch) - { - BOOST_ASSERT(strict_ischar(ch)); - return (iso8859_1_char_types[ch] & BOOST_CC_SPACE) != 0; - } - - static bool - isblank BOOST_PREVENT_MACRO_SUBSTITUTION (int ch) - { - BOOST_ASSERT(strict_ischar(ch)); - return ('\x09' == ch || '\x20' == ch || '\xa0' == ch); - } - - static bool - isupper(int ch) - { - BOOST_ASSERT(strict_ischar(ch)); - return (iso8859_1_char_types[ch] & BOOST_CC_UPPER) != 0; - } - - /////////////////////////////////////////////////////////////////////////// - // Simple character conversions - /////////////////////////////////////////////////////////////////////////// - - static int - tolower(int ch) - { - BOOST_ASSERT(strict_ischar(ch)); - return isupper(ch) && '\0' != iso8859_1_char_conversion[ch] ? - iso8859_1_char_conversion[ch] : ch; - } - - static int - toupper(int ch) - { - BOOST_ASSERT(strict_ischar(ch)); - return islower(ch) && '\0' != iso8859_1_char_conversion[ch] ? - iso8859_1_char_conversion[ch] : ch; - } - - static ::boost::uint32_t - toucs4(int ch) - { - // The first 256 characters in Unicode and the UCS are - // identical to those in ISO/IEC-8859-1. - BOOST_ASSERT(strict_ischar(ch)); - return ch; - } - }; - -}}} - -/////////////////////////////////////////////////////////////////////////////// -// undefine macros -/////////////////////////////////////////////////////////////////////////////// -#undef BOOST_CC_DIGIT -#undef BOOST_CC_XDIGIT -#undef BOOST_CC_ALPHA -#undef BOOST_CC_CTRL -#undef BOOST_CC_LOWER -#undef BOOST_CC_UPPER -#undef BOOST_CC_PUNCT -#undef BOOST_CC_SPACE - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/support/char_encoding/standard.hpp b/framework/contrib/boost/include/boost/spirit/home/support/char_encoding/standard.hpp deleted file mode 100644 index f738fb0abf48..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/char_encoding/standard.hpp +++ /dev/null @@ -1,168 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Hartmut Kaiser - Copyright (c) 2001-2011 Joel de Guzman - - 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_STANDARD_APRIL_26_2006_1106PM) -#define BOOST_SPIRIT_STANDARD_APRIL_26_2006_1106PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace char_encoding -{ - /////////////////////////////////////////////////////////////////////////// - // Test characters for specified conditions (using std functions) - /////////////////////////////////////////////////////////////////////////// - struct standard - { - typedef char char_type; - typedef unsigned char classify_type; - - static bool - isascii_(int ch) - { - return 0 == (ch & ~0x7f); - } - - static bool - ischar(int ch) - { - // uses all 8 bits - // we have to watch out for sign extensions - return (0 == (ch & ~0xff) || ~0 == (ch | 0xff)) != 0; - } - - // *** Note on assertions: The precondition is that the calls to - // these functions do not violate the required range of ch (int) - // which is that strict_ischar(ch) should be true. It is the - // responsibility of the caller to make sure this precondition is not - // violated. - - static bool - strict_ischar(int ch) - { - // ch should be representable as an unsigned char - return ch >= 0 && ch <= UCHAR_MAX; - } - - static bool - isalnum(int ch) - { - BOOST_ASSERT(strict_ischar(ch)); - return std::isalnum(ch) != 0; - } - - static bool - isalpha(int ch) - { - BOOST_ASSERT(strict_ischar(ch)); - return std::isalpha(ch) != 0; - } - - static bool - isdigit(int ch) - { - BOOST_ASSERT(strict_ischar(ch)); - return std::isdigit(ch) != 0; - } - - static bool - isxdigit(int ch) - { - BOOST_ASSERT(strict_ischar(ch)); - return std::isxdigit(ch) != 0; - } - - static bool - iscntrl(int ch) - { - BOOST_ASSERT(strict_ischar(ch)); - return std::iscntrl(ch) != 0; - } - - static bool - isgraph(int ch) - { - BOOST_ASSERT(strict_ischar(ch)); - return std::isgraph(ch) != 0; - } - - static bool - islower(int ch) - { - BOOST_ASSERT(strict_ischar(ch)); - return std::islower(ch) != 0; - } - - static bool - isprint(int ch) - { - BOOST_ASSERT(strict_ischar(ch)); - return std::isprint(ch) != 0; - } - - static bool - ispunct(int ch) - { - BOOST_ASSERT(strict_ischar(ch)); - return std::ispunct(ch) != 0; - } - - static bool - isspace(int ch) - { - BOOST_ASSERT(strict_ischar(ch)); - return std::isspace(ch) != 0; - } - - static bool - isblank BOOST_PREVENT_MACRO_SUBSTITUTION (int ch) - { - BOOST_ASSERT(strict_ischar(ch)); - return (ch == ' ' || ch == '\t'); - } - - static bool - isupper(int ch) - { - BOOST_ASSERT(strict_ischar(ch)); - return std::isupper(ch) != 0; - } - - /////////////////////////////////////////////////////////////////////////////// - // Simple character conversions - /////////////////////////////////////////////////////////////////////////////// - - static int - tolower(int ch) - { - BOOST_ASSERT(strict_ischar(ch)); - return std::tolower(ch); - } - - static int - toupper(int ch) - { - BOOST_ASSERT(strict_ischar(ch)); - return std::toupper(ch); - } - - static ::boost::uint32_t - toucs4(int ch) - { - BOOST_ASSERT(strict_ischar(ch)); - return ch; - } - }; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/char_encoding/standard_wide.hpp b/framework/contrib/boost/include/boost/spirit/home/support/char_encoding/standard_wide.hpp deleted file mode 100644 index e324bd2b824a..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/char_encoding/standard_wide.hpp +++ /dev/null @@ -1,189 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Hartmut Kaiser - Copyright (c) 2001-2011 Joel de Guzman - - 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_STANDARD_WIDE_NOVEMBER_10_2006_0913AM) -#define BOOST_SPIRIT_STANDARD_WIDE_NOVEMBER_10_2006_0913AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include - -#include -#include -#include - -#include - -namespace boost { namespace spirit { namespace traits -{ - template - struct wchar_t_size - { - BOOST_SPIRIT_ASSERT_MSG(N == 1 || N == 2 || N == 4, - not_supported_size_of_wchar_t, ()); - }; - - template <> struct wchar_t_size<1> { enum { mask = 0xff }; }; - template <> struct wchar_t_size<2> { enum { mask = 0xffff }; }; - template <> struct wchar_t_size<4> { enum { mask = 0xffffffff }; }; - -}}} - -namespace boost { namespace spirit { namespace char_encoding -{ - /////////////////////////////////////////////////////////////////////////// - // Test characters for specified conditions (using std wchar_t functions) - /////////////////////////////////////////////////////////////////////////// - - struct standard_wide - { - typedef wchar_t char_type; - typedef wchar_t classify_type; - - template - static typename std::char_traits::int_type - to_int_type(Char ch) - { - return std::char_traits::to_int_type(ch); - } - - template - static Char - to_char_type(typename std::char_traits::int_type ch) - { - return std::char_traits::to_char_type(ch); - } - - static bool - ischar(int ch) - { - // we have to watch out for sign extensions (casting is there to - // silence certain compilers complaining about signed/unsigned - // mismatch) - return ( - std::size_t(0) == - std::size_t(ch & ~traits::wchar_t_size::mask) || - std::size_t(~0) == - std::size_t(ch | traits::wchar_t_size::mask) - ) != 0; // any wchar_t, but no other bits set - } - - static bool - isalnum(wchar_t ch) - { - using namespace std; - return iswalnum(to_int_type(ch)) != 0; - } - - static bool - isalpha(wchar_t ch) - { - using namespace std; - return iswalpha(to_int_type(ch)) != 0; - } - - static bool - iscntrl(wchar_t ch) - { - using namespace std; - return iswcntrl(to_int_type(ch)) != 0; - } - - static bool - isdigit(wchar_t ch) - { - using namespace std; - return iswdigit(to_int_type(ch)) != 0; - } - - static bool - isgraph(wchar_t ch) - { - using namespace std; - return iswgraph(to_int_type(ch)) != 0; - } - - static bool - islower(wchar_t ch) - { - using namespace std; - return iswlower(to_int_type(ch)) != 0; - } - - static bool - isprint(wchar_t ch) - { - using namespace std; - return iswprint(to_int_type(ch)) != 0; - } - - static bool - ispunct(wchar_t ch) - { - using namespace std; - return iswpunct(to_int_type(ch)) != 0; - } - - static bool - isspace(wchar_t ch) - { - using namespace std; - return iswspace(to_int_type(ch)) != 0; - } - - static bool - isupper(wchar_t ch) - { - using namespace std; - return iswupper(to_int_type(ch)) != 0; - } - - static bool - isxdigit(wchar_t ch) - { - using namespace std; - return iswxdigit(to_int_type(ch)) != 0; - } - - static bool - isblank BOOST_PREVENT_MACRO_SUBSTITUTION (wchar_t ch) - { - return (ch == L' ' || ch == L'\t'); - } - - /////////////////////////////////////////////////////////////////////// - // Simple character conversions - /////////////////////////////////////////////////////////////////////// - - static wchar_t - tolower(wchar_t ch) - { - using namespace std; - return isupper(ch) ? - to_char_type(towlower(to_int_type(ch))) : ch; - } - - static wchar_t - toupper(wchar_t ch) - { - using namespace std; - return islower(ch) ? - to_char_type(towupper(to_int_type(ch))) : ch; - } - - static ::boost::uint32_t - toucs4(wchar_t ch) - { - return static_cast::type>(ch); - } - }; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/char_encoding/unicode.hpp b/framework/contrib/boost/include/boost/spirit/home/support/char_encoding/unicode.hpp deleted file mode 100644 index ee8aca6385c3..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/char_encoding/unicode.hpp +++ /dev/null @@ -1,415 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Hartmut Kaiser - Copyright (c) 2001-2011 Joel de Guzman - - 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_UNICODE_1_JANUARY_12_2010_0728PM) -#define BOOST_SPIRIT_UNICODE_1_JANUARY_12_2010_0728PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include - -namespace boost { namespace spirit { namespace char_encoding -{ - /////////////////////////////////////////////////////////////////////////// - // Test characters for specified conditions (using iso8859-1) - /////////////////////////////////////////////////////////////////////////// - struct unicode - { -#ifdef BOOST_NO_CXX11_CHAR32_T - typedef ::boost::uint32_t char_type; -#else - typedef char32_t char_type; -#endif - typedef ::boost::uint32_t classify_type; - - /////////////////////////////////////////////////////////////////////////// - // Posix stuff - /////////////////////////////////////////////////////////////////////////// - static bool - isascii_(char_type ch) - { - return 0 == (ch & ~0x7f); - } - - static bool - ischar(char_type ch) - { - // unicode code points in the range 0x00 to 0x10FFFF - return ch <= 0x10FFFF; - } - - static bool - isalnum(char_type ch) - { - return ucd::is_alphanumeric(ch); - } - - static bool - isalpha(char_type ch) - { - return ucd::is_alphabetic(ch); - } - - static bool - isdigit(char_type ch) - { - return ucd::is_decimal_number(ch); - } - - static bool - isxdigit(char_type ch) - { - return ucd::is_hex_digit(ch); - } - - static bool - iscntrl(char_type ch) - { - return ucd::is_control(ch); - } - - static bool - isgraph(char_type ch) - { - return ucd::is_graph(ch); - } - - static bool - islower(char_type ch) - { - return ucd::is_lowercase(ch); - } - - static bool - isprint(char_type ch) - { - return ucd::is_print(ch); - } - - static bool - ispunct(char_type ch) - { - return ucd::is_punctuation(ch); - } - - static bool - isspace(char_type ch) - { - return ucd::is_white_space(ch); - } - - static bool - isblank BOOST_PREVENT_MACRO_SUBSTITUTION (char_type ch) - { - return ucd::is_blank(ch); - } - - static bool - isupper(char_type ch) - { - return ucd::is_uppercase(ch); - } - - /////////////////////////////////////////////////////////////////////////// - // Simple character conversions - /////////////////////////////////////////////////////////////////////////// - - static char_type - tolower(char_type ch) - { - return ucd::to_lowercase(ch); - } - - static char_type - toupper(char_type ch) - { - return ucd::to_uppercase(ch); - } - - static ::boost::uint32_t - toucs4(char_type ch) - { - return ch; - } - - /////////////////////////////////////////////////////////////////////////// - // Major Categories - /////////////////////////////////////////////////////////////////////////// -#define BOOST_SPIRIT_MAJOR_CATEGORY(name) \ - static bool \ - is_##name(char_type ch) \ - { \ - return ucd::get_major_category(ch) == ucd::properties::name; \ - } \ - /***/ - - BOOST_SPIRIT_MAJOR_CATEGORY(letter) - BOOST_SPIRIT_MAJOR_CATEGORY(mark) - BOOST_SPIRIT_MAJOR_CATEGORY(number) - BOOST_SPIRIT_MAJOR_CATEGORY(separator) - BOOST_SPIRIT_MAJOR_CATEGORY(other) - BOOST_SPIRIT_MAJOR_CATEGORY(punctuation) - BOOST_SPIRIT_MAJOR_CATEGORY(symbol) - - /////////////////////////////////////////////////////////////////////////// - // General Categories - /////////////////////////////////////////////////////////////////////////// -#define BOOST_SPIRIT_CATEGORY(name) \ - static bool \ - is_##name(char_type ch) \ - { \ - return ucd::get_category(ch) == ucd::properties::name; \ - } \ - /***/ - - BOOST_SPIRIT_CATEGORY(uppercase_letter) - BOOST_SPIRIT_CATEGORY(lowercase_letter) - BOOST_SPIRIT_CATEGORY(titlecase_letter) - BOOST_SPIRIT_CATEGORY(modifier_letter) - BOOST_SPIRIT_CATEGORY(other_letter) - - BOOST_SPIRIT_CATEGORY(nonspacing_mark) - BOOST_SPIRIT_CATEGORY(enclosing_mark) - BOOST_SPIRIT_CATEGORY(spacing_mark) - - BOOST_SPIRIT_CATEGORY(decimal_number) - BOOST_SPIRIT_CATEGORY(letter_number) - BOOST_SPIRIT_CATEGORY(other_number) - - BOOST_SPIRIT_CATEGORY(space_separator) - BOOST_SPIRIT_CATEGORY(line_separator) - BOOST_SPIRIT_CATEGORY(paragraph_separator) - - BOOST_SPIRIT_CATEGORY(control) - BOOST_SPIRIT_CATEGORY(format) - BOOST_SPIRIT_CATEGORY(private_use) - BOOST_SPIRIT_CATEGORY(surrogate) - BOOST_SPIRIT_CATEGORY(unassigned) - - BOOST_SPIRIT_CATEGORY(dash_punctuation) - BOOST_SPIRIT_CATEGORY(open_punctuation) - BOOST_SPIRIT_CATEGORY(close_punctuation) - BOOST_SPIRIT_CATEGORY(connector_punctuation) - BOOST_SPIRIT_CATEGORY(other_punctuation) - BOOST_SPIRIT_CATEGORY(initial_punctuation) - BOOST_SPIRIT_CATEGORY(final_punctuation) - - BOOST_SPIRIT_CATEGORY(math_symbol) - BOOST_SPIRIT_CATEGORY(currency_symbol) - BOOST_SPIRIT_CATEGORY(modifier_symbol) - BOOST_SPIRIT_CATEGORY(other_symbol) - - /////////////////////////////////////////////////////////////////////////// - // Derived Categories - /////////////////////////////////////////////////////////////////////////// -#define BOOST_SPIRIT_DERIVED_CATEGORY(name) \ - static bool \ - is_##name(char_type ch) \ - { \ - return ucd::is_##name(ch); \ - } \ - /***/ - - BOOST_SPIRIT_DERIVED_CATEGORY(alphabetic) - BOOST_SPIRIT_DERIVED_CATEGORY(uppercase) - BOOST_SPIRIT_DERIVED_CATEGORY(lowercase) - BOOST_SPIRIT_DERIVED_CATEGORY(white_space) - BOOST_SPIRIT_DERIVED_CATEGORY(hex_digit) - BOOST_SPIRIT_DERIVED_CATEGORY(noncharacter_code_point) - BOOST_SPIRIT_DERIVED_CATEGORY(default_ignorable_code_point) - - /////////////////////////////////////////////////////////////////////////// - // Scripts - /////////////////////////////////////////////////////////////////////////// -#define BOOST_SPIRIT_SCRIPT(name) \ - static bool \ - is_##name(char_type ch) \ - { \ - return ucd::get_script(ch) == ucd::properties::name; \ - } \ - /***/ - - BOOST_SPIRIT_SCRIPT(adlam) - BOOST_SPIRIT_SCRIPT(caucasian_albanian) - BOOST_SPIRIT_SCRIPT(ahom) - BOOST_SPIRIT_SCRIPT(arabic) - BOOST_SPIRIT_SCRIPT(imperial_aramaic) - BOOST_SPIRIT_SCRIPT(armenian) - BOOST_SPIRIT_SCRIPT(avestan) - BOOST_SPIRIT_SCRIPT(balinese) - BOOST_SPIRIT_SCRIPT(bamum) - BOOST_SPIRIT_SCRIPT(bassa_vah) - BOOST_SPIRIT_SCRIPT(batak) - BOOST_SPIRIT_SCRIPT(bengali) - BOOST_SPIRIT_SCRIPT(bhaiksuki) - BOOST_SPIRIT_SCRIPT(bopomofo) - BOOST_SPIRIT_SCRIPT(brahmi) - BOOST_SPIRIT_SCRIPT(braille) - BOOST_SPIRIT_SCRIPT(buginese) - BOOST_SPIRIT_SCRIPT(buhid) - BOOST_SPIRIT_SCRIPT(chakma) - BOOST_SPIRIT_SCRIPT(canadian_aboriginal) - BOOST_SPIRIT_SCRIPT(carian) - BOOST_SPIRIT_SCRIPT(cham) - BOOST_SPIRIT_SCRIPT(cherokee) - BOOST_SPIRIT_SCRIPT(chorasmian) - BOOST_SPIRIT_SCRIPT(coptic) - BOOST_SPIRIT_SCRIPT(cypro_minoan) - BOOST_SPIRIT_SCRIPT(cypriot) - BOOST_SPIRIT_SCRIPT(cyrillic) - BOOST_SPIRIT_SCRIPT(devanagari) - BOOST_SPIRIT_SCRIPT(dives_akuru) - BOOST_SPIRIT_SCRIPT(dogra) - BOOST_SPIRIT_SCRIPT(deseret) - BOOST_SPIRIT_SCRIPT(duployan) - BOOST_SPIRIT_SCRIPT(egyptian_hieroglyphs) - BOOST_SPIRIT_SCRIPT(elbasan) - BOOST_SPIRIT_SCRIPT(elymaic) - BOOST_SPIRIT_SCRIPT(ethiopic) - BOOST_SPIRIT_SCRIPT(georgian) - BOOST_SPIRIT_SCRIPT(glagolitic) - BOOST_SPIRIT_SCRIPT(gunjala_gondi) - BOOST_SPIRIT_SCRIPT(masaram_gondi) - BOOST_SPIRIT_SCRIPT(gothic) - BOOST_SPIRIT_SCRIPT(grantha) - BOOST_SPIRIT_SCRIPT(greek) - BOOST_SPIRIT_SCRIPT(gujarati) - BOOST_SPIRIT_SCRIPT(gurmukhi) - BOOST_SPIRIT_SCRIPT(hangul) - BOOST_SPIRIT_SCRIPT(han) - BOOST_SPIRIT_SCRIPT(hanunoo) - BOOST_SPIRIT_SCRIPT(hatran) - BOOST_SPIRIT_SCRIPT(hebrew) - BOOST_SPIRIT_SCRIPT(hiragana) - BOOST_SPIRIT_SCRIPT(anatolian_hieroglyphs) - BOOST_SPIRIT_SCRIPT(pahawh_hmong) - BOOST_SPIRIT_SCRIPT(nyiakeng_puachue_hmong) - BOOST_SPIRIT_SCRIPT(katakana_or_hiragana) - BOOST_SPIRIT_SCRIPT(old_hungarian) - BOOST_SPIRIT_SCRIPT(old_italic) - BOOST_SPIRIT_SCRIPT(javanese) - BOOST_SPIRIT_SCRIPT(kayah_li) - BOOST_SPIRIT_SCRIPT(katakana) - BOOST_SPIRIT_SCRIPT(kawi) - BOOST_SPIRIT_SCRIPT(kharoshthi) - BOOST_SPIRIT_SCRIPT(khmer) - BOOST_SPIRIT_SCRIPT(khojki) - BOOST_SPIRIT_SCRIPT(khitan_small_script) - BOOST_SPIRIT_SCRIPT(kannada) - BOOST_SPIRIT_SCRIPT(kaithi) - BOOST_SPIRIT_SCRIPT(tai_tham) - BOOST_SPIRIT_SCRIPT(lao) - BOOST_SPIRIT_SCRIPT(latin) - BOOST_SPIRIT_SCRIPT(lepcha) - BOOST_SPIRIT_SCRIPT(limbu) - BOOST_SPIRIT_SCRIPT(linear_a) - BOOST_SPIRIT_SCRIPT(linear_b) - BOOST_SPIRIT_SCRIPT(lisu) - BOOST_SPIRIT_SCRIPT(lycian) - BOOST_SPIRIT_SCRIPT(lydian) - BOOST_SPIRIT_SCRIPT(mahajani) - BOOST_SPIRIT_SCRIPT(makasar) - BOOST_SPIRIT_SCRIPT(mandaic) - BOOST_SPIRIT_SCRIPT(manichaean) - BOOST_SPIRIT_SCRIPT(marchen) - BOOST_SPIRIT_SCRIPT(medefaidrin) - BOOST_SPIRIT_SCRIPT(mende_kikakui) - BOOST_SPIRIT_SCRIPT(meroitic_cursive) - BOOST_SPIRIT_SCRIPT(meroitic_hieroglyphs) - BOOST_SPIRIT_SCRIPT(malayalam) - BOOST_SPIRIT_SCRIPT(modi) - BOOST_SPIRIT_SCRIPT(mongolian) - BOOST_SPIRIT_SCRIPT(mro) - BOOST_SPIRIT_SCRIPT(meetei_mayek) - BOOST_SPIRIT_SCRIPT(multani) - BOOST_SPIRIT_SCRIPT(myanmar) - BOOST_SPIRIT_SCRIPT(nag_mundari) - BOOST_SPIRIT_SCRIPT(nandinagari) - BOOST_SPIRIT_SCRIPT(old_north_arabian) - BOOST_SPIRIT_SCRIPT(nabataean) - BOOST_SPIRIT_SCRIPT(newa) - BOOST_SPIRIT_SCRIPT(nko) - BOOST_SPIRIT_SCRIPT(nushu) - BOOST_SPIRIT_SCRIPT(ogham) - BOOST_SPIRIT_SCRIPT(ol_chiki) - BOOST_SPIRIT_SCRIPT(old_turkic) - BOOST_SPIRIT_SCRIPT(oriya) - BOOST_SPIRIT_SCRIPT(osage) - BOOST_SPIRIT_SCRIPT(osmanya) - BOOST_SPIRIT_SCRIPT(old_uyghur) - BOOST_SPIRIT_SCRIPT(palmyrene) - BOOST_SPIRIT_SCRIPT(pau_cin_hau) - BOOST_SPIRIT_SCRIPT(old_permic) - BOOST_SPIRIT_SCRIPT(phags_pa) - BOOST_SPIRIT_SCRIPT(inscriptional_pahlavi) - BOOST_SPIRIT_SCRIPT(psalter_pahlavi) - BOOST_SPIRIT_SCRIPT(phoenician) - BOOST_SPIRIT_SCRIPT(miao) - BOOST_SPIRIT_SCRIPT(inscriptional_parthian) - BOOST_SPIRIT_SCRIPT(rejang) - BOOST_SPIRIT_SCRIPT(hanifi_rohingya) - BOOST_SPIRIT_SCRIPT(runic) - BOOST_SPIRIT_SCRIPT(samaritan) - BOOST_SPIRIT_SCRIPT(old_south_arabian) - BOOST_SPIRIT_SCRIPT(saurashtra) - BOOST_SPIRIT_SCRIPT(signwriting) - BOOST_SPIRIT_SCRIPT(shavian) - BOOST_SPIRIT_SCRIPT(sharada) - BOOST_SPIRIT_SCRIPT(siddham) - BOOST_SPIRIT_SCRIPT(khudawadi) - BOOST_SPIRIT_SCRIPT(sinhala) - BOOST_SPIRIT_SCRIPT(sogdian) - BOOST_SPIRIT_SCRIPT(old_sogdian) - BOOST_SPIRIT_SCRIPT(sora_sompeng) - BOOST_SPIRIT_SCRIPT(soyombo) - BOOST_SPIRIT_SCRIPT(sundanese) - BOOST_SPIRIT_SCRIPT(syloti_nagri) - BOOST_SPIRIT_SCRIPT(syriac) - BOOST_SPIRIT_SCRIPT(tagbanwa) - BOOST_SPIRIT_SCRIPT(takri) - BOOST_SPIRIT_SCRIPT(tai_le) - BOOST_SPIRIT_SCRIPT(new_tai_lue) - BOOST_SPIRIT_SCRIPT(tamil) - BOOST_SPIRIT_SCRIPT(tangut) - BOOST_SPIRIT_SCRIPT(tai_viet) - BOOST_SPIRIT_SCRIPT(telugu) - BOOST_SPIRIT_SCRIPT(tifinagh) - BOOST_SPIRIT_SCRIPT(tagalog) - BOOST_SPIRIT_SCRIPT(thaana) - BOOST_SPIRIT_SCRIPT(thai) - BOOST_SPIRIT_SCRIPT(tibetan) - BOOST_SPIRIT_SCRIPT(tirhuta) - BOOST_SPIRIT_SCRIPT(tangsa) - BOOST_SPIRIT_SCRIPT(toto) - BOOST_SPIRIT_SCRIPT(ugaritic) - BOOST_SPIRIT_SCRIPT(vai) - BOOST_SPIRIT_SCRIPT(vithkuqi) - BOOST_SPIRIT_SCRIPT(warang_citi) - BOOST_SPIRIT_SCRIPT(wancho) - BOOST_SPIRIT_SCRIPT(old_persian) - BOOST_SPIRIT_SCRIPT(cuneiform) - BOOST_SPIRIT_SCRIPT(yezidi) - BOOST_SPIRIT_SCRIPT(yi) - BOOST_SPIRIT_SCRIPT(zanabazar_square) - BOOST_SPIRIT_SCRIPT(inherited) - BOOST_SPIRIT_SCRIPT(common) - BOOST_SPIRIT_SCRIPT(unknown) - -#undef BOOST_SPIRIT_MAJOR_CATEGORY -#undef BOOST_SPIRIT_CATEGORY -#undef BOOST_SPIRIT_DERIVED_CATEGORY -#undef BOOST_SPIRIT_SCRIPT - - }; - -}}} - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/support/char_encoding/unicode/category_table.hpp b/framework/contrib/boost/include/boost/spirit/home/support/char_encoding/unicode/category_table.hpp deleted file mode 100644 index 8da80b2944a0..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/char_encoding/unicode/category_table.hpp +++ /dev/null @@ -1,3318 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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) - - AUTOGENERATED. DO NOT EDIT!!! -==============================================================================*/ -#include - -namespace boost { namespace spirit { namespace ucd { namespace detail -{ - static const ::boost::uint8_t category_stage1[] = { - - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 34, 42, 43, 44, 45, 46, - 47, 48, 49, 40, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 50, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 51, 21, 21, 21, 52, 21, 53, 54, 55, 56, 57, 58, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 59, 60, 60, 60, 60, 60, 60, 60, 60, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 21, 62, 63, 21, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 21, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 21, 21, 21, 98, 99, 100, 101, 101, 101, 101, 101, 101, 101, 101, 101, 102, - 21, 21, 21, 21, 103, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 21, 21, 104, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 21, 21, 105, 106, 101, 101, 107, 108, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 109, 21, 21, 21, 21, 110, 111, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 112, - 21, 113, 114, 101, 101, 101, 101, 101, 101, 101, 101, 101, 115, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 40, 40, 125, 101, 101, 101, 101, 126, - 127, 128, 129, 101, 130, 101, 101, 131, 132, 133, 101, 101, 134, 135, 136, 101, - 137, 138, 139, 140, 40, 40, 141, 142, 143, 40, 144, 145, 101, 101, 101, 146, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 147, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 148, 149, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 150, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 151, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 21, 21, 152, 101, 101, 101, 101, 146, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 153, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 154, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 146, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 146, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 146, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 146, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 146, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 146, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 146, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 146, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 146, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 146, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 146, - 155, 156, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 146, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 158, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 158 - }; - - static const ::boost::uint16_t category_stage2[] = { - - // block 0 - 32, 32, 32, 32, 32, 32, 32, 32, 32, 544, 544, 544, 544, 544, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 536, 44, 44, 44, 49, 44, 44, 44, 41, 42, 44, 48, 44, 40, 44, 44, - 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 44, 44, 48, 48, 48, 44, - 44, 1216, 1216, 1216, 1216, 1216, 1216, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 41, 44, 42, 50, 43, - 50, 1345, 1345, 1345, 1345, 1345, 1345, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 41, 48, 42, 48, 32, - 32, 32, 32, 32, 32, 544, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 536, 44, 49, 49, 49, 49, 51, 44, 50, 51, 324, 45, 48, 4129, 51, 50, - 51, 48, 18, 18, 50, 321, 44, 44, 50, 18, 324, 46, 18, 18, 18, 44, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 48, 192, 192, 192, 192, 192, 192, 192, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 48, 321, 321, 321, 321, 321, 321, 321, 321, - - - // block 1 - 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, - 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, - 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, - 192, 321, 192, 321, 192, 321, 192, 321, 321, 192, 321, 192, 321, 192, 321, 192, - 321, 192, 321, 192, 321, 192, 321, 192, 321, 321, 192, 321, 192, 321, 192, 321, - 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, - 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, - 192, 321, 192, 321, 192, 321, 192, 321, 192, 192, 321, 192, 321, 192, 321, 321, - 321, 192, 192, 321, 192, 321, 192, 192, 321, 192, 192, 192, 321, 321, 192, 192, - 192, 192, 321, 192, 192, 321, 192, 192, 192, 321, 321, 321, 192, 192, 321, 192, - 192, 321, 192, 321, 192, 321, 192, 192, 321, 192, 321, 321, 192, 321, 192, 192, - 321, 192, 192, 192, 321, 192, 321, 192, 192, 321, 321, 68, 192, 321, 321, 321, - 68, 68, 68, 68, 192, 66, 321, 192, 66, 321, 192, 66, 321, 192, 321, 192, - 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 321, 192, 321, - 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, - 321, 192, 66, 321, 192, 321, 192, 192, 192, 321, 192, 321, 192, 321, 192, 321, - - - // block 2 - 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, - 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, - 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, - 192, 321, 192, 321, 321, 321, 321, 321, 321, 321, 192, 192, 321, 192, 192, 321, - 321, 192, 321, 192, 192, 192, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 68, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 323, 323, 323, 323, 323, 323, 323, 323, 323, 67, 67, 67, 67, 67, 67, 67, - 323, 323, 50, 50, 50, 50, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 323, 323, 323, 323, 323, 50, 50, 50, 50, 50, 50, 50, 67, 50, 67, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - - - // block 3 - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 328, 8, 8, 8, 8, 8, 8, 8, 8, 8, 4104, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 192, 321, 192, 321, 67, 50, 192, 321, 36, 36, 323, 321, 321, 321, 44, 192, - 36, 36, 36, 36, 50, 50, 192, 44, 192, 192, 192, 36, 192, 36, 192, 192, - 321, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 36, 192, 192, 192, 192, 192, 192, 192, 192, 192, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 192, - 321, 321, 192, 192, 192, 321, 321, 321, 192, 321, 192, 321, 192, 321, 192, 321, - 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, - 321, 321, 321, 321, 192, 321, 48, 192, 321, 192, 192, 321, 321, 192, 192, 192, - - - // block 4 - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, - 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, - 192, 321, 51, 8, 8, 8, 8, 8, 9, 9, 192, 321, 192, 321, 192, 321, - 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, - 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, - 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, - 192, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 321, - 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, - 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, - 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, - - - // block 5 - 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, - 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, - 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, - 36, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 36, 36, 67, 44, 44, 44, 44, 44, 44, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 44, 40, 36, 36, 51, 51, 49, - 36, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 40, 72, - 44, 72, 72, 44, 72, 72, 44, 72, 36, 36, 36, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, 36, 36, 68, - 68, 68, 68, 44, 44, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 6 - 33, 33, 33, 33, 33, 33, 48, 48, 48, 44, 44, 49, 44, 44, 51, 51, - 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 44, 4129, 44, 44, 44, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 67, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 72, 72, 72, 72, 72, - 72, 72, 72, 72, 72, 72, 72, 72, 8, 72, 72, 72, 72, 72, 72, 72, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 44, 44, 44, 44, 68, 68, - 72, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 44, 68, 72, 72, 72, 72, 72, 72, 72, 33, 51, 8, - 8, 72, 72, 72, 72, 67, 67, 72, 72, 51, 8, 8, 8, 72, 68, 68, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 68, 68, 68, 51, 51, 68, - - - // block 7 - 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 36, 33, - 68, 72, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 36, 36, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, - 72, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 67, 67, 51, 44, 44, 44, 67, 36, 36, 8, 49, 49, - - - // block 8 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 72, 72, 8, 8, 67, 72, 72, 72, 72, 72, - 72, 72, 72, 72, 67, 72, 72, 72, 67, 72, 72, 72, 72, 8, 36, 36, - 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 8, 8, 8, 36, 36, 44, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 50, 68, 68, 68, 68, 68, 68, 36, - 33, 33, 36, 36, 36, 36, 36, 36, 8, 8, 8, 8, 8, 8, 8, 8, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 67, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, - 8, 8, 33, 72, 72, 72, 72, 72, 72, 72, 8, 8, 8, 8, 8, 8, - 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, - - - // block 9 - 72, 72, 72, 74, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 72, 74, 8, 68, 74, 74, - 74, 72, 72, 72, 72, 72, 72, 72, 72, 74, 74, 74, 74, 8, 74, 74, - 68, 8, 8, 8, 8, 72, 72, 72, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 72, 72, 44, 44, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 44, 67, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 72, 74, 74, 36, 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, 68, - 68, 36, 36, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 68, 68, 68, 68, 68, 68, - 68, 36, 68, 36, 36, 36, 68, 68, 68, 68, 36, 36, 8, 68, 74, 74, - 74, 72, 72, 72, 72, 36, 36, 74, 74, 36, 36, 74, 74, 8, 68, 36, - 36, 36, 36, 36, 36, 36, 36, 74, 36, 36, 36, 36, 68, 68, 36, 68, - 68, 68, 72, 72, 36, 36, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 68, 68, 49, 49, 18, 18, 18, 18, 18, 18, 51, 49, 68, 44, 8, 36, - - - // block 10 - 36, 72, 72, 74, 36, 68, 68, 68, 68, 68, 68, 36, 36, 36, 36, 68, - 68, 36, 36, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 68, 68, 68, 68, 68, 68, - 68, 36, 68, 68, 36, 68, 68, 36, 68, 68, 36, 36, 8, 36, 74, 74, - 74, 72, 72, 36, 36, 36, 36, 72, 72, 36, 36, 72, 72, 8, 36, 36, - 36, 72, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, 68, 36, 68, 36, - 36, 36, 36, 36, 36, 36, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 72, 72, 68, 68, 68, 72, 44, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 72, 72, 74, 36, 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 68, - 68, 68, 36, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 68, 68, 68, 68, 68, 68, - 68, 36, 68, 68, 36, 68, 68, 68, 68, 68, 36, 36, 8, 68, 74, 74, - 74, 72, 72, 72, 72, 72, 36, 72, 72, 74, 36, 74, 74, 8, 36, 36, - 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 68, 68, 72, 72, 36, 36, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 44, 49, 36, 36, 36, 36, 36, 36, 36, 68, 72, 72, 72, 8, 8, 8, - - - // block 11 - 36, 72, 74, 74, 36, 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, 68, - 68, 36, 36, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 68, 68, 68, 68, 68, 68, - 68, 36, 68, 68, 36, 68, 68, 68, 68, 68, 36, 36, 8, 68, 74, 72, - 74, 72, 72, 72, 72, 36, 36, 74, 74, 36, 36, 74, 74, 8, 36, 36, - 36, 36, 36, 36, 36, 8, 72, 74, 36, 36, 36, 36, 68, 68, 36, 68, - 68, 68, 72, 72, 36, 36, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 51, 68, 18, 18, 18, 18, 18, 18, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 72, 68, 36, 68, 68, 68, 68, 68, 68, 36, 36, 36, 68, 68, - 68, 36, 68, 68, 68, 68, 36, 36, 36, 68, 68, 36, 68, 36, 68, 68, - 36, 36, 36, 68, 68, 36, 36, 36, 68, 68, 68, 36, 36, 36, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, 36, 36, 74, 74, - 72, 74, 74, 36, 36, 36, 74, 74, 74, 36, 74, 74, 74, 8, 36, 36, - 68, 36, 36, 36, 36, 36, 36, 74, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 18, 18, 18, 51, 51, 51, 51, 51, 51, 49, 51, 36, 36, 36, 36, 36, - - - // block 12 - 72, 74, 74, 74, 72, 68, 68, 68, 68, 68, 68, 68, 68, 36, 68, 68, - 68, 36, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, 8, 68, 72, 72, - 72, 74, 74, 74, 74, 36, 72, 72, 72, 36, 72, 72, 72, 8, 36, 36, - 36, 36, 36, 36, 36, 72, 72, 36, 68, 68, 68, 36, 36, 68, 36, 36, - 68, 68, 72, 72, 36, 36, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 36, 36, 36, 36, 36, 36, 36, 44, 18, 18, 18, 18, 18, 18, 18, 51, - 68, 72, 74, 74, 44, 68, 68, 68, 68, 68, 68, 68, 68, 36, 68, 68, - 68, 36, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 36, 68, 68, 68, 68, 68, 36, 36, 8, 68, 74, 72, - 74, 74, 74, 74, 74, 36, 72, 74, 74, 36, 74, 74, 72, 8, 36, 36, - 36, 36, 36, 36, 36, 74, 74, 36, 36, 36, 36, 36, 36, 68, 68, 36, - 68, 68, 72, 72, 36, 36, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 36, 68, 68, 74, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 13 - 72, 72, 74, 74, 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 68, 68, - 68, 36, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 8, 8, 68, 74, 74, - 74, 72, 72, 72, 72, 36, 74, 74, 74, 36, 74, 74, 74, 8, 68, 51, - 36, 36, 36, 36, 68, 68, 68, 74, 18, 18, 18, 18, 18, 18, 18, 68, - 68, 68, 72, 72, 36, 36, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 51, 68, 68, 68, 68, 68, 68, - 36, 72, 74, 74, 36, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 36, 36, 36, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 36, 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 68, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 36, 36, 36, 8, 36, 36, 36, 36, 74, - 74, 74, 72, 72, 72, 36, 72, 36, 74, 74, 74, 74, 74, 74, 74, 74, - 36, 36, 36, 36, 36, 36, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 36, 36, 74, 74, 44, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 14 - 36, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 72, 68, 68, 72, 72, 72, 72, 72, 72, 72, 36, 36, 36, 36, 49, - 68, 68, 68, 68, 68, 68, 67, 8, 8, 8, 8, 8, 8, 72, 8, 44, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 44, 44, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 68, 68, 36, 68, 36, 68, 68, 68, 68, 68, 36, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 36, 68, 36, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 72, 68, 68, 72, 72, 72, 72, 72, 72, 8, 72, 72, 68, 36, 36, - 68, 68, 68, 68, 68, 36, 67, 36, 8, 8, 8, 8, 8, 72, 8, 36, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 36, 36, 68, 68, 68, 68, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 15 - 68, 51, 51, 51, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 51, 44, 51, 51, 51, 8, 8, 51, 51, 51, 51, 51, 51, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 51, 8, 51, 8, 51, 8, 41, 42, 41, 42, 10, 10, - 68, 68, 68, 68, 68, 68, 68, 68, 36, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, 36, - 36, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 74, - 72, 72, 72, 72, 8, 44, 8, 8, 68, 68, 68, 68, 68, 72, 72, 72, - 72, 72, 72, 72, 72, 72, 72, 72, 36, 72, 72, 72, 72, 72, 72, 72, - 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, - 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 36, 51, 51, - 51, 51, 51, 51, 51, 51, 8, 51, 51, 51, 51, 51, 51, 36, 51, 51, - 44, 44, 44, 44, 44, 51, 51, 51, 51, 44, 44, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 16 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 74, 74, 72, 72, 72, - 72, 74, 72, 72, 72, 72, 72, 8, 74, 8, 8, 74, 74, 72, 72, 68, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 44, 44, 44, 44, 44, 44, - 68, 68, 68, 68, 68, 68, 74, 74, 72, 72, 68, 68, 68, 68, 72, 72, - 72, 68, 74, 74, 74, 68, 68, 74, 74, 74, 74, 74, 74, 74, 68, 68, - 68, 72, 72, 72, 72, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 72, 74, 74, 72, 72, 74, 74, 74, 74, 74, 74, 72, 68, 74, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 74, 74, 74, 72, 51, 51, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 36, 192, 36, 36, 36, 36, 36, 192, 36, 36, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 44, 323, 321, 321, 321, - - - // block 17 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 4164, - 4164, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - - - // block 18 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 68, 68, 68, 68, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 36, 68, 36, 68, 68, 68, 68, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 68, 68, 68, 68, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 36, 68, 68, 68, 68, 36, 36, 68, 68, 68, 68, 68, 68, 68, 36, - 68, 36, 68, 68, 68, 68, 36, 36, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 36, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - - - // block 19 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 36, 68, 68, 68, 68, 36, 36, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, 8, 8, 8, - 44, 44, 44, 44, 44, 44, 44, 44, 44, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 36, 36, 36, 36, 36, 36, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 36, 36, 321, 321, 321, 321, 321, 321, 36, 36, - - - // block 20 - 40, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - - - // block 21 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - - - // block 22 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 51, 44, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 536, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 41, 42, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 44, 44, 44, 81, 81, - 81, 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, - - - // block 23 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 72, 72, 8, 10, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 72, 72, 10, 44, 44, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 72, 72, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 68, 68, - 68, 36, 72, 72, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 4104, 4104, 74, 72, 72, 72, 72, 72, 72, 72, 74, 74, - 74, 74, 74, 74, 74, 74, 72, 74, 74, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 44, 44, 44, 67, 44, 44, 44, 49, 68, 8, 36, 36, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 36, 36, 36, 36, 36, 36, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 36, 36, 36, 36, 36, 36, - - - // block 24 - 44, 44, 44, 44, 44, 44, 40, 44, 44, 44, 44, 4104, 4104, 4104, 4129, 4104, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 36, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 67, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 72, 72, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 72, 68, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 25 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, - 72, 72, 72, 74, 74, 74, 74, 72, 72, 74, 74, 74, 36, 36, 36, 36, - 74, 74, 72, 74, 74, 74, 74, 74, 74, 8, 8, 8, 36, 36, 36, 36, - 51, 36, 36, 36, 44, 44, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, - 68, 68, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, 36, 36, 36, 36, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 18, 36, 36, 36, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - - - // block 26 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 72, 72, 74, 74, 72, 36, 36, 44, 44, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 74, 72, 74, 72, 72, 72, 72, 72, 72, 72, 36, - 8, 74, 72, 74, 74, 72, 72, 72, 72, 72, 72, 72, 72, 74, 74, 74, - 74, 74, 74, 72, 72, 8, 8, 8, 8, 8, 8, 8, 8, 36, 36, 8, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 36, 36, 36, 36, 36, 36, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 36, 36, 36, 36, 36, 36, - 44, 44, 44, 44, 44, 44, 44, 67, 44, 44, 44, 44, 44, 44, 36, 36, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 72, - 72, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 72, 72, 72, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 27 - 72, 72, 72, 72, 74, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 8, 74, 72, 72, 72, 72, 72, 74, 72, 74, 74, 74, - 74, 74, 72, 74, 10, 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, 36, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 44, 44, 44, 44, 44, 44, - 44, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 51, 51, 51, 51, 51, 51, 51, 51, 51, 44, 44, 36, - 72, 72, 74, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 74, 72, 72, 72, 72, 74, 74, 72, 72, 10, 8, 72, 72, 68, 68, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 8, 74, 72, 72, 74, 74, 74, 72, 74, 72, - 72, 72, 10, 10, 36, 36, 36, 36, 36, 36, 36, 36, 44, 44, 44, 44, - - - // block 28 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 74, 74, 74, 74, 74, 74, 74, 74, 72, 72, 72, 72, - 72, 72, 72, 72, 74, 74, 72, 8, 36, 36, 36, 44, 44, 44, 44, 44, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 36, 36, 36, 68, 68, 68, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 67, 67, 67, 67, 67, 67, 44, 44, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 36, 36, 36, 36, 36, 36, 36, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 36, 36, 192, 192, 192, - 44, 44, 44, 44, 44, 44, 44, 44, 36, 36, 36, 36, 36, 36, 36, 36, - 8, 8, 8, 44, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 10, 8, 8, 8, 8, 8, 8, 8, 68, 68, 68, 68, 8, 68, 68, - 68, 68, 68, 68, 8, 68, 68, 10, 8, 8, 68, 36, 36, 36, 36, 36, - - - // block 29 - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 323, 323, 323, 323, - 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, - 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, - 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, - 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 323, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 323, 323, 323, 323, 323, - 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, - 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 72, 72, 72, 72, 72, 72, 72, 72, 72, - 72, 72, 72, 72, 72, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - - - // block 30 - 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, - 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, - 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, - 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, - 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, - 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, - 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, - 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, - 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, - 192, 321, 192, 321, 192, 321, 321, 321, 321, 321, 321, 321, 321, 321, 192, 321, - 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, - 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, - 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, - 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, - 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, - 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, - - - // block 31 - 321, 321, 321, 321, 321, 321, 321, 321, 192, 192, 192, 192, 192, 192, 192, 192, - 321, 321, 321, 321, 321, 321, 36, 36, 192, 192, 192, 192, 192, 192, 36, 36, - 321, 321, 321, 321, 321, 321, 321, 321, 192, 192, 192, 192, 192, 192, 192, 192, - 321, 321, 321, 321, 321, 321, 321, 321, 192, 192, 192, 192, 192, 192, 192, 192, - 321, 321, 321, 321, 321, 321, 36, 36, 192, 192, 192, 192, 192, 192, 36, 36, - 321, 321, 321, 321, 321, 321, 321, 321, 36, 192, 36, 192, 36, 192, 36, 192, - 321, 321, 321, 321, 321, 321, 321, 321, 192, 192, 192, 192, 192, 192, 192, 192, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 36, 36, - 321, 321, 321, 321, 321, 321, 321, 321, 66, 66, 66, 66, 66, 66, 66, 66, - 321, 321, 321, 321, 321, 321, 321, 321, 66, 66, 66, 66, 66, 66, 66, 66, - 321, 321, 321, 321, 321, 321, 321, 321, 66, 66, 66, 66, 66, 66, 66, 66, - 321, 321, 321, 321, 321, 36, 321, 321, 192, 192, 192, 192, 66, 50, 321, 50, - 50, 50, 321, 321, 321, 36, 321, 321, 192, 192, 192, 192, 66, 50, 50, 50, - 321, 321, 321, 321, 36, 36, 321, 321, 192, 192, 192, 192, 36, 50, 50, 50, - 321, 321, 321, 321, 321, 321, 321, 321, 192, 192, 192, 192, 192, 50, 50, 50, - 36, 36, 321, 321, 321, 36, 321, 321, 192, 192, 192, 192, 66, 50, 50, 36, - - - // block 32 - 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, 4129, 4129, 4129, 4129, 4129, - 40, 40, 40, 40, 40, 40, 44, 44, 45, 46, 41, 45, 45, 46, 41, 45, - 44, 44, 44, 44, 44, 44, 44, 44, 537, 538, 4129, 4129, 4129, 4129, 4129, 536, - 44, 44, 44, 44, 44, 44, 44, 44, 44, 45, 46, 44, 44, 44, 44, 43, - 43, 44, 44, 44, 48, 41, 42, 44, 44, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 48, 44, 43, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 536, - 4129, 4129, 4129, 4129, 4129, 4132, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, - 18, 323, 36, 36, 18, 18, 18, 18, 18, 18, 48, 48, 48, 41, 42, 323, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 48, 48, 48, 41, 42, 36, - 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 36, 36, 36, - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, - 49, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, - 9, 8, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 33 - 51, 51, 192, 51, 51, 51, 51, 192, 51, 51, 321, 192, 192, 192, 321, 321, - 192, 192, 192, 321, 51, 192, 51, 51, 48, 192, 192, 192, 192, 192, 51, 51, - 51, 51, 51, 51, 192, 51, 192, 51, 192, 51, 192, 192, 192, 192, 51, 321, - 192, 192, 192, 192, 321, 68, 68, 68, 68, 321, 51, 51, 321, 321, 192, 192, - 48, 48, 48, 48, 48, 192, 321, 321, 321, 321, 51, 48, 51, 51, 321, 51, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, - 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, 337, - 81, 81, 81, 192, 321, 81, 81, 81, 81, 18, 51, 51, 36, 36, 36, 36, - 48, 48, 48, 48, 48, 51, 51, 51, 51, 51, 48, 48, 51, 51, 51, 51, - 48, 51, 51, 48, 51, 51, 48, 51, 51, 51, 51, 51, 51, 51, 48, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 48, 48, - 51, 51, 48, 51, 48, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - - - // block 34 - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - - - // block 35 - 51, 51, 51, 51, 51, 51, 51, 51, 41, 42, 41, 42, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 48, 48, 51, 51, 51, 51, 51, 51, 51, 41, 42, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 48, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 48, 48, 48, 48, - 48, 48, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - - - // block 36 - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, - 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - - - // block 37 - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 48, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 48, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 48, 48, 48, 48, 48, 48, 48, 48, - - - // block 38 - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 48, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - - - // block 39 - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 41, 42, 41, 42, 41, 42, 41, 42, - 41, 42, 41, 42, 41, 42, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 48, 48, 48, 48, 48, 41, 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 41, 42, 41, 42, 41, 42, 41, 42, 41, 42, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - - - // block 40 - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - - - // block 41 - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 41, 42, 41, 42, 41, 42, 41, 42, 41, 42, 41, 42, 41, - 42, 41, 42, 41, 42, 41, 42, 41, 42, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 41, 42, 41, 42, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 41, 42, 48, 48, - - - // block 42 - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 51, 51, 48, 48, 48, 48, 48, 48, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 36, 36, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 36, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - - - // block 43 - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 192, 321, 192, 192, 192, 321, 321, 192, 321, 192, 321, 192, 321, 192, 192, 192, - 192, 321, 192, 321, 321, 192, 321, 321, 321, 321, 321, 321, 323, 323, 192, 192, - 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, - 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, - 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, - 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, - 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, - 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, - 192, 321, 192, 321, 321, 51, 51, 51, 51, 51, 51, 192, 321, 192, 321, 8, - 8, 8, 192, 321, 36, 36, 36, 36, 36, 44, 44, 44, 44, 18, 44, 44, - - - // block 44 - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 36, 321, 36, 36, 36, 36, 36, 321, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 67, - 44, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 8, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 36, 68, 68, 68, 68, 68, 68, 68, 36, - 68, 68, 68, 68, 68, 68, 68, 36, 68, 68, 68, 68, 68, 68, 68, 36, - 68, 68, 68, 68, 68, 68, 68, 36, 68, 68, 68, 68, 68, 68, 68, 36, - 68, 68, 68, 68, 68, 68, 68, 36, 68, 68, 68, 68, 68, 68, 68, 36, - 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, - 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, - - - // block 45 - 44, 44, 45, 46, 45, 46, 44, 44, 44, 45, 46, 44, 45, 46, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 40, 44, 44, 40, 44, 45, 46, 44, 44, - 45, 46, 41, 42, 41, 42, 41, 42, 41, 42, 44, 44, 44, 44, 44, 67, - 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 40, 40, 44, 44, 44, 44, - 40, 44, 41, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, - 51, 51, 44, 44, 44, 41, 42, 41, 42, 41, 42, 41, 42, 40, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 36, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 46 - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 36, 36, 36, 36, - - - // block 47 - 536, 44, 44, 44, 51, 67, 68, 81, 41, 42, 41, 42, 41, 42, 41, 42, - 41, 42, 51, 51, 41, 42, 41, 42, 41, 42, 41, 42, 40, 41, 42, 42, - 51, 81, 81, 81, 81, 81, 81, 81, 81, 81, 8, 8, 8, 8, 10, 10, - 40, 67, 67, 67, 67, 67, 51, 51, 81, 81, 81, 67, 68, 44, 51, 51, - 36, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 36, 36, 8, 8, 50, 50, 67, 67, 68, - 40, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 44, 67, 67, 67, 68, - - - // block 48 - 36, 36, 36, 36, 36, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 36, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 4164, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, - 51, 51, 18, 18, 18, 18, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - - - // block 49 - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 36, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 18, 18, 18, 18, 18, 18, 18, 18, - 51, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - - - // block 50 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - - - // block 51 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 67, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - - - // block 52 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, 36, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 67, 67, 67, 67, 67, 67, 44, 44, - - - // block 53 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 67, 44, 44, 44, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 68, 68, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, - 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, - 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 68, 8, - 9, 9, 9, 44, 72, 72, 72, 72, 72, 72, 72, 72, 8, 8, 44, 67, - 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, - 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 323, 323, 72, 72, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 8, 8, 44, 44, 44, 44, 44, 44, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 54 - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 50, 50, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, - 321, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, - 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, - 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, - 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, - 323, 321, 321, 321, 321, 321, 321, 321, 321, 192, 321, 192, 321, 192, 192, 321, - 192, 321, 192, 321, 192, 321, 192, 321, 67, 50, 50, 192, 321, 192, 321, 68, - 192, 321, 192, 321, 321, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, - 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 192, 192, 192, 192, 321, - 192, 192, 192, 192, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, 192, 321, - 192, 321, 192, 321, 192, 192, 192, 192, 321, 192, 321, 36, 36, 36, 36, 36, - 192, 321, 36, 321, 36, 321, 192, 321, 192, 321, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 323, 323, 323, 192, 321, 68, 323, 323, 321, 68, 68, 68, 68, 68, - - - // block 55 - 68, 68, 72, 68, 68, 68, 8, 68, 68, 68, 68, 72, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 74, 74, 72, 72, 74, 51, 51, 51, 51, 8, 36, 36, 36, - 18, 18, 18, 18, 18, 18, 51, 51, 49, 51, 36, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 44, 44, 44, 44, 36, 36, 36, 36, 36, 36, 36, 36, - 74, 74, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 8, 72, 36, 36, 36, 36, 36, 36, 36, 36, 44, 44, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 36, 36, 36, 36, 36, 36, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 68, 68, 68, 68, 68, 68, 44, 44, 44, 68, 44, 68, 68, 72, - - - // block 56 - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 72, 72, 72, 72, 72, 8, 8, 8, 44, 44, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 72, 72, 72, 72, 72, 72, 72, 72, 72, - 72, 72, 74, 10, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 44, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, 36, - 72, 72, 72, 74, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 8, 74, 74, 72, 72, 72, 72, 74, 74, 72, 72, 74, 74, - 10, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 36, 67, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 36, 36, 36, 36, 44, 44, - 68, 68, 68, 68, 68, 72, 67, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 68, 68, 68, 68, 68, 36, - - - // block 57 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 72, 72, 72, 72, 72, 72, 74, - 74, 72, 72, 74, 74, 72, 72, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 68, 68, 68, 72, 68, 68, 68, 68, 68, 68, 68, 68, 72, 74, 36, 36, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 36, 36, 44, 44, 44, 44, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 67, 68, 68, 68, 68, 68, 68, 51, 51, 51, 68, 74, 72, 74, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 72, 68, 72, 72, 72, 68, 68, 72, 72, 68, 68, 68, 68, 68, 72, 8, - 68, 8, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 67, 44, 44, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 74, 72, 72, 74, 74, - 44, 44, 68, 67, 67, 74, 8, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 58 - 36, 68, 68, 68, 68, 68, 68, 36, 36, 68, 68, 68, 68, 68, 68, 36, - 36, 68, 68, 68, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 36, 68, 68, 68, 68, 68, 68, 68, 36, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 50, 323, 323, 323, 323, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 323, 50, 50, 36, 36, 36, 36, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 74, 74, 72, 74, 74, 72, 74, 74, 44, 10, 8, 36, 36, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 36, 36, 36, 36, 36, 36, - - - // block 59 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 36, 36, 36, 36, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, 36, 36, - - - // block 60 - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - - - // block 61 - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - - - // block 62 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 63 - 321, 321, 321, 321, 321, 321, 321, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 321, 321, 321, 321, 321, 36, 36, 36, 36, 36, 68, 72, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 48, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 36, 68, 68, 68, 68, 68, 36, 68, 36, - 68, 68, 36, 68, 68, 36, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - - - // block 64 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 42, 41, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 36, 36, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 51, - 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, - 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 49, 51, 51, 51, - - - // block 65 - 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, - 44, 44, 44, 44, 44, 44, 44, 41, 42, 44, 36, 36, 36, 36, 36, 36, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 44, 40, 40, 43, 43, 41, 42, 41, 42, 41, 42, 41, 42, 41, 42, 41, - 42, 41, 42, 41, 42, 44, 44, 41, 42, 44, 44, 44, 44, 43, 43, 43, - 44, 44, 44, 36, 44, 44, 44, 44, 40, 41, 42, 41, 42, 41, 42, 44, - 44, 44, 48, 40, 48, 48, 48, 36, 44, 49, 44, 44, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 36, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, 4129, - - - // block 66 - 36, 44, 44, 44, 49, 44, 44, 44, 41, 42, 44, 48, 44, 40, 44, 44, - 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 44, 44, 48, 48, 48, 44, - 44, 1216, 1216, 1216, 1216, 1216, 1216, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 41, 44, 42, 50, 43, - 50, 1345, 1345, 1345, 1345, 1345, 1345, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 41, 48, 42, 48, 41, - 42, 44, 41, 42, 44, 44, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 67, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 67, 67, - 4164, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, - 36, 36, 68, 68, 68, 68, 68, 68, 36, 36, 68, 68, 68, 68, 68, 68, - 36, 36, 68, 68, 68, 68, 68, 68, 36, 36, 68, 68, 68, 36, 36, 36, - 49, 49, 48, 50, 51, 49, 49, 36, 51, 48, 48, 48, 48, 51, 51, 36, - 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 33, 33, 33, 51, 51, 2084, 2084, - - - // block 67 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 36, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 68, 68, 36, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, 36, 36, 36, - - - // block 68 - 44, 44, 44, 36, 36, 36, 36, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 36, 36, 36, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 18, 18, 18, 18, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 18, 18, 51, 51, 51, 36, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 36, 36, 36, - 51, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 8, 36, 36, - - - // block 69 - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 8, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 36, 36, 36, 36, - - - // block 70 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 18, 18, 18, 18, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 81, 68, 68, 68, 68, 68, 68, 68, 68, 81, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 72, 72, 72, 72, 72, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 44, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 36, 36, 36, 36, 68, 68, 68, 68, 68, 68, 68, 68, - 44, 81, 81, 81, 81, 81, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 71 - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 36, 36, 36, 36, 36, 36, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 36, 36, 36, 36, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 36, 36, 36, 36, - - - // block 72 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 44, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 36, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 36, 192, 192, 192, 192, - 192, 192, 192, 36, 192, 192, 36, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 36, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 36, 321, 321, 321, 321, 321, 321, 321, 36, 321, 321, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 73 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 323, 67, 67, 323, 323, 323, 36, 323, 323, 323, 323, 323, 323, 323, 323, 323, - 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, - 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, - 323, 36, 323, 323, 323, 323, 323, 323, 323, 323, 323, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 74 - 68, 68, 68, 68, 68, 68, 36, 36, 68, 36, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 36, 68, 68, 36, 36, 36, 68, 36, 36, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 36, 44, 18, 18, 18, 18, 18, 18, 18, 18, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 51, 51, 18, 18, 18, 18, 18, 18, 18, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, - 36, 36, 36, 36, 36, 36, 36, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 36, 68, 68, 36, 36, 36, 36, 36, 18, 18, 18, 18, 18, - - - // block 75 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 18, 18, 18, 18, 18, 18, 36, 36, 36, 44, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, 36, 36, 36, 44, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, 36, 36, 18, 18, 68, 68, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 36, 36, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - - - // block 76 - 68, 72, 72, 72, 36, 72, 72, 36, 36, 36, 36, 36, 72, 72, 72, 72, - 68, 68, 68, 68, 36, 68, 68, 68, 36, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 36, 36, 8, 8, 8, 36, 36, 36, 36, 8, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 36, 36, 36, 36, 36, 36, 36, - 44, 44, 44, 44, 44, 44, 44, 44, 44, 36, 36, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 18, 18, 44, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 18, 18, 18, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 51, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 8, 8, 36, 36, 36, 36, 18, 18, 18, 18, 18, - 44, 44, 44, 44, 44, 44, 44, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 77 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 36, 36, 36, 44, 44, 44, 44, 44, 44, 44, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 36, 36, 18, 18, 18, 18, 18, 18, 18, 18, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 36, 36, 36, 36, 36, 18, 18, 18, 18, 18, 18, 18, 18, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 36, 36, 36, 36, 36, 36, 36, 44, 44, 44, 44, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 18, 18, 18, 18, 18, 18, 18, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 78 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 36, 36, 36, 36, 36, 36, 36, 18, 18, 18, 18, 18, 18, - - - // block 79 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 72, 72, 72, 72, 36, 36, 36, 36, 36, 36, 36, 36, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 80 - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 72, 72, 40, 36, 36, - 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 8, 8, 8, - - - // block 81 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 18, 68, 36, 36, 36, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 18, 18, 18, 18, 44, 44, 44, 44, 44, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 8, 8, 8, 8, 44, 44, 44, 44, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 18, 18, 18, 18, 18, 18, 18, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 82 - 74, 72, 74, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 72, 72, 72, 72, 72, 72, 72, 72, - 72, 72, 72, 72, 72, 72, 8, 44, 44, 44, 44, 44, 44, 44, 36, 36, - 36, 36, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 8, 68, 68, 72, 72, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 8, - 72, 72, 74, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 74, 74, 74, 72, 72, 72, 72, 74, 74, 8, 8, 44, 44, 33, 44, 44, - 44, 44, 72, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 33, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 36, 36, 36, 36, 36, 36, - - - // block 83 - 72, 72, 72, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 72, 72, 72, 72, 72, 74, 72, 72, 72, - 72, 72, 72, 8, 8, 36, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 44, 44, 44, 44, 68, 74, 74, 68, 36, 36, 36, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 8, 44, 44, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 72, 72, 74, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 74, 74, 74, 72, 72, 72, 72, 72, 72, 72, 72, 72, 74, - 10, 68, 68, 68, 68, 44, 44, 44, 44, 8, 8, 8, 8, 44, 74, 72, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 68, 44, 68, 44, 44, 44, - 36, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 84 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 36, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 74, 74, 74, 72, - 72, 72, 74, 74, 72, 10, 8, 72, 44, 44, 44, 44, 44, 44, 72, 68, - 68, 72, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 36, 68, 36, 68, 68, 68, 68, 36, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 44, 36, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 72, - 74, 74, 74, 72, 72, 72, 72, 72, 72, 8, 8, 36, 36, 36, 36, 36, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 36, 36, 36, 36, 36, 36, - - - // block 85 - 72, 72, 74, 74, 36, 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, 68, - 68, 36, 36, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 68, 68, 68, 68, 68, 68, - 68, 36, 68, 68, 36, 68, 68, 68, 68, 68, 36, 8, 8, 68, 74, 74, - 72, 74, 74, 74, 74, 36, 36, 74, 74, 36, 36, 74, 74, 10, 36, 36, - 68, 36, 36, 36, 36, 36, 36, 74, 36, 36, 36, 36, 36, 68, 68, 68, - 68, 68, 74, 74, 36, 36, 8, 8, 8, 8, 8, 8, 8, 36, 36, 36, - 8, 8, 8, 8, 8, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 86 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 74, 74, 74, 72, 72, 72, 72, 72, 72, 72, 72, - 74, 74, 8, 72, 72, 74, 8, 68, 68, 68, 68, 44, 44, 44, 44, 44, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 44, 44, 36, 44, 8, 68, - 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 74, 74, 74, 72, 72, 72, 72, 72, 72, 74, 72, 74, 74, 74, 74, 72, - 72, 74, 8, 8, 68, 68, 44, 68, 36, 36, 36, 36, 36, 36, 36, 36, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 87 - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 74, - 74, 74, 72, 72, 72, 72, 36, 36, 74, 74, 74, 74, 72, 72, 74, 8, - 8, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 44, 68, 68, 68, 68, 72, 72, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 88 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 74, 74, 74, 72, 72, 72, 72, 72, 72, 72, 72, 74, 74, 72, 74, 8, - 72, 44, 44, 44, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 36, 36, 36, 36, 36, 36, - 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 72, 74, 72, 74, 74, - 72, 72, 72, 72, 72, 72, 10, 8, 68, 44, 36, 36, 36, 36, 36, 36, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 89 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, 72, 72, 72, - 74, 74, 72, 72, 72, 72, 74, 72, 72, 72, 72, 8, 36, 36, 36, 36, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 18, 18, 44, 44, 44, 51, - 68, 68, 68, 68, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 90 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 74, 74, 74, 72, - 72, 72, 72, 72, 72, 72, 72, 72, 74, 8, 8, 44, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 68, - - - // block 91 - 68, 68, 68, 68, 68, 68, 68, 36, 36, 68, 36, 36, 68, 68, 68, 68, - 68, 68, 68, 68, 36, 68, 68, 36, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 74, 74, 74, 74, 74, 74, 36, 74, 74, 36, 36, 72, 72, 10, 8, 68, - 74, 68, 74, 8, 44, 44, 44, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 74, 74, 74, 72, 72, 72, 72, 36, 36, 72, 72, 74, 74, 74, 74, - 8, 68, 44, 68, 74, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 92 - 68, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 8, 8, 72, 72, 72, 72, 74, 68, 72, 72, 72, 72, 44, - 44, 44, 44, 44, 44, 44, 44, 8, 36, 36, 36, 36, 36, 36, 36, 36, - 68, 72, 72, 72, 72, 72, 72, 74, 74, 72, 72, 72, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 72, 72, 72, 72, 72, 72, - 72, 72, 72, 72, 72, 72, 72, 74, 8, 8, 44, 44, 44, 68, 44, 44, - 44, 44, 44, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, - - - // block 93 - 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 94 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 74, - 72, 72, 72, 72, 72, 72, 72, 36, 72, 72, 72, 72, 72, 72, 74, 8, - 68, 44, 44, 44, 44, 44, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 36, 36, 36, - 44, 44, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 36, 36, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, - 72, 72, 72, 72, 72, 72, 72, 72, 36, 74, 72, 72, 72, 72, 72, 72, - 72, 74, 72, 72, 74, 72, 72, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 95 - 68, 68, 68, 68, 68, 68, 68, 36, 68, 68, 36, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 72, 72, 72, 72, 72, 72, 36, 36, 36, 72, 36, 72, 72, 36, 72, - 72, 72, 8, 72, 8, 8, 68, 72, 36, 36, 36, 36, 36, 36, 36, 36, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 36, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 36, 68, 68, 36, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 74, 74, 74, 74, 74, 36, - 72, 72, 36, 74, 74, 72, 74, 8, 68, 36, 36, 36, 36, 36, 36, 36, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 96 - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 72, 72, 74, 74, 44, 44, 36, 36, 36, 36, 36, 36, 36, - - - // block 97 - 72, 72, 68, 74, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 36, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 74, 74, 72, 72, 72, 72, 72, 36, 36, 36, 74, 74, - 72, 10, 8, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 51, 51, 51, 51, 51, 51, 51, 51, 49, 49, 49, - 49, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 44, - - - // block 98 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 99 - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 36, - 44, 44, 44, 44, 44, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - - - // block 100 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 101 - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 102 - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 44, 44, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 103 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 8, 68, 68, 68, 68, 68, 68, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 104 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 105 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 36, 36, 36, 36, 44, 44, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 36, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, - 8, 8, 8, 8, 8, 44, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 106 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 8, 8, 8, 8, 8, 8, 8, 44, 44, 44, 44, 44, 51, 51, 51, 51, - 67, 67, 67, 67, 44, 51, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 36, 18, 18, 18, 18, 18, - 18, 18, 36, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, 36, 36, 36, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 107 - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 18, 44, 44, 44, 44, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 108 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, 36, 36, 72, - 68, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 36, 36, 36, 36, 36, 36, 36, 72, - 72, 72, 72, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 67, 67, 44, 67, 8, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 74, 74, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 109 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 110 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 111 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 112 - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 67, 67, 67, 67, 36, 67, 67, 67, 67, 67, 67, 67, 36, 67, 67, 36, - - - // block 113 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 68, 68, 68, 36, 36, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 68, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - - - // block 114 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, 36, 36, - - - // block 115 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, 51, 8, 72, 44, - 4129, 4129, 4129, 4129, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 116 - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 36, 36, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 117 - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 118 - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 36, 36, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 10, 10, 8, 8, 8, 51, 51, 51, 10, 10, 10, - 10, 10, 10, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 8, 8, 8, 8, 8, - 8, 8, 8, 51, 51, 8, 8, 8, 8, 8, 8, 8, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 8, 8, 8, 8, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 119 - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 8, 8, 8, 51, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 120 - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 121 - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 321, 321, - 321, 321, 321, 321, 321, 36, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 192, 36, 192, 192, - 36, 36, 192, 36, 36, 192, 192, 36, 36, 192, 192, 192, 192, 36, 192, 192, - 192, 192, 192, 192, 192, 192, 321, 321, 321, 321, 36, 321, 36, 321, 321, 321, - 321, 321, 321, 321, 36, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - - - // block 122 - 321, 321, 321, 321, 192, 192, 36, 192, 192, 192, 192, 36, 36, 192, 192, 192, - 192, 192, 192, 192, 192, 36, 192, 192, 192, 192, 192, 192, 192, 36, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 192, 192, 36, 192, 192, 192, 192, 36, - 192, 192, 192, 192, 192, 36, 192, 36, 36, 36, 192, 192, 192, 192, 192, 192, - 192, 36, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - - - // block 123 - 321, 321, 321, 321, 321, 321, 321, 321, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 36, 36, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 48, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 48, 321, 321, 321, 321, - 321, 321, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 48, 321, 321, 321, 321, - - - // block 124 - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 48, 321, 321, 321, 321, 321, 321, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 48, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 48, - 321, 321, 321, 321, 321, 321, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 48, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 48, 321, 321, 321, 321, 321, 321, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 48, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 48, 321, 321, 321, 321, 321, 321, 192, 321, 36, 36, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - - - // block 125 - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 51, 51, 51, 51, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 51, 51, 51, - 51, 51, 51, 51, 51, 8, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 8, 51, 51, 44, 44, 44, 44, 44, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 8, 8, 8, 8, 8, - 36, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 126 - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 68, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 36, - 36, 36, 36, 36, 36, 321, 321, 321, 321, 321, 321, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 127 - 72, 72, 72, 72, 72, 72, 72, 36, 72, 72, 72, 72, 72, 72, 72, 72, - 72, 72, 72, 72, 72, 72, 72, 72, 72, 36, 36, 72, 72, 72, 72, 72, - 72, 72, 36, 72, 72, 36, 72, 72, 72, 72, 72, 36, 36, 36, 36, 36, - 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, - 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, - 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, - 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 72, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 128 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, 36, - 8, 8, 8, 8, 8, 8, 8, 67, 67, 67, 67, 67, 67, 67, 36, 36, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 36, 36, 36, 36, 68, 51, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 129 - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 8, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 8, 8, 8, 8, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 36, 36, 36, 36, 36, 49, - - - // block 130 - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 67, 8, 8, 8, 8, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 36, 36, 36, 36, 36, 36, - - - // block 131 - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 36, 68, 68, 68, 68, 36, 68, 68, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, - - - // block 132 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 36, 36, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 8, 8, 8, 8, 8, 8, 8, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 133 - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 8, 8, 8, 72, 8, 8, 8, 67, 36, 36, 36, 36, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 36, 36, 36, 36, 44, 44, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 134 - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 51, 18, 18, 18, - 49, 18, 18, 18, 18, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 135 - 36, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 51, 18, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 136 - 68, 68, 68, 68, 36, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 36, 68, 68, 36, 68, 36, 36, 68, 36, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 36, 68, 68, 68, 68, 36, 68, 36, 68, 36, 36, 36, 36, - 36, 36, 68, 36, 36, 36, 36, 68, 36, 68, 36, 68, 36, 68, 68, 68, - 36, 68, 68, 36, 68, 36, 36, 68, 36, 68, 36, 68, 36, 68, 36, 68, - 36, 68, 68, 36, 68, 36, 36, 68, 68, 68, 68, 36, 68, 68, 68, 68, - 68, 68, 68, 36, 68, 68, 68, 68, 36, 68, 68, 68, 68, 36, 68, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, 36, 36, - 36, 68, 68, 68, 36, 68, 68, 68, 68, 68, 36, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 48, 48, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 137 - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 36, 36, 36, 36, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 36, - 36, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 36, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 36, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 138 - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, - 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 51, 51, 51, 51, 51, 51, - 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, - 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 51, 51, 51, 51, 51, 51, - 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, - 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - - - // block 139 - 51, 51, 51, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 36, 36, 36, 36, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 36, 36, 36, 36, 36, 36, 36, - 51, 51, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 51, 51, 51, 51, 51, 51, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 140 - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 50, 50, 50, 50, 50, - - - // block 141 - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 36, 36, 36, 36, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 36, 36, 36, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 36, 36, 36, - - - // block 142 - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 36, 36, 36, 36, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 36, 36, 36, 36, 36, 36, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 36, 36, 36, 36, - 51, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 143 - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 36, 36, 36, 36, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 36, 36, 36, 36, 36, 36, 36, 36, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 36, 36, 36, 36, 36, 36, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 36, 36, 36, 36, 36, 36, 36, 36, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 36, 36, - 51, 51, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 144 - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 36, 36, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 36, 36, 36, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 36, 36, 36, 36, 36, 36, 36, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 36, 51, - 51, 51, 51, 51, 51, 51, 36, 36, 36, 36, 36, 36, 36, 36, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 36, 36, 36, 36, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 36, 36, 36, 36, 36, 36, 36, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 36, 36, 36, 36, 36, 36, 36, - - - // block 145 - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 36, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 36, 36, 36, 36, 36, 36, - - - // block 146 - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 2084, 2084, - - - // block 147 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 148 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - - - // block 149 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - - - // block 150 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - - - // block 151 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 152 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 153 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 36, 36, 36, 36, 36, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - - - // block 154 - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 155 - 4132, 4129, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, - 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, - 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, - 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, - 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, - 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, - 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, - 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, - 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, - 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, - 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, - 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, - 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, - 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, - 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, - 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, - - - // block 156 - 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, - 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, - 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, - 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, - 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, - 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, - 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, - 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, - 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, - 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, - 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, - 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, - 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, - 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, - 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, 4104, - 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, - - - // block 157 - 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, - 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, - 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, - 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, - 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, - 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, - 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, - 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, - 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, - 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, - 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, - 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, - 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, - 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, - 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, - 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, - - - // block 158 - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 2084, 2084 - }; - - inline ::boost::uint16_t category_lookup(::boost::uint32_t ch) - { - ::boost::uint32_t block_offset = category_stage1[ch / 256] * 256; - return category_stage2[block_offset + ch % 256]; - } - -}}}} // namespace boost::spirit::unicode::detail diff --git a/framework/contrib/boost/include/boost/spirit/home/support/char_encoding/unicode/lowercase_table.hpp b/framework/contrib/boost/include/boost/spirit/home/support/char_encoding/unicode/lowercase_table.hpp deleted file mode 100644 index 2ce17a4d838c..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/char_encoding/unicode/lowercase_table.hpp +++ /dev/null @@ -1,753 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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) - - AUTOGENERATED. DO NOT EDIT!!! -==============================================================================*/ -#include - -namespace boost { namespace spirit { namespace ucd { namespace detail -{ - static const ::boost::uint8_t lowercase_stage1[] = { - - 0, 1, 2, 3, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 7, 6, 6, 8, 6, 6, 6, 6, 6, 6, 6, 6, 9, 6, 10, 11, - 6, 12, 6, 6, 13, 6, 6, 6, 6, 6, 6, 6, 14, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 15, 16, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 17, - 6, 6, 6, 6, 18, 19, 6, 6, 6, 6, 6, 6, 20, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 21, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 22, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 23, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 - }; - - static const ::boost::uint32_t lowercase_stage2[] = { - - // block 0 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 0, 248, 249, 250, 251, 252, 253, 254, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - - // block 1 - 257, 0, 259, 0, 261, 0, 263, 0, 265, 0, 267, 0, 269, 0, 271, 0, - 273, 0, 275, 0, 277, 0, 279, 0, 281, 0, 283, 0, 285, 0, 287, 0, - 289, 0, 291, 0, 293, 0, 295, 0, 297, 0, 299, 0, 301, 0, 303, 0, - 105, 0, 307, 0, 309, 0, 311, 0, 0, 314, 0, 316, 0, 318, 0, 320, - 0, 322, 0, 324, 0, 326, 0, 328, 0, 0, 331, 0, 333, 0, 335, 0, - 337, 0, 339, 0, 341, 0, 343, 0, 345, 0, 347, 0, 349, 0, 351, 0, - 353, 0, 355, 0, 357, 0, 359, 0, 361, 0, 363, 0, 365, 0, 367, 0, - 369, 0, 371, 0, 373, 0, 375, 0, 255, 378, 0, 380, 0, 382, 0, 0, - 0, 595, 387, 0, 389, 0, 596, 392, 0, 598, 599, 396, 0, 0, 477, 601, - 603, 402, 0, 608, 611, 0, 617, 616, 409, 0, 0, 0, 623, 626, 0, 629, - 417, 0, 419, 0, 421, 0, 640, 424, 0, 643, 0, 0, 429, 0, 648, 432, - 0, 650, 651, 436, 0, 438, 0, 658, 441, 0, 0, 0, 445, 0, 0, 0, - 0, 0, 0, 0, 454, 454, 0, 457, 457, 0, 460, 460, 0, 462, 0, 464, - 0, 466, 0, 468, 0, 470, 0, 472, 0, 474, 0, 476, 0, 0, 479, 0, - 481, 0, 483, 0, 485, 0, 487, 0, 489, 0, 491, 0, 493, 0, 495, 0, - 0, 499, 499, 0, 501, 0, 405, 447, 505, 0, 507, 0, 509, 0, 511, 0, - - - // block 2 - 513, 0, 515, 0, 517, 0, 519, 0, 521, 0, 523, 0, 525, 0, 527, 0, - 529, 0, 531, 0, 533, 0, 535, 0, 537, 0, 539, 0, 541, 0, 543, 0, - 414, 0, 547, 0, 549, 0, 551, 0, 553, 0, 555, 0, 557, 0, 559, 0, - 561, 0, 563, 0, 0, 0, 0, 0, 0, 0, 11365, 572, 0, 410, 11366, 0, - 0, 578, 0, 384, 649, 652, 583, 0, 585, 0, 587, 0, 589, 0, 591, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - - // block 3 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 881, 0, 883, 0, 0, 0, 887, 0, 0, 0, 0, 0, 0, 0, 0, 1011, - 0, 0, 0, 0, 0, 0, 940, 0, 941, 942, 943, 0, 972, 0, 973, 974, - 0, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, - 960, 961, 0, 963, 964, 965, 966, 967, 968, 969, 970, 971, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 983, - 0, 0, 0, 0, 0, 0, 0, 0, 985, 0, 987, 0, 989, 0, 991, 0, - 993, 0, 995, 0, 997, 0, 999, 0, 1001, 0, 1003, 0, 1005, 0, 1007, 0, - 0, 0, 0, 0, 952, 0, 0, 1016, 0, 1010, 1019, 0, 0, 891, 892, 893, - - - // block 4 - 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, - 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, - 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1121, 0, 1123, 0, 1125, 0, 1127, 0, 1129, 0, 1131, 0, 1133, 0, 1135, 0, - 1137, 0, 1139, 0, 1141, 0, 1143, 0, 1145, 0, 1147, 0, 1149, 0, 1151, 0, - 1153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1163, 0, 1165, 0, 1167, 0, - 1169, 0, 1171, 0, 1173, 0, 1175, 0, 1177, 0, 1179, 0, 1181, 0, 1183, 0, - 1185, 0, 1187, 0, 1189, 0, 1191, 0, 1193, 0, 1195, 0, 1197, 0, 1199, 0, - 1201, 0, 1203, 0, 1205, 0, 1207, 0, 1209, 0, 1211, 0, 1213, 0, 1215, 0, - 1231, 1218, 0, 1220, 0, 1222, 0, 1224, 0, 1226, 0, 1228, 0, 1230, 0, 0, - 1233, 0, 1235, 0, 1237, 0, 1239, 0, 1241, 0, 1243, 0, 1245, 0, 1247, 0, - 1249, 0, 1251, 0, 1253, 0, 1255, 0, 1257, 0, 1259, 0, 1261, 0, 1263, 0, - 1265, 0, 1267, 0, 1269, 0, 1271, 0, 1273, 0, 1275, 0, 1277, 0, 1279, 0, - - - // block 5 - 1281, 0, 1283, 0, 1285, 0, 1287, 0, 1289, 0, 1291, 0, 1293, 0, 1295, 0, - 1297, 0, 1299, 0, 1301, 0, 1303, 0, 1305, 0, 1307, 0, 1309, 0, 1311, 0, - 1313, 0, 1315, 0, 1317, 0, 1319, 0, 1321, 0, 1323, 0, 1325, 0, 1327, 0, - 0, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, - 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, - 1408, 1409, 1410, 1411, 1412, 1413, 1414, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - - // block 6 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - - // block 7 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 11520, 11521, 11522, 11523, 11524, 11525, 11526, 11527, 11528, 11529, 11530, 11531, 11532, 11533, 11534, 11535, - 11536, 11537, 11538, 11539, 11540, 11541, 11542, 11543, 11544, 11545, 11546, 11547, 11548, 11549, 11550, 11551, - 11552, 11553, 11554, 11555, 11556, 11557, 0, 11559, 0, 0, 0, 0, 0, 11565, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - - // block 8 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 43888, 43889, 43890, 43891, 43892, 43893, 43894, 43895, 43896, 43897, 43898, 43899, 43900, 43901, 43902, 43903, - 43904, 43905, 43906, 43907, 43908, 43909, 43910, 43911, 43912, 43913, 43914, 43915, 43916, 43917, 43918, 43919, - 43920, 43921, 43922, 43923, 43924, 43925, 43926, 43927, 43928, 43929, 43930, 43931, 43932, 43933, 43934, 43935, - 43936, 43937, 43938, 43939, 43940, 43941, 43942, 43943, 43944, 43945, 43946, 43947, 43948, 43949, 43950, 43951, - 43952, 43953, 43954, 43955, 43956, 43957, 43958, 43959, 43960, 43961, 43962, 43963, 43964, 43965, 43966, 43967, - 5112, 5113, 5114, 5115, 5116, 5117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - - // block 9 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4304, 4305, 4306, 4307, 4308, 4309, 4310, 4311, 4312, 4313, 4314, 4315, 4316, 4317, 4318, 4319, - 4320, 4321, 4322, 4323, 4324, 4325, 4326, 4327, 4328, 4329, 4330, 4331, 4332, 4333, 4334, 4335, - 4336, 4337, 4338, 4339, 4340, 4341, 4342, 4343, 4344, 4345, 4346, 0, 0, 4349, 4350, 4351, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - - // block 10 - 7681, 0, 7683, 0, 7685, 0, 7687, 0, 7689, 0, 7691, 0, 7693, 0, 7695, 0, - 7697, 0, 7699, 0, 7701, 0, 7703, 0, 7705, 0, 7707, 0, 7709, 0, 7711, 0, - 7713, 0, 7715, 0, 7717, 0, 7719, 0, 7721, 0, 7723, 0, 7725, 0, 7727, 0, - 7729, 0, 7731, 0, 7733, 0, 7735, 0, 7737, 0, 7739, 0, 7741, 0, 7743, 0, - 7745, 0, 7747, 0, 7749, 0, 7751, 0, 7753, 0, 7755, 0, 7757, 0, 7759, 0, - 7761, 0, 7763, 0, 7765, 0, 7767, 0, 7769, 0, 7771, 0, 7773, 0, 7775, 0, - 7777, 0, 7779, 0, 7781, 0, 7783, 0, 7785, 0, 7787, 0, 7789, 0, 7791, 0, - 7793, 0, 7795, 0, 7797, 0, 7799, 0, 7801, 0, 7803, 0, 7805, 0, 7807, 0, - 7809, 0, 7811, 0, 7813, 0, 7815, 0, 7817, 0, 7819, 0, 7821, 0, 7823, 0, - 7825, 0, 7827, 0, 7829, 0, 0, 0, 0, 0, 0, 0, 0, 0, 223, 0, - 7841, 0, 7843, 0, 7845, 0, 7847, 0, 7849, 0, 7851, 0, 7853, 0, 7855, 0, - 7857, 0, 7859, 0, 7861, 0, 7863, 0, 7865, 0, 7867, 0, 7869, 0, 7871, 0, - 7873, 0, 7875, 0, 7877, 0, 7879, 0, 7881, 0, 7883, 0, 7885, 0, 7887, 0, - 7889, 0, 7891, 0, 7893, 0, 7895, 0, 7897, 0, 7899, 0, 7901, 0, 7903, 0, - 7905, 0, 7907, 0, 7909, 0, 7911, 0, 7913, 0, 7915, 0, 7917, 0, 7919, 0, - 7921, 0, 7923, 0, 7925, 0, 7927, 0, 7929, 0, 7931, 0, 7933, 0, 7935, 0, - - - // block 11 - 0, 0, 0, 0, 0, 0, 0, 0, 7936, 7937, 7938, 7939, 7940, 7941, 7942, 7943, - 0, 0, 0, 0, 0, 0, 0, 0, 7952, 7953, 7954, 7955, 7956, 7957, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 7968, 7969, 7970, 7971, 7972, 7973, 7974, 7975, - 0, 0, 0, 0, 0, 0, 0, 0, 7984, 7985, 7986, 7987, 7988, 7989, 7990, 7991, - 0, 0, 0, 0, 0, 0, 0, 0, 8000, 8001, 8002, 8003, 8004, 8005, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 8017, 0, 8019, 0, 8021, 0, 8023, - 0, 0, 0, 0, 0, 0, 0, 0, 8032, 8033, 8034, 8035, 8036, 8037, 8038, 8039, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 8064, 8065, 8066, 8067, 8068, 8069, 8070, 8071, - 0, 0, 0, 0, 0, 0, 0, 0, 8080, 8081, 8082, 8083, 8084, 8085, 8086, 8087, - 0, 0, 0, 0, 0, 0, 0, 0, 8096, 8097, 8098, 8099, 8100, 8101, 8102, 8103, - 0, 0, 0, 0, 0, 0, 0, 0, 8112, 8113, 8048, 8049, 8115, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 8050, 8051, 8052, 8053, 8131, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 8144, 8145, 8054, 8055, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 8160, 8161, 8058, 8059, 8165, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 8056, 8057, 8060, 8061, 8179, 0, 0, 0, - - - // block 12 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 969, 0, 0, 0, 107, 229, 0, 0, 0, 0, - 0, 0, 8526, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8560, 8561, 8562, 8563, 8564, 8565, 8566, 8567, 8568, 8569, 8570, 8571, 8572, 8573, 8574, 8575, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 8580, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - - // block 13 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 9424, 9425, 9426, 9427, 9428, 9429, 9430, 9431, 9432, 9433, - 9434, 9435, 9436, 9437, 9438, 9439, 9440, 9441, 9442, 9443, 9444, 9445, 9446, 9447, 9448, 9449, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - - // block 14 - 11312, 11313, 11314, 11315, 11316, 11317, 11318, 11319, 11320, 11321, 11322, 11323, 11324, 11325, 11326, 11327, - 11328, 11329, 11330, 11331, 11332, 11333, 11334, 11335, 11336, 11337, 11338, 11339, 11340, 11341, 11342, 11343, - 11344, 11345, 11346, 11347, 11348, 11349, 11350, 11351, 11352, 11353, 11354, 11355, 11356, 11357, 11358, 11359, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 11361, 0, 619, 7549, 637, 0, 0, 11368, 0, 11370, 0, 11372, 0, 593, 625, 592, - 594, 0, 11379, 0, 0, 11382, 0, 0, 0, 0, 0, 0, 0, 0, 575, 576, - 11393, 0, 11395, 0, 11397, 0, 11399, 0, 11401, 0, 11403, 0, 11405, 0, 11407, 0, - 11409, 0, 11411, 0, 11413, 0, 11415, 0, 11417, 0, 11419, 0, 11421, 0, 11423, 0, - 11425, 0, 11427, 0, 11429, 0, 11431, 0, 11433, 0, 11435, 0, 11437, 0, 11439, 0, - 11441, 0, 11443, 0, 11445, 0, 11447, 0, 11449, 0, 11451, 0, 11453, 0, 11455, 0, - 11457, 0, 11459, 0, 11461, 0, 11463, 0, 11465, 0, 11467, 0, 11469, 0, 11471, 0, - 11473, 0, 11475, 0, 11477, 0, 11479, 0, 11481, 0, 11483, 0, 11485, 0, 11487, 0, - 11489, 0, 11491, 0, 0, 0, 0, 0, 0, 0, 0, 11500, 0, 11502, 0, 0, - 0, 0, 11507, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - - // block 15 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 42561, 0, 42563, 0, 42565, 0, 42567, 0, 42569, 0, 42571, 0, 42573, 0, 42575, 0, - 42577, 0, 42579, 0, 42581, 0, 42583, 0, 42585, 0, 42587, 0, 42589, 0, 42591, 0, - 42593, 0, 42595, 0, 42597, 0, 42599, 0, 42601, 0, 42603, 0, 42605, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 42625, 0, 42627, 0, 42629, 0, 42631, 0, 42633, 0, 42635, 0, 42637, 0, 42639, 0, - 42641, 0, 42643, 0, 42645, 0, 42647, 0, 42649, 0, 42651, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - - // block 16 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 42787, 0, 42789, 0, 42791, 0, 42793, 0, 42795, 0, 42797, 0, 42799, 0, - 0, 0, 42803, 0, 42805, 0, 42807, 0, 42809, 0, 42811, 0, 42813, 0, 42815, 0, - 42817, 0, 42819, 0, 42821, 0, 42823, 0, 42825, 0, 42827, 0, 42829, 0, 42831, 0, - 42833, 0, 42835, 0, 42837, 0, 42839, 0, 42841, 0, 42843, 0, 42845, 0, 42847, 0, - 42849, 0, 42851, 0, 42853, 0, 42855, 0, 42857, 0, 42859, 0, 42861, 0, 42863, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 42874, 0, 42876, 0, 7545, 42879, 0, - 42881, 0, 42883, 0, 42885, 0, 42887, 0, 0, 0, 0, 42892, 0, 613, 0, 0, - 42897, 0, 42899, 0, 0, 0, 42903, 0, 42905, 0, 42907, 0, 42909, 0, 42911, 0, - 42913, 0, 42915, 0, 42917, 0, 42919, 0, 42921, 0, 614, 604, 609, 620, 618, 0, - 670, 647, 669, 43859, 42933, 0, 42935, 0, 42937, 0, 42939, 0, 42941, 0, 42943, 0, - 42945, 0, 42947, 0, 42900, 642, 7566, 42952, 0, 42954, 0, 0, 0, 0, 0, 0, - 42961, 0, 0, 0, 0, 0, 42967, 0, 42969, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 42998, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - - // block 17 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 65345, 65346, 65347, 65348, 65349, 65350, 65351, 65352, 65353, 65354, 65355, 65356, 65357, 65358, 65359, - 65360, 65361, 65362, 65363, 65364, 65365, 65366, 65367, 65368, 65369, 65370, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - - // block 18 - 66600, 66601, 66602, 66603, 66604, 66605, 66606, 66607, 66608, 66609, 66610, 66611, 66612, 66613, 66614, 66615, - 66616, 66617, 66618, 66619, 66620, 66621, 66622, 66623, 66624, 66625, 66626, 66627, 66628, 66629, 66630, 66631, - 66632, 66633, 66634, 66635, 66636, 66637, 66638, 66639, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 66776, 66777, 66778, 66779, 66780, 66781, 66782, 66783, 66784, 66785, 66786, 66787, 66788, 66789, 66790, 66791, - 66792, 66793, 66794, 66795, 66796, 66797, 66798, 66799, 66800, 66801, 66802, 66803, 66804, 66805, 66806, 66807, - 66808, 66809, 66810, 66811, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - - // block 19 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 66967, 66968, 66969, 66970, 66971, 66972, 66973, 66974, 66975, 66976, 66977, 0, 66979, 66980, 66981, 66982, - 66983, 66984, 66985, 66986, 66987, 66988, 66989, 66990, 66991, 66992, 66993, 0, 66995, 66996, 66997, 66998, - 66999, 67000, 67001, 0, 67003, 67004, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - - // block 20 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68800, 68801, 68802, 68803, 68804, 68805, 68806, 68807, 68808, 68809, 68810, 68811, 68812, 68813, 68814, 68815, - 68816, 68817, 68818, 68819, 68820, 68821, 68822, 68823, 68824, 68825, 68826, 68827, 68828, 68829, 68830, 68831, - 68832, 68833, 68834, 68835, 68836, 68837, 68838, 68839, 68840, 68841, 68842, 68843, 68844, 68845, 68846, 68847, - 68848, 68849, 68850, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - - // block 21 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 71872, 71873, 71874, 71875, 71876, 71877, 71878, 71879, 71880, 71881, 71882, 71883, 71884, 71885, 71886, 71887, - 71888, 71889, 71890, 71891, 71892, 71893, 71894, 71895, 71896, 71897, 71898, 71899, 71900, 71901, 71902, 71903, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - - // block 22 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 93792, 93793, 93794, 93795, 93796, 93797, 93798, 93799, 93800, 93801, 93802, 93803, 93804, 93805, 93806, 93807, - 93808, 93809, 93810, 93811, 93812, 93813, 93814, 93815, 93816, 93817, 93818, 93819, 93820, 93821, 93822, 93823, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - - // block 23 - 125218, 125219, 125220, 125221, 125222, 125223, 125224, 125225, 125226, 125227, 125228, 125229, 125230, 125231, 125232, 125233, - 125234, 125235, 125236, 125237, 125238, 125239, 125240, 125241, 125242, 125243, 125244, 125245, 125246, 125247, 125248, 125249, - 125250, 125251, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - }; - - inline ::boost::uint32_t lowercase_lookup(::boost::uint32_t ch) - { - ::boost::uint32_t block_offset = lowercase_stage1[ch / 256] * 256; - return lowercase_stage2[block_offset + ch % 256]; - } - -}}}} // namespace boost::spirit::unicode::detail diff --git a/framework/contrib/boost/include/boost/spirit/home/support/char_encoding/unicode/query.hpp b/framework/contrib/boost/include/boost/spirit/home/support/char_encoding/unicode/query.hpp deleted file mode 100644 index 69e41cf24941..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/char_encoding/unicode/query.hpp +++ /dev/null @@ -1,376 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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) - - Autogenerated by MultiStageTable.py (Unicode multi-stage - table builder) (c) Peter Kankowski, 2008 -==============================================================================*/ -#if !defined(BOOST_SPIRIT_UNICODE_QUERY_FEBRUARY_2_2010) -#define BOOST_SPIRIT_UNICODE_QUERY_FEBRUARY_2_2010 - -#include - -# include "category_table.hpp" -# include "script_table.hpp" -# include "lowercase_table.hpp" -# include "uppercase_table.hpp" - -namespace boost { namespace spirit { namespace ucd -{ - // This header provides Basic (Level 1) Unicode Support - // See http://unicode.org/reports/tr18/ for details - - struct properties - { - // bit pattern: xxMMMCCC - // MMM: major_category - // CCC: category - - enum major_category - { - letter, - mark, - number, - separator, - other, - punctuation, - symbol - }; - - enum category - { - uppercase_letter = 0, // [Lu] an uppercase letter - lowercase_letter, // [Ll] a lowercase letter - titlecase_letter, // [Lt] a digraphic character, with first part uppercase - modifier_letter, // [Lm] a modifier letter - other_letter, // [Lo] other letters, including syllables and ideographs - - nonspacing_mark = 8, // [Mn] a nonspacing combining mark (zero advance width) - enclosing_mark, // [Me] an enclosing combining mark - spacing_mark, // [Mc] a spacing combining mark (positive advance width) - - decimal_number = 16, // [Nd] a decimal digit - letter_number, // [Nl] a letterlike numeric character - other_number, // [No] a numeric character of other type - - space_separator = 24, // [Zs] a space character (of various non-zero widths) - line_separator, // [Zl] U+2028 LINE SEPARATOR only - paragraph_separator, // [Zp] U+2029 PARAGRAPH SEPARATOR only - - control = 32, // [Cc] a C0 or C1 control code - format, // [Cf] a format control character - private_use, // [Co] a private-use character - surrogate, // [Cs] a surrogate code point - unassigned, // [Cn] a reserved unassigned code point or a noncharacter - - dash_punctuation = 40, // [Pd] a dash or hyphen punctuation mark - open_punctuation, // [Ps] an opening punctuation mark (of a pair) - close_punctuation, // [Pe] a closing punctuation mark (of a pair) - connector_punctuation, // [Pc] a connecting punctuation mark, like a tie - other_punctuation, // [Po] a punctuation mark of other type - initial_punctuation, // [Pi] an initial quotation mark - final_punctuation, // [Pf] a final quotation mark - - math_symbol = 48, // [Sm] a symbol of primarily mathematical use - currency_symbol, // [Sc] a currency sign - modifier_symbol, // [Sk] a non-letterlike modifier symbol - other_symbol // [So] a symbol of other type - }; - - enum derived_properties - { - alphabetic = 64, - uppercase = 128, - lowercase = 256, - white_space = 512, - hex_digit = 1024, - noncharacter_code_point = 2048, - default_ignorable_code_point = 4096 - }; - - enum script - { - adlam, - caucasian_albanian, - ahom, - arabic, - imperial_aramaic, - armenian, - avestan, - balinese, - bamum, - bassa_vah, - batak, - bengali, - bhaiksuki, - bopomofo, - brahmi, - braille, - buginese, - buhid, - chakma, - canadian_aboriginal, - carian, - cham, - cherokee, - chorasmian, - coptic, - cypro_minoan, - cypriot, - cyrillic, - devanagari, - dives_akuru, - dogra, - deseret, - duployan, - egyptian_hieroglyphs, - elbasan, - elymaic, - ethiopic, - georgian, - glagolitic, - gunjala_gondi, - masaram_gondi, - gothic, - grantha, - greek, - gujarati, - gurmukhi, - hangul, - han, - hanunoo, - hatran, - hebrew, - hiragana, - anatolian_hieroglyphs, - pahawh_hmong, - nyiakeng_puachue_hmong, - katakana_or_hiragana, - old_hungarian, - old_italic, - javanese, - kayah_li, - katakana, - kawi, - kharoshthi, - khmer, - khojki, - khitan_small_script, - kannada, - kaithi, - tai_tham, - lao, - latin, - lepcha, - limbu, - linear_a, - linear_b, - lisu, - lycian, - lydian, - mahajani, - makasar, - mandaic, - manichaean, - marchen, - medefaidrin, - mende_kikakui, - meroitic_cursive, - meroitic_hieroglyphs, - malayalam, - modi, - mongolian, - mro, - meetei_mayek, - multani, - myanmar, - nag_mundari, - nandinagari, - old_north_arabian, - nabataean, - newa, - nko, - nushu, - ogham, - ol_chiki, - old_turkic, - oriya, - osage, - osmanya, - old_uyghur, - palmyrene, - pau_cin_hau, - old_permic, - phags_pa, - inscriptional_pahlavi, - psalter_pahlavi, - phoenician, - miao, - inscriptional_parthian, - rejang, - hanifi_rohingya, - runic, - samaritan, - old_south_arabian, - saurashtra, - signwriting, - shavian, - sharada, - siddham, - khudawadi, - sinhala, - sogdian, - old_sogdian, - sora_sompeng, - soyombo, - sundanese, - syloti_nagri, - syriac, - tagbanwa, - takri, - tai_le, - new_tai_lue, - tamil, - tangut, - tai_viet, - telugu, - tifinagh, - tagalog, - thaana, - thai, - tibetan, - tirhuta, - tangsa, - toto, - ugaritic, - vai, - vithkuqi, - warang_citi, - wancho, - old_persian, - cuneiform, - yezidi, - yi, - zanabazar_square, - inherited, - common, - unknown - }; - }; - - inline properties::category get_category(::boost::uint32_t ch) - { - return static_cast(detail::category_lookup(ch) & 0x3F); - } - - inline properties::major_category get_major_category(::boost::uint32_t ch) - { - return static_cast(get_category(ch) >> 3); - } - - inline bool is_punctuation(::boost::uint32_t ch) - { - return get_major_category(ch) == properties::punctuation; - } - - inline bool is_decimal_number(::boost::uint32_t ch) - { - return get_category(ch) == properties::decimal_number; - } - - inline bool is_hex_digit(::boost::uint32_t ch) - { - return (detail::category_lookup(ch) & properties::hex_digit) != 0; - } - - inline bool is_control(::boost::uint32_t ch) - { - return get_category(ch) == properties::control; - } - - inline bool is_alphabetic(::boost::uint32_t ch) - { - return (detail::category_lookup(ch) & properties::alphabetic) != 0; - } - - inline bool is_alphanumeric(::boost::uint32_t ch) - { - return is_decimal_number(ch) || is_alphabetic(ch); - } - - inline bool is_uppercase(::boost::uint32_t ch) - { - return (detail::category_lookup(ch) & properties::uppercase) != 0; - } - - inline bool is_lowercase(::boost::uint32_t ch) - { - return (detail::category_lookup(ch) & properties::lowercase) != 0; - } - - inline bool is_white_space(::boost::uint32_t ch) - { - return (detail::category_lookup(ch) & properties::white_space) != 0; - } - - inline bool is_blank(::boost::uint32_t ch) - { - switch (ch) - { - case '\n': case '\v': case '\f': case '\r': - return false; - default: - return is_white_space(ch) - && !( get_category(ch) == properties::line_separator - || get_category(ch) == properties::paragraph_separator - ); - } - } - - inline bool is_graph(::boost::uint32_t ch) - { - return !( is_white_space(ch) - || get_category(ch) == properties::control - || get_category(ch) == properties::surrogate - || get_category(ch) == properties::unassigned - ); - } - - inline bool is_print(::boost::uint32_t ch) - { - return (is_graph(ch) || is_blank(ch)) && !is_control(ch); - } - - inline bool is_noncharacter_code_point(::boost::uint32_t ch) - { - return (detail::category_lookup(ch) & properties::noncharacter_code_point) != 0; - } - - inline bool is_default_ignorable_code_point(::boost::uint32_t ch) - { - return (detail::category_lookup(ch) & properties::default_ignorable_code_point) != 0; - } - - inline properties::script get_script(::boost::uint32_t ch) - { - return static_cast(detail::script_lookup(ch)); - } - - inline ::boost::uint32_t to_lowercase(::boost::uint32_t ch) - { - // The table returns 0 to signal that this code maps to itself - ::boost::uint32_t r = detail::lowercase_lookup(ch); - return (r == 0)? ch : r; - } - - inline ::boost::uint32_t to_uppercase(::boost::uint32_t ch) - { - // The table returns 0 to signal that this code maps to itself - ::boost::uint32_t r = detail::uppercase_lookup(ch); - return (r == 0)? ch : r; - } -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/char_encoding/unicode/script_table.hpp b/framework/contrib/boost/include/boost/spirit/home/support/char_encoding/unicode/script_table.hpp deleted file mode 100644 index d014cb7fd8d1..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/char_encoding/unicode/script_table.hpp +++ /dev/null @@ -1,3318 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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) - - AUTOGENERATED. DO NOT EDIT!!! -==============================================================================*/ -#include - -namespace boost { namespace spirit { namespace ucd { namespace detail -{ - static const ::boost::uint8_t script_stage1[] = { - - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 20, 21, 22, 23, 24, 25, 26, 27, 28, 1, 29, - 30, 31, 32, 32, 33, 32, 32, 32, 34, 32, 32, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 45, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, - 46, 46, 46, 46, 47, 48, 49, 50, 51, 52, 53, 54, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 55, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 44, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 95, 95, 96, 97, 98, 56, 56, 56, 56, 56, 56, 56, 56, 56, 99, - 100, 100, 100, 100, 101, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 102, 102, 103, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 104, 104, 105, 106, 56, 56, 107, 108, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 110, 109, 109, 109, 111, 112, 113, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 114, - 115, 116, 117, 56, 56, 56, 56, 56, 56, 56, 56, 56, 118, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 128, 129, 56, 56, 56, 56, 130, - 131, 132, 133, 56, 134, 56, 56, 135, 136, 137, 56, 56, 138, 139, 140, 56, - 141, 142, 143, 32, 32, 32, 144, 145, 146, 32, 147, 148, 56, 56, 56, 56, - 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 149, 44, 44, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 150, 151, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 152, 44, - 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 153, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 44, 44, 154, 56, 56, 56, 56, 56, - 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 155, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 156, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 157, 158, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56 - }; - - static const ::boost::uint8_t script_stage2[] = { - - // block 0 - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 163, 163, 163, 163, 163, - 163, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 70, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 70, 163, 163, 163, 163, 163, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 163, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 163, 70, 70, 70, 70, 70, 70, 70, 70, - - - // block 1 - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - - - // block 2 - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 70, 70, 70, 70, 70, 163, 163, 163, 163, 163, 13, 13, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - - - // block 3 - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 43, 43, 43, 43, 163, 43, 43, 43, 164, 164, 43, 43, 43, 43, 163, 43, - 164, 164, 164, 164, 43, 163, 43, 163, 43, 43, 43, 164, 43, 164, 43, 43, - 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, - 43, 43, 164, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, - 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, - 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, - 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, - 43, 43, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, - 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, - - - // block 4 - 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 27, 27, 27, 27, 27, 162, 162, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - - - // block 5 - 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 164, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 164, 164, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 164, 164, 5, 5, 5, - 164, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 164, 164, 164, 164, 164, 164, 164, 164, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 164, 164, 164, 164, 50, - 50, 50, 50, 50, 50, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 6 - 3, 3, 3, 3, 3, 163, 3, 3, 3, 3, 3, 3, 163, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 163, 3, 3, 3, 163, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 163, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 162, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 163, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - - - // block 7 - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 164, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 164, 164, 135, 135, 135, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, - 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, - 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, - 146, 146, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 164, 164, 99, 99, 99, - - - // block 8 - 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, - 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, - 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 164, 164, - 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 164, - 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 164, 164, 80, 164, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 164, 164, 164, 164, 164, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 164, - 3, 3, 164, 164, 164, 164, 164, 164, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 163, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - - - // block 9 - 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, - 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, - 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, - 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, - 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, - 28, 162, 162, 162, 162, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, - 28, 28, 28, 28, 163, 163, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, - 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, - 11, 11, 11, 11, 164, 11, 11, 11, 11, 11, 11, 11, 11, 164, 164, 11, - 11, 164, 164, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 11, 11, 164, 11, 11, 11, 11, 11, 11, - 11, 164, 11, 164, 164, 164, 11, 11, 11, 11, 164, 164, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 164, 164, 11, 11, 164, 164, 11, 11, 11, 11, 164, - 164, 164, 164, 164, 164, 164, 164, 11, 164, 164, 164, 164, 11, 11, 164, 11, - 11, 11, 11, 11, 164, 164, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 164, - - - // block 10 - 164, 45, 45, 45, 164, 45, 45, 45, 45, 45, 45, 164, 164, 164, 164, 45, - 45, 164, 164, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 164, 45, 45, 45, 45, 45, 45, - 45, 164, 45, 45, 164, 45, 45, 164, 45, 45, 164, 164, 45, 164, 45, 45, - 45, 45, 45, 164, 164, 164, 164, 45, 45, 164, 164, 45, 45, 45, 164, 164, - 164, 45, 164, 164, 164, 164, 164, 164, 164, 45, 45, 45, 45, 164, 45, 164, - 164, 164, 164, 164, 164, 164, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 44, 44, 44, 164, 44, 44, 44, 44, 44, 44, 44, 44, 44, 164, 44, - 44, 44, 164, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 44, 44, 164, 44, 44, 44, 44, 44, 44, - 44, 164, 44, 44, 164, 44, 44, 44, 44, 44, 164, 164, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 164, 44, 44, 44, 164, 44, 44, 44, 164, 164, - 44, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 44, 44, 44, 44, 164, 164, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 164, 164, 164, 164, 164, 164, 164, 44, 44, 44, 44, 44, 44, 44, - - - // block 11 - 164, 104, 104, 104, 164, 104, 104, 104, 104, 104, 104, 104, 104, 164, 164, 104, - 104, 164, 164, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, - 104, 104, 104, 104, 104, 104, 104, 104, 104, 164, 104, 104, 104, 104, 104, 104, - 104, 164, 104, 104, 164, 104, 104, 104, 104, 104, 164, 164, 104, 104, 104, 104, - 104, 104, 104, 104, 104, 164, 164, 104, 104, 164, 164, 104, 104, 104, 164, 164, - 164, 164, 164, 164, 164, 104, 104, 104, 164, 164, 164, 164, 104, 104, 164, 104, - 104, 104, 104, 104, 164, 164, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, - 104, 104, 104, 104, 104, 104, 104, 104, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 140, 140, 164, 140, 140, 140, 140, 140, 140, 164, 164, 164, 140, 140, - 140, 164, 140, 140, 140, 140, 164, 164, 164, 140, 140, 164, 140, 164, 140, 140, - 164, 164, 164, 140, 140, 164, 164, 164, 140, 140, 140, 164, 164, 164, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 164, 164, 164, 164, 140, 140, - 140, 140, 140, 164, 164, 164, 140, 140, 140, 164, 140, 140, 140, 140, 164, 164, - 140, 164, 164, 164, 164, 164, 164, 140, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 164, 164, 164, 164, 164, - - - // block 12 - 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 164, 143, 143, - 143, 164, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, - 143, 143, 143, 143, 143, 143, 143, 143, 143, 164, 143, 143, 143, 143, 143, 143, - 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 164, 164, 143, 143, 143, 143, - 143, 143, 143, 143, 143, 164, 143, 143, 143, 164, 143, 143, 143, 143, 164, 164, - 164, 164, 164, 164, 164, 143, 143, 164, 143, 143, 143, 164, 164, 143, 164, 164, - 143, 143, 143, 143, 164, 164, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, - 164, 164, 164, 164, 164, 164, 164, 143, 143, 143, 143, 143, 143, 143, 143, 143, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 164, 66, 66, - 66, 164, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 164, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 164, 66, 66, 66, 66, 66, 164, 164, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 164, 66, 66, 66, 164, 66, 66, 66, 66, 164, 164, - 164, 164, 164, 164, 164, 66, 66, 164, 164, 164, 164, 164, 164, 66, 66, 164, - 66, 66, 66, 66, 164, 164, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 164, 66, 66, 66, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 13 - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 164, 87, 87, - 87, 164, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 164, 87, 87, 87, 164, 87, 87, 87, 87, 87, 87, - 164, 164, 164, 164, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 164, 164, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 164, 128, 128, 128, 164, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 164, 164, 164, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 164, 128, 128, 128, 128, 128, 128, 128, 128, 128, 164, 128, 164, 164, - 128, 128, 128, 128, 128, 128, 128, 164, 164, 164, 128, 164, 164, 164, 164, 128, - 128, 128, 128, 128, 128, 164, 128, 164, 128, 128, 128, 128, 128, 128, 128, 128, - 164, 164, 164, 164, 164, 164, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 164, 164, 128, 128, 128, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 14 - 164, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, - 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, - 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, - 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 164, 164, 164, 164, 163, - 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, - 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 69, 69, 164, 69, 164, 69, 69, 69, 69, 69, 164, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 164, 69, 164, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 164, 164, - 69, 69, 69, 69, 69, 164, 69, 164, 69, 69, 69, 69, 69, 69, 69, 164, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 164, 164, 69, 69, 69, 69, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 15 - 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 148, 164, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 164, 164, 164, - 164, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 148, 164, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 164, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 164, 148, 148, - 148, 148, 148, 148, 148, 163, 163, 163, 163, 148, 148, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 16 - 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, - 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, - 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, - 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, - 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, - 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, - 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, - 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, - 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, - 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, - 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, - 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, - 37, 37, 37, 37, 37, 37, 164, 37, 164, 164, 164, 164, 164, 37, 164, 164, - 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, - 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, - 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 163, 37, 37, 37, 37, - - - // block 17 - 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, - 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, - 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, - 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, - 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, - 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, - 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, - 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, - 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, - 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, - 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, - 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, - 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, - 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, - 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, - 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, - - - // block 18 - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 164, 36, 36, 36, 36, 164, 164, - 36, 36, 36, 36, 36, 36, 36, 164, 36, 164, 36, 36, 36, 36, 164, 164, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 164, 36, 36, 36, 36, 164, 164, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 164, 36, 36, 36, 36, 164, 164, 36, 36, 36, 36, 36, 36, 36, 164, - 36, 164, 36, 36, 36, 36, 164, 164, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 164, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - - - // block 19 - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 164, 36, 36, 36, 36, 164, 164, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 164, 164, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 164, 164, 164, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 164, 164, 164, 164, 164, 164, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 164, 164, 22, 22, 22, 22, 22, 22, 164, 164, - - - // block 20 - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - - - // block 21 - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 164, 164, 164, - 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, - 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, - 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, - 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, - 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 163, 163, 163, 119, 119, - 119, 119, 119, 119, 119, 119, 119, 119, 119, 164, 164, 164, 164, 164, 164, 164, - - - // block 22 - 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, - 145, 145, 145, 145, 145, 145, 164, 164, 164, 164, 164, 164, 164, 164, 164, 145, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 163, 163, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 164, 136, 136, - 136, 164, 136, 136, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, - 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, - 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, - 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, - 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, - 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 164, 164, - 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 164, 164, 164, 164, 164, 164, - 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 164, 164, 164, 164, 164, 164, - - - // block 23 - 89, 89, 163, 163, 89, 163, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 164, 164, 164, 164, 164, 164, - 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, 89, 89, 164, 164, 164, 164, 164, 164, 164, - 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 164, 164, 164, 164, 164, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 24 - 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, - 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 164, - 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 164, 164, 164, 164, - 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 164, 164, 164, 164, - 72, 164, 164, 164, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, - 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, - 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 164, 164, - 138, 138, 138, 138, 138, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, - 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, - 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 164, 164, 164, 164, - 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, - 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 164, 164, 164, 164, 164, 164, - 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 164, 164, 164, 139, 139, - 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, - 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, - - - // block 25 - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 164, 164, 16, 16, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 164, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 164, 164, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 164, 164, 164, 164, 164, 164, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 164, 164, 164, 164, 164, 164, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 164, 164, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 26 - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 164, 164, 164, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 164, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 164, 164, 164, 164, 164, 164, 164, 164, 10, 10, 10, 10, - - - // block 27 - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 164, 164, 164, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 164, 164, 164, 71, 71, 71, - 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, - 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, - 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, - 27, 27, 27, 27, 27, 27, 27, 27, 27, 164, 164, 164, 164, 164, 164, 164, - 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, - 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, - 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 164, 164, 37, 37, 37, - 133, 133, 133, 133, 133, 133, 133, 133, 164, 164, 164, 164, 164, 164, 164, 164, - 162, 162, 162, 163, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 163, 162, 162, 162, 162, 162, 162, 162, 163, 163, 163, 163, 162, 163, 163, - 163, 163, 163, 163, 162, 163, 163, 163, 162, 162, 163, 164, 164, 164, 164, 164, - - - // block 28 - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 43, 43, 43, 43, 43, 27, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 43, 43, 43, - 43, 43, 70, 70, 70, 70, 43, 43, 43, 43, 43, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 27, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 43, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - - - // block 29 - 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, - 43, 43, 43, 43, 43, 43, 164, 164, 43, 43, 43, 43, 43, 43, 164, 164, - 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, - 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, - 43, 43, 43, 43, 43, 43, 164, 164, 43, 43, 43, 43, 43, 43, 164, 164, - 43, 43, 43, 43, 43, 43, 43, 43, 164, 43, 164, 43, 164, 43, 164, 43, - 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, - 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 164, 164, - 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, - 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, - 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, - 43, 43, 43, 43, 43, 164, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, - 43, 43, 43, 43, 43, 164, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, - 43, 43, 43, 43, 164, 164, 43, 43, 43, 43, 43, 43, 164, 43, 43, 43, - 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, - 164, 164, 43, 43, 43, 164, 43, 43, 43, 43, 43, 43, 43, 43, 43, 164, - - - // block 30 - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 162, 162, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 164, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 70, 164, 164, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 70, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 164, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 164, 164, 164, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 31 - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 43, 163, 163, 163, 70, 70, 163, 163, 163, 163, - 163, 163, 70, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 70, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 163, 163, 163, 164, 164, 164, 164, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - - - // block 32 - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - - - // block 33 - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - - - // block 34 - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - - - // block 35 - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 164, 164, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 164, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - - - // block 36 - 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, - 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, - 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, - 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, - 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, - 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, - 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, - 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, - 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, - 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, - 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, - 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, - 24, 24, 24, 24, 164, 164, 164, 164, 164, 24, 24, 24, 24, 24, 24, 24, - - - // block 37 - 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, - 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, - 37, 37, 37, 37, 37, 37, 164, 37, 164, 164, 164, 164, 164, 37, 164, 164, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, 164, 164, 164, 164, 164, 164, 164, 144, - 144, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 144, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 36, 36, 36, 36, 36, 36, 36, 164, 36, 36, 36, 36, 36, 36, 36, 164, - 36, 36, 36, 36, 36, 36, 36, 164, 36, 36, 36, 36, 36, 36, 36, 164, - 36, 36, 36, 36, 36, 36, 36, 164, 36, 36, 36, 36, 36, 36, 36, 164, - 36, 36, 36, 36, 36, 36, 36, 164, 36, 36, 36, 36, 36, 36, 36, 164, - 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - - - // block 38 - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 164, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 39 - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 164, 164, 164, 164, - - - // block 40 - 163, 163, 163, 163, 163, 47, 163, 47, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 47, 47, 47, 47, 47, 47, 47, 47, 47, 162, 162, 162, 162, 46, 46, - 163, 163, 163, 163, 163, 163, 163, 163, 47, 47, 47, 47, 163, 163, 163, 163, - 164, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 164, 164, 162, 162, 163, 163, 51, 51, 51, - 163, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 163, 163, 60, 60, 60, - - - // block 41 - 164, 164, 164, 164, 164, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 164, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, - 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, - 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, - 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, - 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, - 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 164, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - - - // block 42 - 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, - 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 164, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, - 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 163, - - - // block 43 - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - - - // block 44 - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - - - // block 45 - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - - - // block 46 - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - - - // block 47 - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 164, 164, 164, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 160, 160, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - - - // block 48 - 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, - 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, - 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, - 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, - 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, - 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, - 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, - 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, - 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, - 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, - 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, - 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, - 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, - 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, - 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, - 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, - - - // block 49 - 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, - 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, - 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 50 - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 163, 163, 163, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 164, 164, 164, 164, 164, - 70, 70, 164, 70, 164, 70, 70, 70, 70, 70, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - - - // block 51 - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 164, 164, 164, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 164, 164, 164, 164, 164, 164, - 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, - 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, - 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, - 111, 111, 111, 111, 111, 111, 111, 111, 164, 164, 164, 164, 164, 164, 164, 164, - 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, - 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, - 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, - 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, - 122, 122, 122, 122, 122, 122, 164, 164, 164, 164, 164, 164, 164, 164, 122, 122, - 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 164, 164, 164, 164, 164, 164, - 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, - 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, - - - // block 52 - 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, - 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, - 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 163, 59, - 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, - 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, - 117, 117, 117, 117, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 117, - 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, - 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 164, 164, 164, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 164, 163, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 164, 164, 164, 164, 58, 58, - 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, - 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 164, - - - // block 53 - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 164, 164, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 164, 164, 21, 21, 21, 21, - 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, - 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, - 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, - 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, - 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, - 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, - 142, 142, 142, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 142, 142, 142, 142, 142, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 54 - 164, 36, 36, 36, 36, 36, 36, 164, 164, 36, 36, 36, 36, 36, 36, 164, - 164, 36, 36, 36, 36, 36, 36, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 36, 36, 36, 36, 36, 36, 36, 164, 36, 36, 36, 36, 36, 36, 36, 164, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 163, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 43, 70, 70, 70, 70, 163, 163, 164, 164, 164, 164, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 164, 164, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 164, 164, 164, 164, 164, 164, - - - // block 55 - 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, - 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, - 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, - 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, - 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, - 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, - 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, - 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, - 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, - 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, - 46, 46, 46, 46, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, - 46, 46, 46, 46, 46, 46, 46, 164, 164, 164, 164, 46, 46, 46, 46, 46, - 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, - 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, - 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 164, 164, 164, 164, - - - // block 56 - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 57 - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 164, 164, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 58 - 70, 70, 70, 70, 70, 70, 70, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 5, 5, 5, 5, 5, 164, 164, 164, 164, 164, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 164, 50, 50, 50, 50, 50, 164, 50, 164, - 50, 50, 164, 50, 50, 164, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - - - // block 59 - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - - - // block 60 - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 163, 163, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 164, 164, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 164, 164, 164, 164, 164, 164, 164, 3, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - - - // block 61 - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 164, 164, 164, 164, 164, 164, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 27, 27, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 164, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 164, 163, 163, 163, 163, 164, 164, 164, 164, - 3, 3, 3, 3, 3, 164, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 164, 164, 163, - - - // block 62 - 164, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 163, 163, 163, 163, 163, - 163, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 163, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 163, 163, - 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, - 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 164, - 164, 164, 46, 46, 46, 46, 46, 46, 164, 164, 46, 46, 46, 46, 46, 46, - 164, 164, 46, 46, 46, 46, 46, 46, 164, 164, 46, 46, 46, 164, 164, 164, - 163, 163, 163, 163, 163, 163, 163, 164, 163, 163, 163, 163, 163, 163, 163, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 163, 163, 163, 163, 163, 164, 164, - - - // block 63 - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 164, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 164, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 164, 74, 74, 164, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 164, 164, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 164, 164, 164, 164, 164, - - - // block 64 - 163, 163, 163, 164, 164, 164, 164, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 164, 164, 164, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, - 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, - 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, - 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, - 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 164, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 164, 164, 164, - 43, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 162, 164, 164, - - - // block 65 - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 164, 164, 164, - 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 162, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 164, 164, 164, 164, - - - // block 66 - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, - 57, 57, 57, 57, 164, 164, 164, 164, 164, 164, 164, 164, 164, 57, 57, 57, - 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, - 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 164, 164, 164, 164, 164, - 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, - 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, - 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 164, 164, 164, 164, 164, - 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, - 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 164, 152, - 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, - 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, - 157, 157, 157, 157, 164, 164, 164, 164, 157, 157, 157, 157, 157, 157, 157, 157, - 157, 157, 157, 157, 157, 157, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 67 - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, - 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 164, 164, - 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 164, 164, 164, 164, 164, 164, - 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, - 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, - 105, 105, 105, 105, 164, 164, 164, 164, 105, 105, 105, 105, 105, 105, 105, 105, - 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, - 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 164, 164, 164, 164, - - - // block 68 - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 164, 164, 164, 164, 164, 164, 164, 164, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 1, - 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 164, 154, 154, 154, 154, - 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 164, 154, 154, 154, 154, - 154, 154, 154, 164, 154, 154, 164, 154, 154, 154, 154, 154, 154, 154, 154, 154, - 154, 154, 164, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, - 154, 154, 164, 154, 154, 154, 154, 154, 154, 154, 164, 154, 154, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 69 - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - - - // block 70 - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 73, 73, 73, 73, 73, 73, 73, 73, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 70, 70, 70, 70, 70, 70, 164, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 164, 70, 70, 70, 70, 70, 70, 70, 70, 70, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 71 - 26, 26, 26, 26, 26, 26, 164, 164, 26, 164, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 164, 26, 26, 164, 164, 164, 26, 164, 164, 26, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 164, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, - 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, - 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, - 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 164, - 164, 164, 164, 164, 164, 164, 164, 97, 97, 97, 97, 97, 97, 97, 97, 97, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, - 49, 49, 49, 164, 49, 49, 164, 164, 164, 164, 164, 49, 49, 49, 49, 49, - - - // block 72 - 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, - 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 164, 164, 164, 114, - 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, - 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 164, 164, 164, 164, 164, 77, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, - 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, - 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, - 85, 85, 85, 85, 85, 85, 85, 85, 164, 164, 164, 164, 85, 85, 85, 85, - 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, - 164, 164, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, - 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, - 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, - - - // block 73 - 62, 62, 62, 62, 164, 62, 62, 164, 164, 164, 164, 164, 62, 62, 62, 62, - 62, 62, 62, 62, 164, 62, 62, 62, 164, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 164, 164, 62, 62, 62, 164, 164, 164, 164, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 164, 164, 164, 164, 164, 164, 164, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 164, 164, 164, 164, 164, 164, 164, - 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, - 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, - 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, - 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 164, 164, 164, 164, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 74 - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 164, 164, 164, 6, 6, 6, 6, 6, 6, 6, - 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, - 116, 116, 116, 116, 116, 116, 164, 164, 116, 116, 116, 116, 116, 116, 116, 116, - 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, - 112, 112, 112, 164, 164, 164, 164, 164, 112, 112, 112, 112, 112, 112, 112, 112, - 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, - 113, 113, 164, 164, 164, 164, 164, 164, 164, 113, 113, 113, 113, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 113, 113, 113, 113, 113, 113, 113, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 75 - 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, - 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, - 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, - 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, - 103, 103, 103, 103, 103, 103, 103, 103, 103, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 164, 164, 164, 164, 164, 164, 164, 56, 56, 56, 56, 56, 56, - - - // block 76 - 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, - 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, - 118, 118, 118, 118, 118, 118, 118, 118, 164, 164, 164, 164, 164, 164, 164, 164, - 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 77 - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 164, - 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, - 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, - 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 164, 159, 159, 159, 164, 164, - 159, 159, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 3, 3, 3, - - - // block 78 - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 164, 164, 164, 164, 164, 164, 164, 164, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, - 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 79 - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 164, 164, - 164, 164, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 164, 164, 164, 164, 164, 164, 164, 164, 164, 14, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 67, 164, 164, - 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, - 131, 131, 131, 131, 131, 131, 131, 131, 131, 164, 164, 164, 164, 164, 164, 164, - 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 164, 164, 164, 164, 164, 164, - - - // block 80 - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 164, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 18, 18, 164, 164, 164, 164, 164, 164, 164, 164, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 164, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 81 - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 164, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 92, 92, 92, 92, 92, 92, 92, 164, 92, 164, 92, 92, 92, 92, 164, 92, - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 164, 92, - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 164, 164, 164, 164, 164, 164, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 164, 164, 164, 164, 164, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 164, 164, 164, 164, 164, 164, - - - // block 82 - 42, 42, 42, 42, 164, 42, 42, 42, 42, 42, 42, 42, 42, 164, 164, 42, - 42, 164, 164, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 164, 42, 42, 42, 42, 42, 42, - 42, 164, 42, 42, 164, 42, 42, 42, 42, 42, 164, 162, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 164, 164, 42, 42, 164, 164, 42, 42, 42, 164, 164, - 42, 164, 164, 164, 164, 164, 164, 42, 164, 164, 164, 164, 164, 42, 42, 42, - 42, 42, 42, 42, 164, 164, 42, 42, 42, 42, 42, 42, 42, 164, 164, 164, - 42, 42, 42, 42, 42, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 83 - 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, - 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, - 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, - 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, - 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, - 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 164, 98, 98, 98, - 98, 98, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 164, 164, 164, 164, 164, 164, 164, 164, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 84 - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 164, 164, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 85 - 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, - 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, - 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, - 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, - 88, 88, 88, 88, 88, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 164, 164, 164, 164, 164, 164, - 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, - 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, - 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, - 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 164, 164, 164, 164, 164, 164, - 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 86 - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 164, 164, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 164, 164, 164, 164, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 87 - 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, - 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, - 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, - 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, - 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, - 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, - 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, - 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, - 155, 155, 155, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 155, - - - // block 88 - 29, 29, 29, 29, 29, 29, 29, 164, 164, 29, 164, 164, 29, 29, 29, 29, - 29, 29, 29, 29, 164, 29, 29, 164, 29, 29, 29, 29, 29, 29, 29, 29, - 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, - 29, 29, 29, 29, 29, 29, 164, 29, 29, 164, 164, 29, 29, 29, 29, 29, - 29, 29, 29, 29, 29, 29, 29, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 95, 95, 95, 95, 95, 95, 95, 95, 164, 164, 95, 95, 95, 95, 95, 95, - 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, - 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, - 95, 95, 95, 95, 95, 95, 95, 95, 164, 164, 95, 95, 95, 95, 95, 95, - 95, 95, 95, 95, 95, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 89 - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, 164, 164, 164, 164, 164, 164, 164, 164, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 164, 164, 164, 164, 164, 164, 164, - - - // block 90 - 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 91 - 12, 12, 12, 12, 12, 12, 12, 12, 12, 164, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 164, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 164, 164, 164, - 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, - 164, 164, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, 164, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 92 - 40, 40, 40, 40, 40, 40, 40, 164, 40, 40, 164, 40, 40, 40, 40, 40, - 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 40, 40, 40, 40, 40, 164, 164, 164, 40, 164, 40, 40, 164, 40, - 40, 40, 40, 40, 40, 40, 40, 40, 164, 164, 164, 164, 164, 164, 164, 164, - 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 164, 164, 164, 164, 164, 164, - 39, 39, 39, 39, 39, 39, 164, 39, 39, 164, 39, 39, 39, 39, 39, 39, - 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, - 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 164, - 39, 39, 164, 39, 39, 39, 39, 39, 39, 164, 164, 164, 164, 164, 164, 164, - 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 93 - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 164, 164, 164, 164, 164, 164, 164, - - - // block 94 - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 164, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 164, 164, 164, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 75, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 140, - - - // block 95 - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - - - // block 96 - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 97 - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 164, - 158, 158, 158, 158, 158, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - - - // block 98 - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, - 158, 158, 158, 158, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 99 - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 25, 25, 25, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 100 - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - - - // block 101 - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 102 - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - - - // block 103 - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 104 - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - - - // block 105 - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 164, 164, 164, 164, 164, 164, 164, - 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, - 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 164, - 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 164, 164, 164, 164, 90, 90, - 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, - 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, - 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, - 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, - 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 164, - 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 164, 164, 164, 164, 164, 164, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 164, 164, - 9, 9, 9, 9, 9, 9, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 106 - 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, - 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, - 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, - 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, - 53, 53, 53, 53, 53, 53, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 164, 53, 53, 53, 53, 53, - 53, 53, 164, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, - 53, 53, 53, 53, 53, 53, 53, 53, 164, 164, 164, 164, 164, 53, 53, 53, - 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 107 - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, - 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, - 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, - 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, - 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, - 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 108 - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 164, 164, 164, 164, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 164, 164, 164, 164, 164, 164, 164, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 141, 100, 47, 47, 65, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 47, 47, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 109 - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, - - - // block 110 - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, - 141, 141, 141, 141, 141, 141, 141, 141, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 111 - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - - - // block 112 - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 113 - 141, 141, 141, 141, 141, 141, 141, 141, 141, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 114 - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 60, 60, 60, 60, 164, 60, 60, 60, 60, 60, 60, 60, 164, 60, 60, 164, - - - // block 115 - 60, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - - - // block 116 - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 60, 60, 60, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 51, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 51, 51, 51, 164, 164, 60, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 60, 60, 60, 60, 164, 164, 164, 164, 164, 164, 164, 164, - 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, - 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, - 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, - 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, - 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, - 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, - 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, - 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, - 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, - - - // block 117 - 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, - 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, - 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, - 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, - 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, - 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, - 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, - 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, - 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, - 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, - 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, - 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, - 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, - 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, - 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, - 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 164, 164, 164, 164, - - - // block 118 - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 164, 164, 164, 164, 164, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 164, 164, 164, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 164, 164, 164, 164, 164, 164, 164, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 164, 164, 32, 32, 32, 32, - 163, 163, 163, 163, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 119 - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 164, 164, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 120 - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 121 - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 164, 164, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 162, 162, 162, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 162, 162, 162, 162, 162, - 162, 162, 162, 163, 163, 162, 162, 162, 162, 162, 162, 162, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 162, 162, 162, 162, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 122 - 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, - 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, - 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, - 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, - 43, 43, 43, 43, 43, 43, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 123 - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 124 - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 164, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 164, 163, 163, - 164, 164, 163, 164, 164, 163, 163, 164, 164, 163, 163, 163, 163, 164, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 164, 163, 164, 163, 163, 163, - 163, 163, 163, 163, 164, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - - - // block 125 - 163, 163, 163, 163, 163, 163, 164, 163, 163, 163, 163, 164, 164, 163, 163, 163, - 163, 163, 163, 163, 163, 164, 163, 163, 163, 163, 163, 163, 163, 164, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 164, 163, 163, 163, 163, 164, - 163, 163, 163, 163, 163, 164, 163, 164, 164, 164, 163, 163, 163, 163, 163, 163, - 163, 164, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - - - // block 126 - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 164, 164, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - - - // block 127 - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 164, 164, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - - - // block 128 - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - - - // block 129 - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 123, 123, 123, 123, 123, - 164, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 130 - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 164, - 164, 164, 164, 164, 164, 70, 70, 70, 70, 70, 70, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 131 - 38, 38, 38, 38, 38, 38, 38, 164, 38, 38, 38, 38, 38, 38, 38, 38, - 38, 38, 38, 38, 38, 38, 38, 38, 38, 164, 164, 38, 38, 38, 38, 38, - 38, 38, 164, 38, 38, 164, 38, 38, 38, 38, 38, 164, 164, 164, 164, 164, - 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 27, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 132 - 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, - 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, - 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 164, 164, 164, - 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 164, 164, - 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 164, 164, 164, 164, 54, 54, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 133 - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, - 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, - 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, - 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, - 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 164, 164, 164, 164, 164, 156, - - - // block 134 - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, - 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, - 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 164, 164, 164, 164, 164, 164, - - - // block 135 - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 36, 36, 36, 36, 36, 36, 36, 164, 36, 36, 36, 36, 164, 36, 36, 164, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 164, - - - // block 136 - 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, - 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, - 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, - 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, - 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, - 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, - 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, - 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, - 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, - 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, - 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, - 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, - 84, 84, 84, 84, 84, 164, 164, 84, 84, 84, 84, 84, 84, 84, 84, 84, - 84, 84, 84, 84, 84, 84, 84, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 137 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 164, 164, 164, 164, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 164, 164, 164, 164, 0, 0, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 138 - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 139 - 164, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 140 - 3, 3, 3, 3, 164, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 164, 3, 3, 164, 3, 164, 164, 3, 164, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 164, 3, 3, 3, 3, 164, 3, 164, 3, 164, 164, 164, 164, - 164, 164, 3, 164, 164, 164, 164, 3, 164, 3, 164, 3, 164, 3, 3, 3, - 164, 3, 3, 164, 3, 164, 164, 3, 164, 3, 164, 3, 164, 3, 164, 3, - 164, 3, 3, 164, 3, 164, 164, 3, 3, 3, 3, 164, 3, 3, 3, 3, - 3, 3, 3, 164, 3, 3, 3, 3, 164, 3, 3, 3, 3, 164, 3, 164, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 164, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 164, 164, 164, 164, - 164, 3, 3, 3, 164, 3, 3, 3, 3, 3, 164, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 3, 3, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 141 - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 164, 164, 164, 164, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 164, - 164, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 164, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 164, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 142 - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - - - // block 143 - 51, 163, 163, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 164, 164, 164, 164, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 164, 164, 164, 164, 164, 164, 164, - 163, 163, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 163, 163, 163, 163, 163, 163, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 144 - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 164, 164, 164, 164, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 164, 164, 164, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 164, 164, 164, - - - // block 145 - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 164, 164, 164, 164, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 164, 164, 164, 164, 164, 164, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 164, 164, 164, 164, - 163, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 146 - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 164, 164, 164, 164, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 164, 164, 164, 164, 164, 164, 164, 164, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 164, 164, 164, 164, 164, 164, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 164, 164, 164, 164, 164, 164, 164, 164, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 164, 164, - 163, 163, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 147 - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 164, 164, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 164, 164, 164, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 164, 164, 164, 164, 164, 164, 164, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 164, 163, - 163, 163, 163, 163, 163, 163, 164, 164, 164, 164, 164, 164, 164, 164, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 164, 164, 164, 164, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 164, 164, 164, 164, 164, 164, 164, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 164, 164, 164, 164, 164, 164, 164, - - - // block 148 - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 164, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 164, 164, 164, 164, 164, 164, - - - // block 149 - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 150 - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 164, 164, 164, 164, 164, 164, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - - - // block 151 - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 164, 164, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - - - // block 152 - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - - - // block 153 - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 154 - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 155 - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 164, 164, 164, 164, 164, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - - - // block 156 - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 157 - 164, 163, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - - - // block 158 - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164 - }; - - inline ::boost::uint8_t script_lookup(::boost::uint32_t ch) - { - ::boost::uint32_t block_offset = script_stage1[ch / 256] * 256; - return script_stage2[block_offset + ch % 256]; - } - -}}}} // namespace boost::spirit::unicode::detail diff --git a/framework/contrib/boost/include/boost/spirit/home/support/char_encoding/unicode/uppercase_table.hpp b/framework/contrib/boost/include/boost/spirit/home/support/char_encoding/unicode/uppercase_table.hpp deleted file mode 100644 index 194590451338..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/char_encoding/unicode/uppercase_table.hpp +++ /dev/null @@ -1,810 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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) - - AUTOGENERATED. DO NOT EDIT!!! -==============================================================================*/ -#include - -namespace boost { namespace spirit { namespace ucd { namespace detail -{ - static const ::boost::uint8_t uppercase_stage1[] = { - - 0, 1, 2, 3, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 7, 6, 6, 8, 6, 6, 6, 6, 6, 6, 6, 6, 9, 10, 11, 12, - 6, 13, 6, 6, 14, 6, 6, 6, 6, 6, 6, 6, 15, 16, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 17, 18, 6, 6, 6, 19, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 20, - 6, 6, 6, 6, 21, 22, 6, 6, 6, 6, 6, 6, 23, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 24, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 25, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 26, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 - }; - - static const ::boost::uint32_t uppercase_stage2[] = { - - // block 0 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 924, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 0, 216, 217, 218, 219, 220, 221, 222, 376, - - - // block 1 - 0, 256, 0, 258, 0, 260, 0, 262, 0, 264, 0, 266, 0, 268, 0, 270, - 0, 272, 0, 274, 0, 276, 0, 278, 0, 280, 0, 282, 0, 284, 0, 286, - 0, 288, 0, 290, 0, 292, 0, 294, 0, 296, 0, 298, 0, 300, 0, 302, - 0, 73, 0, 306, 0, 308, 0, 310, 0, 0, 313, 0, 315, 0, 317, 0, - 319, 0, 321, 0, 323, 0, 325, 0, 327, 0, 0, 330, 0, 332, 0, 334, - 0, 336, 0, 338, 0, 340, 0, 342, 0, 344, 0, 346, 0, 348, 0, 350, - 0, 352, 0, 354, 0, 356, 0, 358, 0, 360, 0, 362, 0, 364, 0, 366, - 0, 368, 0, 370, 0, 372, 0, 374, 0, 0, 377, 0, 379, 0, 381, 83, - 579, 0, 0, 386, 0, 388, 0, 0, 391, 0, 0, 0, 395, 0, 0, 0, - 0, 0, 401, 0, 0, 502, 0, 0, 0, 408, 573, 0, 0, 0, 544, 0, - 0, 416, 0, 418, 0, 420, 0, 0, 423, 0, 0, 0, 0, 428, 0, 0, - 431, 0, 0, 0, 435, 0, 437, 0, 0, 440, 0, 0, 0, 444, 0, 503, - 0, 0, 0, 0, 0, 452, 452, 0, 455, 455, 0, 458, 458, 0, 461, 0, - 463, 0, 465, 0, 467, 0, 469, 0, 471, 0, 473, 0, 475, 398, 0, 478, - 0, 480, 0, 482, 0, 484, 0, 486, 0, 488, 0, 490, 0, 492, 0, 494, - 0, 0, 497, 497, 0, 500, 0, 0, 0, 504, 0, 506, 0, 508, 0, 510, - - - // block 2 - 0, 512, 0, 514, 0, 516, 0, 518, 0, 520, 0, 522, 0, 524, 0, 526, - 0, 528, 0, 530, 0, 532, 0, 534, 0, 536, 0, 538, 0, 540, 0, 542, - 0, 0, 0, 546, 0, 548, 0, 550, 0, 552, 0, 554, 0, 556, 0, 558, - 0, 560, 0, 562, 0, 0, 0, 0, 0, 0, 0, 0, 571, 0, 0, 11390, - 11391, 0, 577, 0, 0, 0, 0, 582, 0, 584, 0, 586, 0, 588, 0, 590, - 11375, 11373, 11376, 385, 390, 0, 393, 394, 0, 399, 0, 400, 42923, 0, 0, 0, - 403, 42924, 0, 404, 0, 42893, 42922, 0, 407, 406, 42926, 11362, 42925, 0, 0, 412, - 0, 11374, 413, 0, 0, 415, 0, 0, 0, 0, 0, 0, 0, 11364, 0, 0, - 422, 0, 42949, 425, 0, 0, 0, 42929, 430, 580, 433, 434, 581, 0, 0, 0, - 0, 0, 439, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42930, 42928, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - - // block 3 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 921, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 880, 0, 882, 0, 0, 0, 886, 0, 0, 0, 1021, 1022, 1023, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 902, 904, 905, 906, - 0, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, - 928, 929, 931, 931, 932, 933, 934, 935, 936, 937, 938, 939, 908, 910, 911, 0, - 914, 920, 0, 0, 0, 934, 928, 975, 0, 984, 0, 986, 0, 988, 0, 990, - 0, 992, 0, 994, 0, 996, 0, 998, 0, 1000, 0, 1002, 0, 1004, 0, 1006, - 922, 929, 1017, 895, 0, 917, 0, 0, 1015, 0, 0, 1018, 0, 0, 0, 0, - - - // block 4 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, - 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, - 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, - 0, 1120, 0, 1122, 0, 1124, 0, 1126, 0, 1128, 0, 1130, 0, 1132, 0, 1134, - 0, 1136, 0, 1138, 0, 1140, 0, 1142, 0, 1144, 0, 1146, 0, 1148, 0, 1150, - 0, 1152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1162, 0, 1164, 0, 1166, - 0, 1168, 0, 1170, 0, 1172, 0, 1174, 0, 1176, 0, 1178, 0, 1180, 0, 1182, - 0, 1184, 0, 1186, 0, 1188, 0, 1190, 0, 1192, 0, 1194, 0, 1196, 0, 1198, - 0, 1200, 0, 1202, 0, 1204, 0, 1206, 0, 1208, 0, 1210, 0, 1212, 0, 1214, - 0, 0, 1217, 0, 1219, 0, 1221, 0, 1223, 0, 1225, 0, 1227, 0, 1229, 1216, - 0, 1232, 0, 1234, 0, 1236, 0, 1238, 0, 1240, 0, 1242, 0, 1244, 0, 1246, - 0, 1248, 0, 1250, 0, 1252, 0, 1254, 0, 1256, 0, 1258, 0, 1260, 0, 1262, - 0, 1264, 0, 1266, 0, 1268, 0, 1270, 0, 1272, 0, 1274, 0, 1276, 0, 1278, - - - // block 5 - 0, 1280, 0, 1282, 0, 1284, 0, 1286, 0, 1288, 0, 1290, 0, 1292, 0, 1294, - 0, 1296, 0, 1298, 0, 1300, 0, 1302, 0, 1304, 0, 1306, 0, 1308, 0, 1310, - 0, 1312, 0, 1314, 0, 1316, 0, 1318, 0, 1320, 0, 1322, 0, 1324, 0, 1326, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, - 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, - 1360, 1361, 1362, 1363, 1364, 1365, 1366, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - - // block 6 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - - // block 7 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 7312, 7313, 7314, 7315, 7316, 7317, 7318, 7319, 7320, 7321, 7322, 7323, 7324, 7325, 7326, 7327, - 7328, 7329, 7330, 7331, 7332, 7333, 7334, 7335, 7336, 7337, 7338, 7339, 7340, 7341, 7342, 7343, - 7344, 7345, 7346, 7347, 7348, 7349, 7350, 7351, 7352, 7353, 7354, 0, 0, 7357, 7358, 7359, - - - // block 8 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 5104, 5105, 5106, 5107, 5108, 5109, 0, 0, - - - // block 9 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1042, 1044, 1054, 1057, 1058, 1058, 1066, 1122, 42570, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - - // block 10 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 42877, 0, 0, 0, 11363, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42950, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - - // block 11 - 0, 7680, 0, 7682, 0, 7684, 0, 7686, 0, 7688, 0, 7690, 0, 7692, 0, 7694, - 0, 7696, 0, 7698, 0, 7700, 0, 7702, 0, 7704, 0, 7706, 0, 7708, 0, 7710, - 0, 7712, 0, 7714, 0, 7716, 0, 7718, 0, 7720, 0, 7722, 0, 7724, 0, 7726, - 0, 7728, 0, 7730, 0, 7732, 0, 7734, 0, 7736, 0, 7738, 0, 7740, 0, 7742, - 0, 7744, 0, 7746, 0, 7748, 0, 7750, 0, 7752, 0, 7754, 0, 7756, 0, 7758, - 0, 7760, 0, 7762, 0, 7764, 0, 7766, 0, 7768, 0, 7770, 0, 7772, 0, 7774, - 0, 7776, 0, 7778, 0, 7780, 0, 7782, 0, 7784, 0, 7786, 0, 7788, 0, 7790, - 0, 7792, 0, 7794, 0, 7796, 0, 7798, 0, 7800, 0, 7802, 0, 7804, 0, 7806, - 0, 7808, 0, 7810, 0, 7812, 0, 7814, 0, 7816, 0, 7818, 0, 7820, 0, 7822, - 0, 7824, 0, 7826, 0, 7828, 0, 0, 0, 0, 0, 7776, 0, 0, 0, 0, - 0, 7840, 0, 7842, 0, 7844, 0, 7846, 0, 7848, 0, 7850, 0, 7852, 0, 7854, - 0, 7856, 0, 7858, 0, 7860, 0, 7862, 0, 7864, 0, 7866, 0, 7868, 0, 7870, - 0, 7872, 0, 7874, 0, 7876, 0, 7878, 0, 7880, 0, 7882, 0, 7884, 0, 7886, - 0, 7888, 0, 7890, 0, 7892, 0, 7894, 0, 7896, 0, 7898, 0, 7900, 0, 7902, - 0, 7904, 0, 7906, 0, 7908, 0, 7910, 0, 7912, 0, 7914, 0, 7916, 0, 7918, - 0, 7920, 0, 7922, 0, 7924, 0, 7926, 0, 7928, 0, 7930, 0, 7932, 0, 7934, - - - // block 12 - 7944, 7945, 7946, 7947, 7948, 7949, 7950, 7951, 0, 0, 0, 0, 0, 0, 0, 0, - 7960, 7961, 7962, 7963, 7964, 7965, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 7976, 7977, 7978, 7979, 7980, 7981, 7982, 7983, 0, 0, 0, 0, 0, 0, 0, 0, - 7992, 7993, 7994, 7995, 7996, 7997, 7998, 7999, 0, 0, 0, 0, 0, 0, 0, 0, - 8008, 8009, 8010, 8011, 8012, 8013, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 8025, 0, 8027, 0, 8029, 0, 8031, 0, 0, 0, 0, 0, 0, 0, 0, - 8040, 8041, 8042, 8043, 8044, 8045, 8046, 8047, 0, 0, 0, 0, 0, 0, 0, 0, - 8122, 8123, 8136, 8137, 8138, 8139, 8154, 8155, 8184, 8185, 8170, 8171, 8186, 8187, 0, 0, - 8072, 8073, 8074, 8075, 8076, 8077, 8078, 8079, 0, 0, 0, 0, 0, 0, 0, 0, - 8088, 8089, 8090, 8091, 8092, 8093, 8094, 8095, 0, 0, 0, 0, 0, 0, 0, 0, - 8104, 8105, 8106, 8107, 8108, 8109, 8110, 8111, 0, 0, 0, 0, 0, 0, 0, 0, - 8120, 8121, 0, 8124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 921, 0, - 0, 0, 0, 8140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8152, 8153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8168, 8169, 0, 0, 0, 8172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 8188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - - // block 13 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8498, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8544, 8545, 8546, 8547, 8548, 8549, 8550, 8551, 8552, 8553, 8554, 8555, 8556, 8557, 8558, 8559, - 0, 0, 0, 0, 8579, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - - // block 14 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 9398, 9399, 9400, 9401, 9402, 9403, 9404, 9405, 9406, 9407, 9408, 9409, 9410, 9411, 9412, 9413, - 9414, 9415, 9416, 9417, 9418, 9419, 9420, 9421, 9422, 9423, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - - // block 15 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 11264, 11265, 11266, 11267, 11268, 11269, 11270, 11271, 11272, 11273, 11274, 11275, 11276, 11277, 11278, 11279, - 11280, 11281, 11282, 11283, 11284, 11285, 11286, 11287, 11288, 11289, 11290, 11291, 11292, 11293, 11294, 11295, - 11296, 11297, 11298, 11299, 11300, 11301, 11302, 11303, 11304, 11305, 11306, 11307, 11308, 11309, 11310, 11311, - 0, 11360, 0, 0, 0, 570, 574, 0, 11367, 0, 11369, 0, 11371, 0, 0, 0, - 0, 0, 0, 11378, 0, 0, 11381, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 11392, 0, 11394, 0, 11396, 0, 11398, 0, 11400, 0, 11402, 0, 11404, 0, 11406, - 0, 11408, 0, 11410, 0, 11412, 0, 11414, 0, 11416, 0, 11418, 0, 11420, 0, 11422, - 0, 11424, 0, 11426, 0, 11428, 0, 11430, 0, 11432, 0, 11434, 0, 11436, 0, 11438, - 0, 11440, 0, 11442, 0, 11444, 0, 11446, 0, 11448, 0, 11450, 0, 11452, 0, 11454, - 0, 11456, 0, 11458, 0, 11460, 0, 11462, 0, 11464, 0, 11466, 0, 11468, 0, 11470, - 0, 11472, 0, 11474, 0, 11476, 0, 11478, 0, 11480, 0, 11482, 0, 11484, 0, 11486, - 0, 11488, 0, 11490, 0, 0, 0, 0, 0, 0, 0, 0, 11499, 0, 11501, 0, - 0, 0, 0, 11506, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - - // block 16 - 4256, 4257, 4258, 4259, 4260, 4261, 4262, 4263, 4264, 4265, 4266, 4267, 4268, 4269, 4270, 4271, - 4272, 4273, 4274, 4275, 4276, 4277, 4278, 4279, 4280, 4281, 4282, 4283, 4284, 4285, 4286, 4287, - 4288, 4289, 4290, 4291, 4292, 4293, 0, 4295, 0, 0, 0, 0, 0, 4301, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - - // block 17 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 42560, 0, 42562, 0, 42564, 0, 42566, 0, 42568, 0, 42570, 0, 42572, 0, 42574, - 0, 42576, 0, 42578, 0, 42580, 0, 42582, 0, 42584, 0, 42586, 0, 42588, 0, 42590, - 0, 42592, 0, 42594, 0, 42596, 0, 42598, 0, 42600, 0, 42602, 0, 42604, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 42624, 0, 42626, 0, 42628, 0, 42630, 0, 42632, 0, 42634, 0, 42636, 0, 42638, - 0, 42640, 0, 42642, 0, 42644, 0, 42646, 0, 42648, 0, 42650, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - - // block 18 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 42786, 0, 42788, 0, 42790, 0, 42792, 0, 42794, 0, 42796, 0, 42798, - 0, 0, 0, 42802, 0, 42804, 0, 42806, 0, 42808, 0, 42810, 0, 42812, 0, 42814, - 0, 42816, 0, 42818, 0, 42820, 0, 42822, 0, 42824, 0, 42826, 0, 42828, 0, 42830, - 0, 42832, 0, 42834, 0, 42836, 0, 42838, 0, 42840, 0, 42842, 0, 42844, 0, 42846, - 0, 42848, 0, 42850, 0, 42852, 0, 42854, 0, 42856, 0, 42858, 0, 42860, 0, 42862, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42873, 0, 42875, 0, 0, 42878, - 0, 42880, 0, 42882, 0, 42884, 0, 42886, 0, 0, 0, 0, 42891, 0, 0, 0, - 0, 42896, 0, 42898, 42948, 0, 0, 42902, 0, 42904, 0, 42906, 0, 42908, 0, 42910, - 0, 42912, 0, 42914, 0, 42916, 0, 42918, 0, 42920, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 42932, 0, 42934, 0, 42936, 0, 42938, 0, 42940, 0, 42942, - 0, 42944, 0, 42946, 0, 0, 0, 0, 42951, 0, 42953, 0, 0, 0, 0, 0, - 0, 42960, 0, 0, 0, 0, 0, 42966, 0, 42968, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 42997, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - - // block 19 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 42931, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 5024, 5025, 5026, 5027, 5028, 5029, 5030, 5031, 5032, 5033, 5034, 5035, 5036, 5037, 5038, 5039, - 5040, 5041, 5042, 5043, 5044, 5045, 5046, 5047, 5048, 5049, 5050, 5051, 5052, 5053, 5054, 5055, - 5056, 5057, 5058, 5059, 5060, 5061, 5062, 5063, 5064, 5065, 5066, 5067, 5068, 5069, 5070, 5071, - 5072, 5073, 5074, 5075, 5076, 5077, 5078, 5079, 5080, 5081, 5082, 5083, 5084, 5085, 5086, 5087, - 5088, 5089, 5090, 5091, 5092, 5093, 5094, 5095, 5096, 5097, 5098, 5099, 5100, 5101, 5102, 5103, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - - // block 20 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 65313, 65314, 65315, 65316, 65317, 65318, 65319, 65320, 65321, 65322, 65323, 65324, 65325, 65326, 65327, - 65328, 65329, 65330, 65331, 65332, 65333, 65334, 65335, 65336, 65337, 65338, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - - // block 21 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66560, 66561, 66562, 66563, 66564, 66565, 66566, 66567, - 66568, 66569, 66570, 66571, 66572, 66573, 66574, 66575, 66576, 66577, 66578, 66579, 66580, 66581, 66582, 66583, - 66584, 66585, 66586, 66587, 66588, 66589, 66590, 66591, 66592, 66593, 66594, 66595, 66596, 66597, 66598, 66599, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66736, 66737, 66738, 66739, 66740, 66741, 66742, 66743, - 66744, 66745, 66746, 66747, 66748, 66749, 66750, 66751, 66752, 66753, 66754, 66755, 66756, 66757, 66758, 66759, - 66760, 66761, 66762, 66763, 66764, 66765, 66766, 66767, 66768, 66769, 66770, 66771, 0, 0, 0, 0, - - - // block 22 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 66928, 66929, 66930, 66931, 66932, 66933, 66934, 66935, 66936, - 66937, 66938, 0, 66940, 66941, 66942, 66943, 66944, 66945, 66946, 66947, 66948, 66949, 66950, 66951, 66952, - 66953, 66954, 0, 66956, 66957, 66958, 66959, 66960, 66961, 66962, 0, 66964, 66965, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - - // block 23 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68736, 68737, 68738, 68739, 68740, 68741, 68742, 68743, 68744, 68745, 68746, 68747, 68748, 68749, 68750, 68751, - 68752, 68753, 68754, 68755, 68756, 68757, 68758, 68759, 68760, 68761, 68762, 68763, 68764, 68765, 68766, 68767, - 68768, 68769, 68770, 68771, 68772, 68773, 68774, 68775, 68776, 68777, 68778, 68779, 68780, 68781, 68782, 68783, - 68784, 68785, 68786, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - - // block 24 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 71840, 71841, 71842, 71843, 71844, 71845, 71846, 71847, 71848, 71849, 71850, 71851, 71852, 71853, 71854, 71855, - 71856, 71857, 71858, 71859, 71860, 71861, 71862, 71863, 71864, 71865, 71866, 71867, 71868, 71869, 71870, 71871, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - - // block 25 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 93760, 93761, 93762, 93763, 93764, 93765, 93766, 93767, 93768, 93769, 93770, 93771, 93772, 93773, 93774, 93775, - 93776, 93777, 93778, 93779, 93780, 93781, 93782, 93783, 93784, 93785, 93786, 93787, 93788, 93789, 93790, 93791, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - - // block 26 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 125184, 125185, 125186, 125187, 125188, 125189, 125190, 125191, 125192, 125193, 125194, 125195, 125196, 125197, - 125198, 125199, 125200, 125201, 125202, 125203, 125204, 125205, 125206, 125207, 125208, 125209, 125210, 125211, 125212, 125213, - 125214, 125215, 125216, 125217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - }; - - inline ::boost::uint32_t uppercase_lookup(::boost::uint32_t ch) - { - ::boost::uint32_t block_offset = uppercase_stage1[ch / 256] * 256; - return uppercase_stage2[block_offset + ch % 256]; - } - -}}}} // namespace boost::spirit::unicode::detail diff --git a/framework/contrib/boost/include/boost/spirit/home/support/char_set/basic_chset.hpp b/framework/contrib/boost/include/boost/spirit/home/support/char_set/basic_chset.hpp deleted file mode 100644 index f716ad03dbc0..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/char_set/basic_chset.hpp +++ /dev/null @@ -1,249 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - Copyright (c) 2001-2009 Daniel Nuffer - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_BASIC_CHSET_APRIL_17_2008 -#define BOOST_SPIRIT_BASIC_CHSET_APRIL_17_2008 - -#if defined(_MSC_VER) -#pragma once -#endif - -/////////////////////////////////////////////////////////////////////////////// -#include -#include -#include - -namespace boost { namespace spirit { namespace support { namespace detail -{ - /////////////////////////////////////////////////////////////////////////// - // - // basic_chset: basic character set implementation using range_run - // - /////////////////////////////////////////////////////////////////////////// - template - struct basic_chset - { - basic_chset() {} - basic_chset(basic_chset const& arg_) - : rr(arg_.rr) {} - - bool - test(Char v) const - { - return rr.test(v); - } - - void - set(Char from, Char to) - { - rr.set(range(from, to)); - } - - void - set(Char c) - { - rr.set(range(c, c)); - } - - void - clear(Char from, Char to) - { - rr.clear(range(from, to)); - } - - void - clear(Char c) - { - rr.clear(range(c, c)); - } - - void - clear() - { - rr.clear(); - } - - void - inverse() - { - basic_chset inv; - inv.set( - (std::numeric_limits::min)(), - (std::numeric_limits::max)() - ); - inv -= *this; - swap(inv); - } - - void - swap(basic_chset& x) - { - rr.swap(x.rr); - } - - - basic_chset& - operator|=(basic_chset const& x) - { - typedef typename range_run::const_iterator const_iterator; - for (const_iterator iter = x.rr.begin(); iter != x.rr.end(); ++iter) - rr.set(*iter); - return *this; - } - - basic_chset& - operator&=(basic_chset const& x) - { - basic_chset inv; - inv.set( - (std::numeric_limits::min)(), - (std::numeric_limits::max)() - ); - inv -= x; - *this -= inv; - return *this; - } - - basic_chset& - operator-=(basic_chset const& x) - { - typedef typename range_run::const_iterator const_iterator; - for (const_iterator iter = x.rr.begin(); iter != x.rr.end(); ++iter) - rr.clear(*iter); - return *this; - } - - basic_chset& - operator^=(basic_chset const& x) - { - basic_chset bma = x; - bma -= *this; - *this -= x; - *this |= bma; - return *this; - } - - private: range_run rr; - }; - -#if (CHAR_BIT == 8) - - /////////////////////////////////////////////////////////////////////////// - // - // basic_chset: specializations for 8 bit chars using std::bitset - // - /////////////////////////////////////////////////////////////////////////// - template - struct basic_chset_8bit - { - basic_chset_8bit() {} - basic_chset_8bit(basic_chset_8bit const& arg_) - : bset(arg_.bset) {} - - bool - test(Char v) const - { - return bset.test((unsigned char)v); - } - - void - set(Char from, Char to) - { - for (int i = from; i <= to; ++i) - bset.set((unsigned char)i); - } - - void - set(Char c) - { - bset.set((unsigned char)c); - } - - void - clear(Char from, Char to) - { - for (int i = from; i <= to; ++i) - bset.reset((unsigned char)i); - } - - void - clear(Char c) - { - bset.reset((unsigned char)c); - } - - void - clear() - { - bset.reset(); - } - - void - inverse() - { - bset.flip(); - } - - void - swap(basic_chset_8bit& x) - { - std::swap(bset, x.bset); - } - - basic_chset_8bit& - operator|=(basic_chset_8bit const& x) - { - bset |= x.bset; - return *this; - } - - basic_chset_8bit& - operator&=(basic_chset_8bit const& x) - { - bset &= x.bset; - return *this; - } - - basic_chset_8bit& - operator-=(basic_chset_8bit const& x) - { - bset &= ~x.bset; - return *this; - } - - basic_chset_8bit& - operator^=(basic_chset_8bit const& x) - { - bset ^= x.bset; - return *this; - } - - private: std::bitset<256> bset; - }; - - ///////////////////////////////// - template <> - struct basic_chset - : basic_chset_8bit {}; - - ///////////////////////////////// - template <> - struct basic_chset - : basic_chset_8bit {}; - - ///////////////////////////////// - template <> - struct basic_chset - : basic_chset_8bit {}; - -#endif // #if (CHAR_BIT == 8) - -}}}} - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/support/char_set/range.hpp b/framework/contrib/boost/include/boost/spirit/home/support/char_set/range.hpp deleted file mode 100644 index 197388964580..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/char_set/range.hpp +++ /dev/null @@ -1,32 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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_RANGE_MAY_16_2006_0720_PM) -#define BOOST_SPIRIT_RANGE_MAY_16_2006_0720_PM - -#if defined(_MSC_VER) -#pragma once -#endif - -namespace boost { namespace spirit { namespace support { namespace detail -{ - /////////////////////////////////////////////////////////////////////////// - // A closed range (first, last) - /////////////////////////////////////////////////////////////////////////// - template - struct range - { - typedef T value_type; - - range() : first(), last() {} - range(T first_, T last_) : first(first_), last(last_) {} - - T first; - T last; - }; -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/char_set/range_functions.hpp b/framework/contrib/boost/include/boost/spirit/home/support/char_set/range_functions.hpp deleted file mode 100644 index ea2fb9f0ec1d..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/char_set/range_functions.hpp +++ /dev/null @@ -1,98 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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_RANGE_FUNCTIONS_MAY_16_2006_0720_PM) -#define BOOST_SPIRIT_RANGE_FUNCTIONS_MAY_16_2006_0720_PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include - -namespace boost { namespace spirit { namespace support { namespace detail -{ - template - inline bool - is_valid(Range const& range) - { - // test for valid ranges - return range.first <= range.last; - } - - template - inline bool - includes(Range const& range, Range const& other) - { - // see if two ranges intersect - return (range.first <= other.first) && (range.last >= other.last); - } - - template - inline bool - includes(Range const& range, typename Range::value_type val) - { - // see if val is in range - return (range.first <= val) && (range.last >= val); - } - - template - inline bool - can_merge(Range const& range, Range const& other) - { - // see if a 'range' overlaps, or is adjacent to - // another range 'other', so we can merge them - - typedef typename Range::value_type value_type; - typedef std::numeric_limits limits; - - value_type decr_first = - range.first == (limits::min)() - ? range.first : range.first-1; - - value_type incr_last = - range.last == (limits::max)() - ? range.last : range.last+1; - - return (decr_first <= other.last) && (incr_last >= other.first); - } - - template - inline void - merge(Range& result, Range const& other) - { - // merge two ranges - if (result.first > other.first) - result.first = other.first; - if (result.last < other.last) - result.last = other.last; - } - - template - struct range_compare - { - // compare functor with a value or another range - - typedef typename Range::value_type value_type; - - bool operator()(Range const& x, const value_type y) const - { - return x.first < y; - } - - bool operator()(value_type const x, Range const& y) const - { - return x < y.first; - } - - bool operator()(Range const& x, Range const& y) const - { - return x.first < y.first; - } - }; -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/char_set/range_run.hpp b/framework/contrib/boost/include/boost/spirit/home/support/char_set/range_run.hpp deleted file mode 100644 index 8c1bb590a490..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/char_set/range_run.hpp +++ /dev/null @@ -1,56 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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_RANGE_RUN_MAY_16_2006_0801_PM) -#define BOOST_SPIRIT_RANGE_RUN_MAY_16_2006_0801_PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include - -namespace boost { namespace spirit { namespace support { namespace detail -{ - /////////////////////////////////////////////////////////////////////////// - // range_run - // - // An implementation of a sparse bit (boolean) set. The set uses - // a sorted vector of disjoint ranges. This class implements the - // bare minimum essentials from which the full range of set - // operators can be implemented. The set is constructed from - // ranges. Internally, adjacent or overlapping ranges are - // coalesced. - // - // range_runs are very space-economical in situations where there - // are lots of ranges and a few individual disjoint values. - // Searching is O(log n) where n is the number of ranges. - // - // { Low level interface } - /////////////////////////////////////////////////////////////////////////// - template - class range_run - { - public: - - typedef range range_type; - typedef std::vector storage_type; - - void swap(range_run& other); - bool test(Char v) const; - void set(range_type const& range); - void clear(range_type const& range); - void clear(); - - private: - - storage_type run; - }; -}}}} - -#include -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/char_set/range_run_impl.hpp b/framework/contrib/boost/include/boost/spirit/home/support/char_set/range_run_impl.hpp deleted file mode 100644 index 9dd206454cd2..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/char_set/range_run_impl.hpp +++ /dev/null @@ -1,185 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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_RANGE_RUN_MAY_16_2006_0807_PM) -#define BOOST_SPIRIT_RANGE_RUN_MAY_16_2006_0807_PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include - -namespace boost { namespace spirit { namespace support { namespace detail -{ - template - inline bool - try_merge(Run& run, Iterator iter, Range const& range) - { - // if *iter intersects with, or is adjacent to, 'range'... - if (can_merge(*iter, range)) - { - // merge range and *iter - merge(*iter, range); - - // collapse all subsequent ranges that can merge with *iter: - Iterator i = iter+1; - // 1. skip subsequent ranges completely included in *iter - while (i != run.end() && i->last <= iter->last) - ++i; - // 2. collapse next range if adjacent or overlapping with *iter - if (i != run.end() && i->first-1 <= iter->last) - { - iter->last = i->last; - ++i; - } - - // erase all ranges that were collapsed - run.erase(iter+1, i); - return true; - } - return false; - } - - template - inline bool - range_run::test(Char val) const - { - if (run.empty()) - return false; - - // search the ranges for one that potentially includes val - typename storage_type::const_iterator iter = - std::upper_bound( - run.begin(), run.end(), val, - range_compare() - ); - - // return true if *(iter-1) includes val - return iter != run.begin() && includes(*(--iter), val); - } - - template - inline void - range_run::swap(range_run& other) - { - run.swap(other.run); - } - - template - void - range_run::set(range_type const& range) - { - BOOST_ASSERT(is_valid(range)); - if (run.empty()) - { - // the vector is empty, insert 'range' - run.push_back(range); - return; - } - - // search the ranges for one that potentially includes 'range' - typename storage_type::iterator iter = - std::upper_bound( - run.begin(), run.end(), range, - range_compare() - ); - - if (iter != run.begin()) - { - // if *(iter-1) includes 'range', return early - if (includes(*(iter-1), range)) - { - return; - } - - // if *(iter-1) can merge with 'range', merge them and return - if (try_merge(run, iter-1, range)) - { - return; - } - } - - // if *iter can merge with with 'range', merge them - if (iter == run.end() || !try_merge(run, iter, range)) - { - // no overlap, insert 'range' - run.insert(iter, range); - } - } - - template - void - range_run::clear(range_type const& range) - { - BOOST_ASSERT(is_valid(range)); - if (!run.empty()) - { - // search the ranges for one that potentially includes 'range' - typename storage_type::iterator iter = - std::upper_bound( - run.begin(), run.end(), range, - range_compare() - ); - - // 'range' starts with or after another range: - if (iter != run.begin()) - { - typename storage_type::iterator const left_iter = iter-1; - - // 'range' starts after '*left_iter': - if (left_iter->first < range.first) - { - // if 'range' is completely included inside '*left_iter': - // need to break it apart into two ranges (punch a hole), - if (left_iter->last > range.last) - { - Char save_last = left_iter->last; - left_iter->last = range.first-1; - run.insert(iter, range_type(range.last+1, save_last)); - return; - } - // if 'range' contains 'left_iter->last': - // truncate '*left_iter' (clip its right) - else if (left_iter->last >= range.first) - { - left_iter->last = range.first-1; - } - } - - // 'range' has the same left bound as '*left_iter': it - // must be removed or truncated by the code below - else - { - iter = left_iter; - } - } - - // remove or truncate subsequent ranges that overlap with 'range': - typename storage_type::iterator i = iter; - // 1. skip subsequent ranges completely included in 'range' - while (i != run.end() && i->last <= range.last) - ++i; - // 2. clip left of next range if overlapping with 'range' - if (i != run.end() && i->first <= range.last) - i->first = range.last+1; - - // erase all ranges that 'range' contained - run.erase(iter, i); - } - } - - template - inline void - range_run::clear() - { - run.clear(); - } -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/common_terminals.hpp b/framework/contrib/boost/include/boost/spirit/home/support/common_terminals.hpp deleted file mode 100644 index bd1cbb58ce52..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/common_terminals.hpp +++ /dev/null @@ -1,510 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_COMMON_PLACEHOLDERS_OCTOBER_16_2008_0102PM -#define BOOST_SPIRIT_COMMON_PLACEHOLDERS_OCTOBER_16_2008_0102PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include - -#if defined(BOOST_SPIRIT_UNICODE) -# include -#endif - -namespace boost { namespace spirit -{ - typedef mpl::vector< - spirit::char_encoding::ascii - , spirit::char_encoding::iso8859_1 - , spirit::char_encoding::standard - , spirit::char_encoding::standard_wide -#if defined(BOOST_SPIRIT_UNICODE) - , spirit::char_encoding::unicode -#endif - > - char_encodings; - - template - struct is_char_encoding : mpl::false_ {}; - - template <> - struct is_char_encoding : mpl::true_ {}; - - template <> - struct is_char_encoding : mpl::true_ {}; - - template <> - struct is_char_encoding : mpl::true_ {}; - - template <> - struct is_char_encoding : mpl::true_ {}; - -#if defined(BOOST_SPIRIT_UNICODE) - template <> - struct is_char_encoding : mpl::true_ {}; -#endif - - template - struct encoding - : proto::terminal >::type - {}; - - // Our basic terminals - BOOST_SPIRIT_DEFINE_TERMINALS_NAME( - ( verbatim, verbatim_type ) - ( no_delimit, no_delimit_type ) - ( lexeme, lexeme_type ) - ( no_skip, no_skip_type ) - ( omit, omit_type ) - ( raw, raw_type ) - ( as_string, as_string_type ) - ( as_wstring, as_wstring_type ) - ( inf, inf_type ) - ( eol, eol_type ) - ( eoi, eoi_type ) - ( buffer, buffer_type ) - ( true_, true_type ) - ( false_, false_type ) - ( matches, matches_type ) - ( hold, hold_type ) - ( strict, strict_type ) - ( relaxed, relaxed_type ) - ( duplicate, duplicate_type ) - ( expect, expect_type ) - ) - - // Our extended terminals - BOOST_SPIRIT_DEFINE_TERMINALS_NAME_EX( - ( lit, lit_type ) - ( bin, bin_type ) - ( oct, oct_type ) - ( hex, hex_type ) - ( bool_, bool_type ) - ( ushort_, ushort_type ) - ( ulong_, ulong_type ) - ( uint_, uint_type ) - ( short_, short_type ) - ( long_, long_type ) - ( int_, int_type ) - ( ulong_long, ulong_long_type ) - ( long_long, long_long_type ) - ( float_, float_type ) - ( double_, double_type ) - ( long_double, long_double_type ) - ( repeat, repeat_type ) - ( eps, eps_type ) - ( pad, pad_type ) - ( byte_, byte_type ) - ( word, word_type ) - ( big_word, big_word_type ) - ( little_word, little_word_type ) - ( dword, dword_type ) - ( big_dword, big_dword_type ) - ( little_dword, little_dword_type ) - ( qword, qword_type ) - ( big_qword, big_qword_type ) - ( little_qword, little_qword_type ) - ( bin_float, bin_float_type ) - ( big_bin_float, big_bin_float_type ) - ( little_bin_float, little_bin_float_type ) - ( bin_double, bin_double_type ) - ( big_bin_double, big_bin_double_type ) - ( little_bin_double, little_bin_double_type ) - ( skip, skip_type ) - ( delimit, delimit_type ) - ( stream, stream_type ) - ( wstream, wstream_type ) - ( left_align, left_align_type ) - ( right_align, right_align_type ) - ( center, center_type ) - ( maxwidth, maxwidth_type ) - ( set_state, set_state_type ) - ( in_state, in_state_type ) - ( token, token_type ) - ( tokenid, tokenid_type ) - ( raw_token, raw_token_type ) - ( tokenid_mask, tokenid_mask_type ) - ( attr, attr_type ) - ( columns, columns_type ) - ( auto_, auto_type ) - ) - - // special tags (used mainly for stateful tag types) - namespace tag - { - struct attr_cast { BOOST_SPIRIT_IS_TAG() }; - struct as { BOOST_SPIRIT_IS_TAG() }; - } -}} - -/////////////////////////////////////////////////////////////////////////////// -// Here we place the character-set sensitive placeholders. We have one set -// each for ascii, iso8859_1, standard and standard_wide and unicode. These -// placeholders are placed in its char-set namespace. For example, there exist -// a placeholder spirit::ascii::alnum for ascii versions of alnum. - -#define BOOST_SPIRIT_TAG_CHAR_SPEC(charset) \ - typedef tag::char_code char_; \ - typedef tag::char_code string; \ - /***/ - -#ifdef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - -#define BOOST_SPIRIT_CHAR_SPEC(charset) \ - typedef spirit::terminal char_type; \ - typedef spirit::terminal string_type; \ - /***/ - -#else - -#define BOOST_SPIRIT_CHAR_SPEC(charset) \ - typedef spirit::terminal char_type; \ - char_type const char_ = char_type(); \ - \ - inline void silence_unused_warnings_##char_() { (void) char_; } \ - \ - typedef spirit::terminal string_type; \ - string_type const string = string_type(); \ - \ - inline void silence_unused_warnings_##string() { (void) string; } \ - /***/ - -#endif - -#ifdef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - -#define BOOST_SPIRIT_CHAR_CODE(name, charset) \ - typedef proto::terminal >::type \ - name##_type; \ - /***/ - -#else - -#define BOOST_SPIRIT_CHAR_CODE(name, charset) \ - typedef proto::terminal >::type \ - name##_type; \ - name##_type const name = name##_type(); \ - \ - inline void silence_unused_warnings_##name() { (void) name; } \ - /***/ - - -#endif - -#define BOOST_SPIRIT_DEFINE_CHAR_CODES(charset) \ - namespace boost { namespace spirit { namespace tag { namespace charset \ - { \ - BOOST_SPIRIT_TAG_CHAR_SPEC(spirit::char_encoding::charset) \ - }}}} \ - namespace boost { namespace spirit { namespace charset \ - { \ - BOOST_SPIRIT_CHAR_SPEC(charset) \ - \ - BOOST_SPIRIT_CHAR_CODE(alnum, spirit::char_encoding::charset) \ - BOOST_SPIRIT_CHAR_CODE(alpha, spirit::char_encoding::charset) \ - BOOST_SPIRIT_CHAR_CODE(blank, spirit::char_encoding::charset) \ - BOOST_SPIRIT_CHAR_CODE(cntrl, spirit::char_encoding::charset) \ - BOOST_SPIRIT_CHAR_CODE(digit, spirit::char_encoding::charset) \ - BOOST_SPIRIT_CHAR_CODE(graph, spirit::char_encoding::charset) \ - BOOST_SPIRIT_CHAR_CODE(print, spirit::char_encoding::charset) \ - BOOST_SPIRIT_CHAR_CODE(punct, spirit::char_encoding::charset) \ - BOOST_SPIRIT_CHAR_CODE(space, spirit::char_encoding::charset) \ - BOOST_SPIRIT_CHAR_CODE(xdigit, spirit::char_encoding::charset) \ - \ - BOOST_SPIRIT_CHAR_CODE(no_case, spirit::char_encoding::charset) \ - BOOST_SPIRIT_CHAR_CODE(lower, spirit::char_encoding::charset) \ - BOOST_SPIRIT_CHAR_CODE(upper, spirit::char_encoding::charset) \ - BOOST_SPIRIT_CHAR_CODE(lowernum, spirit::char_encoding::charset) \ - BOOST_SPIRIT_CHAR_CODE(uppernum, spirit::char_encoding::charset) \ - }}} \ - /***/ - -BOOST_SPIRIT_DEFINE_CHAR_CODES(ascii) -BOOST_SPIRIT_DEFINE_CHAR_CODES(iso8859_1) -BOOST_SPIRIT_DEFINE_CHAR_CODES(standard) -BOOST_SPIRIT_DEFINE_CHAR_CODES(standard_wide) - -namespace boost { namespace spirit { namespace traits -{ - template - struct char_encoding_from_char; - - template <> - struct char_encoding_from_char - : mpl::identity - {}; - - template <> - struct char_encoding_from_char - : mpl::identity - {}; - - template - struct char_encoding_from_char - : char_encoding_from_char - {}; -}}} - -#if defined(BOOST_SPIRIT_UNICODE) -BOOST_SPIRIT_DEFINE_CHAR_CODES(unicode) - - namespace boost { namespace spirit { namespace tag { namespace unicode - { - BOOST_SPIRIT_TAG_CHAR_SPEC(spirit::char_encoding::unicode) - }}}} - - namespace boost { namespace spirit { namespace unicode - { -#define BOOST_SPIRIT_UNICODE_CHAR_CODE(name) \ - BOOST_SPIRIT_CHAR_CODE(name, spirit::char_encoding::unicode) \ - - /////////////////////////////////////////////////////////////////////////// - // Unicode Major Categories - /////////////////////////////////////////////////////////////////////////// - BOOST_SPIRIT_UNICODE_CHAR_CODE(letter) - BOOST_SPIRIT_UNICODE_CHAR_CODE(mark) - BOOST_SPIRIT_UNICODE_CHAR_CODE(number) - BOOST_SPIRIT_UNICODE_CHAR_CODE(separator) - BOOST_SPIRIT_UNICODE_CHAR_CODE(other) - BOOST_SPIRIT_UNICODE_CHAR_CODE(punctuation) - BOOST_SPIRIT_UNICODE_CHAR_CODE(symbol) - - /////////////////////////////////////////////////////////////////////////// - // Unicode General Categories - /////////////////////////////////////////////////////////////////////////// - BOOST_SPIRIT_UNICODE_CHAR_CODE(uppercase_letter) - BOOST_SPIRIT_UNICODE_CHAR_CODE(lowercase_letter) - BOOST_SPIRIT_UNICODE_CHAR_CODE(titlecase_letter) - BOOST_SPIRIT_UNICODE_CHAR_CODE(modifier_letter) - BOOST_SPIRIT_UNICODE_CHAR_CODE(other_letter) - - BOOST_SPIRIT_UNICODE_CHAR_CODE(nonspacing_mark) - BOOST_SPIRIT_UNICODE_CHAR_CODE(enclosing_mark) - BOOST_SPIRIT_UNICODE_CHAR_CODE(spacing_mark) - - BOOST_SPIRIT_UNICODE_CHAR_CODE(decimal_number) - BOOST_SPIRIT_UNICODE_CHAR_CODE(letter_number) - BOOST_SPIRIT_UNICODE_CHAR_CODE(other_number) - - BOOST_SPIRIT_UNICODE_CHAR_CODE(space_separator) - BOOST_SPIRIT_UNICODE_CHAR_CODE(line_separator) - BOOST_SPIRIT_UNICODE_CHAR_CODE(paragraph_separator) - - BOOST_SPIRIT_UNICODE_CHAR_CODE(control) - BOOST_SPIRIT_UNICODE_CHAR_CODE(format) - BOOST_SPIRIT_UNICODE_CHAR_CODE(private_use) - BOOST_SPIRIT_UNICODE_CHAR_CODE(surrogate) - BOOST_SPIRIT_UNICODE_CHAR_CODE(unassigned) - - BOOST_SPIRIT_UNICODE_CHAR_CODE(dash_punctuation) - BOOST_SPIRIT_UNICODE_CHAR_CODE(open_punctuation) - BOOST_SPIRIT_UNICODE_CHAR_CODE(close_punctuation) - BOOST_SPIRIT_UNICODE_CHAR_CODE(connector_punctuation) - BOOST_SPIRIT_UNICODE_CHAR_CODE(other_punctuation) - BOOST_SPIRIT_UNICODE_CHAR_CODE(initial_punctuation) - BOOST_SPIRIT_UNICODE_CHAR_CODE(final_punctuation) - - BOOST_SPIRIT_UNICODE_CHAR_CODE(math_symbol) - BOOST_SPIRIT_UNICODE_CHAR_CODE(currency_symbol) - BOOST_SPIRIT_UNICODE_CHAR_CODE(modifier_symbol) - BOOST_SPIRIT_UNICODE_CHAR_CODE(other_symbol) - - /////////////////////////////////////////////////////////////////////////// - // Unicode Derived Categories - /////////////////////////////////////////////////////////////////////////// - BOOST_SPIRIT_UNICODE_CHAR_CODE(alphabetic) - BOOST_SPIRIT_UNICODE_CHAR_CODE(uppercase) - BOOST_SPIRIT_UNICODE_CHAR_CODE(lowercase) - BOOST_SPIRIT_UNICODE_CHAR_CODE(white_space) - BOOST_SPIRIT_UNICODE_CHAR_CODE(hex_digit) - BOOST_SPIRIT_UNICODE_CHAR_CODE(noncharacter_code_point) - BOOST_SPIRIT_UNICODE_CHAR_CODE(default_ignorable_code_point) - - /////////////////////////////////////////////////////////////////////////// - // Unicode Scripts - /////////////////////////////////////////////////////////////////////////// - BOOST_SPIRIT_UNICODE_CHAR_CODE(adlam) - BOOST_SPIRIT_UNICODE_CHAR_CODE(caucasian_albanian) - BOOST_SPIRIT_UNICODE_CHAR_CODE(ahom) - BOOST_SPIRIT_UNICODE_CHAR_CODE(arabic) - BOOST_SPIRIT_UNICODE_CHAR_CODE(imperial_aramaic) - BOOST_SPIRIT_UNICODE_CHAR_CODE(armenian) - BOOST_SPIRIT_UNICODE_CHAR_CODE(avestan) - BOOST_SPIRIT_UNICODE_CHAR_CODE(balinese) - BOOST_SPIRIT_UNICODE_CHAR_CODE(bamum) - BOOST_SPIRIT_UNICODE_CHAR_CODE(bassa_vah) - BOOST_SPIRIT_UNICODE_CHAR_CODE(batak) - BOOST_SPIRIT_UNICODE_CHAR_CODE(bengali) - BOOST_SPIRIT_UNICODE_CHAR_CODE(bhaiksuki) - BOOST_SPIRIT_UNICODE_CHAR_CODE(bopomofo) - BOOST_SPIRIT_UNICODE_CHAR_CODE(brahmi) - BOOST_SPIRIT_UNICODE_CHAR_CODE(braille) - BOOST_SPIRIT_UNICODE_CHAR_CODE(buginese) - BOOST_SPIRIT_UNICODE_CHAR_CODE(buhid) - BOOST_SPIRIT_UNICODE_CHAR_CODE(chakma) - BOOST_SPIRIT_UNICODE_CHAR_CODE(canadian_aboriginal) - BOOST_SPIRIT_UNICODE_CHAR_CODE(carian) - BOOST_SPIRIT_UNICODE_CHAR_CODE(cham) - BOOST_SPIRIT_UNICODE_CHAR_CODE(cherokee) - BOOST_SPIRIT_UNICODE_CHAR_CODE(chorasmian) - BOOST_SPIRIT_UNICODE_CHAR_CODE(coptic) - BOOST_SPIRIT_UNICODE_CHAR_CODE(cypro_minoan) - BOOST_SPIRIT_UNICODE_CHAR_CODE(cypriot) - BOOST_SPIRIT_UNICODE_CHAR_CODE(cyrillic) - BOOST_SPIRIT_UNICODE_CHAR_CODE(devanagari) - BOOST_SPIRIT_UNICODE_CHAR_CODE(dives_akuru) - BOOST_SPIRIT_UNICODE_CHAR_CODE(dogra) - BOOST_SPIRIT_UNICODE_CHAR_CODE(deseret) - BOOST_SPIRIT_UNICODE_CHAR_CODE(duployan) - BOOST_SPIRIT_UNICODE_CHAR_CODE(egyptian_hieroglyphs) - BOOST_SPIRIT_UNICODE_CHAR_CODE(elbasan) - BOOST_SPIRIT_UNICODE_CHAR_CODE(elymaic) - BOOST_SPIRIT_UNICODE_CHAR_CODE(ethiopic) - BOOST_SPIRIT_UNICODE_CHAR_CODE(georgian) - BOOST_SPIRIT_UNICODE_CHAR_CODE(glagolitic) - BOOST_SPIRIT_UNICODE_CHAR_CODE(gunjala_gondi) - BOOST_SPIRIT_UNICODE_CHAR_CODE(masaram_gondi) - BOOST_SPIRIT_UNICODE_CHAR_CODE(gothic) - BOOST_SPIRIT_UNICODE_CHAR_CODE(grantha) - BOOST_SPIRIT_UNICODE_CHAR_CODE(greek) - BOOST_SPIRIT_UNICODE_CHAR_CODE(gujarati) - BOOST_SPIRIT_UNICODE_CHAR_CODE(gurmukhi) - BOOST_SPIRIT_UNICODE_CHAR_CODE(hangul) - BOOST_SPIRIT_UNICODE_CHAR_CODE(han) - BOOST_SPIRIT_UNICODE_CHAR_CODE(hanunoo) - BOOST_SPIRIT_UNICODE_CHAR_CODE(hatran) - BOOST_SPIRIT_UNICODE_CHAR_CODE(hebrew) - BOOST_SPIRIT_UNICODE_CHAR_CODE(hiragana) - BOOST_SPIRIT_UNICODE_CHAR_CODE(anatolian_hieroglyphs) - BOOST_SPIRIT_UNICODE_CHAR_CODE(pahawh_hmong) - BOOST_SPIRIT_UNICODE_CHAR_CODE(nyiakeng_puachue_hmong) - BOOST_SPIRIT_UNICODE_CHAR_CODE(katakana_or_hiragana) - BOOST_SPIRIT_UNICODE_CHAR_CODE(old_hungarian) - BOOST_SPIRIT_UNICODE_CHAR_CODE(old_italic) - BOOST_SPIRIT_UNICODE_CHAR_CODE(javanese) - BOOST_SPIRIT_UNICODE_CHAR_CODE(kayah_li) - BOOST_SPIRIT_UNICODE_CHAR_CODE(katakana) - BOOST_SPIRIT_UNICODE_CHAR_CODE(kawi) - BOOST_SPIRIT_UNICODE_CHAR_CODE(kharoshthi) - BOOST_SPIRIT_UNICODE_CHAR_CODE(khmer) - BOOST_SPIRIT_UNICODE_CHAR_CODE(khojki) - BOOST_SPIRIT_UNICODE_CHAR_CODE(khitan_small_script) - BOOST_SPIRIT_UNICODE_CHAR_CODE(kannada) - BOOST_SPIRIT_UNICODE_CHAR_CODE(kaithi) - BOOST_SPIRIT_UNICODE_CHAR_CODE(tai_tham) - BOOST_SPIRIT_UNICODE_CHAR_CODE(lao) - BOOST_SPIRIT_UNICODE_CHAR_CODE(latin) - BOOST_SPIRIT_UNICODE_CHAR_CODE(lepcha) - BOOST_SPIRIT_UNICODE_CHAR_CODE(limbu) - BOOST_SPIRIT_UNICODE_CHAR_CODE(linear_a) - BOOST_SPIRIT_UNICODE_CHAR_CODE(linear_b) - BOOST_SPIRIT_UNICODE_CHAR_CODE(lisu) - BOOST_SPIRIT_UNICODE_CHAR_CODE(lycian) - BOOST_SPIRIT_UNICODE_CHAR_CODE(lydian) - BOOST_SPIRIT_UNICODE_CHAR_CODE(mahajani) - BOOST_SPIRIT_UNICODE_CHAR_CODE(makasar) - BOOST_SPIRIT_UNICODE_CHAR_CODE(mandaic) - BOOST_SPIRIT_UNICODE_CHAR_CODE(manichaean) - BOOST_SPIRIT_UNICODE_CHAR_CODE(marchen) - BOOST_SPIRIT_UNICODE_CHAR_CODE(medefaidrin) - BOOST_SPIRIT_UNICODE_CHAR_CODE(mende_kikakui) - BOOST_SPIRIT_UNICODE_CHAR_CODE(meroitic_cursive) - BOOST_SPIRIT_UNICODE_CHAR_CODE(meroitic_hieroglyphs) - BOOST_SPIRIT_UNICODE_CHAR_CODE(malayalam) - BOOST_SPIRIT_UNICODE_CHAR_CODE(modi) - BOOST_SPIRIT_UNICODE_CHAR_CODE(mongolian) - BOOST_SPIRIT_UNICODE_CHAR_CODE(mro) - BOOST_SPIRIT_UNICODE_CHAR_CODE(meetei_mayek) - BOOST_SPIRIT_UNICODE_CHAR_CODE(multani) - BOOST_SPIRIT_UNICODE_CHAR_CODE(myanmar) - BOOST_SPIRIT_UNICODE_CHAR_CODE(nag_mundari) - BOOST_SPIRIT_UNICODE_CHAR_CODE(nandinagari) - BOOST_SPIRIT_UNICODE_CHAR_CODE(old_north_arabian) - BOOST_SPIRIT_UNICODE_CHAR_CODE(nabataean) - BOOST_SPIRIT_UNICODE_CHAR_CODE(newa) - BOOST_SPIRIT_UNICODE_CHAR_CODE(nko) - BOOST_SPIRIT_UNICODE_CHAR_CODE(nushu) - BOOST_SPIRIT_UNICODE_CHAR_CODE(ogham) - BOOST_SPIRIT_UNICODE_CHAR_CODE(ol_chiki) - BOOST_SPIRIT_UNICODE_CHAR_CODE(old_turkic) - BOOST_SPIRIT_UNICODE_CHAR_CODE(oriya) - BOOST_SPIRIT_UNICODE_CHAR_CODE(osage) - BOOST_SPIRIT_UNICODE_CHAR_CODE(osmanya) - BOOST_SPIRIT_UNICODE_CHAR_CODE(old_uyghur) - BOOST_SPIRIT_UNICODE_CHAR_CODE(palmyrene) - BOOST_SPIRIT_UNICODE_CHAR_CODE(pau_cin_hau) - BOOST_SPIRIT_UNICODE_CHAR_CODE(old_permic) - BOOST_SPIRIT_UNICODE_CHAR_CODE(phags_pa) - BOOST_SPIRIT_UNICODE_CHAR_CODE(inscriptional_pahlavi) - BOOST_SPIRIT_UNICODE_CHAR_CODE(psalter_pahlavi) - BOOST_SPIRIT_UNICODE_CHAR_CODE(phoenician) - BOOST_SPIRIT_UNICODE_CHAR_CODE(miao) - BOOST_SPIRIT_UNICODE_CHAR_CODE(inscriptional_parthian) - BOOST_SPIRIT_UNICODE_CHAR_CODE(rejang) - BOOST_SPIRIT_UNICODE_CHAR_CODE(hanifi_rohingya) - BOOST_SPIRIT_UNICODE_CHAR_CODE(runic) - BOOST_SPIRIT_UNICODE_CHAR_CODE(samaritan) - BOOST_SPIRIT_UNICODE_CHAR_CODE(old_south_arabian) - BOOST_SPIRIT_UNICODE_CHAR_CODE(saurashtra) - BOOST_SPIRIT_UNICODE_CHAR_CODE(signwriting) - BOOST_SPIRIT_UNICODE_CHAR_CODE(shavian) - BOOST_SPIRIT_UNICODE_CHAR_CODE(sharada) - BOOST_SPIRIT_UNICODE_CHAR_CODE(siddham) - BOOST_SPIRIT_UNICODE_CHAR_CODE(khudawadi) - BOOST_SPIRIT_UNICODE_CHAR_CODE(sinhala) - BOOST_SPIRIT_UNICODE_CHAR_CODE(sogdian) - BOOST_SPIRIT_UNICODE_CHAR_CODE(old_sogdian) - BOOST_SPIRIT_UNICODE_CHAR_CODE(sora_sompeng) - BOOST_SPIRIT_UNICODE_CHAR_CODE(soyombo) - BOOST_SPIRIT_UNICODE_CHAR_CODE(sundanese) - BOOST_SPIRIT_UNICODE_CHAR_CODE(syloti_nagri) - BOOST_SPIRIT_UNICODE_CHAR_CODE(syriac) - BOOST_SPIRIT_UNICODE_CHAR_CODE(tagbanwa) - BOOST_SPIRIT_UNICODE_CHAR_CODE(takri) - BOOST_SPIRIT_UNICODE_CHAR_CODE(tai_le) - BOOST_SPIRIT_UNICODE_CHAR_CODE(new_tai_lue) - BOOST_SPIRIT_UNICODE_CHAR_CODE(tamil) - BOOST_SPIRIT_UNICODE_CHAR_CODE(tangut) - BOOST_SPIRIT_UNICODE_CHAR_CODE(tai_viet) - BOOST_SPIRIT_UNICODE_CHAR_CODE(telugu) - BOOST_SPIRIT_UNICODE_CHAR_CODE(tifinagh) - BOOST_SPIRIT_UNICODE_CHAR_CODE(tagalog) - BOOST_SPIRIT_UNICODE_CHAR_CODE(thaana) - BOOST_SPIRIT_UNICODE_CHAR_CODE(thai) - BOOST_SPIRIT_UNICODE_CHAR_CODE(tibetan) - BOOST_SPIRIT_UNICODE_CHAR_CODE(tirhuta) - BOOST_SPIRIT_UNICODE_CHAR_CODE(tangsa) - BOOST_SPIRIT_UNICODE_CHAR_CODE(toto) - BOOST_SPIRIT_UNICODE_CHAR_CODE(ugaritic) - BOOST_SPIRIT_UNICODE_CHAR_CODE(vai) - BOOST_SPIRIT_UNICODE_CHAR_CODE(vithkuqi) - BOOST_SPIRIT_UNICODE_CHAR_CODE(warang_citi) - BOOST_SPIRIT_UNICODE_CHAR_CODE(wancho) - BOOST_SPIRIT_UNICODE_CHAR_CODE(old_persian) - BOOST_SPIRIT_UNICODE_CHAR_CODE(cuneiform) - BOOST_SPIRIT_UNICODE_CHAR_CODE(yezidi) - BOOST_SPIRIT_UNICODE_CHAR_CODE(yi) - BOOST_SPIRIT_UNICODE_CHAR_CODE(zanabazar_square) - BOOST_SPIRIT_UNICODE_CHAR_CODE(inherited) - BOOST_SPIRIT_UNICODE_CHAR_CODE(common) - BOOST_SPIRIT_UNICODE_CHAR_CODE(unknown) - -#undef BOOST_SPIRIT_UNICODE_CHAR_CODE - }}} -#endif - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/container.hpp b/framework/contrib/boost/include/boost/spirit/home/support/container.hpp deleted file mode 100644 index 3df9e80c521c..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/container.hpp +++ /dev/null @@ -1,588 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - Copyright (c) 2001-2011 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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_CONTAINER_FEBRUARY_06_2007_1001AM) -#define BOOST_SPIRIT_CONTAINER_FEBRUARY_06_2007_1001AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include // for std::iterator_traits - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - // This file contains some container utils for stl containers. The - // utilities provided also accept spirit's unused_type; all no-ops. - // Compiler optimization will easily strip these away. - /////////////////////////////////////////////////////////////////////////// - - namespace detail - { - BOOST_MPL_HAS_XXX_TRAIT_DEF(value_type) - BOOST_MPL_HAS_XXX_TRAIT_DEF(iterator) - BOOST_MPL_HAS_XXX_TRAIT_DEF(size_type) - BOOST_MPL_HAS_XXX_TRAIT_DEF(reference) - } - - template - struct is_container - : mpl::bool_< - detail::has_value_type::value && - detail::has_iterator::value && - detail::has_size_type::value && - detail::has_reference::value> - {}; - - template - struct is_container - : is_container - {}; - - template - struct is_container > - : is_container - {}; - -#if !defined(BOOST_VARIANT_DO_NOT_USE_VARIADIC_TEMPLATES) - template - struct is_container > - : is_container - {}; - - template - struct is_container > - : mpl::bool_::value || - is_container >::value> - {}; - -#else -#define BOOST_SPIRIT_IS_CONTAINER(z, N, data) \ - is_container::value || \ - /***/ - - // make sure unused variant parameters do not affect the outcome - template <> - struct is_container - : mpl::false_ - {}; - - template - struct is_container > - : mpl::bool_ - {}; - -#undef BOOST_SPIRIT_IS_CONTAINER -#endif - - template - struct is_iterator_range - : mpl::false_ - {}; - - template - struct is_iterator_range > - : mpl::true_ - {}; - - /////////////////////////////////////////////////////////////////////////// - namespace detail - { - template - struct remove_value_const - { - typedef T type; - }; - - template - struct remove_value_const - : remove_value_const - {}; - - template - struct remove_value_const > - { - typedef typename remove_value_const::type first_type; - typedef typename remove_value_const::type second_type; - typedef std::pair type; - }; - } - - /////////////////////////////////////////////////////////////////////// - //[customization_container_value_default - template - struct container_value - : detail::remove_value_const - {}; - //] - - template - struct container_value - : container_value - {}; - - // this will be instantiated if the optional holds a container - template - struct container_value > - : container_value - {}; - - // this will be instantiated if the variant holds a container - template - struct container_value > - { - typedef typename - variant::types - types; - typedef typename - mpl::find_if >::type - iter; - - typedef typename container_value< - typename mpl::if_< - is_same::type> - , unused_type, typename mpl::deref::type - >::type - >::type type; - }; - - //[customization_container_value_unused - template <> - struct container_value - { - typedef unused_type type; - }; - //] - - template <> - struct container_value - { - typedef unused_type type; - }; - - /////////////////////////////////////////////////////////////////////////// - template - struct container_iterator - { - typedef typename Container::iterator type; - }; - - template - struct container_iterator - : container_iterator - {}; - - template - struct container_iterator - { - typedef typename Container::const_iterator type; - }; - - template - struct container_iterator > - : container_iterator - {}; - - template - struct container_iterator const> - : container_iterator - {}; - - template - struct container_iterator > - { - typedef Iterator type; - }; - - template <> - struct container_iterator - { - typedef unused_type const* type; - }; - - template <> - struct container_iterator - { - typedef unused_type const* type; - }; - - /////////////////////////////////////////////////////////////////////////// - template - struct optional_attribute - { - typedef T const& type; - - static type call(T const& val) - { - return val; - } - - static bool is_valid(T const&) - { - return true; - } - }; - - template - struct optional_attribute > - { - typedef T const& type; - - static type call(boost::optional const& val) - { - return boost::get(val); - } - - static bool is_valid(boost::optional const& val) - { - return !!val; - } - }; - - template - typename optional_attribute::type - optional_value(T const& val) - { - return optional_attribute::call(val); - } - - inline unused_type optional_value(unused_type) - { - return unused; - } - - template - bool has_optional_value(T const& val) - { - return optional_attribute::is_valid(val); - } - - inline bool has_optional_value(unused_type) - { - return true; - } - - /////////////////////////////////////////////////////////////////////////// - template - bool push_back(Container& c, T const& val); - - //[customization_push_back_default - template - struct push_back_container - { - static bool call(Container& c, T const& val) - { - c.insert(c.end(), val); - return true; - } - }; - //] - - template - struct push_back_container, T> - { - static bool call(boost::optional& c, T const& val) - { - if (!c) - c = Container(); - return push_back(boost::get(c), val); - } - }; - - namespace detail - { - template - struct push_back_visitor : public static_visitor<> - { - typedef bool result_type; - - push_back_visitor(T const& t) : t_(t) {} - - template - bool push_back_impl(Container& c, mpl::true_) const - { - return push_back(c, t_); - } - - template - bool push_back_impl(T_&, mpl::false_) const - { - // this variant doesn't hold a container - BOOST_ASSERT(false && "This variant doesn't hold a container"); - return false; - } - - template - bool operator()(T_& c) const - { - return push_back_impl(c, typename is_container::type()); - } - - T const& t_; - }; - } - - template - struct push_back_container, T> - { - static bool call(variant& c, T const& val) - { - return apply_visitor(detail::push_back_visitor(val), c); - } - }; - - template - bool push_back(Container& c, T const& val) - { - return push_back_container::call(c, val); - } - - //[customization_push_back_unused - template - bool push_back(Container&, unused_type) - { - return true; - } - //] - - template - bool push_back(unused_type, T const&) - { - return true; - } - - inline bool push_back(unused_type, unused_type) - { - return true; - } - - /////////////////////////////////////////////////////////////////////////// - template - struct is_empty_container - { - static bool call(Container const& c) - { - return c.empty(); - } - }; - - template - bool is_empty(Container const& c) - { - return is_empty_container::call(c); - } - - inline bool is_empty(unused_type) - { - return true; - } - - /////////////////////////////////////////////////////////////////////////// - // Ensure the attribute is actually a container type - template - struct make_container_attribute - { - static void call(Container&) - { - // for static types this function does nothing - } - }; - - template - void make_container(T& t) - { - make_container_attribute::call(t); - } - - inline void make_container(unused_type) - { - } - - /////////////////////////////////////////////////////////////////////////// - template - struct begin_container - { - static typename container_iterator::type call(Container& c) - { - return c.begin(); - } - }; - - template - typename spirit::result_of::begin::type - begin(Container& c) - { - return begin_container::call(c); - } - - inline unused_type const* - begin(unused_type) - { - return &unused; - } - - /////////////////////////////////////////////////////////////////////////// - template - struct end_container - { - static typename container_iterator::type call(Container& c) - { - return c.end(); - } - }; - - template - inline typename spirit::result_of::end::type - end(Container& c) - { - return end_container::call(c); - } - - inline unused_type const* - end(unused_type) - { - return &unused; - } - - /////////////////////////////////////////////////////////////////////////// - template - struct deref_iterator - { - typedef typename std::iterator_traits::reference type; - static type call(Iterator& it) - { - return *it; - } - }; - - template - typename deref_iterator::type - deref(Iterator& it) - { - return deref_iterator::call(it); - } - - inline unused_type - deref(unused_type const*) - { - return unused; - } - - /////////////////////////////////////////////////////////////////////////// - template - struct next_iterator - { - static void call(Iterator& it) - { - ++it; - } - }; - - template - void next(Iterator& it) - { - next_iterator::call(it); - } - - inline void next(unused_type const*) - { - // do nothing - } - - /////////////////////////////////////////////////////////////////////////// - template - struct compare_iterators - { - static bool call(Iterator const& it1, Iterator const& it2) - { - return it1 == it2; - } - }; - - template - bool compare(Iterator& it1, Iterator& it2) - { - return compare_iterators::call(it1, it2); - } - - inline bool compare(unused_type const*, unused_type const*) - { - return false; - } -}}} - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace result_of -{ - /////////////////////////////////////////////////////////////////////////// - template - struct optional_value - { - typedef T type; - }; - - template - struct optional_value > - { - typedef T type; - }; - - template - struct optional_value const> - { - typedef T const type; - }; - - template <> - struct optional_value - { - typedef unused_type type; - }; - - template <> - struct optional_value - { - typedef unused_type type; - }; - - /////////////////////////////////////////////////////////////////////////// - template - struct begin - : traits::container_iterator - {}; - - template - struct end - : traits::container_iterator - {}; - - template - struct deref - : traits::deref_iterator - {}; - - template <> - struct deref - { - typedef unused_type type; - }; - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/context.hpp b/framework/contrib/boost/include/boost/spirit/home/support/context.hpp deleted file mode 100644 index 3e7e35d57893..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/context.hpp +++ /dev/null @@ -1,302 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - Copyright (c) 2001-2011 Hartmut Kaiser - Copyright (c) 2011 Thomas Heller - - 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_CONTEXT_OCTOBER_31_2008_0654PM) -#define BOOST_SPIRIT_CONTEXT_OCTOBER_31_2008_0654PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include // for transform placeholders - -/////////////////////////////////////////////////////////////////////////////// -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - -#define SPIRIT_DECLARE_ATTRIBUTE(z, n, data) \ - typedef phoenix::actor > \ - BOOST_PP_CAT(BOOST_PP_CAT(_r, n), _type); \ - phoenix::actor > const \ - BOOST_PP_CAT(_r, n) = BOOST_PP_CAT(BOOST_PP_CAT(_r, n), _type)(); - /***/ -#define SPIRIT_USING_ATTRIBUTE(z, n, data) \ - using spirit::BOOST_PP_CAT(BOOST_PP_CAT(_r, n), _type); \ - using spirit::BOOST_PP_CAT(_r, n); \ - /***/ - -#else - -#define SPIRIT_DECLARE_ATTRIBUTE(z, n, data) \ - typedef phoenix::actor > \ - BOOST_PP_CAT(BOOST_PP_CAT(_r, n), _type); \ - /***/ -#define SPIRIT_USING_ATTRIBUTE(z, n, data) \ - using spirit::BOOST_PP_CAT(BOOST_PP_CAT(_r, n), _type); \ - /***/ - -#endif - -namespace boost { namespace spirit -{ - template - struct attribute; - - template - struct local_variable; -}} - -BOOST_PHOENIX_DEFINE_CUSTOM_TERMINAL( - template - , boost::spirit::attribute - , mpl::false_ // is not nullary - , v2_eval( - proto::make< - boost::spirit::attribute() - > - , proto::call< - functional::env(proto::_state) - > - ) -) - -BOOST_PHOENIX_DEFINE_CUSTOM_TERMINAL( - template - , boost::spirit::local_variable - , mpl::false_ // is not nullary - , v2_eval( - proto::make< - boost::spirit::local_variable() - > - , proto::call< - functional::env(proto::_state) - > - ) -) - -namespace boost { namespace spirit -{ - template - struct context - { - typedef Attributes attributes_type; - typedef Locals locals_type; - - context(typename Attributes::car_type attribute) - : attributes(attribute, fusion::nil_()), locals() {} - - template - context( - typename Attributes::car_type attribute - , Args const& args - , Context& caller_context - ) : attributes( - attribute - , fusion::as_list( - fusion::transform( - args - , detail::expand_arg(caller_context) - ) - ) - ) - , locals() {} - - context(Attributes const& attributes_) - : attributes(attributes_), locals() {} - - Attributes attributes; // The attributes - Locals locals; // Local variables - }; - - template - struct attributes_of - { - typedef typename Context::attributes_type type; - }; - - template - struct attributes_of - { - typedef typename Context::attributes_type const type; - }; - - template - struct attributes_of - : attributes_of - {}; - - template - struct locals_of - { - typedef typename Context::locals_type type; - }; - - template - struct locals_of - { - typedef typename Context::locals_type const type; - }; - - template - struct locals_of - { - typedef typename Context::locals_type type; - }; - - template - struct attribute - { - typedef mpl::true_ no_nullary; - - template - struct result - { - typedef typename - attributes_of::type - >::type - attributes_type; - - typedef typename - fusion::result_of::size::type - attributes_size; - - // report invalid argument not found (N is out of bounds) - BOOST_SPIRIT_ASSERT_MSG( - (N < attributes_size::value), - index_is_out_of_bounds, ()); - - typedef typename - fusion::result_of::at_c::type - type; - }; - - template - typename result::type - eval(Env const& env) const - { - return fusion::at_c((fusion::at_c<1>(env.args())).attributes); - } - }; - - template - struct local_variable - { - typedef mpl::true_ no_nullary; - - template - struct result - { - typedef typename - locals_of::type - >::type - locals_type; - - typedef typename - fusion::result_of::size::type - locals_size; - - // report invalid argument not found (N is out of bounds) - BOOST_SPIRIT_ASSERT_MSG( - (N < locals_size::value), - index_is_out_of_bounds, ()); - - typedef typename - fusion::result_of::at_c::type - type; - }; - - template - typename result::type - eval(Env const& env) const - { - return get_arg((fusion::at_c<1>(env.args())).locals); - } - }; - - typedef phoenix::actor > _val_type; - typedef phoenix::actor > _r0_type; - typedef phoenix::actor > _r1_type; - typedef phoenix::actor > _r2_type; - -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - // _val refers to the 'return' value of a rule (same as _r0) - // _r1, _r2, ... refer to the rule arguments - _val_type const _val = _val_type(); - _r0_type const _r0 = _r0_type(); - _r1_type const _r1 = _r1_type(); - _r2_type const _r2 = _r2_type(); -#endif - - // Bring in the rest of the attributes (_r4 .. _rN+1), using PP - BOOST_PP_REPEAT_FROM_TO( - 3, SPIRIT_ATTRIBUTES_LIMIT, SPIRIT_DECLARE_ATTRIBUTE, _) - - typedef phoenix::actor > _a_type; - typedef phoenix::actor > _b_type; - typedef phoenix::actor > _c_type; - typedef phoenix::actor > _d_type; - typedef phoenix::actor > _e_type; - typedef phoenix::actor > _f_type; - typedef phoenix::actor > _g_type; - typedef phoenix::actor > _h_type; - typedef phoenix::actor > _i_type; - typedef phoenix::actor > _j_type; - -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - // _a, _b, ... refer to the local variables of a rule - _a_type const _a = _a_type(); - _b_type const _b = _b_type(); - _c_type const _c = _c_type(); - _d_type const _d = _d_type(); - _e_type const _e = _e_type(); - _f_type const _f = _f_type(); - _g_type const _g = _g_type(); - _h_type const _h = _h_type(); - _i_type const _i = _i_type(); - _j_type const _j = _j_type(); -#endif - - // You can bring these in with the using directive - // without worrying about bringing in too much. - namespace labels - { - BOOST_PP_REPEAT(SPIRIT_ARGUMENTS_LIMIT, SPIRIT_USING_ARGUMENT, _) - BOOST_PP_REPEAT(SPIRIT_ATTRIBUTES_LIMIT, SPIRIT_USING_ATTRIBUTE, _) - -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - using spirit::_val; - using spirit::_a; - using spirit::_b; - using spirit::_c; - using spirit::_d; - using spirit::_e; - using spirit::_f; - using spirit::_g; - using spirit::_h; - using spirit::_i; - using spirit::_j; -#endif - } -}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/detail/as_variant.hpp b/framework/contrib/boost/include/boost/spirit/home/support/detail/as_variant.hpp deleted file mode 100644 index 9312042ed711..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/detail/as_variant.hpp +++ /dev/null @@ -1,114 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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) -==============================================================================*/ -#ifndef BOOST_PP_IS_ITERATING -#if !defined(BOOST_SPIRIT_AS_VARIANT_NOVEMBER_16_2007_0420PM) -#define BOOST_SPIRIT_AS_VARIANT_NOVEMBER_16_2007_0420PM - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace detail -{ - template - struct as_variant_impl; - -#if !defined(BOOST_VARIANT_DO_NOT_USE_VARIADIC_TEMPLATES) -#else - template <> - struct as_variant_impl<0> - { - template - struct apply - { - typedef variant<> type; - }; - }; -#endif - -#define BOOST_FUSION_NEXT_ITERATOR(z, n, data) \ - typedef typename fusion::result_of::next::type \ - BOOST_PP_CAT(I, BOOST_PP_INC(n)); - -#define BOOST_FUSION_NEXT_CALL_ITERATOR(z, n, data) \ - typename gen::BOOST_PP_CAT(I, BOOST_PP_INC(n)) \ - BOOST_PP_CAT(i, BOOST_PP_INC(n)) = fusion::next(BOOST_PP_CAT(i, n)); - -#define BOOST_FUSION_VALUE_OF_ITERATOR(z, n, data) \ - typedef typename fusion::result_of::value_of::type \ - BOOST_PP_CAT(T, n); - -#define BOOST_PP_FILENAME_1 - -#if !defined(BOOST_VARIANT_DO_NOT_USE_VARIADIC_TEMPLATES) -#define BOOST_PP_ITERATION_LIMITS (1, BOOST_MPL_LIMIT_LIST_SIZE) -#else -#define BOOST_PP_ITERATION_LIMITS (1, BOOST_VARIANT_LIMIT_TYPES) -#endif - -#include BOOST_PP_ITERATE() - -#undef BOOST_FUSION_NEXT_ITERATOR -#undef BOOST_FUSION_NEXT_CALL_ITERATOR -#undef BOOST_FUSION_VALUE_OF_ITERATOR - - template - struct as_variant - { - // build a variant generator being able to generate a variant holding - // all of the types as given in the typelist - typedef typename - detail::as_variant_impl::value> - gen; - - // use this generator to create the actual variant - typedef typename gen::template apply< - typename fusion::result_of::begin::type - >::type - type; - }; -}}} - -#endif -#else // defined(BOOST_PP_IS_ITERATING) -/////////////////////////////////////////////////////////////////////////////// -// -// Preprocessor vertical repetition code -// -/////////////////////////////////////////////////////////////////////////////// - -#define N BOOST_PP_ITERATION() - - template <> - struct as_variant_impl - { - template - struct apply - { - BOOST_PP_REPEAT(N, BOOST_FUSION_NEXT_ITERATOR, _) - BOOST_PP_REPEAT(N, BOOST_FUSION_VALUE_OF_ITERATOR, _) - typedef variant type; - }; - }; - -#undef N -#endif // defined(BOOST_PP_IS_ITERATING) - diff --git a/framework/contrib/boost/include/boost/spirit/home/support/detail/endian.hpp b/framework/contrib/boost/include/boost/spirit/home/support/detail/endian.hpp deleted file mode 100644 index 62d302bcceb1..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/detail/endian.hpp +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright (c) 2001-2011 Hartmut Kaiser -// http://spirit.sourceforge.net/ -// -// 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) - -#ifndef BOOST_SPIRIT_SUPPORT_DETAIL_ENDIAN_HPP -#define BOOST_SPIRIT_SUPPORT_DETAIL_ENDIAN_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -// We need to treat the endian number types as PODs -#if !defined(BOOST_ENDIAN_FORCE_PODNESS) -#define BOOST_ENDIAN_FORCE_PODNESS 1 -#endif - -#include - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/detail/get_encoding.hpp b/framework/contrib/boost/include/boost/spirit/home/support/detail/get_encoding.hpp deleted file mode 100644 index ac514a918da1..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/detail/get_encoding.hpp +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright (c) 2001-2011 Hartmut Kaiser -// Copyright (c) 2001-2011 Joel de Guzman -// -// 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_GET_ENCODING_JANUARY_13_2009_1255PM) -#define BOOST_SPIRIT_GET_ENCODING_JANUARY_13_2009_1255PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include - -namespace boost { namespace spirit { namespace detail -{ - template - struct get_implicit_encoding - { - // Extract the implicit encoding from the Modifiers - // If one is not found, Encoding is used. The explicit - // encoding is the first viable encoding that can be - // extracted from the Modifiers (there can be more than one). - - typedef typename - mpl::find_if< - char_encodings, - has_modifier > - >::type - iter; - - typedef typename - mpl::eval_if< - is_same::type>, - mpl::identity, - mpl::deref - >::type - type; - }; - - template - struct get_encoding - { - // Extract the explicit encoding from the Modifiers - // If one is not found, get implicit encoding (see above). - // Explicit encoding is the encoding explicitly declared - // using the encoding[c] directive. - - typedef typename - mpl::find_if< - char_encodings, - has_modifier > - >::type - iter; - - typedef typename - mpl::eval_if< - is_same::type>, - get_implicit_encoding, - mpl::deref - >::type - type; - }; - - template - struct get_encoding_with_case : mpl::identity {}; - - template - struct get_encoding_with_case - : get_encoding {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/detail/hold_any.hpp b/framework/contrib/boost/include/boost/spirit/home/support/detail/hold_any.hpp deleted file mode 100644 index 5d1bdfa63206..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/detail/hold_any.hpp +++ /dev/null @@ -1,475 +0,0 @@ -/*============================================================================= - Copyright (c) 2007-2011 Hartmut Kaiser - Copyright (c) Christopher Diggins 2005 - Copyright (c) Pablo Aguilar 2005 - Copyright (c) Kevlin Henney 2001 - - 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) - - The class boost::spirit::hold_any is built based on the any class - published here: http://www.codeproject.com/cpp/dynamic_typing.asp. It adds - support for std streaming operator<<() and operator>>(). -==============================================================================*/ -#if !defined(BOOST_SPIRIT_HOLD_ANY_MAY_02_2007_0857AM) -#define BOOST_SPIRIT_HOLD_ANY_MAY_02_2007_0857AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -# pragma warning(push) -# pragma warning(disable: 4100) // 'x': unreferenced formal parameter -# pragma warning(disable: 4127) // conditional expression is constant -#endif - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit -{ - struct bad_any_cast - : std::bad_cast - { - bad_any_cast(boost::core::typeinfo const& src, boost::core::typeinfo const& dest) - : from(src.name()), to(dest.name()) - {} - - const char* what() const BOOST_NOEXCEPT_OR_NOTHROW BOOST_OVERRIDE - { - return "bad any cast"; - } - - const char* from; - const char* to; - }; - - namespace detail - { - // function pointer table - template - struct fxn_ptr_table - { - boost::core::typeinfo const& (*get_type)(); - void (*static_delete)(void**); - void (*destruct)(void**); - void (*clone)(void* const*, void**); - void (*move)(void* const*, void**); - std::basic_istream& (*stream_in)(std::basic_istream&, void**); - std::basic_ostream& (*stream_out)(std::basic_ostream&, void* const*); - }; - - // static functions for small value-types - template - struct fxns; - - template <> - struct fxns - { - template - struct type - { - static boost::core::typeinfo const& get_type() - { - return BOOST_CORE_TYPEID(T); - } - static void static_delete(void** x) - { - reinterpret_cast(x)->~T(); - } - static void destruct(void** x) - { - reinterpret_cast(x)->~T(); - } - static void clone(void* const* src, void** dest) - { - new (dest) T(*reinterpret_cast(src)); - } - static void move(void* const* src, void** dest) - { - *reinterpret_cast(dest) = - *reinterpret_cast(src); - } - static std::basic_istream& - stream_in (std::basic_istream& i, void** obj) - { - i >> *reinterpret_cast(obj); - return i; - } - static std::basic_ostream& - stream_out(std::basic_ostream& o, void* const* obj) - { - o << *reinterpret_cast(obj); - return o; - } - }; - }; - - // static functions for big value-types (bigger than a void*) - template <> - struct fxns - { - template - struct type - { - static boost::core::typeinfo const& get_type() - { - return BOOST_CORE_TYPEID(T); - } - static void static_delete(void** x) - { - // destruct and free memory - delete static_cast(*x); - } - static void destruct(void** x) - { - // destruct only, we'll reuse memory - static_cast(*x)->~T(); - } - static void clone(void* const* src, void** dest) - { - *dest = new T(*static_cast(*src)); - } - static void move(void* const* src, void** dest) - { - *static_cast(*dest) = - *static_cast(*src); - } - static std::basic_istream& - stream_in(std::basic_istream& i, void** obj) - { - i >> *static_cast(*obj); - return i; - } - static std::basic_ostream& - stream_out(std::basic_ostream& o, void* const* obj) - { - o << *static_cast(*obj); - return o; - } - }; - }; - - template - struct get_table - { - typedef mpl::bool_<(sizeof(T) <= sizeof(void*))> is_small; - - template - static fxn_ptr_table* get() - { - static fxn_ptr_table static_table = - { - fxns::template type::get_type, - fxns::template type::static_delete, - fxns::template type::destruct, - fxns::template type::clone, - fxns::template type::move, - fxns::template type::stream_in, - fxns::template type::stream_out - }; - return &static_table; - } - }; - - /////////////////////////////////////////////////////////////////////// - struct empty {}; - - template - inline std::basic_istream& - operator>> (std::basic_istream& i, empty&) - { - // If this assertion fires you tried to insert from a std istream - // into an empty hold_any instance. This simply can't work, because - // there is no way to figure out what type to extract from the - // stream. - // The only way to make this work is to assign an arbitrary - // value of the required type to the hold_any instance you want to - // stream to. This assignment has to be executed before the actual - // call to the operator>>(). - BOOST_ASSERT(false && - "Tried to insert from a std istream into an empty " - "hold_any instance"); - return i; - } - - template - inline std::basic_ostream& - operator<< (std::basic_ostream& o, empty const&) - { - return o; - } - } - - /////////////////////////////////////////////////////////////////////////// - template - class basic_hold_any - { - public: - // constructors - template - explicit basic_hold_any(T const& x) - : table(spirit::detail::get_table::template get()), object(0) - { - new_object(object, x, - typename spirit::detail::get_table::is_small()); - } - - basic_hold_any() - : table(spirit::detail::get_table::template get()), - object(0) - { - } - - basic_hold_any(basic_hold_any const& x) - : table(spirit::detail::get_table::template get()), - object(0) - { - assign(x); - } - - ~basic_hold_any() - { - table->static_delete(&object); - } - - // assignment - basic_hold_any& assign(basic_hold_any const& x) - { - if (&x != this) { - // are we copying between the same type? - if (table == x.table) { - // if so, we can avoid reallocation - table->move(&x.object, &object); - } - else { - reset(); - x.table->clone(&x.object, &object); - table = x.table; - } - } - return *this; - } - - template - basic_hold_any& assign(T const& x) - { - // are we copying between the same type? - spirit::detail::fxn_ptr_table* x_table = - spirit::detail::get_table::template get(); - if (table == x_table) { - // if so, we can avoid deallocating and re-use memory - table->destruct(&object); // first destruct the old content - if (spirit::detail::get_table::is_small::value) { - // create copy on-top of object pointer itself - new (&object) T(x); - } - else { - // create copy on-top of old version - new (object) T(x); - } - } - else { - if (spirit::detail::get_table::is_small::value) { - // create copy on-top of object pointer itself - table->destruct(&object); // first destruct the old content - new (&object) T(x); - } - else { - reset(); // first delete the old content - object = new T(x); - } - table = x_table; // update table pointer - } - return *this; - } - - template - static void new_object(void*& object, T const& x, mpl::true_) - { - new (&object) T(x); - } - - template - static void new_object(void*& object, T const& x, mpl::false_) - { - object = new T(x); - } - - // assignment operator -#ifdef BOOST_HAS_RVALUE_REFS - template - basic_hold_any& operator=(T&& x) - { - return assign(std::forward(x)); - } -#else - template - basic_hold_any& operator=(T& x) - { - return assign(x); - } - - template - basic_hold_any& operator=(T const& x) - { - return assign(x); - } -#endif - // copy assignment operator - basic_hold_any& operator=(basic_hold_any const& x) - { - return assign(x); - } - - // utility functions - basic_hold_any& swap(basic_hold_any& x) - { - std::swap(table, x.table); - std::swap(object, x.object); - return *this; - } - - boost::core::typeinfo const& type() const - { - return table->get_type(); - } - - template - T const& cast() const - { - if (type() != BOOST_CORE_TYPEID(T)) - throw bad_any_cast(type(), BOOST_CORE_TYPEID(T)); - - return spirit::detail::get_table::is_small::value ? - *reinterpret_cast(&object) : - *reinterpret_cast(object); - } - -// implicit casting is disabled by default for compatibility with boost::any -#ifdef BOOST_SPIRIT_ANY_IMPLICIT_CASTING - // automatic casting operator - template - operator T const& () const { return cast(); } -#endif // implicit casting - - bool empty() const - { - return table == spirit::detail::get_table::template get(); - } - - void reset() - { - if (!empty()) - { - table->static_delete(&object); - table = spirit::detail::get_table::template get(); - object = 0; - } - } - - // these functions have been added in the assumption that the embedded - // type has a corresponding operator defined, which is completely safe - // because spirit::hold_any is used only in contexts where these operators - // do exist - template - friend inline std::basic_istream& - operator>> (std::basic_istream& i, basic_hold_any& obj) - { - return obj.table->stream_in(i, &obj.object); - } - - template - friend inline std::basic_ostream& - operator<< (std::basic_ostream& o, basic_hold_any const& obj) - { - return obj.table->stream_out(o, &obj.object); - } - -#ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS - private: // types - template - friend T* any_cast(basic_hold_any *); -#else - public: // types (public so any_cast can be non-friend) -#endif - // fields - spirit::detail::fxn_ptr_table* table; - void* object; - }; - - // boost::any-like casting - template - inline T* any_cast (basic_hold_any* operand) - { - if (operand && operand->type() == BOOST_CORE_TYPEID(T)) { - return spirit::detail::get_table::is_small::value ? - reinterpret_cast(&operand->object) : - reinterpret_cast(operand->object); - } - return 0; - } - - template - inline T const* any_cast(basic_hold_any const* operand) - { - return any_cast(const_cast*>(operand)); - } - - template - T any_cast(basic_hold_any& operand) - { - typedef BOOST_DEDUCED_TYPENAME remove_reference::type nonref; - - - nonref* result = any_cast(&operand); - if(!result) - boost::throw_exception(bad_any_cast(operand.type(), BOOST_CORE_TYPEID(T))); - return *result; - } - - template - T const& any_cast(basic_hold_any const& operand) - { - typedef BOOST_DEDUCED_TYPENAME remove_reference::type nonref; - - - return any_cast(const_cast &>(operand)); - } - - /////////////////////////////////////////////////////////////////////////////// - // backwards compatibility - typedef basic_hold_any hold_any; - typedef basic_hold_any whold_any; - - namespace traits - { - template - struct is_hold_any : mpl::false_ {}; - - template - struct is_hold_any > : mpl::true_ {}; - } - -}} // namespace boost::spirit - -/////////////////////////////////////////////////////////////////////////////// -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -# pragma warning(pop) -#endif - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/detail/is_spirit_tag.hpp b/framework/contrib/boost/include/boost/spirit/home/support/detail/is_spirit_tag.hpp deleted file mode 100644 index e8f9f6dc2afc..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/detail/is_spirit_tag.hpp +++ /dev/null @@ -1,16 +0,0 @@ -/*============================================================================= - 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_SUPPORT_DETAIL_IS_SPIRIT_TAG_MAR_28_2011_0341PM) -#define BOOST_SPIRIT_SUPPORT_DETAIL_IS_SPIRIT_TAG_MAR_28_2011_0341PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#define BOOST_SPIRIT_IS_TAG() typedef void is_spirit_tag; - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/char_traits.hpp b/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/char_traits.hpp deleted file mode 100644 index 70090d23bfae..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/char_traits.hpp +++ /dev/null @@ -1,54 +0,0 @@ -// char_traits.hpp -// Copyright (c) 2007-2009 Ben Hanson (http://www.benhanson.net/) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file licence_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_CHAR_TRAITS_HPP -#define BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_CHAR_TRAITS_HPP - -// Make sure wchar_t is defined -#include - -namespace boost -{ -namespace lexer -{ -template -struct char_traits -{ - typedef CharT char_type; - typedef CharT index_type; - - static index_type call (CharT ch) - { - return ch; - } -}; - -template<> -struct char_traits -{ - typedef char char_type; - typedef unsigned char index_type; - - static index_type call (char ch) - { - return static_cast(ch); - } -}; - -template<> -struct char_traits -{ - typedef wchar_t char_type; - typedef wchar_t index_type; - - static index_type call (wchar_t ch) - { - return ch; - } -}; -} -} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/consts.hpp b/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/consts.hpp deleted file mode 100644 index 347ab91f6157..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/consts.hpp +++ /dev/null @@ -1,39 +0,0 @@ -// consts.h -// Copyright (c) 2007-2009 Ben Hanson (http://www.benhanson.net/) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file licence_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_CONSTS_HPP -#define BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_CONSTS_HPP - -#include -#include -#include "size_t.hpp" - -namespace boost -{ -namespace lexer -{ - enum regex_flags {none = 0, icase = 1, dot_not_newline = 2}; - // 0 = end state, 1 = id, 2 = unique_id, 3 = lex state, 4 = bol, 5 = eol, - // 6 = dead_state_index - enum {end_state_index, id_index, unique_id_index, state_index, bol_index, - eol_index, dead_state_index, dfa_offset}; - - const std::size_t max_macro_len = 30; - const std::size_t num_chars = 256; - // If sizeof(wchar_t) == sizeof(size_t) then don't overflow to 0 - // by adding one to comparison. - const std::size_t num_wchar_ts = - (boost::integer_traits::const_max < 0x110000) ? - boost::integer_traits::const_max + - static_cast (1) : 0x110000; - const std::size_t null_token = static_cast (~0); - const std::size_t bol_token = static_cast (~1); - const std::size_t eol_token = static_cast (~2); - const std::size_t end_state = 1; - const std::size_t npos = static_cast (~0); -} -} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/containers/ptr_list.hpp b/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/containers/ptr_list.hpp deleted file mode 100644 index f31e6faafd4f..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/containers/ptr_list.hpp +++ /dev/null @@ -1,71 +0,0 @@ -// ptr_list.hpp -// Copyright (c) 2007-2009 Ben Hanson (http://www.benhanson.net/) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file licence_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_CONTAINERS_PTR_LIST_HPP -#define BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_CONTAINERS_PTR_LIST_HPP - -#include - -namespace boost -{ -namespace lexer -{ -namespace detail -{ -template -class ptr_list -{ -public: - typedef std::list list; - - ptr_list () - { - } - - ~ptr_list () - { - clear (); - } - - list *operator -> () - { - return &_list; - } - - const list *operator -> () const - { - return &_list; - } - - list &operator * () - { - return _list; - } - - const list &operator * () const - { - return _list; - } - - void clear () - { - while (!_list.empty ()) - { - delete _list.front (); - _list.pop_front (); - } - } - -private: - list _list; - - ptr_list (const ptr_list &); // No copy construction. - ptr_list &operator = (const ptr_list &); // No assignment. -}; -} -} -} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/containers/ptr_vector.hpp b/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/containers/ptr_vector.hpp deleted file mode 100644 index 7867147c5175..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/containers/ptr_vector.hpp +++ /dev/null @@ -1,108 +0,0 @@ -// ptr_vector.hpp -// Copyright (c) 2007-2009 Ben Hanson (http://www.benhanson.net/) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file licence_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_CONTAINERS_PTR_VECTOR_HPP -#define BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_CONTAINERS_PTR_VECTOR_HPP - -#include "../size_t.hpp" -#include - -namespace boost -{ -namespace lexer -{ -namespace detail -{ -template -class ptr_vector -{ -public: - typedef std::vector vector; - - ptr_vector () - { - } - - ~ptr_vector () - { - clear (); - } - - vector *operator -> () - { - return &_vector; - } - - const vector *operator -> () const - { - return &_vector; - } - - vector &operator * () - { - return _vector; - } - - const vector &operator * () const - { - return _vector; - } - - Type * &operator [] (const std::size_t index_) - { - return _vector[index_]; - } - - Type * const &operator [] (const std::size_t index_) const - { - return _vector[index_]; - } - - bool operator == (const ptr_vector &rhs_) const - { - bool equal_ = _vector.size () == rhs_._vector.size (); - - if (equal_) - { - typename vector::const_iterator lhs_iter_ = _vector.begin (); - typename vector::const_iterator end_ = _vector.end (); - typename vector::const_iterator rhs_iter_ = rhs_._vector.begin (); - - for (; equal_ && lhs_iter_ != end_; ++lhs_iter_, ++rhs_iter_) - { - equal_ = **lhs_iter_ == **rhs_iter_; - } - } - - return equal_; - } - - void clear () - { - if (!_vector.empty ()) - { - Type **iter_ = &_vector.front (); - Type **end_ = iter_ + _vector.size (); - - for (; iter_ != end_; ++iter_) - { - delete *iter_; - } - } - - _vector.clear (); - } - -private: - vector _vector; - - ptr_vector (const ptr_vector &); // No copy construction. - ptr_vector &operator = (const ptr_vector &); // No assignment. -}; -} -} -} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/conversion/char_state_machine.hpp b/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/conversion/char_state_machine.hpp deleted file mode 100644 index 00c26ed14a52..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/conversion/char_state_machine.hpp +++ /dev/null @@ -1,77 +0,0 @@ -// char_state_machine.hpp -// Copyright (c) 2007-2009 Ben Hanson (http://www.benhanson.net/) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file licence_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_CONVERSION_CHAR_STATE_MACHINE_HPP -#define BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_CONVERSION_CHAR_STATE_MACHINE_HPP - -#include "../consts.hpp" -#include -#include "../size_t.hpp" -#include "../string_token.hpp" -#include - -namespace boost -{ -namespace lexer -{ -namespace detail -{ -template -struct basic_char_state_machine -{ - struct state - { - typedef basic_string_token string_token; - typedef std::map size_t_string_token_map; - typedef std::pair size_t_string_token_pair; - - bool _end_state; - std::size_t _id; - std::size_t _unique_id; - std::size_t _state; - std::size_t _bol_index; - std::size_t _eol_index; - size_t_string_token_map _transitions; - - state () : - _end_state (false), - _id (0), - _unique_id (npos), - _state (0), - _bol_index (npos), - _eol_index (npos) - { - } - }; - - typedef std::vector state_vector; - typedef std::vector state_vector_vector; - - state_vector_vector _sm_vector; - - bool empty () const - { - return _sm_vector.empty (); - } - - void clear () - { - _sm_vector.clear (); - } - - void swap (basic_char_state_machine &csm_) - { - _sm_vector.swap (csm_._sm_vector); - } -}; - -typedef basic_char_state_machine char_state_machine; -typedef basic_char_state_machine wchar_state_machine; - -} -} -} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/debug.hpp b/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/debug.hpp deleted file mode 100644 index f69a592ffe1a..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/debug.hpp +++ /dev/null @@ -1,281 +0,0 @@ -// debug.hpp -// Copyright (c) 2007-2009 Ben Hanson (http://www.benhanson.net/) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file licence_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_DEBUG_HPP -#define BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_DEBUG_HPP - -#include -#include "rules.hpp" -#include "size_t.hpp" -#include "state_machine.hpp" -#include "string_token.hpp" -#include -#include - -namespace boost -{ -namespace lexer -{ -template -class basic_debug -{ -public: - typedef std::basic_ostream ostream; - typedef std::basic_string string; - typedef std::vector size_t_vector; - - static void escape_control_chars (const string &in_, string &out_) - { - const CharT *ptr_ = in_.c_str (); - std::size_t size_ = in_.size (); - - out_.clear (); - - while (size_) - { - basic_string_token::escape_char (*ptr_, out_); - ++ptr_; - --size_; - } - } - - static void dump (const basic_state_machine &state_machine_, - basic_rules &rules_, ostream &stream_) - { - typename basic_state_machine::iterator iter_ = - state_machine_.begin (); - typename basic_state_machine::iterator end_ = - state_machine_.end (); - - for (std::size_t dfa_ = 0, dfas_ = state_machine_.size (); - dfa_ < dfas_; ++dfa_) - { - lexer_state (stream_); - stream_ << rules_.state (dfa_) << std::endl << std::endl; - - dump_ex (iter_, stream_); - } - } - - static void dump (const basic_state_machine &state_machine_, - ostream &stream_) - { - typename basic_state_machine::iterator iter_ = - state_machine_.begin (); - typename basic_state_machine::iterator end_ = - state_machine_.end (); - - for (std::size_t dfa_ = 0, dfas_ = state_machine_.size (); - dfa_ < dfas_; ++dfa_) - { - lexer_state (stream_); - stream_ << dfa_ << std::endl << std::endl; - - dump_ex (iter_, stream_); - } - } - -protected: - typedef std::basic_stringstream stringstream; - - static void dump_ex (typename basic_state_machine::iterator &iter_, - ostream &stream_) - { - const std::size_t states_ = iter_->states; - - for (std::size_t i_ = 0; i_ < states_; ++i_) - { - state (stream_); - stream_ << i_ << std::endl; - - if (iter_->end_state) - { - end_state (stream_); - stream_ << iter_->id; - unique_id (stream_); - stream_ << iter_->unique_id; - dfa (stream_); - stream_ << iter_->goto_dfa; - stream_ << std::endl; - } - - if (iter_->bol_index != npos) - { - bol (stream_); - stream_ << iter_->bol_index << std::endl; - } - - if (iter_->eol_index != npos) - { - eol (stream_); - stream_ << iter_->eol_index << std::endl; - } - - const std::size_t transitions_ = iter_->transitions; - - if (transitions_ == 0) - { - ++iter_; - } - - for (std::size_t t_ = 0; t_ < transitions_; ++t_) - { - std::size_t goto_state_ = iter_->goto_state; - - if (iter_->token.any ()) - { - any (stream_); - } - else - { - open_bracket (stream_); - - if (iter_->token._negated) - { - negated (stream_); - } - - string charset_; - CharT c_ = 0; - - escape_control_chars (iter_->token._charset, - charset_); - c_ = *charset_.c_str (); - - if (!iter_->token._negated && - (c_ == '^' || c_ == ']')) - { - stream_ << '\\'; - } - - stream_ << charset_; - close_bracket (stream_); - } - - stream_ << goto_state_ << std::endl; - ++iter_; - } - - stream_ << std::endl; - } - } - - static void lexer_state (std::ostream &stream_) - { - stream_ << "Lexer state: "; - } - - static void lexer_state (std::wostream &stream_) - { - stream_ << L"Lexer state: "; - } - - static void state (std::ostream &stream_) - { - stream_ << "State: "; - } - - static void state (std::wostream &stream_) - { - stream_ << L"State: "; - } - - static void bol (std::ostream &stream_) - { - stream_ << " BOL -> "; - } - - static void bol (std::wostream &stream_) - { - stream_ << L" BOL -> "; - } - - static void eol (std::ostream &stream_) - { - stream_ << " EOL -> "; - } - - static void eol (std::wostream &stream_) - { - stream_ << L" EOL -> "; - } - - static void end_state (std::ostream &stream_) - { - stream_ << " END STATE, Id = "; - } - - static void end_state (std::wostream &stream_) - { - stream_ << L" END STATE, Id = "; - } - - static void unique_id (std::ostream &stream_) - { - stream_ << ", Unique Id = "; - } - - static void unique_id (std::wostream &stream_) - { - stream_ << L", Unique Id = "; - } - - static void any (std::ostream &stream_) - { - stream_ << " . -> "; - } - - static void any (std::wostream &stream_) - { - stream_ << L" . -> "; - } - - static void open_bracket (std::ostream &stream_) - { - stream_ << " ["; - } - - static void open_bracket (std::wostream &stream_) - { - stream_ << L" ["; - } - - static void negated (std::ostream &stream_) - { - stream_ << "^"; - } - - static void negated (std::wostream &stream_) - { - stream_ << L"^"; - } - - static void close_bracket (std::ostream &stream_) - { - stream_ << "] -> "; - } - - static void close_bracket (std::wostream &stream_) - { - stream_ << L"] -> "; - } - - static void dfa (std::ostream &stream_) - { - stream_ << ", dfa = "; - } - - static void dfa (std::wostream &stream_) - { - stream_ << L", dfa = "; - } -}; - -typedef basic_debug debug; -typedef basic_debug wdebug; -} -} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/file_input.hpp b/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/file_input.hpp deleted file mode 100644 index 3103be274451..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/file_input.hpp +++ /dev/null @@ -1,475 +0,0 @@ -// file_input.hpp -// Copyright (c) 2008-2009 Ben Hanson (http://www.benhanson.net/) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file licence_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_FILE_INPUT_HPP -#define BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_FILE_INPUT_HPP - -#include "char_traits.hpp" -// memcpy -#include -#include "size_t.hpp" -#include "state_machine.hpp" -#include - -namespace boost -{ -namespace lexer -{ -template > -class basic_file_input -{ -public: - class iterator - { - public: - friend class basic_file_input; - - struct data - { - std::size_t id; - std::size_t unique_id; - const CharT *start; - const CharT *end; - std::size_t state; - - // Construct in end() state. - data () : - id (0), - unique_id (npos), - state (npos) - { - } - - bool operator == (const data &rhs_) const - { - return id == rhs_.id && unique_id == rhs_.unique_id && - start == rhs_.start && end == rhs_.end && - state == rhs_.state; - } - }; - - iterator () : - _input (0) - { - } - - bool operator == (const iterator &rhs_) const - { - return _data == rhs_._data; - } - - bool operator != (const iterator &rhs_) const - { - return !(*this == rhs_); - } - - data &operator * () - { - return _data; - } - - data *operator -> () - { - return &_data; - } - - // Let compiler generate operator = (). - - // prefix version - iterator &operator ++ () - { - next_token (); - return *this; - } - - // postfix version - iterator operator ++ (int) - { - iterator iter_ = *this; - - next_token (); - return iter_; - } - - void next_token () - { - const detail::internals &internals_ = - _input->_state_machine->data (); - - _data.start = _data.end; - - if (internals_._dfa->size () == 1) - { - _data.id = _input->next (&internals_._lookup->front ()-> - front (), internals_._dfa_alphabet.front (), - &internals_._dfa->front ()->front (), _data.start, - _data.end, _data.unique_id); - } - else - { - _data.id = _input->next (internals_, _data.state, _data.start, - _data.end, _data.unique_id); - } - - if (_data.id == 0) - { - _data.start = 0; - _data.end = 0; - // Ensure current state matches that returned by end(). - _data.state = npos; - } - } - - private: - // Not owner (obviously!) - basic_file_input *_input; - data _data; - }; - - friend class iterator; - - // Make it explicit that we are NOT taking a copy of state_machine_! - basic_file_input (const basic_state_machine *state_machine_, - std::basic_ifstream *is_, - const std::streamsize buffer_size_ = 4096, - const std::streamsize buffer_increment_ = 1024) : - _state_machine (state_machine_), - _stream (is_), - _buffer_size (buffer_size_), - _buffer_increment (buffer_increment_), - _buffer (_buffer_size, '!') - { - _start_buffer = &_buffer.front (); - _end_buffer = _start_buffer + _buffer.size (); - _start_token = _end_buffer; - _end_token = _end_buffer; - } - - iterator begin () - { - iterator iter_; - - iter_._input = this; - // Over-ride default of 0 (EOF) - iter_._data.id = npos; - iter_._data.start = 0; - iter_._data.end = 0; - iter_._data.state = 0; - ++iter_; - return iter_; - } - - iterator end () - { - iterator iter_; - - iter_._input = this; - iter_._data.start = 0; - iter_._data.end = 0; - return iter_; - } - - void flush () - { - // This temporary is mandatory, otherwise the - // pointer calculations won't work! - const CharT *temp_ = _end_buffer; - - _start_token = _end_token = _end_buffer; - reload_buffer (temp_, true, _end_token); - } - -private: - typedef std::basic_istream istream; - typedef std::vector buffer; - - const basic_state_machine *_state_machine; - const std::streamsize _buffer_size; - const std::streamsize _buffer_increment; - - buffer _buffer; - CharT *_start_buffer; - istream *_stream; - const CharT *_start_token; - const CharT *_end_token; - CharT *_end_buffer; - - std::size_t next (const detail::internals &internals_, - std::size_t &start_state_, const CharT * &start_, const CharT * &end_, - std::size_t &unique_id_) - { - _start_token = _end_token; - -again: - const std::size_t * lookup_ = &internals_._lookup[start_state_]-> - front (); - std::size_t dfa_alphabet_ = internals_._dfa_alphabet[start_state_]; - const std::size_t *dfa_ = &internals_._dfa[start_state_]->front (); - const std::size_t *ptr_ = dfa_ + dfa_alphabet_; - const CharT *curr_ = _start_token; - bool end_state_ = *ptr_ != 0; - std::size_t id_ = *(ptr_ + id_index); - std::size_t uid_ = *(ptr_ + unique_id_index); - const CharT *end_token_ = curr_; - - for (;;) - { - if (curr_ >= _end_buffer) - { - if (!reload_buffer (curr_, end_state_, end_token_)) - { - // EOF - break; - } - } - - const std::size_t BOL_state_ = ptr_[bol_index]; - const std::size_t EOL_state_ = ptr_[eol_index]; - - if (BOL_state_ && (_start_token == _start_buffer || - *(_start_token - 1) == '\n')) - { - ptr_ = &dfa_[BOL_state_ * dfa_alphabet_]; - } - else if (EOL_state_ && *curr_ == '\n') - { - ptr_ = &dfa_[EOL_state_ * dfa_alphabet_]; - } - else - { - const std::size_t state_ = - ptr_[lookup_[static_cast - (*curr_++)]]; - - if (state_ == 0) - { - break; - } - - ptr_ = &dfa_[state_ * dfa_alphabet_]; - } - - if (*ptr_) - { - end_state_ = true; - id_ = *(ptr_ + id_index); - uid_ = *(ptr_ + unique_id_index); - start_state_ = *(ptr_ + state_index); - end_token_ = curr_; - } - } - - if (_start_token >= _end_buffer) - { - // No more tokens... - unique_id_ = npos; - return 0; - } - - const std::size_t EOL_state_ = ptr_[eol_index]; - - if (EOL_state_ && curr_ == end_) - { - ptr_ = &dfa_[EOL_state_ * dfa_alphabet_]; - - if (*ptr_) - { - end_state_ = true; - id_ = *(ptr_ + id_index); - uid_ = *(ptr_ + unique_id_index); - start_state_ = *(ptr_ + state_index); - end_token_ = curr_; - } - } - - if (end_state_) - { - // return longest match - _end_token = end_token_; - - if (id_ == 0) goto again; - } - else - { - // No match causes char to be skipped - _end_token = _start_token + 1; - id_ = npos; - uid_ = npos; - } - - start_ = _start_token; - end_ = _end_token; - unique_id_ = uid_; - return id_; - } - - std::size_t next (const std::size_t * const lookup_, - const std::size_t dfa_alphabet_, const std::size_t * const dfa_, - const CharT * &start_, const CharT * &end_, std::size_t &unique_id_) - { - _start_token = _end_token; - - const std::size_t *ptr_ = dfa_ + dfa_alphabet_; - const CharT *curr_ = _start_token; - bool end_state_ = *ptr_ != 0; - std::size_t id_ = *(ptr_ + id_index); - std::size_t uid_ = *(ptr_ + unique_id_index); - const CharT *end_token_ = curr_; - - for (;;) - { - if (curr_ >= _end_buffer) - { - if (!reload_buffer (curr_, end_state_, end_token_)) - { - // EOF - break; - } - } - - const std::size_t BOL_state_ = ptr_[bol_index]; - const std::size_t EOL_state_ = ptr_[eol_index]; - - if (BOL_state_ && (_start_token == _start_buffer || - *(_start_token - 1) == '\n')) - { - ptr_ = &dfa_[BOL_state_ * dfa_alphabet_]; - } - else if (EOL_state_ && *curr_ == '\n') - { - ptr_ = &dfa_[EOL_state_ * dfa_alphabet_]; - } - else - { - const std::size_t state_ = - ptr_[lookup_[static_cast - (*curr_++)]]; - - if (state_ == 0) - { - break; - } - - ptr_ = &dfa_[state_ * dfa_alphabet_]; - } - - if (*ptr_) - { - end_state_ = true; - id_ = *(ptr_ + id_index); - uid_ = *(ptr_ + unique_id_index); - end_token_ = curr_; - } - } - - if (_start_token >= _end_buffer) - { - // No more tokens... - unique_id_ = npos; - return 0; - } - - const std::size_t EOL_state_ = ptr_[eol_index]; - - if (EOL_state_ && curr_ == end_) - { - ptr_ = &dfa_[EOL_state_ * dfa_alphabet_]; - - if (*ptr_) - { - end_state_ = true; - id_ = *(ptr_ + id_index); - uid_ = *(ptr_ + unique_id_index); - end_token_ = curr_; - } - } - - if (end_state_) - { - // return longest match - _end_token = end_token_; - } - else - { - // No match causes char to be skipped - _end_token = _start_token + 1; - id_ = npos; - uid_ = npos; - } - - start_ = _start_token; - end_ = _end_token; - unique_id_ = uid_; - return id_; - } - - bool reload_buffer (const CharT * &curr_, const bool end_state_, - const CharT * &end_token_) - { - bool success_ = !_stream->eof (); - - if (success_) - { - const CharT *old_start_token_ = _start_token; - std::size_t old_size_ = _buffer.size (); - std::size_t count_ = 0; - - if (_start_token - 1 == _start_buffer) - { - // Run out of buffer space, so increase. - _buffer.resize (old_size_ + _buffer_increment, '!'); - _start_buffer = &_buffer.front (); - _start_token = _start_buffer + 1; - _stream->read (_start_buffer + old_size_, - _buffer_increment); - count_ = _stream->gcount (); - _end_buffer = _start_buffer + old_size_ + count_; - } - else if (_start_token < _end_buffer) - { - const std::size_t len_ = _end_buffer - _start_token; - // Some systems have memcpy in namespace std. - using namespace std; - - memcpy (_start_buffer, _start_token - 1, (len_ + 1) * - sizeof (CharT)); - _stream->read (_start_buffer + len_ + 1, - static_cast (_buffer.size () - len_ - 1)); - count_ = _stream->gcount (); - _start_token = _start_buffer + 1; - _end_buffer = _start_buffer + len_ + 1 + count_; - } - else - { - _stream->read (_start_buffer, static_cast - (_buffer.size ())); - count_ = _stream->gcount (); - _start_token = _start_buffer; - _end_buffer = _start_buffer + count_; - } - - if (end_state_) - { - end_token_ = _start_token + - (end_token_ - old_start_token_); - } - - curr_ = _start_token + (curr_ - old_start_token_); - } - - return success_; - } - - // Disallow copying of buffer - basic_file_input (const basic_file_input &); - const basic_file_input &operator = (const basic_file_input &); -}; - -typedef basic_file_input file_input; -typedef basic_file_input wfile_input; -} -} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/generate_cpp.hpp b/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/generate_cpp.hpp deleted file mode 100644 index c3557cac60ba..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/generate_cpp.hpp +++ /dev/null @@ -1,576 +0,0 @@ -// generate_cpp.hpp -// Copyright (c) 2008-2009 Ben Hanson (http://www.benhanson.net/) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file licence_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_GENERATE_CPP_HPP -#define BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_GENERATE_CPP_HPP - -#include "char_traits.hpp" -#include "consts.hpp" -#include "internals.hpp" -#include "runtime_error.hpp" -#include "size_t.hpp" -#include "state_machine.hpp" -#include -#include - -namespace boost -{ -namespace lexer -{ -template -void generate_cpp (const basic_state_machine &state_machine_, - std::ostream &os_, const bool use_pointers_ = false, - const bool skip_unknown_ = true, const bool optimise_parameters_ = true, - const char *name_ = "next_token") -{ - const detail::internals &sm_ = state_machine_.data (); - - if (sm_._lookup->size () == 0) - { - throw runtime_error ("Cannot generate code from an empty " - "state machine"); - } - - std::string upper_name_ (__DATE__); - const std::size_t lookups_ = sm_._lookup->front ()->size (); - const std::size_t dfas_ = sm_._dfa->size (); - std::string::size_type pos_ = upper_name_.find (' '); - const char *iterator_ = 0; - - if (use_pointers_) - { - if (lookups_ == 256) - { - iterator_ = "const char *"; - } - else - { - iterator_ = "const wchar_t *"; - } - } - else - { - iterator_ = "Iterator &"; - } - - while (pos_ != std::string::npos) - { - upper_name_.replace (pos_, 1, "_"); - pos_ = upper_name_.find (' ', pos_); - } - - upper_name_ += '_'; - upper_name_ += __TIME__; - - pos_ = upper_name_.find (':'); - - while (pos_ != std::string::npos) - { - upper_name_.erase (pos_, 1); - pos_ = upper_name_.find (':', pos_); - } - - upper_name_ = '_' + upper_name_; - upper_name_ = name_ + upper_name_; - std::transform (upper_name_.begin (), upper_name_.end (), - upper_name_.begin (), ::toupper); - os_ << "#ifndef " << upper_name_ + '\n'; - os_ << "#define " << upper_name_ + '\n'; - os_ << "// Copyright (c) 2008-2009 Ben Hanson\n"; - os_ << "//\n"; - os_ << "// Distributed under the Boost Software License, " - "Version 1.0. (See accompanying\n"; - os_ << "// file licence_1_0.txt or copy at " - "http://www.boost.org/LICENSE_1_0.txt)\n\n"; - os_ << "// Auto-generated by boost::lexer\n"; - os_ << "template\n"; - os_ << "std::size_t " << name_ << " ("; - - if (dfas_ > 1 || !optimise_parameters_) - { - os_ << "std::size_t &start_state_, "; - } - - if (use_pointers_) - { - os_ << iterator_ << " &"; - } - else - { - os_ << iterator_; - } - - os_ << "start_token_, "; - - if (use_pointers_) - { - os_ << iterator_ << " const "; - } - else - { - os_ << "const " << iterator_; - } - - os_ << "end_, \n"; - os_ << " std::size_t &unique_id_"; - - if (sm_._seen_BOL_assertion || !optimise_parameters_) - { - os_ << ", bool &beg_of_line_"; - } - - os_ << ")\n"; - os_ << "{\n"; - os_ << " enum {end_state_index, id_index, unique_id_index, state_index, bol_index,\n"; - os_ << " eol_index, dead_state_index, dfa_offset};\n"; - os_ << " static const std::size_t npos = static_cast" - "(~0);\n"; - - if (dfas_ > 1) - { - std::size_t state_ = 0; - - for (; state_ < dfas_; ++state_) - { - std::size_t i_ = 0; - std::size_t j_ = 1; - std::size_t count_ = lookups_ / 8; - const std::size_t *lookup_ = &sm_._lookup[state_]->front (); - const std::size_t *dfa_ = &sm_._dfa[state_]->front (); - - os_ << " static const std::size_t lookup" << state_ << "_[" << - lookups_ << "] = {"; - - for (; i_ < count_; ++i_) - { - const std::size_t index_ = i_ * 8; - - os_ << lookup_[index_]; - - for (; j_ < 8; ++j_) - { - os_ << ", " << lookup_[index_ + j_]; - } - - if (i_ < count_ - 1) - { - os_ << "," << std::endl << " "; - } - - j_ = 1; - } - - os_ << "};\n"; - count_ = sm_._dfa[state_]->size (); - os_ << " static const std::size_t dfa" << state_ << "_[" << - count_ << "] = {"; - count_ /= 8; - - for (i_ = 0; i_ < count_; ++i_) - { - const std::size_t index_ = i_ * 8; - - os_ << dfa_[index_]; - - for (j_ = 1; j_ < 8; ++j_) - { - os_ << ", " << dfa_[index_ + j_]; - } - - if (i_ < count_ - 1) - { - os_ << "," << std::endl << " "; - } - } - - const std::size_t mod_ = sm_._dfa[state_]->size () % 8; - - if (mod_) - { - const std::size_t index_ = count_ * 8; - - if (count_) - { - os_ << ",\n "; - } - - os_ << dfa_[index_]; - - for (j_ = 1; j_ < mod_; ++j_) - { - os_ << ", " << dfa_[index_ + j_]; - } - } - - os_ << "};\n"; - } - - std::size_t count_ = sm_._dfa_alphabet.size (); - std::size_t i_ = 1; - - os_ << " static const std::size_t *lookup_arr_[" << count_ << - "] = {"; - os_ << "lookup0_"; - - for (i_ = 1; i_ < count_; ++i_) - { - os_ << ", " << "lookup" << i_ << "_"; - } - - os_ << "};\n"; - os_ << " static const std::size_t dfa_alphabet_arr_[" << count_ << - "] = {"; - os_ << sm_._dfa_alphabet.front (); - - for (i_ = 1; i_ < count_; ++i_) - { - os_ << ", " << sm_._dfa_alphabet[i_]; - } - - os_ << "};\n"; - os_ << " static const std::size_t *dfa_arr_[" << count_ << - "] = {"; - os_ << "dfa0_"; - - for (i_ = 1; i_ < count_; ++i_) - { - os_ << ", " << "dfa" << i_ << "_"; - } - - os_ << "};\n"; - } - else - { - const std::size_t *lookup_ = &sm_._lookup->front ()->front (); - const std::size_t *dfa_ = &sm_._dfa->front ()->front (); - std::size_t i_ = 0; - std::size_t j_ = 1; - std::size_t count_ = lookups_ / 8; - - os_ << " static const std::size_t lookup_["; - os_ << sm_._lookup->front ()->size () << "] = {"; - - for (; i_ < count_; ++i_) - { - const std::size_t index_ = i_ * 8; - - os_ << lookup_[index_]; - - for (; j_ < 8; ++j_) - { - os_ << ", " << lookup_[index_ + j_]; - } - - if (i_ < count_ - 1) - { - os_ << "," << std::endl << " "; - } - - j_ = 1; - } - - os_ << "};\n"; - os_ << " static const std::size_t dfa_alphabet_ = " << - sm_._dfa_alphabet.front () << ";\n"; - os_ << " static const std::size_t dfa_[" << - sm_._dfa->front ()->size () << "] = {"; - count_ = sm_._dfa->front ()->size () / 8; - - for (i_ = 0; i_ < count_; ++i_) - { - const std::size_t index_ = i_ * 8; - - os_ << dfa_[index_]; - - for (j_ = 1; j_ < 8; ++j_) - { - os_ << ", " << dfa_[index_ + j_]; - } - - if (i_ < count_ - 1) - { - os_ << "," << std::endl << " "; - } - } - - const std::size_t mod_ = sm_._dfa->front ()->size () % 8; - - if (mod_) - { - const std::size_t index_ = count_ * 8; - - if (count_) - { - os_ << ",\n "; - } - - os_ << dfa_[index_]; - - for (j_ = 1; j_ < mod_; ++j_) - { - os_ << ", " << dfa_[index_ + j_]; - } - } - - os_ << "};\n"; - } - - os_ << "\n if (start_token_ == end_)\n"; - os_ << " {\n"; - os_ << " unique_id_ = npos;\n"; - os_ << " return 0;\n"; - os_ << " }\n\n"; - - if (dfas_ > 1) - { - os_ << "again:\n"; - os_ << " const std::size_t * lookup_ = " - "lookup_arr_[start_state_];\n"; - os_ << " std::size_t dfa_alphabet_ = " - "dfa_alphabet_arr_[start_state_];\n"; - os_ << " const std::size_t *dfa_ = dfa_arr_[start_state_];\n"; - } - - os_ << " const std::size_t *ptr_ = dfa_ + dfa_alphabet_;\n"; - os_ << " Iterator curr_ = start_token_;\n"; - os_ << " bool end_state_ = *ptr_ != 0;\n"; - os_ << " std::size_t id_ = *(ptr_ + id_index);\n"; - os_ << " std::size_t uid_ = *(ptr_ + unique_id_index);\n"; - - if (dfas_ > 1) - { - os_ << " std::size_t end_start_state_ = start_state_;\n"; - } - - if (sm_._seen_BOL_assertion) - { - os_ << " bool bol_ = beg_of_line_;\n"; - os_ << " bool end_bol_ = bol_;\n"; - } - - os_ << " Iterator end_token_ = start_token_;\n"; - os_ << '\n'; - os_ << " while (curr_ != end_)\n"; - os_ << " {\n"; - - if (sm_._seen_BOL_assertion) - { - os_ << " const std::size_t BOL_state_ = ptr_[bol_index];\n"; - } - - if (sm_._seen_EOL_assertion) - { - os_ << " const std::size_t EOL_state_ = ptr_[eol_index];\n"; - } - - if (sm_._seen_BOL_assertion || sm_._seen_EOL_assertion) - { - os_ << '\n'; - } - - if (sm_._seen_BOL_assertion) - { - os_ << " if (BOL_state_ && bol_)\n"; - os_ << " {\n"; - os_ << " ptr_ = &dfa_[BOL_state_ * dfa_alphabet_];\n"; - os_ << " }\n"; - } - - if (sm_._seen_EOL_assertion) - { - os_ << " "; - - if (sm_._seen_BOL_assertion) - { - os_ << "else "; - } - - os_ << "if (EOL_state_ && *curr_ == '\\n')\n"; - os_ << " {\n"; - os_ << " ptr_ = &dfa_[EOL_state_ * dfa_alphabet_];\n"; - os_ << " }\n"; - } - - std::string tab_ (sm_._seen_BOL_assertion || sm_._seen_EOL_assertion ? " " : ""); - - if (sm_._seen_BOL_assertion || sm_._seen_EOL_assertion) - { - os_ << " else\n"; - os_ << " {\n"; - } - - if (sm_._seen_BOL_assertion) - { - os_ << " "; - - if (lookups_ == 256) - { - os_ << "char"; - } - else - { - os_ << "wchar_t"; - } - - os_ << " prev_char_ = *curr_++;\n\n"; - os_ << " bol_ = prev_char_ == '\\n';\n\n"; - } - - os_ << tab_; - os_ << " const std::size_t state_ =\n"; - os_ << tab_; - os_ << " ptr_[lookup_["; - - if (lookups_ == 256) - { - os_ << "static_cast("; - } - - if (sm_._seen_BOL_assertion) - { - os_ << "prev_char"; - } - else - { - os_ << "*curr_++"; - } - - - if (lookups_ == 256) - { - os_ << ')'; - } - - os_ << "]];\n\n"; - - os_ << tab_; - os_ << " if (state_ == 0) break;\n\n"; - os_ << tab_; - os_ << " ptr_ = &dfa_[state_ * dfa_alphabet_];\n"; - - if (sm_._seen_BOL_assertion || sm_._seen_EOL_assertion) - { - os_ << " }\n"; - } - - os_ << '\n'; - os_ << " if (*ptr_)\n"; - os_ << " {\n"; - os_ << " end_state_ = true;\n"; - os_ << " id_ = *(ptr_ + id_index);\n"; - os_ << " uid_ = *(ptr_ + unique_id_index);\n"; - - if (dfas_ > 1) - { - os_ << " end_start_state_ = *(ptr_ + state_index);\n"; - } - - if (sm_._seen_BOL_assertion) - { - os_ << " end_bol_ = bol_;\n"; - } - - os_ << " end_token_ = curr_;\n"; - os_ << " }\n"; - os_ << " }\n"; - os_ << '\n'; - - if (sm_._seen_EOL_assertion) - { - os_ << " const std::size_t EOL_state_ = ptr_[eol_index];\n"; - os_ << '\n'; - os_ << " if (EOL_state_ && curr_ == end_)\n"; - os_ << " {\n"; - os_ << " ptr_ = &dfa_[EOL_state_ * dfa_alphabet_];\n"; - os_ << '\n'; - os_ << " if (*ptr_)\n"; - os_ << " {\n"; - os_ << " end_state_ = true;\n"; - os_ << " id_ = *(ptr_ + id_index);\n"; - os_ << " uid_ = *(ptr_ + unique_id_index);\n"; - - if (dfas_ > 1) - { - os_ << " end_start_state_ = *(ptr_ + state_index);\n"; - } - - if (sm_._seen_BOL_assertion) - { - os_ << " end_bol_ = bol_;\n"; - } - - os_ << " end_token_ = curr_;\n"; - os_ << " }\n"; - os_ << " }\n"; - os_ << '\n'; - } - - os_ << " if (end_state_)\n"; - os_ << " {\n"; - os_ << " // return longest match\n"; - - if (dfas_ > 1) - { - os_ << " start_state_ = end_start_state_;\n"; - } - - if (sm_._seen_BOL_assertion && dfas_ < 2) - { - os_ << " beg_of_line_ = end_bol_;\n"; - } - - os_ << " start_token_ = end_token_;\n"; - - if (dfas_ > 1) - { - os_ << '\n'; - os_ << " if (id_ == 0)\n"; - os_ << " {\n"; - - if (sm_._seen_BOL_assertion) - { - os_ << " bol_ = end_bol_;\n"; - } - - os_ << " goto again;\n"; - os_ << " }\n"; - - if (sm_._seen_BOL_assertion) - { - os_ << " else\n"; - os_ << " {\n"; - os_ << " beg_of_line_ = end_bol_;\n"; - os_ << " }\n"; - } - } - - os_ << " }\n"; - os_ << " else\n"; - os_ << " {\n"; - - if (sm_._seen_BOL_assertion) - { - os_ << " beg_of_line_ = *start_token_ == '\\n';\n"; - } - - if (skip_unknown_) - { - os_ << " // No match causes char to be skipped\n"; - os_ << " ++start_token_;\n"; - } - - os_ << " id_ = npos;\n"; - os_ << " uid_ = npos;\n"; - os_ << " }\n"; - os_ << '\n'; - os_ << " unique_id_ = uid_;\n"; - os_ << " return id_;\n"; - os_ << "}\n"; - os_ << "\n#endif\n"; -} -} -} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/generate_re2c.hpp b/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/generate_re2c.hpp deleted file mode 100644 index 0decc0e2ca64..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/generate_re2c.hpp +++ /dev/null @@ -1,440 +0,0 @@ -// generate_re2c.hpp -// Copyright (c) 2009 Ben Hanson (http://www.benhanson.net/) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file licence_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_GENERATE_RE2C_HPP -#define BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_GENERATE_RE2C_HPP - -#include "char_traits.hpp" -#include "consts.hpp" -#include "internals.hpp" -#include "runtime_error.hpp" -#include "size_t.hpp" -#include "state_machine.hpp" -#include -#include - -namespace boost -{ -namespace lexer -{ -// check whether state0_0 is referenced from any of the other states -template -bool need_label0_0(boost::lexer::basic_state_machine const &sm_) -{ - typedef typename boost::lexer::basic_state_machine::iterator - iterator_type; - iterator_type iter_ = sm_.begin(); - std::size_t states_ = iter_->states; - - for (std::size_t state_ = 0; state_ < states_; ++state_) - { - if (0 == iter_->bol_index || 0 == iter_->eol_index) - { - return true; - } - - std::size_t const transitions_ = iter_->transitions; - for (std::size_t t_ = 0; t_ < transitions_; ++t_) - { - if (0 == iter_->goto_state) - { - return true; - } - ++iter_; - } - if (transitions_ == 0) ++iter_; - } - return false; -} - -template -void generate_re2c (const basic_state_machine &state_machine_, - std::ostream &os_, const bool use_pointers_ = false, - const bool skip_unknown_ = true, const bool optimise_parameters_ = true, - const char *name_ = "next_token") -{ - typedef typename boost::lexer::basic_string_token string_token; - const detail::internals &sm_ = state_machine_.data (); - - if (sm_._lookup->size () == 0) - { - throw runtime_error ("Cannot generate code from an empty " - "state machine"); - } - - std::string upper_name_ (__DATE__); - const std::size_t lookups_ = sm_._lookup->front ()->size (); - typename boost::lexer::basic_state_machine::iterator iter_ = - state_machine_.begin(); - typename boost::lexer::basic_state_machine::iterator end_ = - state_machine_.end(); - const std::size_t dfas_ = sm_._dfa->size (); - std::string::size_type pos_ = upper_name_.find (' '); - const char *iterator_ = 0; - - if (use_pointers_) - { - if (lookups_ == 256) - { - iterator_ = "const char *"; - } - else - { - iterator_ = "const wchar_t *"; - } - } - else - { - iterator_ = "Iterator &"; - } - - while (pos_ != std::string::npos) - { - upper_name_.replace (pos_, 1, "_"); - pos_ = upper_name_.find (' ', pos_); - } - - upper_name_ += '_'; - upper_name_ += __TIME__; - - pos_ = upper_name_.find (':'); - - while (pos_ != std::string::npos) - { - upper_name_.erase (pos_, 1); - pos_ = upper_name_.find (':', pos_); - } - - upper_name_ = '_' + upper_name_; - upper_name_ = name_ + upper_name_; - std::transform (upper_name_.begin (), upper_name_.end (), - upper_name_.begin (), ::toupper); - os_ << "#ifndef " << upper_name_ + '\n'; - os_ << "#define " << upper_name_ + '\n'; - os_ << "// Copyright (c) 2008-2009 Ben Hanson\n"; - os_ << "//\n"; - os_ << "// Distributed under the Boost Software License, " - "Version 1.0. (See accompanying\n"; - os_ << "// file licence_1_0.txt or copy at " - "http://www.boost.org/LICENSE_1_0.txt)\n\n"; - os_ << "// Auto-generated by boost::lexer\n"; - os_ << "template\n"; - os_ << "std::size_t " << name_ << " ("; - - if (dfas_ > 1 || !optimise_parameters_) - { - os_ << "std::size_t &start_state_, "; - } - - if (use_pointers_) - { - os_ << iterator_ << " &"; - } - else - { - os_ << iterator_; - } - - os_ << "start_token_, "; - - if (use_pointers_) - { - os_ << iterator_ << " const "; - } - else - { - os_ << "const " << iterator_; - } - - os_ << "end_, \n"; - os_ << " std::size_t &unique_id_"; - - if (sm_._seen_BOL_assertion || !optimise_parameters_) - { - os_ << ", bool &beg_of_line_"; - } - - os_ << ")\n"; - os_ << "{\n"; - os_ << " static const std::size_t npos = static_cast" - "(~0);\n"; - os_ << "\n if (start_token_ == end_)\n"; - os_ << " {\n"; - os_ << " unique_id_ = npos;\n"; - os_ << " return 0;\n"; - os_ << " }\n\n"; - - if (dfas_ > 1) - { - os_ << "again:\n"; - } - - os_ << " Iterator curr_ = start_token_;\n"; - os_ << " bool end_state_ = false;\n"; - os_ << " std::size_t id_ = npos;\n"; - os_ << " std::size_t uid_ = npos;\n"; - - if (dfas_ > 1) - { - os_ << " std::size_t end_start_state_ = start_state_;\n"; - } - - if (sm_._seen_BOL_assertion) - { - os_ << " bool bol_ = beg_of_line_;\n"; - os_ << " bool end_bol_ = bol_;\n"; - } - - os_ << " Iterator end_token_ = start_token_;\n"; - os_ << '\n'; - - if (dfas_ > 1) - { - os_ << " switch (start_state_)\n"; - os_ << " {\n"; - - for (std::size_t i_ = 0; i_ < dfas_; ++i_) - { - os_ << " case " << i_ << ":\n"; - os_ << " goto " << i_ << "_0;\n"; - os_ << " // Not needed, but to prevent warnings\n"; - os_ << " break;\n"; - } - - os_ << " default:\n"; - os_ << " throw std::runtime_error (\"Invalid start state!\")\n"; - os_ << " break;\n"; - os_ << " }\n\n"; - } - - os_ << " "; - - if (lookups_ == 256) - { - os_ << "char"; - } - else - { - os_ << "wchar_t"; - } - - os_ << " ch_ = 0;\n\n"; - - bool need_state0_0_label = need_label0_0(state_machine_); - - for (std::size_t dfa_ = 0; dfa_ < dfas_; ++dfa_) - { - const std::size_t states_ = iter_->states; - - for (std::size_t state_ = 0; state_ < states_; ++state_) - { - const std::size_t transitions_ = iter_->transitions; - std::size_t t_ = 0; - - if (dfas_ > 1 || dfa_ != 0 || state_ != 0 || need_state0_0_label) - { - os_ << "state" << dfa_ << '_' << state_ << ":\n"; - } - - if (iter_->end_state) - { - os_ << " end_state_ = true;\n"; - os_ << " id_ = " << iter_->id << ";\n"; - os_ << " uid_ = " << iter_->unique_id << ";\n"; - os_ << " end_token_ = curr_;\n"; - - if (dfas_ > 1) - { - os_ << " end_start_state_ = " << iter_->goto_dfa << - ";\n"; - } - - if (sm_._seen_BOL_assertion) - { - os_ << " end_bol_ = bol_;\n"; - } - - if (transitions_) os_ << '\n'; - } - - if (t_ < transitions_ || iter_->bol_index != boost::lexer::npos || - iter_->eol_index != boost::lexer::npos) - { - os_ << " if (curr_ == end_) goto end;\n\n"; - os_ << " ch_ = *curr_;\n"; - - if (iter_->bol_index != boost::lexer::npos) - { - os_ << "\n if (bol_) goto state" << dfa_ << '_' << - iter_->bol_index << ";\n\n"; - } - - if (iter_->eol_index != boost::lexer::npos) - { - os_ << "\n if (ch_ == '\n') goto state" << dfa_ << '_' << - iter_->eol_index << ";\n\n"; - } - - os_ << " ++curr_;\n"; - } - - for (; t_ < transitions_; ++t_) - { - const char *ptr_ = iter_->token._charset.c_str(); - const char *end_ = ptr_ + iter_->token._charset.size(); - char start_char_ = 0; - char curr_char_ = 0; - bool range_ = false; - bool first_char_ = true; - - os_ << "\n if ("; - - while (ptr_ != end_) - { - curr_char_ = *ptr_++; - - if (*ptr_ == curr_char_ + 1) - { - if (!range_) - { - start_char_ = curr_char_; - } - - range_ = true; - } - else - { - if (!first_char_) - { - if (iter_->token._negated) - { - os_ << " && "; - } - else - { - os_ << " || "; - } - } - - first_char_ = false; - - if (range_) - { - typename string_token::string temp_; - - if (iter_->token._negated) - { - os_ << "!"; - } - - string_token::escape_char (start_char_, temp_); - os_ << "(ch_ >= '" << temp_; - temp_.clear (); - string_token::escape_char (curr_char_, temp_); - os_ << "' && ch_ <= '" << temp_ << "')"; - range_ = false; - } - else - { - typename string_token::string temp_; - - os_ << "ch_ "; - - if (iter_->token._negated) - { - os_ << "!="; - } - else - { - os_ << "=="; - } - - string_token::escape_char (curr_char_, temp_); - os_ << " '" << temp_ << "'"; - } - } - } - - os_ << ") goto state" << dfa_ << '_' << iter_->goto_state << - ";\n\n"; - ++iter_; - } - - if (!(dfa_ == dfas_ - 1 && state_ == states_ - 1)) - { - os_ << " goto end;\n"; - } - - if (transitions_ == 0) ++iter_; - } - } - - os_ << "end:\n"; - os_ << " if (end_state_)\n"; - os_ << " {\n"; - os_ << " // return longest match\n"; - - if (dfas_ > 1) - { - os_ << " start_state_ = end_start_state_;\n"; - } - - if (sm_._seen_BOL_assertion && dfas_ < 2) - { - os_ << " beg_of_line_ = end_bol_;\n"; - } - - os_ << " start_token_ = end_token_;\n"; - - if (dfas_ > 1) - { - os_ << '\n'; - os_ << " if (id_ == 0)\n"; - os_ << " {\n"; - - if (sm_._seen_BOL_assertion) - { - os_ << " bol_ = end_bol_;\n"; - } - - os_ << " goto again;\n"; - os_ << " }\n"; - - if (sm_._seen_BOL_assertion) - { - os_ << " else\n"; - os_ << " {\n"; - os_ << " beg_of_line_ = end_bol_;\n"; - os_ << " }\n"; - } - } - - os_ << " }\n"; - os_ << " else\n"; - os_ << " {\n"; - - if (sm_._seen_BOL_assertion) - { - os_ << " beg_of_line_ = *start_token_ == '\\n';\n"; - } - - if (skip_unknown_) - { - os_ << " // No match causes char to be skipped\n"; - os_ << " ++start_token_;\n"; - } - - os_ << " id_ = npos;\n"; - os_ << " uid_ = npos;\n"; - os_ << " }\n"; - os_ << '\n'; - os_ << " unique_id_ = uid_;\n"; - os_ << " return id_;\n"; - os_ << "}\n"; - os_ << "\n#endif\n"; -} -} -} -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/generator.hpp b/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/generator.hpp deleted file mode 100644 index 839fa3897eaa..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/generator.hpp +++ /dev/null @@ -1,843 +0,0 @@ -// generator.hpp -// Copyright (c) 2007-2009 Ben Hanson (http://www.benhanson.net/) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file licence_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_GENERATOR_HPP -#define BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_GENERATOR_HPP - -#include "char_traits.hpp" -// memcmp() -#include -#include "partition/charset.hpp" -#include "partition/equivset.hpp" -#include -#include -#include "parser/tree/node.hpp" -#include "parser/parser.hpp" -#include "containers/ptr_list.hpp" -#include -#include "rules.hpp" -#include "state_machine.hpp" - -namespace boost -{ -namespace lexer -{ -template > -class basic_generator -{ -public: - typedef typename detail::internals::size_t_vector size_t_vector; - typedef basic_rules rules; - - static void build (const rules &rules_, - basic_state_machine &state_machine_) - { - std::size_t index_ = 0; - std::size_t size_ = rules_.statemap ().size (); - node_ptr_vector node_ptr_vector_; - detail::internals &internals_ = const_cast - (state_machine_.data ()); - bool seen_BOL_assertion_ = false; - bool seen_EOL_assertion_ = false; - - state_machine_.clear (); - - for (; index_ < size_; ++index_) - { - internals_._lookup->push_back (static_cast(0)); - internals_._lookup->back () = new size_t_vector; - internals_._dfa_alphabet.push_back (0); - internals_._dfa->push_back (static_cast(0)); - internals_._dfa->back () = new size_t_vector; - } - - for (index_ = 0, size_ = internals_._lookup->size (); - index_ < size_; ++index_) - { - internals_._lookup[index_]->resize (sizeof (CharT) == 1 ? - num_chars : num_wchar_ts, dead_state_index); - - if (!rules_.regexes ()[index_].empty ()) - { - // vector mapping token indexes to partitioned token index sets - index_set_vector set_mapping_; - // syntax tree - detail::node *root_ = build_tree (rules_, index_, - node_ptr_vector_, internals_, set_mapping_); - - build_dfa (root_, set_mapping_, - internals_._dfa_alphabet[index_], - *internals_._dfa[index_]); - - if (internals_._seen_BOL_assertion) - { - seen_BOL_assertion_ = true; - } - - if (internals_._seen_EOL_assertion) - { - seen_EOL_assertion_ = true; - } - - internals_._seen_BOL_assertion = false; - internals_._seen_EOL_assertion = false; - } - } - - internals_._seen_BOL_assertion = seen_BOL_assertion_; - internals_._seen_EOL_assertion = seen_EOL_assertion_; - } - - static void minimise (basic_state_machine &state_machine_) - { - detail::internals &internals_ = const_cast - (state_machine_.data ()); - const std::size_t machines_ = internals_._dfa->size (); - - for (std::size_t i_ = 0; i_ < machines_; ++i_) - { - const std::size_t dfa_alphabet_ = internals_._dfa_alphabet[i_]; - size_t_vector *dfa_ = internals_._dfa[i_]; - - if (dfa_alphabet_ != 0) - { - std::size_t size_ = 0; - - do - { - size_ = dfa_->size (); - minimise_dfa (dfa_alphabet_, *dfa_, size_); - } while (dfa_->size () != size_); - } - } - } - -protected: - typedef detail::basic_charset charset; - typedef detail::ptr_list charset_list; - typedef boost::movelib::unique_ptr charset_ptr; - typedef detail::equivset equivset; - typedef detail::ptr_list equivset_list; - typedef boost::movelib::unique_ptr equivset_ptr; - typedef typename charset::index_set index_set; - typedef std::vector index_set_vector; - typedef detail::basic_parser parser; - typedef typename parser::node_ptr_vector node_ptr_vector; - typedef std::set node_set; - typedef detail::ptr_vector node_set_vector; - typedef std::vector node_vector; - typedef detail::ptr_vector node_vector_vector; - typedef typename parser::string string; - typedef std::pair string_pair; - typedef typename parser::tokeniser::string_token string_token; - typedef std::deque macro_deque; - typedef std::pair macro_pair; - typedef typename parser::macro_map::iterator macro_iter; - typedef std::pair macro_iter_pair; - typedef typename parser::tokeniser::token_map token_map; - - static detail::node *build_tree (const rules &rules_, - const std::size_t state_, node_ptr_vector &node_ptr_vector_, - detail::internals &internals_, index_set_vector &set_mapping_) - { - size_t_vector *lookup_ = internals_._lookup[state_]; - const typename rules::string_deque_deque ®exes_ = - rules_.regexes (); - const typename rules::id_vector_deque &ids_ = rules_.ids (); - const typename rules::id_vector_deque &unique_ids_ = - rules_.unique_ids (); - const typename rules::id_vector_deque &states_ = rules_.states (); - typename rules::string_deque::const_iterator regex_iter_ = - regexes_[state_].begin (); - typename rules::string_deque::const_iterator regex_iter_end_ = - regexes_[state_].end (); - typename rules::id_vector::const_iterator ids_iter_ = - ids_[state_].begin (); - typename rules::id_vector::const_iterator unique_ids_iter_ = - unique_ids_[state_].begin (); - typename rules::id_vector::const_iterator states_iter_ = - states_[state_].begin (); - const typename rules::string ®ex_ = *regex_iter_; - // map of regex charset tokens (strings) to index - token_map token_map_; - const typename rules::string_pair_deque ¯odeque_ = - rules_.macrodeque (); - typename parser::macro_map macromap_; - typename detail::node::node_vector tree_vector_; - - build_macros (token_map_, macrodeque_, macromap_, - rules_.flags (), rules_.locale (), node_ptr_vector_, - internals_._seen_BOL_assertion, internals_._seen_EOL_assertion); - - detail::node *root_ = parser::parse (regex_.c_str (), - regex_.c_str () + regex_.size (), *ids_iter_, *unique_ids_iter_, - *states_iter_, rules_.flags (), rules_.locale (), node_ptr_vector_, - macromap_, token_map_, internals_._seen_BOL_assertion, - internals_._seen_EOL_assertion); - - ++regex_iter_; - ++ids_iter_; - ++unique_ids_iter_; - ++states_iter_; - tree_vector_.push_back (root_); - - // build syntax trees - while (regex_iter_ != regex_iter_end_) - { - // re-declare var, otherwise we perform an assignment..! - const typename rules::string ®ex2_ = *regex_iter_; - - root_ = parser::parse (regex2_.c_str (), - regex2_.c_str () + regex2_.size (), *ids_iter_, - *unique_ids_iter_, *states_iter_, rules_.flags (), - rules_.locale (), node_ptr_vector_, macromap_, token_map_, - internals_._seen_BOL_assertion, - internals_._seen_EOL_assertion); - tree_vector_.push_back (root_); - ++regex_iter_; - ++ids_iter_; - ++unique_ids_iter_; - ++states_iter_; - } - - if (internals_._seen_BOL_assertion) - { - // Fixup BOLs - typename detail::node::node_vector::iterator iter_ = - tree_vector_.begin (); - typename detail::node::node_vector::iterator end_ = - tree_vector_.end (); - - for (; iter_ != end_; ++iter_) - { - fixup_bol (*iter_, node_ptr_vector_); - } - } - - // join trees - { - typename detail::node::node_vector::iterator iter_ = - tree_vector_.begin (); - typename detail::node::node_vector::iterator end_ = - tree_vector_.end (); - - if (iter_ != end_) - { - root_ = *iter_; - ++iter_; - } - - for (; iter_ != end_; ++iter_) - { - node_ptr_vector_->push_back (static_cast(0)); - node_ptr_vector_->back () = new detail::selection_node - (root_, *iter_); - root_ = node_ptr_vector_->back (); - } - } - - // partitioned token list - charset_list token_list_; - - set_mapping_.resize (token_map_.size ()); - partition_tokens (token_map_, token_list_); - - typename charset_list::list::const_iterator iter_ = - token_list_->begin (); - typename charset_list::list::const_iterator end_ = - token_list_->end (); - std::size_t index_ = 0; - - for (; iter_ != end_; ++iter_, ++index_) - { - const charset *cs_ = *iter_; - typename charset::index_set::const_iterator set_iter_ = - cs_->_index_set.begin (); - typename charset::index_set::const_iterator set_end_ = - cs_->_index_set.end (); - - fill_lookup (cs_->_token, lookup_, index_); - - for (; set_iter_ != set_end_; ++set_iter_) - { - set_mapping_[*set_iter_].insert (index_); - } - } - - internals_._dfa_alphabet[state_] = token_list_->size () + dfa_offset; - return root_; - } - - static void build_macros (token_map &token_map_, - const macro_deque ¯odeque_, - typename parser::macro_map ¯omap_, const regex_flags flags_, - const std::locale &locale_, node_ptr_vector &node_ptr_vector_, - bool &seen_BOL_assertion_, bool &seen_EOL_assertion_) - { - for (typename macro_deque::const_iterator iter_ = - macrodeque_.begin (), end_ = macrodeque_.end (); - iter_ != end_; ++iter_) - { - const typename rules::string &name_ = iter_->first; - const typename rules::string ®ex_ = iter_->second; - detail::node *node_ = parser::parse (regex_.c_str (), - regex_.c_str () + regex_.size (), 0, 0, 0, flags_, - locale_, node_ptr_vector_, macromap_, token_map_, - seen_BOL_assertion_, seen_EOL_assertion_); - macro_iter_pair map_iter_ = macromap_. - insert (macro_pair (name_, static_cast - (0))); - - map_iter_.first->second = node_; - } - } - - static void build_dfa (detail::node *root_, - const index_set_vector &set_mapping_, const std::size_t dfa_alphabet_, - size_t_vector &dfa_) - { - typename detail::node::node_vector *followpos_ = - &root_->firstpos (); - node_set_vector seen_sets_; - node_vector_vector seen_vectors_; - size_t_vector hash_vector_; - - // 'jam' state - dfa_.resize (dfa_alphabet_, 0); - closure (followpos_, seen_sets_, seen_vectors_, - hash_vector_, dfa_alphabet_, dfa_); - - std::size_t *ptr_ = 0; - - for (std::size_t index_ = 0; index_ < seen_vectors_->size (); ++index_) - { - equivset_list equiv_list_; - - build_equiv_list (seen_vectors_[index_], set_mapping_, equiv_list_); - - for (typename equivset_list::list::const_iterator iter_ = - equiv_list_->begin (), end_ = equiv_list_->end (); - iter_ != end_; ++iter_) - { - equivset *equivset_ = *iter_; - const std::size_t transition_ = closure - (&equivset_->_followpos, seen_sets_, seen_vectors_, - hash_vector_, dfa_alphabet_, dfa_); - - if (transition_ != npos) - { - ptr_ = &dfa_.front () + ((index_ + 1) * dfa_alphabet_); - - // Prune abstemious transitions from end states. - if (*ptr_ && !equivset_->_greedy) continue; - - for (typename detail::equivset::index_vector::const_iterator - equiv_iter_ = equivset_->_index_vector.begin (), - equiv_end_ = equivset_->_index_vector.end (); - equiv_iter_ != equiv_end_; ++equiv_iter_) - { - const std::size_t equiv_index_ = *equiv_iter_; - - if (equiv_index_ == bol_token) - { - if (ptr_[eol_index] == 0) - { - ptr_[bol_index] = transition_; - } - } - else if (equiv_index_ == eol_token) - { - if (ptr_[bol_index] == 0) - { - ptr_[eol_index] = transition_; - } - } - else - { - ptr_[equiv_index_ + dfa_offset] = transition_; - } - } - } - } - } - } - - static std::size_t closure (typename detail::node::node_vector *followpos_, - node_set_vector &seen_sets_, node_vector_vector &seen_vectors_, - size_t_vector &hash_vector_, const std::size_t size_, - size_t_vector &dfa_) - { - bool end_state_ = false; - std::size_t id_ = 0; - std::size_t unique_id_ = npos; - std::size_t state_ = 0; - std::size_t hash_ = 0; - - if (followpos_->empty ()) return npos; - - std::size_t index_ = 0; - boost::movelib::unique_ptr set_ptr_ (new node_set); - boost::movelib::unique_ptr vector_ptr_ (new node_vector); - - for (typename detail::node::node_vector::const_iterator iter_ = - followpos_->begin (), end_ = followpos_->end (); - iter_ != end_; ++iter_) - { - closure_ex (*iter_, end_state_, id_, unique_id_, state_, - set_ptr_.get (), vector_ptr_.get (), hash_); - } - - bool found_ = false; - typename size_t_vector::const_iterator hash_iter_ = - hash_vector_.begin (); - typename size_t_vector::const_iterator hash_end_ = - hash_vector_.end (); - typename node_set_vector::vector::const_iterator set_iter_ = - seen_sets_->begin (); - - for (; hash_iter_ != hash_end_; ++hash_iter_, ++set_iter_) - { - found_ = *hash_iter_ == hash_ && *(*set_iter_) == *set_ptr_; - ++index_; - - if (found_) break; - } - - if (!found_) - { - seen_sets_->push_back (static_cast(0)); - seen_sets_->back () = set_ptr_.release (); - seen_vectors_->push_back (static_cast(0)); - seen_vectors_->back () = vector_ptr_.release (); - hash_vector_.push_back (hash_); - // State 0 is the jam state... - index_ = seen_sets_->size (); - - const std::size_t old_size_ = dfa_.size (); - - dfa_.resize (old_size_ + size_, 0); - - if (end_state_) - { - dfa_[old_size_] |= end_state; - dfa_[old_size_ + id_index] = id_; - dfa_[old_size_ + unique_id_index] = unique_id_; - dfa_[old_size_ + state_index] = state_; - } - } - - return index_; - } - - static void closure_ex (detail::node *node_, bool &end_state_, - std::size_t &id_, std::size_t &unique_id_, std::size_t &state_, - node_set *set_ptr_, node_vector *vector_ptr_, std::size_t &hash_) - { - const bool temp_end_state_ = node_->end_state (); - - if (temp_end_state_) - { - if (!end_state_) - { - end_state_ = true; - id_ = node_->id (); - unique_id_ = node_->unique_id (); - state_ = node_->lexer_state (); - } - } - - if (set_ptr_->insert (node_).second) - { - vector_ptr_->push_back (node_); - hash_ += reinterpret_cast (node_); - } - } - - static void partition_tokens (const token_map &map_, - charset_list &lhs_) - { - charset_list rhs_; - - fill_rhs_list (map_, rhs_); - - if (!rhs_->empty ()) - { - typename charset_list::list::iterator iter_; - typename charset_list::list::iterator end_; - charset_ptr overlap_ (new charset); - - lhs_->push_back (static_cast(0)); - lhs_->back () = rhs_->front (); - rhs_->pop_front (); - - while (!rhs_->empty ()) - { - charset_ptr r_ (rhs_->front ()); - - rhs_->pop_front (); - iter_ = lhs_->begin (); - end_ = lhs_->end (); - - while (!r_->empty () && iter_ != end_) - { - typename charset_list::list::iterator l_iter_ = iter_; - - (*l_iter_)->intersect (*r_.get (), *overlap_.get ()); - - if (overlap_->empty ()) - { - ++iter_; - } - else if ((*l_iter_)->empty ()) - { - delete *l_iter_; - *l_iter_ = overlap_.release (); - - overlap_.reset (new charset); - ++iter_; - } - else if (r_->empty ()) - { - overlap_.swap (r_); - overlap_.reset (new charset); - break; - } - else - { - iter_ = lhs_->insert (++iter_, - static_cast(0)); - *iter_ = overlap_.release (); - - overlap_.reset(new charset); - ++iter_; - end_ = lhs_->end (); - } - } - - if (!r_->empty ()) - { - lhs_->push_back (static_cast(0)); - lhs_->back () = r_.release (); - } - } - } - } - - static void fill_rhs_list (const token_map &map_, - charset_list &list_) - { - typename parser::tokeniser::token_map::const_iterator iter_ = - map_.begin (); - typename parser::tokeniser::token_map::const_iterator end_ = - map_.end (); - - for (; iter_ != end_; ++iter_) - { - list_->push_back (static_cast(0)); - list_->back () = new charset (iter_->first, iter_->second); - } - } - - static void fill_lookup (const string_token &token_, - size_t_vector *lookup_, const std::size_t index_) - { - const CharT *curr_ = token_._charset.c_str (); - const CharT *chars_end_ = curr_ + token_._charset.size (); - std::size_t *ptr_ = &lookup_->front (); - const std::size_t max_ = sizeof (CharT) == 1 ? - num_chars : num_wchar_ts; - - if (token_._negated) - { - // $$$ FIXME JDG July 2014 $$$ - // this code is problematic on platforms where wchar_t is signed - // with min generating negative numbers. This crashes with BAD_ACCESS - // because of the vector index below: - // ptr_[static_cast(curr_char_)] - CharT curr_char_ = 0; // (std::numeric_limits::min)(); - std::size_t i_ = 0; - - while (curr_ < chars_end_) - { - while (*curr_ > curr_char_) - { - ptr_[static_cast - (curr_char_)] = index_ + dfa_offset; - ++curr_char_; - ++i_; - } - - ++curr_char_; - ++curr_; - ++i_; - } - - for (; i_ < max_; ++i_) - { - ptr_[static_cast(curr_char_)] = - index_ + dfa_offset; - ++curr_char_; - } - } - else - { - while (curr_ < chars_end_) - { - ptr_[static_cast(*curr_)] = - index_ + dfa_offset; - ++curr_; - } - } - } - - static void build_equiv_list (const node_vector *vector_, - const index_set_vector &set_mapping_, equivset_list &lhs_) - { - equivset_list rhs_; - - fill_rhs_list (vector_, set_mapping_, rhs_); - - if (!rhs_->empty ()) - { - typename equivset_list::list::iterator iter_; - typename equivset_list::list::iterator end_; - equivset_ptr overlap_ (new equivset); - - lhs_->push_back (static_cast(0)); - lhs_->back () = rhs_->front (); - rhs_->pop_front (); - - while (!rhs_->empty ()) - { - equivset_ptr r_ (rhs_->front ()); - - rhs_->pop_front (); - iter_ = lhs_->begin (); - end_ = lhs_->end (); - - while (!r_->empty () && iter_ != end_) - { - typename equivset_list::list::iterator l_iter_ = iter_; - - (*l_iter_)->intersect (*r_.get (), *overlap_.get ()); - - if (overlap_->empty ()) - { - ++iter_; - } - else if ((*l_iter_)->empty ()) - { - delete *l_iter_; - *l_iter_ = overlap_.release (); - - overlap_.reset (new equivset); - ++iter_; - } - else if (r_->empty ()) - { - overlap_.swap (r_); - overlap_.reset (new equivset); - break; - } - else - { - iter_ = lhs_->insert (++iter_, - static_cast(0)); - *iter_ = overlap_.release (); - - overlap_.reset (new equivset); - ++iter_; - end_ = lhs_->end (); - } - } - - if (!r_->empty ()) - { - lhs_->push_back (static_cast(0)); - lhs_->back () = r_.release (); - } - } - } - } - - static void fill_rhs_list (const node_vector *vector_, - const index_set_vector &set_mapping_, equivset_list &list_) - { - typename node_vector::const_iterator iter_ = - vector_->begin (); - typename node_vector::const_iterator end_ = - vector_->end (); - - for (; iter_ != end_; ++iter_) - { - const detail::node *node_ = *iter_; - - if (!node_->end_state ()) - { - const std::size_t token_ = node_->token (); - - if (token_ != null_token) - { - list_->push_back (static_cast(0)); - - if (token_ == bol_token || token_ == eol_token) - { - std::set index_set_; - - index_set_.insert (token_); - list_->back () = new equivset (index_set_, - node_->greedy (), token_, node_->followpos ()); - } - else - { - list_->back () = new equivset (set_mapping_[token_], - node_->greedy (), token_, node_->followpos ()); - } - } - } - } - } - - static void fixup_bol (detail::node * &root_, - node_ptr_vector &node_ptr_vector_) - { - typename detail::node::node_vector *first_ = &root_->firstpos (); - bool found_ = false; - typename detail::node::node_vector::const_iterator iter_ = - first_->begin (); - typename detail::node::node_vector::const_iterator end_ = - first_->end (); - - for (; iter_ != end_; ++iter_) - { - const detail::node *node_ = *iter_; - - found_ = !node_->end_state () && node_->token () == bol_token; - - if (found_) break; - } - - if (!found_) - { - node_ptr_vector_->push_back (static_cast(0)); - node_ptr_vector_->back () = new detail::leaf_node - (bol_token, true); - - detail::node *lhs_ = node_ptr_vector_->back (); - - node_ptr_vector_->push_back (static_cast(0)); - node_ptr_vector_->back () = new detail::leaf_node - (null_token, true); - - detail::node *rhs_ = node_ptr_vector_->back (); - - node_ptr_vector_->push_back - (static_cast(0)); - node_ptr_vector_->back () = - new detail::selection_node (lhs_, rhs_); - lhs_ = node_ptr_vector_->back (); - - node_ptr_vector_->push_back - (static_cast(0)); - node_ptr_vector_->back () = - new detail::sequence_node (lhs_, root_); - root_ = node_ptr_vector_->back (); - } - } - - static void minimise_dfa (const std::size_t dfa_alphabet_, - size_t_vector &dfa_, std::size_t size_) - { - const std::size_t *first_ = &dfa_.front (); - const std::size_t *second_ = 0; - const std::size_t *end_ = first_ + size_; - std::size_t index_ = 1; - std::size_t new_index_ = 1; - std::size_t curr_index_ = 0; - index_set index_set_; - size_t_vector lookup_; - std::size_t *lookup_ptr_ = 0; - - lookup_.resize (size_ / dfa_alphabet_, null_token); - lookup_ptr_ = &lookup_.front (); - *lookup_ptr_ = 0; - // Only one 'jam' state, so skip it. - first_ += dfa_alphabet_; - - for (; first_ < end_; first_ += dfa_alphabet_, ++index_) - { - for (second_ = first_ + dfa_alphabet_, curr_index_ = index_ + 1; - second_ < end_; second_ += dfa_alphabet_, ++curr_index_) - { - if (index_set_.find (curr_index_) != index_set_.end ()) - { - continue; - } - - // Some systems have memcmp in namespace std. - using namespace std; - - if (memcmp (first_, second_, sizeof (std::size_t) * - dfa_alphabet_) == 0) - { - index_set_.insert (curr_index_); - lookup_ptr_[curr_index_] = new_index_; - } - } - - if (lookup_ptr_[index_] == null_token) - { - lookup_ptr_[index_] = new_index_; - ++new_index_; - } - } - - if (!index_set_.empty ()) - { - const std::size_t *front_ = &dfa_.front (); - size_t_vector new_dfa_ (front_, front_ + dfa_alphabet_); - typename index_set::iterator set_end_ = - index_set_.end (); - const std::size_t *ptr_ = front_ + dfa_alphabet_; - std::size_t *new_ptr_ = 0; - - new_dfa_.resize (size_ - index_set_.size () * dfa_alphabet_, 0); - new_ptr_ = &new_dfa_.front () + dfa_alphabet_; - size_ /= dfa_alphabet_; - - for (index_ = 1; index_ < size_; ++index_) - { - if (index_set_.find (index_) != set_end_) - { - ptr_ += dfa_alphabet_; - continue; - } - - new_ptr_[end_state_index] = ptr_[end_state_index]; - new_ptr_[id_index] = ptr_[id_index]; - new_ptr_[unique_id_index] = ptr_[unique_id_index]; - new_ptr_[state_index] = ptr_[state_index]; - new_ptr_[bol_index] = lookup_ptr_[ptr_[bol_index]]; - new_ptr_[eol_index] = lookup_ptr_[ptr_[eol_index]]; - new_ptr_ += dfa_offset; - ptr_ += dfa_offset; - - for (std::size_t i_ = dfa_offset; i_ < dfa_alphabet_; ++i_) - { - *new_ptr_++ = lookup_ptr_[*ptr_++]; - } - } - - dfa_.swap (new_dfa_); - } - } -}; - -typedef basic_generator generator; -typedef basic_generator wgenerator; -} -} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/input.hpp b/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/input.hpp deleted file mode 100644 index a8cf113d40f3..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/input.hpp +++ /dev/null @@ -1,529 +0,0 @@ -// input.hpp -// Copyright (c) 2008-2009 Ben Hanson (http://www.benhanson.net/) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file licence_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_INPUT_HPP -#define BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_INPUT_HPP - -#include "char_traits.hpp" -#include "size_t.hpp" -#include "state_machine.hpp" -#include // for std::iterator_traits - -namespace boost -{ -namespace lexer -{ -template::value_type> > -class basic_input -{ -public: - class iterator - { - public: - friend class basic_input; - - struct data - { - std::size_t id; - std::size_t unique_id; - FwdIter start; - FwdIter end; - bool bol; - std::size_t state; - - // Construct in end() state. - data () : - id (0), - unique_id (npos), - bol (false), - state (npos) - { - } - - bool operator == (const data &rhs_) const - { - return id == rhs_.id && unique_id == rhs_.unique_id && - start == rhs_.start && end == rhs_.end && - bol == rhs_.bol && state == rhs_.state; - } - }; - - iterator () : - _input (0) - { - } - - bool operator == (const iterator &rhs_) const - { - return _data == rhs_._data; - } - - bool operator != (const iterator &rhs_) const - { - return !(*this == rhs_); - } - - data &operator * () - { - return _data; - } - - data *operator -> () - { - return &_data; - } - - // Let compiler generate operator = (). - - // prefix version - iterator &operator ++ () - { - next_token (); - return *this; - } - - // postfix version - iterator operator ++ (int) - { - iterator iter_ = *this; - - next_token (); - return iter_; - } - - private: - // Not owner (obviously!) - const basic_input *_input; - data _data; - - void next_token () - { - const detail::internals &internals_ = - _input->_state_machine->data (); - - _data.start = _data.end; - - if (internals_._dfa->size () == 1) - { - if (internals_._seen_BOL_assertion || - internals_._seen_EOL_assertion) - { - _data.id = next - (&internals_._lookup->front ()->front (), - internals_._dfa_alphabet.front (), - &internals_._dfa->front ()->front (), - _data.bol, _data.end, _input->_end, _data.unique_id); - } - else - { - _data.id = next (&internals_._lookup->front ()->front (), - internals_._dfa_alphabet.front (), &internals_. - _dfa->front ()->front (), _data.end, _input->_end, - _data.unique_id); - } - } - else - { - if (internals_._seen_BOL_assertion || - internals_._seen_EOL_assertion) - { - _data.id = next (internals_, _data.state, - _data.bol, _data.end, _input->_end, _data.unique_id); - } - else - { - _data.id = next (internals_, _data.state, - _data.end, _input->_end, _data.unique_id); - } - } - - if (_data.end == _input->_end && _data.start == _data.end) - { - // Ensure current state matches that returned by end(). - _data.state = npos; - } - } - - std::size_t next (const detail::internals &internals_, - std::size_t &start_state_, bool bol_, - FwdIter &start_token_, const FwdIter &end_, - std::size_t &unique_id_) - { - if (start_token_ == end_) - { - unique_id_ = npos; - return 0; - } - - again: - const std::size_t * lookup_ = &internals_._lookup[start_state_]-> - front (); - std::size_t dfa_alphabet_ = internals_._dfa_alphabet[start_state_]; - const std::size_t *dfa_ = &internals_._dfa[start_state_]->front (); - const std::size_t *ptr_ = dfa_ + dfa_alphabet_; - FwdIter curr_ = start_token_; - bool end_state_ = *ptr_ != 0; - std::size_t id_ = *(ptr_ + id_index); - std::size_t uid_ = *(ptr_ + unique_id_index); - std::size_t end_start_state_ = start_state_; - bool end_bol_ = bol_; - FwdIter end_token_ = start_token_; - - while (curr_ != end_) - { - const std::size_t BOL_state_ = ptr_[bol_index]; - const std::size_t EOL_state_ = ptr_[eol_index]; - - if (BOL_state_ && bol_) - { - ptr_ = &dfa_[BOL_state_ * dfa_alphabet_]; - } - else if (EOL_state_ && *curr_ == '\n') - { - ptr_ = &dfa_[EOL_state_ * dfa_alphabet_]; - } - else - { - typename Traits::char_type prev_char_ = *curr_++; - - bol_ = prev_char_ == '\n'; - - const std::size_t state_ = - ptr_[lookup_[static_cast - (prev_char_)]]; - - if (state_ == 0) - { - break; - } - - ptr_ = &dfa_[state_ * dfa_alphabet_]; - } - - if (*ptr_) - { - end_state_ = true; - id_ = *(ptr_ + id_index); - uid_ = *(ptr_ + unique_id_index); - end_start_state_ = *(ptr_ + state_index); - end_bol_ = bol_; - end_token_ = curr_; - } - } - - const std::size_t EOL_state_ = ptr_[eol_index]; - - if (EOL_state_ && curr_ == end_) - { - ptr_ = &dfa_[EOL_state_ * dfa_alphabet_]; - - if (*ptr_) - { - end_state_ = true; - id_ = *(ptr_ + id_index); - uid_ = *(ptr_ + unique_id_index); - end_start_state_ = *(ptr_ + state_index); - end_bol_ = bol_; - end_token_ = curr_; - } - } - - if (end_state_) - { - // return longest match - start_state_ = end_start_state_; - start_token_ = end_token_; - - if (id_ == 0) - { - bol_ = end_bol_; - goto again; - } - else - { - _data.bol = end_bol_; - } - } - else - { - // No match causes char to be skipped - _data.bol = *start_token_ == '\n'; - ++start_token_; - id_ = npos; - uid_ = npos; - } - - unique_id_ = uid_; - return id_; - } - - std::size_t next (const detail::internals &internals_, - std::size_t &start_state_, FwdIter &start_token_, - FwdIter const &end_, std::size_t &unique_id_) - { - if (start_token_ == end_) - { - unique_id_ = npos; - return 0; - } - - again: - const std::size_t * lookup_ = &internals_._lookup[start_state_]-> - front (); - std::size_t dfa_alphabet_ = internals_._dfa_alphabet[start_state_]; - const std::size_t *dfa_ = &internals_._dfa[start_state_]->front (); - const std::size_t *ptr_ = dfa_ + dfa_alphabet_; - FwdIter curr_ = start_token_; - bool end_state_ = *ptr_ != 0; - std::size_t id_ = *(ptr_ + id_index); - std::size_t uid_ = *(ptr_ + unique_id_index); - std::size_t end_start_state_ = start_state_; - FwdIter end_token_ = start_token_; - - while (curr_ != end_) - { - const std::size_t state_ = ptr_[lookup_[static_cast - (*curr_++)]]; - - if (state_ == 0) - { - break; - } - - ptr_ = &dfa_[state_ * dfa_alphabet_]; - - if (*ptr_) - { - end_state_ = true; - id_ = *(ptr_ + id_index); - uid_ = *(ptr_ + unique_id_index); - end_start_state_ = *(ptr_ + state_index); - end_token_ = curr_; - } - } - - if (end_state_) - { - // return longest match - start_state_ = end_start_state_; - start_token_ = end_token_; - - if (id_ == 0) goto again; - } - else - { - // No match causes char to be skipped - ++start_token_; - id_ = npos; - uid_ = npos; - } - - unique_id_ = uid_; - return id_; - } - - std::size_t next (const std::size_t * const lookup_, - const std::size_t dfa_alphabet_, const std::size_t * const dfa_, - bool bol_, FwdIter &start_token_, FwdIter const &end_, - std::size_t &unique_id_) - { - if (start_token_ == end_) - { - unique_id_ = npos; - return 0; - } - - const std::size_t *ptr_ = dfa_ + dfa_alphabet_; - FwdIter curr_ = start_token_; - bool end_state_ = *ptr_ != 0; - std::size_t id_ = *(ptr_ + id_index); - std::size_t uid_ = *(ptr_ + unique_id_index); - bool end_bol_ = bol_; - FwdIter end_token_ = start_token_; - - while (curr_ != end_) - { - const std::size_t BOL_state_ = ptr_[bol_index]; - const std::size_t EOL_state_ = ptr_[eol_index]; - - if (BOL_state_ && bol_) - { - ptr_ = &dfa_[BOL_state_ * dfa_alphabet_]; - } - else if (EOL_state_ && *curr_ == '\n') - { - ptr_ = &dfa_[EOL_state_ * dfa_alphabet_]; - } - else - { - typename Traits::char_type prev_char_ = *curr_++; - - bol_ = prev_char_ == '\n'; - - const std::size_t state_ = - ptr_[lookup_[static_cast - (prev_char_)]]; - - if (state_ == 0) - { - break; - } - - ptr_ = &dfa_[state_ * dfa_alphabet_]; - } - - if (*ptr_) - { - end_state_ = true; - id_ = *(ptr_ + id_index); - uid_ = *(ptr_ + unique_id_index); - end_bol_ = bol_; - end_token_ = curr_; - } - } - - const std::size_t EOL_state_ = ptr_[eol_index]; - - if (EOL_state_ && curr_ == end_) - { - ptr_ = &dfa_[EOL_state_ * dfa_alphabet_]; - - if (*ptr_) - { - end_state_ = true; - id_ = *(ptr_ + id_index); - uid_ = *(ptr_ + unique_id_index); - end_bol_ = bol_; - end_token_ = curr_; - } - } - - if (end_state_) - { - // return longest match - _data.bol = end_bol_; - start_token_ = end_token_; - } - else - { - // No match causes char to be skipped - _data.bol = *start_token_ == '\n'; - ++start_token_; - id_ = npos; - uid_ = npos; - } - - unique_id_ = uid_; - return id_; - } - - std::size_t next (const std::size_t * const lookup_, - const std::size_t dfa_alphabet_, const std::size_t * const dfa_, - FwdIter &start_token_, FwdIter const &end_, - std::size_t &unique_id_) - { - if (start_token_ == end_) - { - unique_id_ = npos; - return 0; - } - - const std::size_t *ptr_ = dfa_ + dfa_alphabet_; - FwdIter curr_ = start_token_; - bool end_state_ = *ptr_ != 0; - std::size_t id_ = *(ptr_ + id_index); - std::size_t uid_ = *(ptr_ + unique_id_index); - FwdIter end_token_ = start_token_; - - while (curr_ != end_) - { - const std::size_t state_ = ptr_[lookup_[static_cast - (*curr_++)]]; - - if (state_ == 0) - { - break; - } - - ptr_ = &dfa_[state_ * dfa_alphabet_]; - - if (*ptr_) - { - end_state_ = true; - id_ = *(ptr_ + id_index); - uid_ = *(ptr_ + unique_id_index); - end_token_ = curr_; - } - } - - if (end_state_) - { - // return longest match - start_token_ = end_token_; - } - else - { - // No match causes char to be skipped - ++start_token_; - id_ = npos; - uid_ = npos; - } - - unique_id_ = uid_; - return id_; - } - }; - - friend class iterator; - - // Make it explicit that we are NOT taking a copy of state_machine_! - basic_input (const basic_state_machine - *state_machine_, const FwdIter &begin_, const FwdIter &end_) : - _state_machine (state_machine_), - _begin (begin_), - _end (end_) - { - } - - iterator begin () const - { - iterator iter_; - - iter_._input = this; - // Over-ride default of 0 (EOI) - iter_._data.id = npos; - iter_._data.start = _begin; - iter_._data.end = _begin; - iter_._data.bol = _state_machine->data ()._seen_BOL_assertion; - iter_._data.state = 0; - ++iter_; - return iter_; - } - - iterator end () const - { - iterator iter_; - - iter_._input = this; - iter_._data.start = _end; - iter_._data.end = _end; - return iter_; - } - -private: - const basic_state_machine *_state_machine; - FwdIter _begin; - FwdIter _end; -}; - -typedef basic_input iter_input; -typedef basic_input::iterator> iter_winput; -typedef basic_input ptr_input; -typedef basic_input ptr_winput; -} -} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/internals.hpp b/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/internals.hpp deleted file mode 100644 index d0a2fc445e77..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/internals.hpp +++ /dev/null @@ -1,60 +0,0 @@ -// internals.hpp -// Copyright (c) 2009 Ben Hanson (http://www.benhanson.net/) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file licence_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_INTERNALS_HPP -#define BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_INTERNALS_HPP - -#include "containers/ptr_vector.hpp" - -namespace boost -{ -namespace lexer -{ -namespace detail -{ -struct internals -{ - typedef std::vector size_t_vector; - typedef ptr_vector size_t_vector_vector; - - size_t_vector_vector _lookup; - size_t_vector _dfa_alphabet; - size_t_vector_vector _dfa; - bool _seen_BOL_assertion; - bool _seen_EOL_assertion; - - internals () : - _seen_BOL_assertion (false), - _seen_EOL_assertion (false) - { - } - - void clear () - { - _lookup.clear (); - _dfa_alphabet.clear (); - _dfa.clear (); - _seen_BOL_assertion = false; - _seen_EOL_assertion = false; - } - - void swap (internals &internals_) - { - _lookup->swap (*internals_._lookup); - _dfa_alphabet.swap (internals_._dfa_alphabet); - _dfa->swap (*internals_._dfa); - std::swap (_seen_BOL_assertion, internals_._seen_BOL_assertion); - std::swap (_seen_EOL_assertion, internals_._seen_EOL_assertion); - } - -private: - internals (const internals &); // No copy construction. - internals &operator = (const internals &); // No assignment. -}; -} -} -} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/parser/parser.hpp b/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/parser/parser.hpp deleted file mode 100644 index 637580a9f649..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/parser/parser.hpp +++ /dev/null @@ -1,512 +0,0 @@ -// parser.hpp -// Copyright (c) 2007-2009 Ben Hanson (http://www.benhanson.net/) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file licence_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_PARSER_PARSER_HPP -#define BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_PARSER_PARSER_HPP - -#include -#include "tree/end_node.hpp" -#include "tree/iteration_node.hpp" -#include "tree/leaf_node.hpp" -#include "../runtime_error.hpp" -#include "tree/selection_node.hpp" -#include "tree/sequence_node.hpp" -#include "../size_t.hpp" -#include "tokeniser/re_tokeniser.hpp" -#include - -namespace boost -{ -namespace lexer -{ -namespace detail -{ -template -class basic_parser -{ -public: - typedef basic_re_tokeniser tokeniser; - typedef typename tokeniser::string string; - typedef std::map macro_map; - typedef node::node_ptr_vector node_ptr_vector; - typedef typename tokeniser::num_token token; - -/* - General principles of regex parsing: - - Every regex is a sequence of sub-regexes. - - Regexes consist of operands and operators - - All operators decompose to sequence, selection ('|') and iteration ('*') - - Regex tokens are stored on the stack. - - When a complete sequence of regex tokens is on the stack it is processed. - -Grammar: - - -> - -> | '|' - -> - -> | - -> - -> charset | macro | '('')' | - -> '?' | '*' | '+' | '{n[,[m]]}' -*/ - static node *parse (const CharT *start_, const CharT * const end_, - const std::size_t id_, const std::size_t unique_id_, - const std::size_t dfa_state_, const regex_flags flags_, - const std::locale &locale_, node_ptr_vector &node_ptr_vector_, - const macro_map ¯omap_, typename tokeniser::token_map &map_, - bool &seen_BOL_assertion_, bool &seen_EOL_assertion_) - { - node *root_ = 0; - state state_ (start_, end_, flags_, locale_); - token lhs_token_; - token rhs_token_; - token_stack token_stack_; - tree_node_stack tree_node_stack_; - char action_ = 0; - - token_stack_.push (rhs_token_); - tokeniser::next (state_, map_, rhs_token_); - - do - { - lhs_token_ = token_stack_.top (); - action_ = lhs_token_.precedence (rhs_token_._type); - - switch (action_) - { - case '<': - case '=': - token_stack_.push (rhs_token_); - tokeniser::next (state_, map_, rhs_token_); - break; - case '>': - reduce (token_stack_, macromap_, node_ptr_vector_, - tree_node_stack_); - break; - default: - std::ostringstream ss_; - - ss_ << "A syntax error occurred: '" << - lhs_token_.precedence_string () << - "' against '" << rhs_token_.precedence_string () << - "' at index " << state_.index () << "."; - throw runtime_error (ss_.str ().c_str ()); - break; - } - } while (!token_stack_.empty ()); - - if (tree_node_stack_.empty ()) - { - throw runtime_error ("Empty rules are not allowed."); - } - - BOOST_ASSERT(tree_node_stack_.size () == 1); - - node *lhs_node_ = tree_node_stack_.top (); - - tree_node_stack_.pop (); - - if (id_ == 0) - { - // Macros have no end state... - root_ = lhs_node_; - } - else - { - node_ptr_vector_->push_back (static_cast(0)); - - node *rhs_node_ = new end_node (id_, unique_id_, dfa_state_); - - node_ptr_vector_->back () = rhs_node_; - node_ptr_vector_->push_back (static_cast(0)); - node_ptr_vector_->back () = new sequence_node - (lhs_node_, rhs_node_); - root_ = node_ptr_vector_->back (); - } - - // Done this way as bug in VC++ 6 prevents |= operator working - // properly! - if (state_._seen_BOL_assertion) seen_BOL_assertion_ = true; - - if (state_._seen_EOL_assertion) seen_EOL_assertion_ = true; - - return root_; - } - -private: - typedef typename tokeniser::state state; - typedef std::stack token_stack; - typedef node::node_stack tree_node_stack; - - static void reduce (token_stack &token_stack_, - const macro_map ¯omap_, node_ptr_vector &node_vector_ptr_, - tree_node_stack &tree_node_stack_) - { - typename tokeniser::num_token lhs_; - typename tokeniser::num_token rhs_; - token_stack handle_; - char action_ = 0; - - do - { - rhs_ = token_stack_.top (); - token_stack_.pop (); - handle_.push (rhs_); - - if (!token_stack_.empty ()) - { - lhs_ = token_stack_.top (); - action_ = lhs_.precedence (rhs_._type); - } - } while (!token_stack_.empty () && action_ == '='); - - BOOST_ASSERT(token_stack_.empty () || action_ == '<'); - - switch (rhs_._type) - { - case token::BEGIN: - // finished processing so exit - break; - case token::REGEX: - // finished parsing, nothing to do - break; - case token::OREXP: - orexp (handle_, token_stack_, node_vector_ptr_, tree_node_stack_); - break; - case token::SEQUENCE: - token_stack_.push (token::OREXP); - break; - case token::SUB: - sub (handle_, token_stack_, node_vector_ptr_, tree_node_stack_); - break; - case token::EXPRESSION: - token_stack_.push (token::SUB); - break; - case token::REPEAT: - repeat (handle_, token_stack_); - break; - case token::CHARSET: - charset (handle_, token_stack_, node_vector_ptr_, - tree_node_stack_); - break; - case token::MACRO: - macro (handle_, token_stack_, macromap_, node_vector_ptr_, - tree_node_stack_); - break; - case token::OPENPAREN: - openparen (handle_, token_stack_); - break; - case token::OPT: - case token::AOPT: - optional (rhs_._type == token::OPT, node_vector_ptr_, - tree_node_stack_); - token_stack_.push (token::DUP); - break; - case token::ZEROORMORE: - case token::AZEROORMORE: - zero_or_more (rhs_._type == token::ZEROORMORE, node_vector_ptr_, - tree_node_stack_); - token_stack_.push (token::DUP); - break; - case token::ONEORMORE: - case token::AONEORMORE: - one_or_more (rhs_._type == token::ONEORMORE, node_vector_ptr_, - tree_node_stack_); - token_stack_.push (token::DUP); - break; - case token::REPEATN: - case token::AREPEATN: - repeatn (rhs_._type == token::REPEATN, handle_.top (), - node_vector_ptr_, tree_node_stack_); - token_stack_.push (token::DUP); - break; - default: - throw runtime_error - ("Internal error regex_parser::reduce"); - break; - } - } - - static void orexp (token_stack &handle_, token_stack &token_stack_, - node_ptr_vector &node_ptr_vector_, tree_node_stack &tree_node_stack_) - { - BOOST_ASSERT(handle_.top ()._type == token::OREXP && - (handle_.size () == 1 || handle_.size () == 3)); - - if (handle_.size () == 1) - { - token_stack_.push (token::REGEX); - } - else - { - handle_.pop (); - BOOST_ASSERT(handle_.top ()._type == token::OR); - handle_.pop (); - BOOST_ASSERT(handle_.top ()._type == token::SEQUENCE); - perform_or (node_ptr_vector_, tree_node_stack_); - token_stack_.push (token::OREXP); - } - } - - static void sub (token_stack &handle_, token_stack &token_stack_, - node_ptr_vector &node_ptr_vector_, tree_node_stack &tree_node_stack_) - { - BOOST_ASSERT(handle_.top ()._type == token::SUB && - (handle_.size () == 1 || handle_.size () == 2)); - - if (handle_.size () == 1) - { - token_stack_.push (token::SEQUENCE); - } - else - { - handle_.pop (); - BOOST_ASSERT(handle_.top ()._type == token::EXPRESSION); - // perform join - sequence (node_ptr_vector_, tree_node_stack_); - token_stack_.push (token::SUB); - } - } - - static void repeat (token_stack &handle_, token_stack &token_stack_) - { - BOOST_ASSERT(handle_.top ()._type == token::REPEAT && - handle_.size () >= 1 && handle_.size () <= 3); - - if (handle_.size () == 1) - { - token_stack_.push (token::EXPRESSION); - } - else - { - handle_.pop (); - BOOST_ASSERT(handle_.top ()._type == token::DUP); - token_stack_.push (token::REPEAT); - } - } - - static void charset (token_stack &handle_, token_stack &token_stack_, - node_ptr_vector &node_ptr_vector_, tree_node_stack &tree_node_stack_) - { - BOOST_ASSERT(handle_.top ()._type == token::CHARSET && - handle_.size () == 1); - // store charset - node_ptr_vector_->push_back (static_cast(0)); - - const size_t id_ = handle_.top ()._id; - - node_ptr_vector_->back () = new leaf_node (id_, true); - tree_node_stack_.push (node_ptr_vector_->back ()); - token_stack_.push (token::REPEAT); - } - - static void macro (token_stack &handle_, token_stack &token_stack_, - const macro_map ¯omap_, node_ptr_vector &node_ptr_vector_, - tree_node_stack &tree_node_stack_) - { - token &top_ = handle_.top (); - - BOOST_ASSERT(top_._type == token::MACRO && handle_.size () == 1); - - typename macro_map::const_iterator iter_ = - macromap_.find (top_._macro); - - if (iter_ == macromap_.end ()) - { - const CharT *name_ = top_._macro; - std::basic_stringstream ss_; - std::ostringstream os_; - - os_ << "Unknown MACRO name '"; - - while (*name_) - { - os_ << ss_.narrow (*name_++, ' '); - } - - os_ << "'."; - throw runtime_error (os_.str ()); - } - - tree_node_stack_.push (iter_->second->copy (node_ptr_vector_)); - token_stack_.push (token::REPEAT); - } - - static void openparen (token_stack &handle_, token_stack &token_stack_) - { - BOOST_ASSERT(handle_.top ()._type == token::OPENPAREN && - handle_.size () == 3); - handle_.pop (); - BOOST_ASSERT(handle_.top ()._type == token::REGEX); - handle_.pop (); - BOOST_ASSERT(handle_.top ()._type == token::CLOSEPAREN); - token_stack_.push (token::REPEAT); - } - - static void perform_or (node_ptr_vector &node_ptr_vector_, - tree_node_stack &tree_node_stack_) - { - // perform or - node *rhs_ = tree_node_stack_.top (); - - tree_node_stack_.pop (); - - node *lhs_ = tree_node_stack_.top (); - - node_ptr_vector_->push_back (static_cast(0)); - node_ptr_vector_->back () = new selection_node (lhs_, rhs_); - tree_node_stack_.top () = node_ptr_vector_->back (); - } - - static void sequence (node_ptr_vector &node_ptr_vector_, - tree_node_stack &tree_node_stack_) - { - node *rhs_ = tree_node_stack_.top (); - - tree_node_stack_.pop (); - - node *lhs_ = tree_node_stack_.top (); - - node_ptr_vector_->push_back (static_cast(0)); - node_ptr_vector_->back () = new sequence_node (lhs_, rhs_); - tree_node_stack_.top () = node_ptr_vector_->back (); - } - - static void optional (const bool greedy_, - node_ptr_vector &node_ptr_vector_, tree_node_stack &tree_node_stack_) - { - // perform ? - node *lhs_ = tree_node_stack_.top (); - // You don't know if lhs_ is a leaf_node, so get firstpos. - node::node_vector &firstpos_ = lhs_->firstpos (); - - for (node::node_vector::iterator iter_ = firstpos_.begin (), - end_ = firstpos_.end (); iter_ != end_; ++iter_) - { - // These are leaf_nodes! - (*iter_)->greedy (greedy_); - } - - node_ptr_vector_->push_back (static_cast(0)); - - node *rhs_ = new leaf_node (null_token, greedy_); - - node_ptr_vector_->back () = rhs_; - node_ptr_vector_->push_back (static_cast(0)); - node_ptr_vector_->back () = new selection_node (lhs_, rhs_); - tree_node_stack_.top () = node_ptr_vector_->back (); - } - - static void zero_or_more (const bool greedy_, - node_ptr_vector &node_ptr_vector_, tree_node_stack &tree_node_stack_) - { - // perform * - node *ptr_ = tree_node_stack_.top (); - - node_ptr_vector_->push_back (static_cast(0)); - node_ptr_vector_->back () = new iteration_node (ptr_, greedy_); - tree_node_stack_.top () = node_ptr_vector_->back (); - } - - static void one_or_more (const bool greedy_, - node_ptr_vector &node_ptr_vector_, tree_node_stack &tree_node_stack_) - { - // perform + - node *lhs_ = tree_node_stack_.top (); - node *copy_ = lhs_->copy (node_ptr_vector_); - - node_ptr_vector_->push_back (static_cast(0)); - - node *rhs_ = new iteration_node (copy_, greedy_); - - node_ptr_vector_->back () = rhs_; - node_ptr_vector_->push_back (static_cast(0)); - node_ptr_vector_->back () = new sequence_node (lhs_, rhs_); - tree_node_stack_.top () = node_ptr_vector_->back (); - } - - // This is one of the most mind bending routines in this code... - static void repeatn (const bool greedy_, const token &token_, - node_ptr_vector &node_ptr_vector_, tree_node_stack &tree_node_stack_) - { - // perform {n[,[m]]} - // Semantic checks have already been performed. - // {0,} = * - // {0,1} = ? - // {1,} = + - // therefore we do not check for these cases. - if (!(token_._min == 1 && !token_._comma)) - { - const std::size_t top_ = token_._min > 0 ? - token_._min : token_._max; - - if (token_._min == 0) - { - optional (greedy_, node_ptr_vector_, tree_node_stack_); - } - - node *prev_ = tree_node_stack_.top ()->copy (node_ptr_vector_); - node *curr_ = 0; - - for (std::size_t i_ = 2; i_ < top_; ++i_) - { - curr_ = prev_->copy (node_ptr_vector_); - tree_node_stack_.push (static_cast(0)); - tree_node_stack_.top () = prev_; - sequence (node_ptr_vector_, tree_node_stack_); - prev_ = curr_; - } - - if (token_._comma && token_._min > 0) - { - if (token_._min > 1) - { - curr_ = prev_->copy (node_ptr_vector_); - tree_node_stack_.push (static_cast(0)); - tree_node_stack_.top () = prev_; - sequence (node_ptr_vector_, tree_node_stack_); - prev_ = curr_; - } - - if (token_._comma && token_._max) - { - tree_node_stack_.push (static_cast(0)); - tree_node_stack_.top () = prev_; - optional (greedy_, node_ptr_vector_, tree_node_stack_); - prev_ = tree_node_stack_.top (); - tree_node_stack_.pop (); - - const std::size_t count_ = token_._max - token_._min; - - for (std::size_t i_ = 1; i_ < count_; ++i_) - { - curr_ = prev_->copy (node_ptr_vector_); - tree_node_stack_.push (static_cast(0)); - tree_node_stack_.top () = prev_; - sequence (node_ptr_vector_, tree_node_stack_); - prev_ = curr_; - } - } - else - { - tree_node_stack_.push (static_cast(0)); - tree_node_stack_.top () = prev_; - zero_or_more (greedy_, node_ptr_vector_, tree_node_stack_); - prev_ = tree_node_stack_.top (); - tree_node_stack_.pop (); - } - } - - tree_node_stack_.push (static_cast(0)); - tree_node_stack_.top () = prev_; - sequence (node_ptr_vector_, tree_node_stack_); - } - } -}; -} -} -} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/parser/tokeniser/num_token.hpp b/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/parser/tokeniser/num_token.hpp deleted file mode 100644 index 7ccb2ac6e9df..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/parser/tokeniser/num_token.hpp +++ /dev/null @@ -1,122 +0,0 @@ -// num_token.hpp -// Copyright (c) 2007-2009 Ben Hanson (http://www.benhanson.net/) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file licence_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_PARSER_TOKENISER_NUM_TOKEN_HPP -#define BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_PARSER_TOKENISER_NUM_TOKEN_HPP - -#include -#include "../../consts.hpp" // null_token -#include "../../size_t.hpp" -#include - -namespace boost -{ -namespace lexer -{ -namespace detail -{ -template -struct basic_num_token -{ - enum type {BEGIN, REGEX, OREXP, SEQUENCE, SUB, EXPRESSION, REPEAT, - DUP, OR, CHARSET, MACRO, OPENPAREN, CLOSEPAREN, OPT, AOPT, - ZEROORMORE, AZEROORMORE, ONEORMORE, AONEORMORE, REPEATN, AREPEATN, - END}; - - type _type; - std::size_t _id; - std::size_t _min; - bool _comma; - std::size_t _max; - CharT _macro[max_macro_len + 1]; - static const char _precedence_table[END + 1][END + 1]; - static const char *_precedence_strings[END + 1]; - - basic_num_token (const type type_ = BEGIN, - const std::size_t id_ = null_token) : - _type (type_), - _id (id_), - _min (0), - _comma (false), - _max (0) - { - *_macro = 0; - } - - void set (const type type_) - { - _type = type_; - _id = null_token; - } - - void set (const type type_, const std::size_t id_) - { - _type = type_; - _id = id_; - } - - void min_max (const std::size_t min_, const bool comma_, - const std::size_t max_) - { - _min = min_; - _comma = comma_; - _max = max_; - } - - char precedence (const type type_) const - { - return _precedence_table[_type][type_]; - } - - const char *precedence_string () const - { - return _precedence_strings[_type]; - } -}; - -template -const char basic_num_token::_precedence_table[END + 1][END + 1] = { -// BEG, REG, ORE, SEQ, SUB, EXP, RPT, DUP, | , CHR, MCR, ( , ) , ? , ?? , * , *? , + , +?, {n}?, {n}, END -/*BEGIN*/{' ', '<', '<', '<', '<', '<', '<', ' ', ' ', '<', '<', '<', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '>'}, -/*REGEX*/{' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '=', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '>'}, -/*OREXP*/{' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '=', '>', '>', ' ', '>', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '>'}, -/* SEQ */{' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '>', '>', '>', ' ', '>', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '>'}, -/* SUB */{' ', ' ', ' ', ' ', ' ', '=', '<', ' ', '>', '<', '<', '<', '>', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '>'}, -/*EXPRE*/{' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '>', '>', '>', '>', '>', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '>'}, -/* RPT */{' ', ' ', ' ', ' ', ' ', ' ', ' ', '=', '>', '>', '>', '>', '>', '<', '<', '<', '<', '<', '<', '<', '<', '>'}, -/*DUPLI*/{' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '>', '>', '>', '>', '>', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '>'}, -/* | */{' ', ' ', ' ', '=', '<', '<', '<', ' ', ' ', '<', '<', '<', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '}, -/*CHARA*/{' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '>', '>', '>', '>', '>', '>', '>', '>', '>', '>', '>', '>', '>', '>'}, -/*MACRO*/{' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '>', '>', '>', '>', '>', '>', '>', '>', '>', '>', '>', '>', '>', '>'}, -/* ( */{' ', '=', '<', '<', '<', '<', '<', ' ', ' ', '<', '<', '<', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '}, -/* ) */{' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '>', '>', '>', '>', '>', '>', '>', '>', '>', '>', '>', '>', '>', '>'}, -/* ? */{' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '>', '>', '>', '>', '>', '<', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '>'}, -/* ?? */{' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '>', '>', '>', '>', '>', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '>'}, -/* * */{' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '>', '>', '>', '>', '>', '<', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '>'}, -/* *? */{' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '>', '>', '>', '>', '>', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '>'}, -/* + */{' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '>', '>', '>', '>', '>', '<', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '>'}, -/* +? */{' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '>', '>', '>', '>', '>', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '>'}, -/*{n,m}*/{' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '>', '>', '>', '>', '>', '<', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '>'}, -/*{nm}?*/{' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '>', '>', '>', '>', '>', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '>'}, -/* END */{' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '} -}; - -template -const char *basic_num_token::_precedence_strings[END + 1] = -#if BOOST_WORKAROUND(BOOST_INTEL_CXX_VERSION, BOOST_TESTED_AT(910)) -{{"BEGIN"}, {"REGEX"}, {"OREXP"}, {"SEQUENCE"}, {"SUB"}, {"EXPRESSION"}, - {"REPEAT"}, {"DUPLICATE"}, {"|"}, {"CHARSET"}, {"MACRO"}, - {"("}, {")"}, {"?"}, {"??"}, {"*"}, {"*?"}, {"+"}, {"+?"}, {"{n[,[m]]}"}, - {"{n[,[m]]}?"}, {"END"}}; -#else -{"BEGIN", "REGEX", "OREXP", "SEQUENCE", "SUB", "EXPRESSION", "REPEAT", - "DUPLICATE", "|", "CHARSET", "MACRO", "(", ")", "?", "??", "*", "*?", - "+", "+?", "{n[,[m]]}", "{n[,[m]]}?", "END"}; -#endif -} -} -} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/parser/tokeniser/re_tokeniser.hpp b/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/parser/tokeniser/re_tokeniser.hpp deleted file mode 100644 index 6097c2432d75..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/parser/tokeniser/re_tokeniser.hpp +++ /dev/null @@ -1,574 +0,0 @@ -// tokeniser.hpp -// Copyright (c) 2007-2009 Ben Hanson (http://www.benhanson.net/) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file licence_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_PARSER_TOKENISER_RE_TOKENISER_HPP -#define BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_PARSER_TOKENISER_RE_TOKENISER_HPP - -// memcpy() -#include -#include -#include "num_token.hpp" -#include "../../runtime_error.hpp" -#include "../../size_t.hpp" -#include -#include "../../string_token.hpp" -#include "re_tokeniser_helper.hpp" - -namespace boost -{ -namespace lexer -{ -namespace detail -{ -template -class basic_re_tokeniser -{ -public: - typedef basic_num_token num_token; - typedef basic_re_tokeniser_state state; - typedef basic_string_token string_token; - typedef typename string_token::string string; - typedef std::map token_map; - typedef std::pair token_pair; - - static void next (state &state_, token_map &map_, num_token &token_) - { - CharT ch_ = 0; - bool eos_ = state_.next (ch_); - - token_.min_max (0, false, 0); - - while (!eos_ && ch_ == '"') - { - state_._in_string ^= 1; - eos_ = state_.next (ch_); - } - - if (eos_) - { - if (state_._in_string) - { - throw runtime_error ("Unexpected end of regex " - "(missing '\"')."); - } - - if (state_._paren_count) - { - throw runtime_error ("Unexpected end of regex " - "(missing ')')."); - } - - token_.set (num_token::END, null_token); - } - else - { - if (ch_ == '\\') - { - // Even if we are in a string, respect escape sequences... - escape (state_, map_, token_); - } - else if (state_._in_string) - { - // All other meta characters lose their special meaning - // inside a string. - create_charset_token (string (1, ch_), false, map_, token_); - } - else - { - // Not an escape sequence and not inside a string, so - // check for meta characters. - switch (ch_) - { - case '(': - token_.set (num_token::OPENPAREN, null_token); - ++state_._paren_count; - read_options (state_); - break; - case ')': - --state_._paren_count; - - if (state_._paren_count < 0) - { - std::ostringstream ss_; - - ss_ << "Number of open parenthesis < 0 at index " << - state_.index () - 1 << '.'; - throw runtime_error (ss_.str ().c_str ()); - } - - token_.set (num_token::CLOSEPAREN, null_token); - - if (!state_._flags_stack.empty ()) - { - state_._flags = state_._flags_stack.top (); - state_._flags_stack.pop (); - } - break; - case '?': - if (!state_.eos () && *state_._curr == '?') - { - token_.set (num_token::AOPT, null_token); - state_.increment (); - } - else - { - token_.set (num_token::OPT, null_token); - } - - break; - case '*': - if (!state_.eos () && *state_._curr == '?') - { - token_.set (num_token::AZEROORMORE, null_token); - state_.increment (); - } - else - { - token_.set (num_token::ZEROORMORE, null_token); - } - - break; - case '+': - if (!state_.eos () && *state_._curr == '?') - { - token_.set (num_token::AONEORMORE, null_token); - state_.increment (); - } - else - { - token_.set (num_token::ONEORMORE, null_token); - } - - break; - case '{': - open_curly (state_, token_); - break; - case '|': - token_.set (num_token::OR, null_token); - break; - case '^': - if (state_._curr - 1 == state_._start) - { - token_.set (num_token::CHARSET, bol_token); - state_._seen_BOL_assertion = true; - } - else - { - create_charset_token (string (1, ch_), false, - map_, token_); - } - - break; - case '$': - if (state_._curr == state_._end) - { - token_.set (num_token::CHARSET, eol_token); - state_._seen_EOL_assertion = true; - } - else - { - create_charset_token (string (1, ch_), false, - map_, token_); - } - - break; - case '.': - { - string dot_; - - if (state_._flags & dot_not_newline) - { - dot_ = '\n'; - } - - create_charset_token (dot_, true, map_, token_); - break; - } - case '[': - { - charset (state_, map_, token_); - break; - } - case '/': - throw runtime_error("Lookahead ('/') is not supported yet."); - break; - default: - if ((state_._flags & icase) && - (std::isupper (ch_, state_._locale) || - std::islower (ch_, state_._locale))) - { - CharT upper_ = std::toupper (ch_, state_._locale); - CharT lower_ = std::tolower (ch_, state_._locale); - - string str_ (1, upper_); - - str_ += lower_; - create_charset_token (str_, false, map_, token_); - } - else - { - create_charset_token (string (1, ch_), false, - map_, token_); - } - - break; - } - } - } - } - -private: - typedef basic_re_tokeniser_helper tokeniser_helper; - - static void read_options (state &state_) - { - if (!state_.eos () && *state_._curr == '?') - { - CharT ch_ = 0; - bool eos_ = false; - bool negate_ = false; - - state_.increment (); - eos_ = state_.next (ch_); - state_._flags_stack.push (state_._flags); - - while (!eos_ && ch_ != ':') - { - switch (ch_) - { - case '-': - negate_ ^= 1; - break; - case 'i': - if (negate_) - { - state_._flags = static_cast - (state_._flags & ~icase); - } - else - { - state_._flags = static_cast - (state_._flags | icase); - } - - negate_ = false; - break; - case 's': - if (negate_) - { - state_._flags = static_cast - (state_._flags | dot_not_newline); - } - else - { - state_._flags = static_cast - (state_._flags & ~dot_not_newline); - } - - negate_ = false; - break; - default: - { - std::ostringstream ss_; - - ss_ << "Unknown option at index " << - state_.index () - 1 << '.'; - throw runtime_error (ss_.str ().c_str ()); - } - } - - eos_ = state_.next (ch_); - } - - // End of string handler will handle early termination - } - else if (!state_._flags_stack.empty ()) - { - state_._flags_stack.push (state_._flags); - } - } - - static void escape (state &state_, token_map &map_, num_token &token_) - { - CharT ch_ = 0; - std::size_t str_len_ = 0; - const CharT *str_ = tokeniser_helper::escape_sequence (state_, - ch_, str_len_); - - if (str_) - { - state state2_ (str_ + 1, str_ + str_len_, state_._flags, - state_._locale); - - charset (state2_, map_, token_); - } - else - { - create_charset_token (string (1, ch_), false, map_, token_); - } - } - - static void charset (state &state_, token_map &map_, num_token &token_) - { - string chars_; - bool negated_ = false; - - tokeniser_helper::charset (state_, chars_, negated_); - create_charset_token (chars_, negated_, map_, token_); - } - - static void create_charset_token (const string &charset_, - const bool negated_, token_map &map_, num_token &token_) - { - std::size_t id_ = null_token; - string_token stok_ (negated_, charset_); - - stok_.remove_duplicates (); - stok_.normalise (); - - typename token_map::const_iterator iter_ = map_.find (stok_); - - if (iter_ == map_.end ()) - { - id_ = map_.size (); - map_.insert (token_pair (stok_, id_)); - } - else - { - id_ = iter_->second; - } - - token_.set (num_token::CHARSET, id_); - } - - static void open_curly (state &state_, num_token &token_) - { - if (state_.eos ()) - { - throw runtime_error ("Unexpected end of regex " - "(missing '}')."); - } - else if (*state_._curr >= '0' && *state_._curr <= '9') - { - repeat_n (state_, token_); - - if (!state_.eos () && *state_._curr == '?') - { - token_._type = num_token::AREPEATN; - state_.increment (); - } - } - else - { - macro (state_, token_); - } - } - - // SYNTAX: - // {n[,[n]]} - // SEMANTIC RULES: - // {0} - INVALID (throw exception) - // {0,} = * - // {0,0} - INVALID (throw exception) - // {0,1} = ? - // {1,} = + - // {min,max} where min == max - {min} - // {min,max} where max < min - INVALID (throw exception) - static void repeat_n (state &state_, num_token &token_) - { - CharT ch_ = 0; - bool eos_ = state_.next (ch_); - - while (!eos_ && ch_ >= '0' && ch_ <= '9') - { - token_._min *= 10; - token_._min += ch_ - '0'; - eos_ = state_.next (ch_); - } - - if (eos_) - { - throw runtime_error ("Unexpected end of regex " - "(missing '}')."); - } - - bool min_max_ = false; - bool repeatn_ = true; - - token_._comma = ch_ == ','; - - if (token_._comma) - { - eos_ = state_.next (ch_); - - if (eos_) - { - throw runtime_error ("Unexpected end of regex " - "(missing '}')."); - } - - if (ch_ == '}') - { - // Small optimisation: Check for '*' equivalency. - if (token_._min == 0) - { - token_.set (num_token::ZEROORMORE, null_token); - repeatn_ = false; - } - // Small optimisation: Check for '+' equivalency. - else if (token_._min == 1) - { - token_.set (num_token::ONEORMORE, null_token); - repeatn_ = false; - } - } - else - { - if (ch_ < '0' || ch_ > '9') - { - std::ostringstream ss_; - - ss_ << "Missing '}' at index " << - state_.index () - 1 << '.'; - throw runtime_error (ss_.str ().c_str ()); - } - - min_max_ = true; - - do - { - token_._max *= 10; - token_._max += ch_ - '0'; - eos_ = state_.next (ch_); - } while (!eos_ && ch_ >= '0' && ch_ <= '9'); - - if (eos_) - { - throw runtime_error ("Unexpected end of regex " - "(missing '}')."); - } - - // Small optimisation: Check for '?' equivalency. - if (token_._min == 0 && token_._max == 1) - { - token_.set (num_token::OPT, null_token); - repeatn_ = false; - } - // Small optimisation: if min == max, then min. - else if (token_._min == token_._max) - { - token_._comma = false; - min_max_ = false; - token_._max = 0; - } - } - } - - if (ch_ != '}') - { - std::ostringstream ss_; - - ss_ << "Missing '}' at index " << state_.index () - 1 << '.'; - throw runtime_error (ss_.str ().c_str ()); - } - - if (repeatn_) - { - // SEMANTIC VALIDATION follows: - // NOTE: {0,} has already become * - // therefore we don't check for a comma. - if (token_._min == 0 && token_._max == 0) - { - std::ostringstream ss_; - - ss_ << "Cannot have exactly zero repeats preceding index " << - state_.index () << '.'; - throw runtime_error (ss_.str ().c_str ()); - } - - if (min_max_ && token_._max < token_._min) - { - std::ostringstream ss_; - - ss_ << "Max less than min preceding index " << - state_.index () << '.'; - throw runtime_error (ss_.str ().c_str ()); - } - - token_.set (num_token::REPEATN, null_token); - } - } - - static void macro (state &state_, num_token &token_) - { - CharT ch_ = 0; - bool eos_ = false; - const CharT *start_ = state_._curr; - - state_.next (ch_); - - if (ch_ != '_' && !(ch_ >= 'A' && ch_ <= 'Z') && - !(ch_ >= 'a' && ch_ <= 'z')) - { - std::ostringstream ss_; - - ss_ << "Invalid MACRO name at index " << - state_.index () - 1 << '.'; - throw runtime_error (ss_.str ().c_str ()); - } - - do - { - eos_ = state_.next (ch_); - - if (eos_) - { - throw runtime_error ("Unexpected end of regex " - "(missing '}')."); - } - } while (ch_ == '_' || ch_ == '-' || (ch_ >= 'A' && ch_ <= 'Z') || - (ch_ >= 'a' && ch_ <= 'z') || (ch_ >= '0' && ch_ <= '9')); - - if (ch_ != '}') - { - std::ostringstream ss_; - - ss_ << "Missing '}' at index " << state_.index () - 1 << '.'; - throw runtime_error (ss_.str ().c_str ()); - } - - std::size_t len_ = state_._curr - 1 - start_; - - if (len_ > max_macro_len) - { - std::basic_stringstream ss_; - std::ostringstream os_; - - os_ << "MACRO name '"; - - while (len_) - { - os_ << ss_.narrow (*start_++, ' '); - --len_; - } - - os_ << "' too long."; - throw runtime_error (os_.str ()); - } - - token_.set (num_token::MACRO, null_token); - - // Some systems have memcpy in namespace std. - using namespace std; - - memcpy (token_._macro, start_, len_ * sizeof (CharT)); - token_._macro[len_] = 0; - } -}; -} -} -} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/parser/tokeniser/re_tokeniser_helper.hpp b/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/parser/tokeniser/re_tokeniser_helper.hpp deleted file mode 100644 index 87b16e1ec7c3..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/parser/tokeniser/re_tokeniser_helper.hpp +++ /dev/null @@ -1,550 +0,0 @@ -// tokeniser_helper.hpp -// Copyright (c) 2007-2009 Ben Hanson (http://www.benhanson.net/) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file licence_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_PARSER_TOKENISER_RE_TOKENISER_HELPER_HPP -#define BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_PARSER_TOKENISER_RE_TOKENISER_HELPER_HPP - -#include "../../char_traits.hpp" -// strlen() -#include -#include "../../size_t.hpp" -#include "re_tokeniser_state.hpp" -#include - -namespace boost -{ -namespace lexer -{ -namespace detail -{ -template > -class basic_re_tokeniser_helper -{ -public: - typedef basic_re_tokeniser_state state; - typedef std::basic_string string; - - static const CharT *escape_sequence (state &state_, CharT &ch_, - std::size_t &str_len_) - { - bool eos_ = state_.eos (); - - if (eos_) - { - throw runtime_error ("Unexpected end of regex " - "following '\\'."); - } - - const CharT *str_ = charset_shortcut (*state_._curr, str_len_); - - if (str_) - { - state_.increment (); - } - else - { - ch_ = chr (state_); - } - - return str_; - } - - // This function can call itself. - static void charset (state &state_, string &chars_, bool &negated_) - { - CharT ch_ = 0; - bool eos_ = state_.next (ch_); - - if (eos_) - { - // Pointless returning index if at end of string - throw runtime_error ("Unexpected end of regex " - "following '['."); - } - - negated_ = ch_ == '^'; - - if (negated_) - { - eos_ = state_.next (ch_); - - if (eos_) - { - // Pointless returning index if at end of string - throw runtime_error ("Unexpected end of regex " - "following '^'."); - } - } - - bool chset_ = false; - CharT prev_ = 0; - - while (ch_ != ']') - { - if (ch_ == '\\') - { - std::size_t str_len_ = 0; - const CharT *str_ = escape_sequence (state_, prev_, str_len_); - - chset_ = str_ != 0; - - if (chset_) - { - state temp_state_ (str_ + 1, str_ + str_len_, - state_._flags, state_._locale); - string temp_chars_; - bool temp_negated_ = false; - - charset (temp_state_, temp_chars_, temp_negated_); - - if (negated_ != temp_negated_) - { - std::ostringstream ss_; - - ss_ << "Mismatch in charset negation preceding " - "index " << state_.index () << '.'; - throw runtime_error (ss_.str ().c_str ()); - } - - chars_ += temp_chars_; - } - } -/* - else if (ch_ == '[' && !state_.eos () && *state_._curr == ':') - { - // TODO: POSIX charsets - } -*/ - else - { - chset_ = false; - prev_ = ch_; - } - - eos_ = state_.next (ch_); - - // Covers preceding if, else if and else - if (eos_) - { - // Pointless returning index if at end of string - throw runtime_error ("Unexpected end of regex " - "(missing ']')."); - } - - if (ch_ == '-') - { - charset_range (chset_, state_, eos_, ch_, prev_, chars_); - } - else if (!chset_) - { - if ((state_._flags & icase) && - (std::isupper (prev_, state_._locale) || - std::islower (prev_, state_._locale))) - { - CharT upper_ = std::toupper (prev_, state_._locale); - CharT lower_ = std::tolower (prev_, state_._locale); - - chars_ += upper_; - chars_ += lower_; - } - else - { - chars_ += prev_; - } - } - } - - if (!negated_ && chars_.empty ()) - { - throw runtime_error ("Empty charsets not allowed."); - } - } - - static CharT chr (state &state_) - { - CharT ch_ = 0; - - // eos_ has already been checked for. - switch (*state_._curr) - { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - ch_ = decode_octal (state_); - break; - case 'a': - ch_ = '\a'; - state_.increment (); - break; - case 'b': - ch_ = '\b'; - state_.increment (); - break; - case 'c': - ch_ = decode_control_char (state_); - break; - case 'e': - ch_ = 27; // '\e' not recognised by compiler - state_.increment (); - break; - case 'f': - ch_ = '\f'; - state_.increment (); - break; - case 'n': - ch_ = '\n'; - state_.increment (); - break; - case 'r': - ch_ = '\r'; - state_.increment (); - break; - case 't': - ch_ = '\t'; - state_.increment (); - break; - case 'v': - ch_ = '\v'; - state_.increment (); - break; - case 'x': - ch_ = decode_hex (state_); - break; - default: - ch_ = *state_._curr; - state_.increment (); - break; - } - - return ch_; - } - -private: - static const char *charset_shortcut (const char ch_, - std::size_t &str_len_) - { - const char *str_ = 0; - - switch (ch_) - { - case 'd': - str_ = "[0-9]"; - break; - case 'D': - str_ = "[^0-9]"; - break; - case 's': - str_ = "[ \t\n\r\f\v]"; - break; - case 'S': - str_ = "[^ \t\n\r\f\v]"; - break; - case 'w': - str_ = "[_0-9A-Za-z]"; - break; - case 'W': - str_ = "[^_0-9A-Za-z]"; - break; - } - - if (str_) - { - // Some systems have strlen in namespace std. - using namespace std; - - str_len_ = strlen (str_); - } - else - { - str_len_ = 0; - } - - return str_; - } - - static const wchar_t *charset_shortcut (const wchar_t ch_, - std::size_t &str_len_) - { - const wchar_t *str_ = 0; - - switch (ch_) - { - case 'd': - str_ = L"[0-9]"; - break; - case 'D': - str_ = L"[^0-9]"; - break; - case 's': - str_ = L"[ \t\n\r\f\v]"; - break; - case 'S': - str_ = L"[^ \t\n\r\f\v]"; - break; - case 'w': - str_ = L"[_0-9A-Za-z]"; - break; - case 'W': - str_ = L"[^_0-9A-Za-z]"; - break; - } - - if (str_) - { - // Some systems have wcslen in namespace std. - using namespace std; - - str_len_ = wcslen (str_); - } - else - { - str_len_ = 0; - } - - return str_; - } - - static CharT decode_octal (state &state_) - { - std::size_t accumulator_ = 0; - CharT ch_ = *state_._curr; - unsigned short count_ = 3; - bool eos_ = false; - - for (;;) - { - accumulator_ *= 8; - accumulator_ += ch_ - '0'; - --count_; - state_.increment (); - eos_ = state_.eos (); - - if (!count_ || eos_) break; - - ch_ = *state_._curr; - - // Don't consume invalid chars! - if (ch_ < '0' || ch_ > '7') - { - break; - } - } - - return static_cast (accumulator_); - } - - static CharT decode_control_char (state &state_) - { - // Skip over 'c' - state_.increment (); - - CharT ch_ = 0; - bool eos_ = state_.next (ch_); - - if (eos_) - { - // Pointless returning index if at end of string - throw runtime_error ("Unexpected end of regex following \\c."); - } - else - { - if (ch_ >= 'a' && ch_ <= 'z') - { - ch_ -= 'a' - 1; - } - else if (ch_ >= 'A' && ch_ <= 'Z') - { - ch_ -= 'A' - 1; - } - else if (ch_ == '@') - { - // Apparently... - ch_ = 0; - } - else - { - std::ostringstream ss_; - - ss_ << "Invalid control char at index " << - state_.index () - 1 << '.'; - throw runtime_error (ss_.str ().c_str ()); - } - } - - return ch_; - } - - static CharT decode_hex (state &state_) - { - // Skip over 'x' - state_.increment (); - - CharT ch_ = 0; - bool eos_ = state_.next (ch_); - - if (eos_) - { - // Pointless returning index if at end of string - throw runtime_error ("Unexpected end of regex following \\x."); - } - - if (!((ch_ >= '0' && ch_ <= '9') || (ch_ >= 'a' && ch_ <= 'f') || - (ch_ >= 'A' && ch_ <= 'F'))) - { - std::ostringstream ss_; - - ss_ << "Illegal char following \\x at index " << - state_.index () - 1 << '.'; - throw runtime_error (ss_.str ().c_str ()); - } - - std::size_t hex_ = 0; - - do - { - hex_ *= 16; - - if (ch_ >= '0' && ch_ <= '9') - { - hex_ += ch_ - '0'; - } - else if (ch_ >= 'a' && ch_ <= 'f') - { - hex_ += 10 + (ch_ - 'a'); - } - else - { - hex_ += 10 + (ch_ - 'A'); - } - - eos_ = state_.eos (); - - if (!eos_) - { - ch_ = *state_._curr; - - // Don't consume invalid chars! - if (((ch_ >= '0' && ch_ <= '9') || - (ch_ >= 'a' && ch_ <= 'f') || (ch_ >= 'A' && ch_ <= 'F'))) - { - state_.increment (); - } - else - { - eos_ = true; - } - } - } while (!eos_); - - return static_cast (hex_); - } - - static void charset_range (const bool chset_, state &state_, bool &eos_, - CharT &ch_, const CharT prev_, string &chars_) - { - if (chset_) - { - std::ostringstream ss_; - - ss_ << "Charset cannot form start of range preceding " - "index " << state_.index () - 1 << '.'; - throw runtime_error (ss_.str ().c_str ()); - } - - eos_ = state_.next (ch_); - - if (eos_) - { - // Pointless returning index if at end of string - throw runtime_error ("Unexpected end of regex " - "following '-'."); - } - - CharT curr_ = 0; - - if (ch_ == '\\') - { - std::size_t str_len_ = 0; - - if (escape_sequence (state_, curr_, str_len_)) - { - std::ostringstream ss_; - - ss_ << "Charset cannot form end of range preceding index " - << state_.index () << '.'; - throw runtime_error (ss_.str ().c_str ()); - } - } -/* - else if (ch_ == '[' && !state_.eos () && *state_._curr == ':') - { - std::ostringstream ss_; - - ss_ << "POSIX char class cannot form end of range at " - "index " << state_.index () - 1 << '.'; - throw runtime_error (ss_.str ().c_str ()); - } -*/ - else - { - curr_ = ch_; - } - - eos_ = state_.next (ch_); - - // Covers preceding if and else - if (eos_) - { - // Pointless returning index if at end of string - throw runtime_error ("Unexpected end of regex " - "(missing ']')."); - } - - std::size_t start_ = static_cast (prev_); - std::size_t end_ = static_cast (curr_); - - // Semanic check - if (end_ < start_) - { - std::ostringstream ss_; - - ss_ << "Invalid range in charset preceding index " << - state_.index () - 1 << '.'; - throw runtime_error (ss_.str ().c_str ()); - } - - chars_.reserve (chars_.size () + (end_ + 1 - start_)); - - for (; start_ <= end_; ++start_) - { - CharT ch_i = static_cast (start_); - - if ((state_._flags & icase) && - (std::isupper (ch_i, state_._locale) || - std::islower (ch_i, state_._locale))) - { - CharT upper_ = std::toupper (ch_i, state_._locale); - CharT lower_ = std::tolower (ch_i, state_._locale); - - chars_ += (upper_); - chars_ += (lower_); - } - else - { - chars_ += (ch_i); - } - } - } -}; -} -} -} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/parser/tokeniser/re_tokeniser_state.hpp b/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/parser/tokeniser/re_tokeniser_state.hpp deleted file mode 100644 index 217eea210f83..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/parser/tokeniser/re_tokeniser_state.hpp +++ /dev/null @@ -1,98 +0,0 @@ -// tokeniser_state.hpp -// Copyright (c) 2007-2009 Ben Hanson (http://www.benhanson.net/) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file licence_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_PARSER_TOKENISER_RE_TOKENISER_STATE_HPP -#define BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_PARSER_TOKENISER_RE_TOKENISER_STATE_HPP - -#include "../../consts.hpp" -#include -#include "../../size_t.hpp" -#include - -namespace boost -{ -namespace lexer -{ -namespace detail -{ -template -struct basic_re_tokeniser_state -{ - const CharT * const _start; - const CharT * const _end; - const CharT *_curr; - regex_flags _flags; - std::stack _flags_stack; - std::locale _locale; - long _paren_count; - bool _in_string; - bool _seen_BOL_assertion; - bool _seen_EOL_assertion; - - basic_re_tokeniser_state (const CharT *start_, const CharT * const end_, - const regex_flags flags_, const std::locale locale_) : - _start (start_), - _end (end_), - _curr (start_), - _flags (flags_), - _locale (locale_), - _paren_count (0), - _in_string (false), - _seen_BOL_assertion (false), - _seen_EOL_assertion (false) - { - } - - // prevent VC++ 7.1 warning: - const basic_re_tokeniser_state &operator = - (const basic_re_tokeniser_state &rhs_) - { - _start = rhs_._start; - _end = rhs_._end; - _curr = rhs_._curr; - _flags = rhs_._flags; - _locale = rhs_._locale; - _paren_count = rhs_._paren_count; - _in_string = rhs_._in_string; - _seen_BOL_assertion = rhs_._seen_BOL_assertion; - _seen_EOL_assertion = rhs_._seen_EOL_assertion; - return this; - } - - inline bool next (CharT &ch_) - { - if (_curr >= _end) - { - ch_ = 0; - return true; - } - else - { - ch_ = *_curr; - increment (); - return false; - } - } - - inline void increment () - { - ++_curr; - } - - inline std::size_t index () - { - return _curr - _start; - } - - inline bool eos () - { - return _curr >= _end; - } -}; -} -} -} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/parser/tree/end_node.hpp b/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/parser/tree/end_node.hpp deleted file mode 100644 index 61f15a6416a7..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/parser/tree/end_node.hpp +++ /dev/null @@ -1,90 +0,0 @@ -// end_node.hpp -// Copyright (c) 2007-2009 Ben Hanson (http://www.benhanson.net/) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file licence_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_PARSER_TREE_END_NODE_HPP -#define BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_PARSER_TREE_END_NODE_HPP - -#include "node.hpp" -#include "../../size_t.hpp" - -namespace boost -{ -namespace lexer -{ -namespace detail -{ -class end_node : public node -{ -public: - end_node (const std::size_t id_, const std::size_t unique_id_, - const std::size_t lexer_state_) : - node (false), - _id (id_), - _unique_id (unique_id_), - _lexer_state (lexer_state_) - { - node::_firstpos.push_back (this); - node::_lastpos.push_back (this); - } - - virtual ~end_node () - { - } - - virtual type what_type () const - { - return END; - } - - virtual bool traverse (const_node_stack &/*node_stack_*/, - bool_stack &/*perform_op_stack_*/) const - { - return false; - } - - virtual const node_vector &followpos () const - { - // _followpos is always empty..! - return _followpos; - } - - virtual bool end_state () const - { - return true; - } - - virtual std::size_t id () const - { - return _id; - } - - virtual std::size_t unique_id () const - { - return _unique_id; - } - - virtual std::size_t lexer_state () const - { - return _lexer_state; - } - -private: - std::size_t _id; - std::size_t _unique_id; - std::size_t _lexer_state; - node_vector _followpos; - - virtual void copy_node (node_ptr_vector &/*node_ptr_vector_*/, - node_stack &/*new_node_stack_*/, bool_stack &/*perform_op_stack_*/, - bool &/*down_*/) const - { - // Nothing to do, as end_nodes are not copied. - } -}; -} -} -} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/parser/tree/iteration_node.hpp b/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/parser/tree/iteration_node.hpp deleted file mode 100644 index aee7531b980f..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/parser/tree/iteration_node.hpp +++ /dev/null @@ -1,90 +0,0 @@ -// iteration_node.hpp -// Copyright (c) 2007-2009 Ben Hanson (http://www.benhanson.net/) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file licence_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_PARSER_TREE_ITERATION_NODE_HPP -#define BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_PARSER_TREE_ITERATION_NODE_HPP - -#include "node.hpp" - -namespace boost -{ -namespace lexer -{ -namespace detail -{ -class iteration_node : public node -{ -public: - iteration_node (node *next_, const bool greedy_) : - node (true), - _next (next_), - _greedy (greedy_) - { - node_vector::iterator iter_; - node_vector::iterator end_; - - _next->append_firstpos (_firstpos); - _next->append_lastpos (_lastpos); - - for (iter_ = _lastpos.begin (), end_ = _lastpos.end (); - iter_ != end_; ++iter_) - { - (*iter_)->append_followpos (_firstpos); - } - - for (iter_ = _firstpos.begin (), end_ = _firstpos.end (); - iter_ != end_; ++iter_) - { - (*iter_)->greedy (greedy_); - } - } - - virtual ~iteration_node () - { - } - - virtual type what_type () const - { - return ITERATION; - } - - virtual bool traverse (const_node_stack &node_stack_, - bool_stack &perform_op_stack_) const - { - perform_op_stack_.push (true); - node_stack_.push (_next); - return true; - } - -private: - // Not owner of this pointer... - node *_next; - bool _greedy; - - virtual void copy_node (node_ptr_vector &node_ptr_vector_, - node_stack &new_node_stack_, bool_stack &perform_op_stack_, - bool &down_) const - { - if (perform_op_stack_.top ()) - { - node *ptr_ = new_node_stack_.top (); - - node_ptr_vector_->push_back (static_cast(0)); - node_ptr_vector_->back () = new iteration_node (ptr_, _greedy); - new_node_stack_.top () = node_ptr_vector_->back (); - } - else - { - down_ = true; - } - - perform_op_stack_.pop (); - } -}; -} -} -} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/parser/tree/leaf_node.hpp b/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/parser/tree/leaf_node.hpp deleted file mode 100644 index 52b2ec783e6f..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/parser/tree/leaf_node.hpp +++ /dev/null @@ -1,107 +0,0 @@ -// leaf_node.hpp -// Copyright (c) 2007-2009 Ben Hanson (http://www.benhanson.net/) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file licence_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_PARSER_TREE_LEAF_NODE_HPP -#define BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_PARSER_TREE_LEAF_NODE_HPP - -#include "../../consts.hpp" // null_token -#include "node.hpp" -#include "../../size_t.hpp" - -namespace boost -{ -namespace lexer -{ -namespace detail -{ -class leaf_node : public node -{ -public: - leaf_node (const std::size_t token_, const bool greedy_) : - node (token_ == null_token), - _token (token_), - _set_greedy (!greedy_), - _greedy (greedy_) - { - if (!_nullable) - { - _firstpos.push_back (this); - _lastpos.push_back (this); - } - } - - virtual ~leaf_node () - { - } - - virtual void append_followpos (const node_vector &followpos_) - { - for (node_vector::const_iterator iter_ = followpos_.begin (), - end_ = followpos_.end (); iter_ != end_; ++iter_) - { - _followpos.push_back (*iter_); - } - } - - virtual type what_type () const - { - return LEAF; - } - - virtual bool traverse (const_node_stack &/*node_stack_*/, - bool_stack &/*perform_op_stack_*/) const - { - return false; - } - - virtual std::size_t token () const - { - return _token; - } - - virtual void greedy (const bool greedy_) - { - if (!_set_greedy) - { - _greedy = greedy_; - _set_greedy = true; - } - } - - virtual bool greedy () const - { - return _greedy; - } - - virtual const node_vector &followpos () const - { - return _followpos; - } - - virtual node_vector &followpos () - { - return _followpos; - } - -private: - std::size_t _token; - bool _set_greedy; - bool _greedy; - node_vector _followpos; - - virtual void copy_node (node_ptr_vector &node_ptr_vector_, - node_stack &new_node_stack_, bool_stack &/*perform_op_stack_*/, - bool &/*down_*/) const - { - node_ptr_vector_->push_back (static_cast(0)); - node_ptr_vector_->back () = new leaf_node (_token, _greedy); - new_node_stack_.push (node_ptr_vector_->back ()); - } -}; -} -} -} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/parser/tree/node.hpp b/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/parser/tree/node.hpp deleted file mode 100644 index a78f91e0504d..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/parser/tree/node.hpp +++ /dev/null @@ -1,188 +0,0 @@ -// node.hpp -// Copyright (c) 2007-2009 Ben Hanson (http://www.benhanson.net/) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file licence_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_PARSER_TREE_NODE_HPP -#define BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_PARSER_TREE_NODE_HPP - -#include -#include "../../containers/ptr_vector.hpp" -#include "../../runtime_error.hpp" -#include "../../size_t.hpp" -#include -#include - -namespace boost -{ -namespace lexer -{ -namespace detail -{ -class node -{ -public: - enum type {LEAF, SEQUENCE, SELECTION, ITERATION, END}; - - typedef std::stack bool_stack; - typedef std::stack node_stack; - // stack and vector not owner of node pointers - typedef std::stack const_node_stack; - typedef std::vector node_vector; - typedef ptr_vector node_ptr_vector; - - node () : - _nullable (false) - { - } - - node (const bool nullable_) : - _nullable (nullable_) - { - } - - virtual ~node () - { - } - - bool nullable () const - { - return _nullable; - } - - void append_firstpos (node_vector &firstpos_) const - { - firstpos_.insert (firstpos_.end (), - _firstpos.begin (), _firstpos.end ()); - } - - void append_lastpos (node_vector &lastpos_) const - { - lastpos_.insert (lastpos_.end (), - _lastpos.begin (), _lastpos.end ()); - } - - virtual void append_followpos (const node_vector &/*followpos_*/) - { - throw runtime_error ("Internal error node::append_followpos()"); - } - - node *copy (node_ptr_vector &node_ptr_vector_) const - { - node *new_root_ = 0; - const_node_stack node_stack_; - bool_stack perform_op_stack_; - bool down_ = true; - node_stack new_node_stack_; - - node_stack_.push (this); - - while (!node_stack_.empty ()) - { - while (down_) - { - down_ = node_stack_.top ()->traverse (node_stack_, - perform_op_stack_); - } - - while (!down_ && !node_stack_.empty ()) - { - const node *top_ = node_stack_.top (); - - top_->copy_node (node_ptr_vector_, new_node_stack_, - perform_op_stack_, down_); - - if (!down_) node_stack_.pop (); - } - } - - BOOST_ASSERT(new_node_stack_.size () == 1); - new_root_ = new_node_stack_.top (); - new_node_stack_.pop (); - return new_root_; - } - - virtual type what_type () const = 0; - - virtual bool traverse (const_node_stack &node_stack_, - bool_stack &perform_op_stack_) const = 0; - - node_vector &firstpos () - { - return _firstpos; - } - - const node_vector &firstpos () const - { - return _firstpos; - } - - // _lastpos modified externally, so not const & - node_vector &lastpos () - { - return _lastpos; - } - - virtual bool end_state () const - { - return false; - } - - virtual std::size_t id () const - { - throw runtime_error ("Internal error node::id()"); - } - - virtual std::size_t unique_id () const - { - throw runtime_error ("Internal error node::unique_id()"); - } - - virtual std::size_t lexer_state () const - { - throw runtime_error ("Internal error node::state()"); - } - - virtual std::size_t token () const - { - throw runtime_error ("Internal error node::token()"); - } - - virtual void greedy (const bool /*greedy_*/) - { - throw runtime_error ("Internal error node::token(bool)"); - } - - virtual bool greedy () const - { - throw runtime_error ("Internal error node::token()"); - } - - virtual const node_vector &followpos () const - { - throw runtime_error ("Internal error node::followpos()"); - } - - virtual node_vector &followpos () - { - throw runtime_error ("Internal error node::followpos()"); - } - -protected: - const bool _nullable; - node_vector _firstpos; - node_vector _lastpos; - - virtual void copy_node (node_ptr_vector &node_ptr_vector_, - node_stack &new_node_stack_, bool_stack &perform_op_stack_, - bool &down_) const = 0; - -private: - node (node const &); // No copy construction. - node &operator = (node const &); // No assignment. -}; -} -} -} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/parser/tree/selection_node.hpp b/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/parser/tree/selection_node.hpp deleted file mode 100644 index fa5bed43e594..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/parser/tree/selection_node.hpp +++ /dev/null @@ -1,94 +0,0 @@ -// selection_node.hpp -// Copyright (c) 2007-2009 Ben Hanson (http://www.benhanson.net/) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file licence_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_PARSER_TREE_SELECTION_NODE_HPP -#define BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_PARSER_TREE_SELECTION_NODE_HPP - -#include "node.hpp" - -namespace boost -{ -namespace lexer -{ -namespace detail -{ -class selection_node : public node -{ -public: - selection_node (node *left_, node *right_) : - node (left_->nullable () || right_->nullable ()), - _left (left_), - _right (right_) - { - _left->append_firstpos (_firstpos); - _right->append_firstpos (_firstpos); - _left->append_lastpos (_lastpos); - _right->append_lastpos (_lastpos); - } - - virtual ~selection_node () - { - } - - virtual type what_type () const - { - return SELECTION; - } - - virtual bool traverse (const_node_stack &node_stack_, - bool_stack &perform_op_stack_) const - { - perform_op_stack_.push (true); - - switch (_right->what_type ()) - { - case SEQUENCE: - case SELECTION: - case ITERATION: - perform_op_stack_.push (false); - break; - default: - break; - } - - node_stack_.push (_right); - node_stack_.push (_left); - return true; - } - -private: - // Not owner of these pointers... - node *_left; - node *_right; - - virtual void copy_node (node_ptr_vector &node_ptr_vector_, - node_stack &new_node_stack_, bool_stack &perform_op_stack_, - bool &down_) const - { - if (perform_op_stack_.top ()) - { - node *rhs_ = new_node_stack_.top (); - - new_node_stack_.pop (); - - node *lhs_ = new_node_stack_.top (); - - node_ptr_vector_->push_back (static_cast(0)); - node_ptr_vector_->back () = new selection_node (lhs_, rhs_); - new_node_stack_.top () = node_ptr_vector_->back (); - } - else - { - down_ = true; - } - - perform_op_stack_.pop (); - } -}; -} -} -} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/parser/tree/sequence_node.hpp b/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/parser/tree/sequence_node.hpp deleted file mode 100644 index ed86c0618bbc..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/parser/tree/sequence_node.hpp +++ /dev/null @@ -1,112 +0,0 @@ -// sequence_node.hpp -// Copyright (c) 2007-2009 Ben Hanson (http://www.benhanson.net/) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file licence_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_PARSER_TREE_SEQUENCE_NODE_HPP -#define BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_PARSER_TREE_SEQUENCE_NODE_HPP - -#include "node.hpp" - -namespace boost -{ -namespace lexer -{ -namespace detail -{ -class sequence_node : public node -{ -public: - sequence_node (node *left_, node *right_) : - node (left_->nullable () && right_->nullable ()), - _left (left_), - _right (right_) - { - _left->append_firstpos (_firstpos); - - if (_left->nullable ()) - { - _right->append_firstpos (_firstpos); - } - - if (_right->nullable ()) - { - _left->append_lastpos (_lastpos); - } - - _right->append_lastpos (_lastpos); - - node_vector &lastpos_ = _left->lastpos (); - const node_vector &firstpos_ = _right->firstpos (); - - for (node_vector::iterator iter_ = lastpos_.begin (), - end_ = lastpos_.end (); iter_ != end_; ++iter_) - { - (*iter_)->append_followpos (firstpos_); - } - } - - virtual ~sequence_node () - { - } - - virtual type what_type () const - { - return SEQUENCE; - } - - virtual bool traverse (const_node_stack &node_stack_, - bool_stack &perform_op_stack_) const - { - perform_op_stack_.push (true); - - switch (_right->what_type ()) - { - case SEQUENCE: - case SELECTION: - case ITERATION: - perform_op_stack_.push (false); - break; - default: - break; - } - - node_stack_.push (_right); - node_stack_.push (_left); - return true; - } - -private: - // Not owner of these pointers... - node *_left; - node *_right; - - virtual void copy_node (node_ptr_vector &node_ptr_vector_, - node_stack &new_node_stack_, bool_stack &perform_op_stack_, - bool &down_) const - { - if (perform_op_stack_.top ()) - { - node *rhs_ = new_node_stack_.top (); - - new_node_stack_.pop (); - - node *lhs_ = new_node_stack_.top (); - - node_ptr_vector_->push_back (static_cast(0)); - node_ptr_vector_->back () = new sequence_node (lhs_, rhs_); - new_node_stack_.top () = node_ptr_vector_->back (); - } - else - { - down_ = true; - } - - perform_op_stack_.pop (); - } -}; -} -} -} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/partition/charset.hpp b/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/partition/charset.hpp deleted file mode 100644 index 28082706cf8f..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/partition/charset.hpp +++ /dev/null @@ -1,81 +0,0 @@ -// charset.hpp -// Copyright (c) 2007-2009 Ben Hanson (http://www.benhanson.net/) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file licence_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_PARTITION_CHARSET_HPP -#define BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_PARTITION_CHARSET_HPP - -#include -#include "../size_t.hpp" -#include "../string_token.hpp" - -namespace boost -{ -namespace lexer -{ -namespace detail -{ -template -struct basic_charset -{ - typedef basic_string_token token; - typedef std::set index_set; - - token _token; - index_set _index_set; - - basic_charset () - { - } - - basic_charset (const token &token_, const std::size_t index_) : - _token (token_) - { - _index_set.insert (index_); - } - - bool empty () const - { - return _token.empty () && _index_set.empty (); - } - - void intersect (basic_charset &rhs_, basic_charset &overlap_) - { - _token.intersect (rhs_._token, overlap_._token); - - if (!overlap_._token.empty ()) - { - typename index_set::const_iterator iter_ = _index_set.begin (); - typename index_set::const_iterator end_ = _index_set.end (); - - for (; iter_ != end_; ++iter_) - { - overlap_._index_set.insert (*iter_); - } - - iter_ = rhs_._index_set.begin (); - end_ = rhs_._index_set.end (); - - for (; iter_ != end_; ++iter_) - { - overlap_._index_set.insert (*iter_); - } - - if (_token.empty ()) - { - _index_set.clear (); - } - - if (rhs_._token.empty ()) - { - rhs_._index_set.clear (); - } - } - } -}; -} -} -} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/partition/equivset.hpp b/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/partition/equivset.hpp deleted file mode 100644 index 255bef330b07..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/partition/equivset.hpp +++ /dev/null @@ -1,140 +0,0 @@ -// equivset.hpp -// Copyright (c) 2007-2009 Ben Hanson (http://www.benhanson.net/) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file licence_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_PARTITION_EQUIVSET_HPP -#define BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_PARTITION_EQUIVSET_HPP - -#include -#include "../parser/tree/node.hpp" -#include -#include "../size_t.hpp" - -namespace boost -{ -namespace lexer -{ -namespace detail -{ -struct equivset -{ - typedef std::set index_set; - typedef std::vector index_vector; - // Not owner of nodes: - typedef std::vector node_vector; - - index_vector _index_vector; - bool _greedy; - std::size_t _id; - node_vector _followpos; - - equivset () : - _greedy (true), - _id (0) - { - } - - equivset (const index_set &index_set_, const bool greedy_, - const std::size_t id_, const node_vector &followpos_) : - _greedy (greedy_), - _id (id_), - _followpos (followpos_) - { - index_set::const_iterator iter_ = index_set_.begin (); - index_set::const_iterator end_ = index_set_.end (); - - for (; iter_ != end_; ++iter_) - { - _index_vector.push_back (*iter_); - } - } - - bool empty () const - { - return _index_vector.empty () && _followpos.empty (); - } - - void intersect (equivset &rhs_, equivset &overlap_) - { - intersect_indexes (rhs_._index_vector, overlap_._index_vector); - - if (!overlap_._index_vector.empty ()) - { - // Note that the LHS takes priority in order to - // respect rule ordering priority in the lex spec. - overlap_._id = _id; - overlap_._greedy = _greedy; - overlap_._followpos = _followpos; - - node_vector::const_iterator overlap_begin_ = - overlap_._followpos.begin (); - node_vector::const_iterator overlap_end_ = - overlap_._followpos.end (); - node_vector::const_iterator rhs_iter_ = - rhs_._followpos.begin (); - node_vector::const_iterator rhs_end_ = - rhs_._followpos.end (); - - for (; rhs_iter_ != rhs_end_; ++rhs_iter_) - { - node *node_ = *rhs_iter_; - - if (std::find (overlap_begin_, overlap_end_, node_) == - overlap_end_) - { - overlap_._followpos.push_back (node_); - overlap_begin_ = overlap_._followpos.begin (); - overlap_end_ = overlap_._followpos.end (); - } - } - - if (_index_vector.empty ()) - { - _followpos.clear (); - } - - if (rhs_._index_vector.empty ()) - { - rhs_._followpos.clear (); - } - } - } - -private: - void intersect_indexes (index_vector &rhs_, index_vector &overlap_) - { - index_vector::iterator iter_ = _index_vector.begin (); - index_vector::iterator end_ = _index_vector.end (); - index_vector::iterator rhs_iter_ = rhs_.begin (); - index_vector::iterator rhs_end_ = rhs_.end (); - - while (iter_ != end_ && rhs_iter_ != rhs_end_) - { - const std::size_t index_ = *iter_; - const std::size_t rhs_index_ = *rhs_iter_; - - if (index_ < rhs_index_) - { - ++iter_; - } - else if (index_ > rhs_index_) - { - ++rhs_iter_; - } - else - { - overlap_.push_back (index_); - iter_ = _index_vector.erase (iter_); - end_ = _index_vector.end (); - rhs_iter_ = rhs_.erase (rhs_iter_); - rhs_end_ = rhs_.end (); - } - } - } -}; -} -} -} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/rules.hpp b/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/rules.hpp deleted file mode 100644 index 54bf56959e4e..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/rules.hpp +++ /dev/null @@ -1,806 +0,0 @@ -// rules.hpp -// Copyright (c) 2007-2009 Ben Hanson (http://www.benhanson.net/) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file licence_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_RULES_HPP -#define BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_RULES_HPP - -#include "consts.hpp" -#include -#include -#include -#include "runtime_error.hpp" -#include -#include "size_t.hpp" -#include -#include -#include - -namespace boost -{ -namespace lexer -{ -namespace detail -{ - // return name of initial state - template - struct strings; - - template <> - struct strings - { - static const char *initial () - { - return "INITIAL"; - } - - static const char *dot () - { - return "."; - } - - static const char *all_states () - { - return "*"; - } - - static const char *char_name () - { - return "char"; - } - - static const char *char_prefix () - { - return ""; - } - }; - - template <> - struct strings - { - static const wchar_t *initial () - { - return L"INITIAL"; - } - - static const wchar_t *dot () - { - return L"."; - } - - static const wchar_t *all_states () - { - return L"*"; - } - - static const char *char_name () - { - return "wchar_t"; - } - - static const char *char_prefix () - { - return "L"; - } - }; -} - -template -class basic_rules -{ -public: - typedef std::vector id_vector; - typedef std::deque id_vector_deque; - typedef std::basic_string string; - typedef std::deque string_deque; - typedef std::deque string_deque_deque; - typedef std::set string_set; - typedef std::pair string_pair; - typedef std::deque string_pair_deque; - typedef std::map string_size_t_map; - typedef std::pair string_size_t_pair; - - basic_rules (const regex_flags flags_ = dot_not_newline, - std::size_t (*counter_ptr_) () = 0) : - _flags (flags_), - _counter (0), - _counter_ptr (counter_ptr_) - { - add_state (initial ()); - } - - void clear () - { - _statemap.clear (); - _macrodeque.clear (); - _macroset.clear (); - _regexes.clear (); - _ids.clear (); - _unique_ids.clear (); - _states.clear (); - _flags = dot_not_newline; - _locale = std::locale (); - add_state (initial ()); - } - - void clear (const CharT *state_name_) - { - std::size_t state_ = state (state_name_); - - if (state_ != npos) - { - _regexes[state_].clear (); - _ids[state_].clear (); - _unique_ids[state_].clear (); - _states[state_].clear (); - } - } - - void flags (const regex_flags flags_) - { - _flags = flags_; - } - - regex_flags flags () const - { - return _flags; - } - - std::size_t next_unique_id () - { - return _counter_ptr ? _counter_ptr () : _counter++; - } - - std::locale imbue (std::locale &locale_) - { - std::locale loc_ = _locale; - - _locale = locale_; - return loc_; - } - - const std::locale &locale () const - { - return _locale; - } - - std::size_t state (const CharT *name_) const - { - std::size_t state_ = npos; - typename string_size_t_map::const_iterator iter_ = - _statemap.find (name_); - - if (iter_ != _statemap.end ()) - { - state_ = iter_->second; - } - - return state_; - } - - const CharT *state (const std::size_t index_) const - { - if (index_ == 0) - { - return initial (); - } - else - { - const std::size_t vec_index_ = index_ - 1; - - if (vec_index_ > _lexer_state_names.size () - 1) - { - return 0; - } - else - { - return _lexer_state_names[vec_index_].c_str (); - } - } - } - - std::size_t add_state (const CharT *name_) - { - validate (name_); - - if (_statemap.insert (string_size_t_pair (name_, - _statemap.size ())).second) - { - _regexes.push_back (string_deque ()); - _ids.push_back (id_vector ()); - _unique_ids.push_back (id_vector ()); - _states.push_back (id_vector ()); - - if (string (name_) != initial ()) - { - _lexer_state_names.push_back (name_); - } - } - - // Initial is not stored, so no need to - 1. - return _lexer_state_names.size (); - } - - void add_macro (const CharT *name_, const CharT *regex_) - { - add_macro (name_, string (regex_)); - } - - void add_macro (const CharT *name_, const CharT *regex_start_, - const CharT *regex_end_) - { - add_macro (name_, string (regex_start_, regex_end_)); - } - - void add_macro (const CharT *name_, const string ®ex_) - { - validate (name_); - - typename string_set::const_iterator iter_ = _macroset.find (name_); - - if (iter_ == _macroset.end ()) - { - _macrodeque.push_back (string_pair (name_, regex_)); - _macroset.insert (name_); - } - else - { - std::basic_stringstream ss_; - std::ostringstream os_; - - os_ << "Attempt to redefine MACRO '"; - - while (*name_) - { - os_ << ss_.narrow (*name_++, static_cast (' ')); - } - - os_ << "'."; - throw runtime_error (os_.str ()); - } - } - - void add_macros (const basic_rules &rules_) - { - const string_pair_deque ¯os_ = rules_.macrodeque (); - typename string_pair_deque::const_iterator macro_iter_ = - macros_.begin (); - typename string_pair_deque::const_iterator macro_end_ = - macros_.end (); - - for (; macro_iter_ != macro_end_; ++macro_iter_) - { - add_macro (macro_iter_->first.c_str (), - macro_iter_->second.c_str ()); - } - } - - void merge_macros (const basic_rules &rules_) - { - const string_pair_deque ¯os_ = rules_.macrodeque (); - typename string_pair_deque::const_iterator macro_iter_ = - macros_.begin (); - typename string_pair_deque::const_iterator macro_end_ = - macros_.end (); - typename string_set::const_iterator macro_dest_iter_; - typename string_set::const_iterator macro_dest_end_ = _macroset.end (); - - for (; macro_iter_ != macro_end_; ++macro_iter_) - { - macro_dest_iter_ = _macroset.find (macro_iter_->first); - - if (macro_dest_iter_ == macro_dest_end_) - { - add_macro (macro_iter_->first.c_str (), - macro_iter_->second.c_str ()); - } - } - } - - std::size_t add (const CharT *regex_, const std::size_t id_) - { - return add (string (regex_), id_); - } - - std::size_t add (const CharT *regex_start_, const CharT *regex_end_, - const std::size_t id_) - { - return add (string (regex_start_, regex_end_), id_); - } - - std::size_t add (const string ®ex_, const std::size_t id_) - { - const std::size_t counter_ = next_unique_id (); - - check_for_invalid_id (id_); - _regexes.front ().push_back (regex_); - _ids.front ().push_back (id_); - _unique_ids.front ().push_back (counter_); - _states.front ().push_back (0); - return counter_; - } - - std::size_t add (const CharT *curr_state_, const CharT *regex_, - const CharT *new_state_) - { - return add (curr_state_, string (regex_), new_state_); - } - - std::size_t add (const CharT *curr_state_, const CharT *regex_start_, - const CharT *regex_end_, const CharT *new_state_) - { - return add (curr_state_, string (regex_start_, regex_end_), - new_state_); - } - - std::size_t add (const CharT *curr_state_, const string ®ex_, - const CharT *new_state_) - { - return add (curr_state_, regex_, 0, new_state_, false); - } - - std::size_t add (const CharT *curr_state_, const CharT *regex_, - const std::size_t id_, const CharT *new_state_) - { - return add (curr_state_, string (regex_), id_, new_state_); - } - - std::size_t add (const CharT *curr_state_, const CharT *regex_start_, - const CharT *regex_end_, const std::size_t id_, - const CharT *new_state_) - { - return add (curr_state_, string (regex_start_, regex_end_), id_, - new_state_); - } - - std::size_t add (const CharT *curr_state_, const string ®ex_, - const std::size_t id_, const CharT *new_state_) - { - return add (curr_state_, regex_, id_, new_state_, true); - } - - void add (const CharT *source_, const basic_rules &rules_, - const CharT *dest_, const CharT *to_ = detail::strings::dot ()) - { - const bool star_ = *source_ == '*' && *(source_ + 1) == 0; - const bool dest_dot_ = *dest_ == '.' && *(dest_ + 1) == 0; - const bool to_dot_ = *to_ == '.' && *(to_ + 1) == 0; - std::size_t state_ = 0; - const string_deque_deque &all_regexes_ = rules_.regexes (); - const id_vector_deque &all_ids_ = rules_.ids (); - const id_vector_deque &all_unique_ids_ = rules_.unique_ids (); - const id_vector_deque &all_states_ = rules_.states (); - typename string_deque::const_iterator regex_iter_; - typename string_deque::const_iterator regex_end_; - typename id_vector::const_iterator id_iter_; - typename id_vector::const_iterator uid_iter_; - typename id_vector::const_iterator state_iter_; - - if (star_) - { - typename string_deque_deque::const_iterator all_regexes_iter_ = - all_regexes_.begin (); - typename string_deque_deque::const_iterator all_regexes_end_ = - all_regexes_.end (); - typename id_vector_deque::const_iterator all_ids_iter_ = - all_ids_.begin (); - typename id_vector_deque::const_iterator all_uids_iter_ = - all_unique_ids_.begin (); - typename id_vector_deque::const_iterator all_states_iter_ = - all_states_.begin (); - - for (; all_regexes_iter_ != all_regexes_end_; - ++state_, ++all_regexes_iter_, ++all_ids_iter_, - ++all_uids_iter_, ++all_states_iter_) - { - regex_iter_ = all_regexes_iter_->begin (); - regex_end_ = all_regexes_iter_->end (); - id_iter_ = all_ids_iter_->begin (); - uid_iter_ = all_uids_iter_->begin (); - state_iter_ = all_states_iter_->begin (); - - for (; regex_iter_ != regex_end_; ++regex_iter_, ++id_iter_, - ++uid_iter_, ++state_iter_) - { - // If ..._dot_ then lookup state name from rules_; otherwise - // pass name through. - add (dest_dot_ ? rules_.state (state_) : dest_, *regex_iter_, - *id_iter_, to_dot_ ? rules_.state (*state_iter_) : to_, true, - *uid_iter_); - } - } - } - else - { - const CharT *start_ = source_; - string state_name_; - - while (*source_) - { - while (*source_ && *source_ != ',') - { - ++source_; - } - - state_name_.assign (start_, source_); - - if (*source_) - { - ++source_; - start_ = source_; - } - - state_ = rules_.state (state_name_.c_str ()); - - if (state_ == npos) - { - std::basic_stringstream ss_; - std::ostringstream os_; - - os_ << "Unknown state name '"; - source_ = state_name_.c_str (); - - while (*source_) - { - os_ << ss_.narrow (*source_++, ' '); - } - - os_ << "'."; - throw runtime_error (os_.str ()); - } - - regex_iter_ = all_regexes_[state_].begin (); - regex_end_ = all_regexes_[state_].end (); - id_iter_ = all_ids_[state_].begin (); - uid_iter_ = all_unique_ids_[state_].begin (); - state_iter_ = all_states_[state_].begin (); - - for (; regex_iter_ != regex_end_; ++regex_iter_, ++id_iter_, - ++uid_iter_, ++state_iter_) - { - // If ..._dot_ then lookup state name from rules_; otherwise - // pass name through. - add (dest_dot_ ? state_name_.c_str () : dest_, *regex_iter_, - *id_iter_, to_dot_ ? rules_.state (*state_iter_) : to_, true, - *uid_iter_); - } - } - } - } -/* - void add (const CharT *curr_state_, const basic_rules &rules_) - { - const string_deque_deque ®exes_ = rules_.regexes (); - const id_vector_deque &ids_ = rules_.ids (); - const id_vector_deque &unique_ids_ = rules_.unique_ids (); - typename string_deque_deque::const_iterator state_regex_iter_ = - regexes_.begin (); - typename string_deque_deque::const_iterator state_regex_end_ = - regexes_.end (); - typename id_vector_deque::const_iterator state_id_iter_ = - ids_.begin (); - typename id_vector_deque::const_iterator state_uid_iter_ = - unique_ids_.begin (); - typename string_deque::const_iterator regex_iter_; - typename string_deque::const_iterator regex_end_; - typename id_vector::const_iterator id_iter_; - typename id_vector::const_iterator uid_iter_; - - for (; state_regex_iter_ != state_regex_end_; ++state_regex_iter_) - { - regex_iter_ = state_regex_iter_->begin (); - regex_end_ = state_regex_iter_->end (); - id_iter_ = state_id_iter_->begin (); - uid_iter_ = state_uid_iter_->begin (); - - for (; regex_iter_ != regex_end_; ++regex_iter_, ++id_iter_, - ++uid_iter_) - { - add (curr_state_, *regex_iter_, *id_iter_, curr_state_, true, - *uid_iter_); - } - } - } -*/ - const string_size_t_map &statemap () const - { - return _statemap; - } - - const string_pair_deque ¯odeque () const - { - return _macrodeque; - } - - const string_deque_deque ®exes () const - { - return _regexes; - } - - const id_vector_deque &ids () const - { - return _ids; - } - - const id_vector_deque &unique_ids () const - { - return _unique_ids; - } - - const id_vector_deque &states () const - { - return _states; - } - - bool empty () const - { - typename string_deque_deque::const_iterator iter_ = _regexes.begin (); - typename string_deque_deque::const_iterator end_ = _regexes.end (); - bool empty_ = true; - - for (; iter_ != end_; ++iter_) - { - if (!iter_->empty ()) - { - empty_ = false; - break; - } - } - - return empty_; - } - - static const CharT *initial () - { - return detail::strings::initial (); - } - - static const CharT *all_states () - { - return detail::strings::all_states (); - } - - static const CharT *dot () - { - return detail::strings::dot (); - } - -private: - string_size_t_map _statemap; - string_pair_deque _macrodeque; - string_set _macroset; - string_deque_deque _regexes; - id_vector_deque _ids; - id_vector_deque _unique_ids; - id_vector_deque _states; - regex_flags _flags; - std::size_t _counter; - std::size_t (*_counter_ptr) (); - std::locale _locale; - string_deque _lexer_state_names; - - std::size_t add (const CharT *curr_state_, const string ®ex_, - const std::size_t id_, const CharT *new_state_, const bool check_, - const std::size_t uid_ = npos) - { - const bool star_ = *curr_state_ == '*' && *(curr_state_ + 1) == 0; - const bool dot_ = *new_state_ == '.' && *(new_state_ + 1) == 0; - - if (check_) - { - check_for_invalid_id (id_); - } - - if (!dot_) - { - validate (new_state_); - } - - std::size_t new_ = string::npos; - typename string_size_t_map::const_iterator iter_; - typename string_size_t_map::const_iterator end_ = _statemap.end (); - id_vector states_; - - if (!dot_) - { - iter_ = _statemap.find (new_state_); - - if (iter_ == end_) - { - std::basic_stringstream ss_; - std::ostringstream os_; - - os_ << "Unknown state name '"; - - while (*new_state_) - { - os_ << ss_.narrow (*new_state_++, ' '); - } - - os_ << "'."; - throw runtime_error (os_.str ()); - } - - new_ = iter_->second; - } - - if (star_) - { - const std::size_t size_ = _statemap.size (); - - for (std::size_t i_ = 0; i_ < size_; ++i_) - { - states_.push_back (i_); - } - } - else - { - const CharT *start_ = curr_state_; - string state_; - - while (*curr_state_) - { - while (*curr_state_ && *curr_state_ != ',') - { - ++curr_state_; - } - - state_.assign (start_, curr_state_); - - if (*curr_state_) - { - ++curr_state_; - start_ = curr_state_; - } - - validate (state_.c_str ()); - iter_ = _statemap.find (state_.c_str ()); - - if (iter_ == end_) - { - std::basic_stringstream ss_; - std::ostringstream os_; - - os_ << "Unknown state name '"; - curr_state_ = state_.c_str (); - - while (*curr_state_) - { - os_ << ss_.narrow (*curr_state_++, ' '); - } - - os_ << "'."; - throw runtime_error (os_.str ()); - } - - states_.push_back (iter_->second); - } - } - - std::size_t first_counter_ = npos; - - for (std::size_t i_ = 0, size_ = states_.size (); i_ < size_; ++i_) - { - const std::size_t curr_ = states_[i_]; - - _regexes[curr_].push_back (regex_); - _ids[curr_].push_back (id_); - - if (uid_ == npos) - { - const std::size_t counter_ = next_unique_id (); - - if (first_counter_ == npos) - { - first_counter_ = counter_; - } - - _unique_ids[curr_].push_back (counter_); - } - else - { - if (first_counter_ == npos) - { - first_counter_ = uid_; - } - - _unique_ids[curr_].push_back (uid_); - } - - _states[curr_].push_back (dot_ ? curr_ : new_); - } - - return first_counter_; - } - - void validate (const CharT *name_) const - { - const CharT *start_ = name_; - - if (*name_ != '_' && !(*name_ >= 'A' && *name_ <= 'Z') && - !(*name_ >= 'a' && *name_ <= 'z')) - { - std::basic_stringstream ss_; - std::ostringstream os_; - - os_ << "Invalid name '"; - - while (*name_) - { - os_ << ss_.narrow (*name_++, ' '); - } - - os_ << "'."; - throw runtime_error (os_.str ()); - } - else if (*name_) - { - ++name_; - } - - while (*name_) - { - if (*name_ != '_' && *name_ != '-' && - !(*name_ >= 'A' && *name_ <= 'Z') && - !(*name_ >= 'a' && *name_ <= 'z') && - !(*name_ >= '0' && *name_ <= '9')) - { - std::basic_stringstream ss_; - std::ostringstream os_; - - os_ << "Invalid name '"; - name_ = start_; - - while (*name_) - { - os_ << ss_.narrow (*name_++, ' '); - } - - os_ << "'."; - throw runtime_error (os_.str ()); - } - - ++name_; - } - - if (name_ - start_ > static_cast(max_macro_len)) - { - std::basic_stringstream ss_; - std::ostringstream os_; - - os_ << "Name '"; - name_ = start_; - - while (*name_) - { - os_ << ss_.narrow (*name_++, ' '); - } - - os_ << "' too long."; - throw runtime_error (os_.str ()); - } - } - - void check_for_invalid_id (const std::size_t id_) const - { - switch (id_) - { - case 0: - throw runtime_error ("id 0 is reserved for EOF."); - case npos: - throw runtime_error ("id npos is reserved for the " - "UNKNOWN token."); - default: - // OK - break; - } - } -}; - -typedef basic_rules rules; -typedef basic_rules wrules; -} -} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/runtime_error.hpp b/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/runtime_error.hpp deleted file mode 100644 index adfe4356e944..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/runtime_error.hpp +++ /dev/null @@ -1,27 +0,0 @@ -// runtime_error.hpp -// Copyright (c) 2007-2009 Ben Hanson (http://www.benhanson.net/) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file licence_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_RUNTIME_ERROR_HPP -#define BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_RUNTIME_ERROR_HPP - -#include // for BOOST_SYMBOL_VISIBLE -#include - -namespace boost -{ -namespace lexer -{ -class BOOST_SYMBOL_VISIBLE runtime_error : public std::runtime_error -{ -public: - runtime_error (const std::string &what_arg_) : - std::runtime_error (what_arg_) - { - } -}; -} -} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/size_t.hpp b/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/size_t.hpp deleted file mode 100644 index 9bc2012bbc42..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/size_t.hpp +++ /dev/null @@ -1,13 +0,0 @@ -// size_t.h -// Copyright (c) 2007-2009 Ben Hanson (http://www.benhanson.net/) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file licence_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_SIZE_T_HPP -#define BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_SIZE_T_HPP - -#include // ptrdiff_t - -#include - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/state_machine.hpp b/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/state_machine.hpp deleted file mode 100644 index 97b78a610124..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/state_machine.hpp +++ /dev/null @@ -1,431 +0,0 @@ -// state_machine.hpp -// Copyright (c) 2007-2009 Ben Hanson (http://www.benhanson.net/) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file licence_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_STATE_MACHINE_HPP -#define BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_STATE_MACHINE_HPP - -#include -#include "conversion/char_state_machine.hpp" -#include "consts.hpp" -#include -#include "internals.hpp" -#include -#include "containers/ptr_vector.hpp" -#include "size_t.hpp" -#include - -namespace boost -{ -namespace lexer -{ -template -class basic_state_machine -{ -public: - typedef CharT char_type; - - class iterator - { - public: - friend class basic_state_machine; - - struct data - { - // Current iterator info - std::size_t dfa; - std::size_t states; - std::size_t state; - std::size_t transitions; - std::size_t transition; - - // Current state info - bool end_state; - std::size_t id; - std::size_t unique_id; - std::size_t goto_dfa; - std::size_t bol_index; - std::size_t eol_index; - - // Current transition info - basic_string_token token; - std::size_t goto_state; - - data () : - dfa (npos), - states (0), - state (npos), - transitions (0), - transition (npos), - end_state (false), - id (npos), - unique_id (npos), - goto_dfa (npos), - bol_index (npos), - eol_index (npos), - goto_state (npos) - { - } - - bool operator == (const data &rhs_) const - { - return dfa == rhs_.dfa && - states == rhs_.states && - state == rhs_.state && - transitions == rhs_.transitions && - transition == rhs_.transition && - end_state == rhs_.end_state && - id == rhs_.id && - unique_id == rhs_.unique_id && - goto_dfa == rhs_.goto_dfa && - bol_index == rhs_.bol_index && - eol_index == rhs_.eol_index && - token == rhs_.token && - goto_state == rhs_.goto_state; - } - }; - - iterator () : - _sm (0), - _dfas (0), - _dfa (npos), - _states (0), - _state (npos), - _transitions (0), - _transition (npos) - { - } - - bool operator == (const iterator &rhs_) const - { - return _dfas == rhs_._dfas && _dfa == rhs_._dfa && - _states == rhs_._states && _state == rhs_._state && - _transitions == rhs_._transitions && - _transition == rhs_._transition; - } - - bool operator != (const iterator &rhs_) const - { - return !(*this == rhs_); - } - - data &operator * () - { - return _data; - } - - data *operator -> () - { - return &_data; - } - - // Let compiler generate operator = (). - - // prefix version - iterator &operator ++ () - { - next (); - return *this; - } - - // postfix version - iterator operator ++ (int) - { - iterator iter_ = *this; - - next (); - return iter_; - } - - void clear () - { - _dfas = _states = _transitions = 0; - _dfa = _state = _transition = npos; - } - - private: - basic_state_machine *_sm; - data _data; - std::size_t _dfas; - std::size_t _dfa; - std::size_t _states; - std::size_t _state; - std::size_t _transitions; - std::size_t _transition; - typename detail::basic_char_state_machine::state:: - size_t_string_token_map::const_iterator _token_iter; - typename detail::basic_char_state_machine::state:: - size_t_string_token_map::const_iterator _token_end; - - void next () - { - bool reset_state_ = false; - - if (_transition >= _transitions) - { - _transition = _data.transition = 0; - _data.state = ++_state; - reset_state_ = true; - - if (_state >= _states) - { - ++_dfa; - - if (_dfa >= _dfas) - { - clear (); - reset_state_ = false; - } - else - { - _states = _data.states = - _sm->_csm._sm_vector[_dfa].size (); - _state = _data.state = 0; - } - } - } - else - { - _data.transition = _transition; - } - - if (reset_state_) - { - const typename detail::basic_char_state_machine:: - state *ptr_ = &_sm->_csm._sm_vector[_dfa][_state]; - - _transitions = _data.transitions = ptr_->_transitions.size (); - _data.end_state = ptr_->_end_state; - _data.id = ptr_->_id; - _data.unique_id = ptr_->_unique_id; - _data.goto_dfa = ptr_->_state; - _data.bol_index = ptr_->_bol_index; - _data.eol_index = ptr_->_eol_index; - _token_iter = ptr_->_transitions.begin (); - _token_end = ptr_->_transitions.end (); - } - - if (_token_iter != _token_end) - { - _data.token = _token_iter->second; - _data.goto_state = _token_iter->first; - ++_token_iter; - ++_transition; - } - else - { - _data.token.clear (); - _data.goto_state = npos; - } - } - }; - - friend class iterator; - - basic_state_machine () - { - } - - void clear () - { - _internals.clear (); - _csm.clear (); - } - - bool empty () const - { - // Don't include _csm in this test, as irrelevant to state. - return _internals._lookup->empty () && - _internals._dfa_alphabet.empty () && - _internals._dfa->empty (); - } - - std::size_t size () const - { - return _internals._dfa->size (); - } - - bool operator == (const basic_state_machine &rhs_) const - { - // Don't include _csm in this test, as irrelevant to state. - return _internals._lookup == rhs_._internals._lookup && - _internals._dfa_alphabet == rhs_._internals._dfa_alphabet && - _internals._dfa == rhs_._internals._dfa && - _internals._seen_BOL_assertion == - rhs_._internals._seen_BOL_assertion && - _internals._seen_EOL_assertion == - rhs_._internals._seen_EOL_assertion; - } - - iterator begin () const - { - iterator iter_; - - iter_._sm = const_cast(this); - check_for_csm (); - - if (!_csm.empty ()) - { - const typename detail::basic_char_state_machine:: - state_vector *ptr_ = &_csm._sm_vector.front (); - - iter_._dfas = _csm._sm_vector.size (); - iter_._states = iter_._data.states = ptr_->size (); - iter_._transitions = iter_._data.transitions = - ptr_->front ()._transitions.size (); - iter_._dfa = iter_._data.dfa = 0; - iter_._state = iter_._data.state = 0; - iter_._transition = 0; - iter_._data.end_state = ptr_->front ()._end_state; - iter_._data.id = ptr_->front ()._id; - iter_._data.unique_id = ptr_->front ()._unique_id; - iter_._data.goto_dfa = ptr_->front ()._state; - iter_._data.bol_index = ptr_->front ()._bol_index; - iter_._data.eol_index = ptr_->front ()._eol_index; - iter_._token_iter = ptr_->front ()._transitions.begin (); - iter_._token_end = ptr_->front ()._transitions.end (); - - // Deal with case where there is only a bol or eol - // but no other transitions. - if (iter_._transitions) - { - ++iter_; - } - } - - return iter_; - } - - iterator end () const - { - iterator iter_; - - iter_._sm = const_cast(this); - return iter_; - } - - void swap (basic_state_machine &sm_) - { - _internals.swap (sm_._internals); - _csm.swap (sm_._csm); - } - - const detail::internals &data () const - { - return _internals; - } - -private: - detail::internals _internals; - mutable detail::basic_char_state_machine _csm; - - void check_for_csm () const - { - if (_csm.empty ()) - { - human_readable (_csm); - } - } - - void human_readable (detail::basic_char_state_machine &sm_) const - { - const std::size_t max_ = sizeof (CharT) == 1 ? - num_chars : num_wchar_ts; - const std::size_t start_states_ = _internals._dfa->size (); - - sm_.clear (); - sm_._sm_vector.resize (start_states_); - - for (std::size_t start_state_index_ = 0; - start_state_index_ < start_states_; ++start_state_index_) - { - const detail::internals::size_t_vector *lu_ = - _internals._lookup[start_state_index_]; - const std::size_t alphabet_ = - _internals._dfa_alphabet[start_state_index_] - dfa_offset; - std::vector > chars_ (alphabet_); - const std::size_t states_ = _internals._dfa[start_state_index_]-> - size () / (alphabet_ + dfa_offset); - const std::size_t *read_ptr_ = &_internals. - _dfa[start_state_index_]->front () + alphabet_ + dfa_offset; - - sm_._sm_vector[start_state_index_].resize (states_ - 1); - - for (std::size_t alpha_index_ = 0; alpha_index_ < max_; - ++alpha_index_) - { - const std::size_t col_ = lu_->at (alpha_index_); - - if (col_ != static_cast(dead_state_index)) - { - chars_[col_ - dfa_offset] += static_cast - (alpha_index_); - } - } - - for (std::size_t state_index_ = 1; state_index_ < states_; - ++state_index_) - { - typename detail::basic_char_state_machine::state - *state_ = &sm_._sm_vector[start_state_index_] - [state_index_ - 1]; - - state_->_end_state = *read_ptr_ != 0; - state_->_id = *(read_ptr_ + id_index); - state_->_unique_id = *(read_ptr_ + unique_id_index); - state_->_state = *(read_ptr_ + state_index); - state_->_bol_index = *(read_ptr_ + bol_index) - 1; - state_->_eol_index = *(read_ptr_ + eol_index) - 1; - read_ptr_ += dfa_offset; - - for (std::size_t col_index_ = 0; col_index_ < alphabet_; - ++col_index_, ++read_ptr_) - { - const std::size_t transition_ = *read_ptr_; - - if (transition_ != 0) - { - const std::size_t i_ = transition_ - 1; - typename detail::basic_char_state_machine:: - state::size_t_string_token_map::iterator iter_ = - state_->_transitions.find (i_); - - if (iter_ == state_->_transitions.end ()) - { - basic_string_token token_ - (false, chars_[col_index_]); - typename detail::basic_char_state_machine:: - state::size_t_string_token_pair pair_ - (i_, token_); - - state_->_transitions.insert (pair_); - } - else - { - iter_->second._charset += chars_[col_index_]; - } - } - } - - for (typename detail::basic_char_state_machine::state:: - size_t_string_token_map::iterator iter_ = - state_->_transitions.begin (), - end_ = state_->_transitions.end (); - iter_ != end_; ++iter_) - { - std::sort (iter_->second._charset.begin (), - iter_->second._charset.end ()); - iter_->second.normalise (); - } - } - } - } -}; - -typedef basic_state_machine state_machine; -typedef basic_state_machine wstate_machine; -} -} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/string_token.hpp b/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/string_token.hpp deleted file mode 100644 index f5b985537836..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/detail/lexer/string_token.hpp +++ /dev/null @@ -1,407 +0,0 @@ -// string_token.hpp -// Copyright (c) 2007-2009 Ben Hanson (http://www.benhanson.net/) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file licence_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#ifndef BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_STRING_TOKEN_HPP -#define BOOST_SPIRIT_SUPPORT_DETAIL_LEXER_STRING_TOKEN_HPP - -#include -#include "size_t.hpp" -#include "consts.hpp" // num_chars, num_wchar_ts -#include -#include -#include - -namespace boost -{ -namespace lexer -{ -template -struct basic_string_token -{ - typedef std::basic_string string; - - bool _negated; - string _charset; - - basic_string_token () : - _negated (false) - { - } - - basic_string_token (const bool negated_, const string &charset_) : - _negated (negated_), - _charset (charset_) - { - } - - void remove_duplicates () - { - const CharT *start_ = _charset.c_str (); - const CharT *end_ = start_ + _charset.size (); - - // Optimisation for very large charsets: - // sorting via pointers is much quicker than - // via iterators... - std::sort (const_cast (start_), const_cast (end_)); - _charset.erase (std::unique (_charset.begin (), _charset.end ()), - _charset.end ()); - } - - void normalise () - { - const std::size_t max_chars_ = sizeof (CharT) == 1 ? - num_chars : num_wchar_ts; - - if (_charset.length () == max_chars_) - { - _negated = !_negated; - _charset.clear (); - } - else if (_charset.length () > max_chars_ / 2) - { - negate (); - } - } - - void negate () - { - const std::size_t max_chars_ = sizeof (CharT) == 1 ? - num_chars : num_wchar_ts; - CharT curr_char_ = (std::numeric_limits::min)(); - string temp_; - const CharT *curr_ = _charset.c_str (); - const CharT *chars_end_ = curr_ + _charset.size (); - - _negated = !_negated; - temp_.resize (max_chars_ - _charset.size ()); - - CharT *ptr_ = const_cast (temp_.c_str ()); - std::size_t i_ = 0; - - while (curr_ < chars_end_) - { - while (*curr_ > curr_char_) - { - *ptr_ = curr_char_; - ++ptr_; - ++curr_char_; - ++i_; - } - - ++curr_char_; - ++curr_; - ++i_; - } - - for (; i_ < max_chars_; ++i_) - { - *ptr_ = curr_char_; - ++ptr_; - ++curr_char_; - } - - _charset = temp_; - } - - bool operator < (const basic_string_token &rhs_) const - { - return _negated < rhs_._negated || - (_negated == rhs_._negated && _charset < rhs_._charset); - } - - bool empty () const - { - return _charset.empty () && !_negated; - } - - bool any () const - { - return _charset.empty () && _negated; - } - - void clear () - { - _negated = false; - _charset.clear (); - } - - void intersect (basic_string_token &rhs_, basic_string_token &overlap_) - { - if ((any () && rhs_.any ()) || (_negated == rhs_._negated && - !any () && !rhs_.any ())) - { - intersect_same_types (rhs_, overlap_); - } - else - { - intersect_diff_types (rhs_, overlap_); - } - } - - static void escape_char (const CharT ch_, string &out_) - { - switch (ch_) - { - case '\0': - out_ += '\\'; - out_ += '0'; - break; - case '\a': - out_ += '\\'; - out_ += 'a'; - break; - case '\b': - out_ += '\\'; - out_ += 'b'; - break; - case 27: - out_ += '\\'; - out_ += 'x'; - out_ += '1'; - out_ += 'b'; - break; - case '\f': - out_ += '\\'; - out_ += 'f'; - break; - case '\n': - out_ += '\\'; - out_ += 'n'; - break; - case '\r': - out_ += '\\'; - out_ += 'r'; - break; - case '\t': - out_ += '\\'; - out_ += 't'; - break; - case '\v': - out_ += '\\'; - out_ += 'v'; - break; - case '\\': - out_ += '\\'; - out_ += '\\'; - break; - case '"': - out_ += '\\'; - out_ += '"'; - break; - case '\'': - out_ += '\\'; - out_ += '\''; - break; - default: - { - if (ch_ < 32 && ch_ >= 0) - { - std::basic_stringstream ss_; - - out_ += '\\'; - out_ += 'x'; - ss_ << std::hex << - static_cast (ch_); - out_ += ss_.str (); - } - else - { - out_ += ch_; - } - - break; - } - } - } - -private: - void intersect_same_types (basic_string_token &rhs_, - basic_string_token &overlap_) - { - if (any ()) - { - clear (); - overlap_._negated = true; - rhs_.clear (); - } - else - { - typename string::iterator iter_ = _charset.begin (); - typename string::iterator end_ = _charset.end (); - typename string::iterator rhs_iter_ = rhs_._charset.begin (); - typename string::iterator rhs_end_ = rhs_._charset.end (); - - overlap_._negated = _negated; - - while (iter_ != end_ && rhs_iter_ != rhs_end_) - { - if (*iter_ < *rhs_iter_) - { - ++iter_; - } - else if (*iter_ > *rhs_iter_) - { - ++rhs_iter_; - } - else - { - overlap_._charset += *iter_; - iter_ = _charset.erase (iter_); - end_ = _charset.end (); - rhs_iter_ = rhs_._charset.erase (rhs_iter_); - rhs_end_ = rhs_._charset.end (); - } - } - - if (_negated) - { - // duplicates already merged, so safe to merge - // using std lib. - - // src, dest - merge (_charset, overlap_._charset); - // duplicates already merged, so safe to merge - // using std lib. - - // src, dest - merge (rhs_._charset, overlap_._charset); - _negated = false; - rhs_._negated = false; - std::swap (_charset, rhs_._charset); - normalise (); - overlap_.normalise (); - rhs_.normalise (); - } - else if (!overlap_._charset.empty ()) - { - normalise (); - overlap_.normalise (); - rhs_.normalise (); - } - } - } - - void intersect_diff_types (basic_string_token &rhs_, - basic_string_token &overlap_) - { - if (any ()) - { - intersect_any (rhs_, overlap_); - } - else if (_negated) - { - intersect_negated (rhs_, overlap_); - } - else // _negated == false - { - intersect_charset (rhs_, overlap_); - } - } - - void intersect_any (basic_string_token &rhs_, basic_string_token &overlap_) - { - if (rhs_._negated) - { - rhs_.intersect_negated (*this, overlap_); - } - else // rhs._negated == false - { - rhs_.intersect_charset (*this, overlap_); - } - } - - void intersect_negated (basic_string_token &rhs_, - basic_string_token &overlap_) - { - if (rhs_.any ()) - { - overlap_._negated = true; - overlap_._charset = _charset; - rhs_._negated = false; - rhs_._charset = _charset; - clear (); - } - else // rhs._negated == false - { - rhs_.intersect_charset (*this, overlap_); - } - } - - void intersect_charset (basic_string_token &rhs_, - basic_string_token &overlap_) - { - if (rhs_.any ()) - { - overlap_._charset = _charset; - rhs_._negated = true; - rhs_._charset = _charset; - clear (); - } - else // rhs_._negated == true - { - typename string::iterator iter_ = _charset.begin (); - typename string::iterator end_ = _charset.end (); - typename string::iterator rhs_iter_ = rhs_._charset.begin (); - typename string::iterator rhs_end_ = rhs_._charset.end (); - - while (iter_ != end_ && rhs_iter_ != rhs_end_) - { - if (*iter_ < *rhs_iter_) - { - overlap_._charset += *iter_; - rhs_iter_ = rhs_._charset.insert (rhs_iter_, *iter_); - ++rhs_iter_; - rhs_end_ = rhs_._charset.end (); - iter_ = _charset.erase (iter_); - end_ = _charset.end (); - } - else if (*iter_ > *rhs_iter_) - { - ++rhs_iter_; - } - else - { - ++iter_; - ++rhs_iter_; - } - } - - if (iter_ != end_) - { - // nothing bigger in rhs_ than iter_, - // so safe to merge using std lib. - string temp_ (iter_, end_); - - // src, dest - merge (temp_, overlap_._charset); - _charset.erase (iter_, end_); - } - - if (!overlap_._charset.empty ()) - { - merge (overlap_._charset, rhs_._charset); - // possible duplicates, so check for any and erase. - rhs_._charset.erase (std::unique (rhs_._charset.begin (), - rhs_._charset.end ()), rhs_._charset.end ()); - normalise (); - overlap_.normalise (); - rhs_.normalise (); - } - } - } - - void merge (string &src_, string &dest_) - { - string tmp_ (src_.size () + dest_.size (), 0); - - std::merge (src_.begin (), src_.end (), dest_.begin (), dest_.end (), - tmp_.begin ()); - dest_ = tmp_; - } -}; -} -} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/detail/make_cons.hpp b/framework/contrib/boost/include/boost/spirit/home/support/detail/make_cons.hpp deleted file mode 100644 index 488f19c4cc1c..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/detail/make_cons.hpp +++ /dev/null @@ -1,83 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_MAKE_CONS_OCTOBER_16_2008_1252PM -#define BOOST_SPIRIT_MAKE_CONS_OCTOBER_16_2008_1252PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace detail -{ - template - struct as_meta_element - : mpl::eval_if_c::value || is_function::value - , add_reference, remove_const > - {}; - - template - struct as_meta_element : as_meta_element // always store by value - {}; - - template - struct as_meta_element - { - typedef const T(&type)[N]; - }; - - namespace result_of - { - template - struct make_cons - { - typedef typename as_meta_element::type car_type; typedef typename fusion::cons type; - }; - } - - template - fusion::cons::type, Cdr> - make_cons(Car const& car, Cdr const& cdr) - { - typedef typename as_meta_element::type car_type; - typedef typename fusion::cons result; - return result(car, cdr); - } - - template - fusion::cons::type> - make_cons(Car const& car) - { - typedef typename as_meta_element::type car_type; - typedef typename fusion::cons result; - return result(car); - } - -#if defined(__GNUC__) && (__GNUC__ == 4) && (__GNUC_MINOR__ == 0) - // workaround for gcc-4.0 bug where illegal function types - // can be formed (const is added to function type) - // description: http://lists.boost.org/Archives/boost/2009/04/150743.php - template - fusion::cons::type> - make_cons(Car& car, typename enable_if >::type* = 0) - { - typedef typename as_meta_element::type car_type; - typedef typename fusion::cons result; - return result(car); - } -#endif -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/detail/make_vector.hpp b/framework/contrib/boost/include/boost/spirit/home/support/detail/make_vector.hpp deleted file mode 100644 index 32a1eabacacb..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/detail/make_vector.hpp +++ /dev/null @@ -1,21 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2010 Joel de Guzman - - 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) -==============================================================================*/ -#ifndef BOOST_SPIRIT_SUPPORT_DETAIL_MAKE_VECTOR_HPP -#define BOOST_SPIRIT_SUPPORT_DETAIL_MAKE_VECTOR_HPP - -#include - -namespace boost { namespace spirit { namespace detail -{ - namespace result_of - { - using fusion::result_of::make_vector; - } - using fusion::make_vector; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/detail/pow10.hpp b/framework/contrib/boost/include/boost/spirit/home/support/detail/pow10.hpp deleted file mode 100644 index 4559d7d93900..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/detail/pow10.hpp +++ /dev/null @@ -1,114 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - Copyright (c) 2001-2011 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_SUPPORT_DETAIL_POW10_HPP -#define BOOST_SPIRIT_SUPPORT_DETAIL_POW10_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include - -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -# pragma warning(push) -# pragma warning(disable: 4244) // conversion from 'double' to 'float', possible loss of data -#endif - -namespace boost { namespace spirit { namespace traits -{ - template - struct pow10_helper - { - static T call(unsigned dim) - { - using namespace std; // allow for ADL to find the correct overload - return pow(T(10), T(dim)); - } - }; - - template <> - struct pow10_helper - { - static unused_type call(unused_type) - { - return unused; - } - }; - -#if (DBL_MAX_10_EXP == 308) // for IEEE-754 - template <> - struct pow10_helper - { - static double call(unsigned dim) - { - static double const exponents[] = - { - 1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, - 1e10, 1e11, 1e12, 1e13, 1e14, 1e15, 1e16, 1e17, 1e18, 1e19, - 1e20, 1e21, 1e22, 1e23, 1e24, 1e25, 1e26, 1e27, 1e28, 1e29, - 1e30, 1e31, 1e32, 1e33, 1e34, 1e35, 1e36, 1e37, 1e38, 1e39, - 1e40, 1e41, 1e42, 1e43, 1e44, 1e45, 1e46, 1e47, 1e48, 1e49, - 1e50, 1e51, 1e52, 1e53, 1e54, 1e55, 1e56, 1e57, 1e58, 1e59, - 1e60, 1e61, 1e62, 1e63, 1e64, 1e65, 1e66, 1e67, 1e68, 1e69, - 1e70, 1e71, 1e72, 1e73, 1e74, 1e75, 1e76, 1e77, 1e78, 1e79, - 1e80, 1e81, 1e82, 1e83, 1e84, 1e85, 1e86, 1e87, 1e88, 1e89, - 1e90, 1e91, 1e92, 1e93, 1e94, 1e95, 1e96, 1e97, 1e98, 1e99, - 1e100, 1e101, 1e102, 1e103, 1e104, 1e105, 1e106, 1e107, 1e108, 1e109, - 1e110, 1e111, 1e112, 1e113, 1e114, 1e115, 1e116, 1e117, 1e118, 1e119, - 1e120, 1e121, 1e122, 1e123, 1e124, 1e125, 1e126, 1e127, 1e128, 1e129, - 1e130, 1e131, 1e132, 1e133, 1e134, 1e135, 1e136, 1e137, 1e138, 1e139, - 1e140, 1e141, 1e142, 1e143, 1e144, 1e145, 1e146, 1e147, 1e148, 1e149, - 1e150, 1e151, 1e152, 1e153, 1e154, 1e155, 1e156, 1e157, 1e158, 1e159, - 1e160, 1e161, 1e162, 1e163, 1e164, 1e165, 1e166, 1e167, 1e168, 1e169, - 1e170, 1e171, 1e172, 1e173, 1e174, 1e175, 1e176, 1e177, 1e178, 1e179, - 1e180, 1e181, 1e182, 1e183, 1e184, 1e185, 1e186, 1e187, 1e188, 1e189, - 1e190, 1e191, 1e192, 1e193, 1e194, 1e195, 1e196, 1e197, 1e198, 1e199, - 1e200, 1e201, 1e202, 1e203, 1e204, 1e205, 1e206, 1e207, 1e208, 1e209, - 1e210, 1e211, 1e212, 1e213, 1e214, 1e215, 1e216, 1e217, 1e218, 1e219, - 1e220, 1e221, 1e222, 1e223, 1e224, 1e225, 1e226, 1e227, 1e228, 1e229, - 1e230, 1e231, 1e232, 1e233, 1e234, 1e235, 1e236, 1e237, 1e238, 1e239, - 1e240, 1e241, 1e242, 1e243, 1e244, 1e245, 1e246, 1e247, 1e248, 1e249, - 1e250, 1e251, 1e252, 1e253, 1e254, 1e255, 1e256, 1e257, 1e258, 1e259, - 1e260, 1e261, 1e262, 1e263, 1e264, 1e265, 1e266, 1e267, 1e268, 1e269, - 1e270, 1e271, 1e272, 1e273, 1e274, 1e275, 1e276, 1e277, 1e278, 1e279, - 1e280, 1e281, 1e282, 1e283, 1e284, 1e285, 1e286, 1e287, 1e288, 1e289, - 1e290, 1e291, 1e292, 1e293, 1e294, 1e295, 1e296, 1e297, 1e298, 1e299, - 1e300, 1e301, 1e302, 1e303, 1e304, 1e305, 1e306, 1e307, 1e308, - }; - BOOST_ASSERT(dim < sizeof(exponents)/sizeof(double)); - return exponents[dim]; - } - }; - - template <> - struct pow10_helper - { - static float call(unsigned dim) - { - return pow10_helper::call(dim); - } - }; -#endif // for IEEE-754 - - template - inline T pow10(unsigned dim) - { - return pow10_helper::call(dim); - } -}}} - -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -# pragma warning(pop) -#endif - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/detail/scoped_enum_emulation.hpp b/framework/contrib/boost/include/boost/spirit/home/support/detail/scoped_enum_emulation.hpp deleted file mode 100644 index 4fa9f9240cae..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/detail/scoped_enum_emulation.hpp +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright (c) 2001-2011 Hartmut Kaiser -// http://spirit.sourceforge.net/ -// -// 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) - -#ifndef BOOST_SPIRIT_SCOPED_ENUM_EMULATION_HPP -#define BOOST_SPIRIT_SCOPED_ENUM_EMULATION_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include - -#if BOOST_VERSION >= 105600 -# include -#elif BOOST_VERSION >= 104000 -# include -#else -# if !defined(BOOST_NO_CXX11_SCOPED_ENUMS) -# define BOOST_NO_CXX11_SCOPED_ENUMS -# endif -# define BOOST_SCOPED_ENUM_START(name) struct name { enum enum_type -# define BOOST_SCOPED_ENUM_END }; -# define BOOST_SCOPED_ENUM(name) name::enum_type -#endif - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/detail/what_function.hpp b/framework/contrib/boost/include/boost/spirit/home/support/detail/what_function.hpp deleted file mode 100644 index baf9ee65d7bc..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/detail/what_function.hpp +++ /dev/null @@ -1,51 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_SUPPORT_DETAIL_WHAT_FUNCTION_HPP -#define BOOST_SPIRIT_SUPPORT_DETAIL_WHAT_FUNCTION_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include - -namespace boost { namespace spirit { namespace detail -{ -#ifdef _MSC_VER -# pragma warning(push) -# pragma warning(disable: 4512) // assignment operator could not be generated. -#endif - template - struct what_function - { - what_function(info& what_, Context& context_) - : what(what_), context(context_) - { - what.value = std::list(); - } - - template - void operator()(Component const& component) const - { -#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1600)) - (void)component; // suppresses warning: C4100: 'component' : unreferenced formal parameter -#endif - boost::get >(what.value). - push_back(component.what(context)); - } - - info& what; - Context& context; - }; -#ifdef _MSC_VER -# pragma warning(pop) -#endif -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/extended_variant.hpp b/framework/contrib/boost/include/boost/spirit/home/support/extended_variant.hpp deleted file mode 100644 index bb2ea0d35329..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/extended_variant.hpp +++ /dev/null @@ -1,185 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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_EXTENDED_VARIANT_AUGUST_6_2011_0859AM) -#define BOOST_SPIRIT_EXTENDED_VARIANT_AUGUST_6_2011_0859AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include - -#if !defined(BOOST_VARIANT_DO_NOT_USE_VARIADIC_TEMPLATES) -#define BOOST_SPIRIT_EXTENDED_VARIANT_LIMIT_TYPES BOOST_MPL_LIMIT_LIST_SIZE -#else -#define BOOST_SPIRIT_EXTENDED_VARIANT_LIMIT_TYPES BOOST_VARIANT_LIMIT_TYPES -#endif - -#define BOOST_SPIRIT_EXTENDED_VARIANT_ENUM_PARAMS(T) \ - BOOST_PP_ENUM_PARAMS(BOOST_SPIRIT_EXTENDED_VARIANT_LIMIT_TYPES, T) \ - /**/ - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit -{ -#if defined(BOOST_VARIANT_DO_NOT_USE_VARIADIC_TEMPLATES) - template < - BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( - BOOST_SPIRIT_EXTENDED_VARIANT_LIMIT_TYPES, - typename T, boost::detail::variant::void_) - // We should not be depending on detail::variant::void_ - // but I'm not sure if this can fixed. Any other way is - // clumsy at best. - > -#else - template -#endif - struct extended_variant - { - // tell spirit that this is an adapted variant - struct adapted_variant_tag; - -#if defined(BOOST_VARIANT_DO_NOT_USE_VARIADIC_TEMPLATES) - typedef boost::variant< - BOOST_SPIRIT_EXTENDED_VARIANT_ENUM_PARAMS(T)> - variant_type; - typedef typename variant_type::types types; - - typedef extended_variant< - BOOST_SPIRIT_EXTENDED_VARIANT_ENUM_PARAMS(T) - > base_type; -#else - typedef boost::variant variant_type; - typedef typename variant_type::types types; - typedef extended_variant base_type; -#endif - - extended_variant() : var() {} - - template - extended_variant(T const& var) - : var(var) {} - - template - extended_variant(T& var) - : var(var) {} - - template - typename F::result_type apply_visitor(F const& v) - { - return var.apply_visitor(v); - } - - template - typename F::result_type apply_visitor(F const& v) const - { - return var.apply_visitor(v); - } - - template - typename F::result_type apply_visitor(F& v) - { - return var.apply_visitor(v); - } - - template - typename F::result_type apply_visitor(F& v) const - { - return var.apply_visitor(v); - } - - variant_type const& get() const - { - return var; - } - - variant_type& get() - { - return var; - } - - void swap(extended_variant& rhs) BOOST_NOEXCEPT - { - var.swap(rhs.var); - } - - variant_type var; - }; -}} - -namespace boost -{ -#if defined(BOOST_VARIANT_DO_NOT_USE_VARIADIC_TEMPLATES) - template - inline T const& - get(boost::spirit::extended_variant< - BOOST_SPIRIT_EXTENDED_VARIANT_ENUM_PARAMS(T)> const& x) - { - return boost::get(x.get()); - } - - template - inline T& - get(boost::spirit::extended_variant< - BOOST_SPIRIT_EXTENDED_VARIANT_ENUM_PARAMS(T)>& x) - { - return boost::get(x.get()); - } - - template - inline T const* - get(boost::spirit::extended_variant< - BOOST_SPIRIT_EXTENDED_VARIANT_ENUM_PARAMS(T)> const* x) - { - return boost::get(&x->get()); - } - - template - inline T* - get(boost::spirit::extended_variant< - BOOST_SPIRIT_EXTENDED_VARIANT_ENUM_PARAMS(T)>* x) - { - return boost::get(&x->get()); - } -#else - template - inline T const& - get(boost::spirit::extended_variant const& x) - { - return boost::get(x.get()); - } - - template - inline T& - get(boost::spirit::extended_variant& x) - { - return boost::get(x.get()); - } - - template - inline T const* - get(boost::spirit::extended_variant const* x) - { - return boost::get(&x->get()); - } - - template - inline T* - get(boost::spirit::extended_variant* x) - { - return boost::get(&x->get()); - } -#endif -} - -#undef BOOST_SPIRIT_EXTENDED_VARIANT_ENUM_PARAMS -#undef BOOST_SPIRIT_EXTENDED_VARIANT_LIMIT_TYPES - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/handles_container.hpp b/framework/contrib/boost/include/boost/spirit/home/support/handles_container.hpp deleted file mode 100644 index 876c9a921786..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/handles_container.hpp +++ /dev/null @@ -1,55 +0,0 @@ -/*============================================================================= - 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_HANDLES_CONTAINER_DEC_18_2010_0920AM) -#define BOOST_SPIRIT_HANDLES_CONTAINER_DEC_18_2010_0920AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace traits -{ - // Finds out whether a component handles container attributes intrinsically - // (or whether container attributes need to be split up separately). - template - struct handles_container : mpl::false_ {}; - - template - struct unary_handles_container - : handles_container {}; - - template - struct binary_handles_container - : mpl::or_< - handles_container - , handles_container > - {}; - - template - struct nary_handles_container - : mpl::not_< - is_same< - typename mpl::find_if< - Elements, handles_container - >::type - , typename mpl::end::type> > - {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/has_semantic_action.hpp b/framework/contrib/boost/include/boost/spirit/home/support/has_semantic_action.hpp deleted file mode 100644 index b4cb4e7c5451..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/has_semantic_action.hpp +++ /dev/null @@ -1,47 +0,0 @@ -/*============================================================================= - 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_HAS_SEMANTIC_ACTION_SEP_20_2009_0626PM) -#define BOOST_SPIRIT_HAS_SEMANTIC_ACTION_SEP_20_2009_0626PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace traits -{ - // finding out, whether a component contains a semantic action - template - struct has_semantic_action - : mpl::false_ {}; - - template - struct unary_has_semantic_action - : has_semantic_action {}; - - template - struct binary_has_semantic_action - : mpl::or_, has_semantic_action > {}; - - template - struct nary_has_semantic_action - : mpl::not_< - is_same< - typename mpl::find_if< - Elements, has_semantic_action - >::type - , typename mpl::end::type - > - > {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/info.hpp b/framework/contrib/boost/include/boost/spirit/home/support/info.hpp deleted file mode 100644 index 3d310a57a615..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/info.hpp +++ /dev/null @@ -1,158 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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_INFO_NOVEMBER_22_2008_1132AM) -#define BOOST_SPIRIT_INFO_NOVEMBER_22_2008_1132AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - // info provides information about a component. Each component - // has a what member function that returns an info object. - // strings in the info object are assumed to be encoded as UTF8 - // for uniformity. - struct info - { - struct nil_ {}; - - typedef - boost::variant< - nil_ - , utf8_string - , recursive_wrapper - , recursive_wrapper > - , recursive_wrapper > - > - value_type; - - explicit info(utf8_string const& tag_) - : tag(tag_), value(nil_()) {} - - template - info(utf8_string const& tag_, T const& value_) - : tag(tag_), value(value_) {} - - info(utf8_string const& tag_, char value_) - : tag(tag_), value(utf8_string(1, value_)) {} - - info(utf8_string const& tag_, wchar_t value_) - : tag(tag_), value(to_utf8(value_)) {} - - info(utf8_string const& tag_, ucs4_char value_) - : tag(tag_), value(to_utf8(value_)) {} - - template - info(utf8_string const& tag_, Char const* str) - : tag(tag_), value(to_utf8(str)) {} - - template - info(utf8_string const& tag_ - , std::basic_string const& str) - : tag(tag_), value(to_utf8(str)) {} - - utf8_string tag; - value_type value; - }; - -#ifdef _MSC_VER -# pragma warning(push) -# pragma warning(disable: 4512) // assignment operator could not be generated. -#endif - template - struct basic_info_walker - { - typedef void result_type; - typedef basic_info_walker this_type; - - basic_info_walker(Callback& callback_, utf8_string const& tag_, int depth_) - : callback(callback_), tag(tag_), depth(depth_) {} - - void operator()(info::nil_) const - { - callback.element(tag, "", depth); - } - - void operator()(utf8_string const& str) const - { - callback.element(tag, str, depth); - } - - void operator()(info const& what) const - { - boost::apply_visitor( - this_type(callback, what.tag, depth+1), what.value); - } - - void operator()(std::pair const& pair) const - { - callback.element(tag, "", depth); - boost::apply_visitor( - this_type(callback, pair.first.tag, depth+1), pair.first.value); - boost::apply_visitor( - this_type(callback, pair.second.tag, depth+1), pair.second.value); - } - - void operator()(std::list const& l) const - { - callback.element(tag, "", depth); - for (std::list::const_iterator it = l.begin(), - end = l.end(); it != end; ++it) - { - boost::apply_visitor( - this_type(callback, it->tag, depth+1), it->value); - } - } - - Callback& callback; - utf8_string const& tag; - int depth; - }; - - // bare-bones print support - template - struct simple_printer - { - typedef utf8_string string; - - simple_printer(Out& out_) - : out(out_) {} - - void element(string const& tag, string const& value, int /*depth*/) const - { - if (value.empty()) - out << '<' << tag << '>'; - else - out << '"' << value << '"'; - } - - Out& out; - }; -#ifdef _MSC_VER -# pragma warning(pop) -#endif - - template - Out& operator<<(Out& out, info const& what) - { - simple_printer pr(out); - basic_info_walker > walker(pr, what.tag, 0); - boost::apply_visitor(walker, what.value); - return out; - } -}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/iterators/detail/buf_id_check_policy.hpp b/framework/contrib/boost/include/boost/spirit/home/support/iterators/detail/buf_id_check_policy.hpp deleted file mode 100644 index 2c7b91f92e30..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/iterators/detail/buf_id_check_policy.hpp +++ /dev/null @@ -1,91 +0,0 @@ -// Copyright (c) 2001, Daniel C. Nuffer -// 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_ITERATOR_BUF_ID_CHECK_POLICY_MAR_16_2007_1108AM) -#define BOOST_SPIRIT_ITERATOR_BUF_ID_CHECK_POLICY_MAR_16_2007_1108AM - -#include -#include -#include -#include -#include -#include // for std::exception - -namespace boost { namespace spirit { namespace iterator_policies -{ - /////////////////////////////////////////////////////////////////////////// - // class illegal_backtracking - // thrown by buf_id_check CheckingPolicy if an instance of an iterator is - // used after another one has invalidated the queue - /////////////////////////////////////////////////////////////////////////// - class BOOST_SYMBOL_VISIBLE illegal_backtracking : public std::exception - { - public: - illegal_backtracking() BOOST_NOEXCEPT_OR_NOTHROW {} - ~illegal_backtracking() BOOST_NOEXCEPT_OR_NOTHROW BOOST_OVERRIDE {} - - char const* what() const BOOST_NOEXCEPT_OR_NOTHROW BOOST_OVERRIDE - { - return "boost::spirit::multi_pass::illegal_backtracking"; - } - }; - - /////////////////////////////////////////////////////////////////////////////// - // class buf_id_check - // Implementation of the CheckingPolicy used by multi_pass - // This policy is most effective when used together with the std_deque - // StoragePolicy. - // - // If used with the fixed_size_queue StoragePolicy, it will not detect - // iterator dereferences that are out of the range of the queue. - /////////////////////////////////////////////////////////////////////////////// - struct buf_id_check - { - /////////////////////////////////////////////////////////////////////// - struct unique //: detail::default_checking_policy - { - unique() : buf_id(0) {} - unique(unique const& x) : buf_id(x.buf_id) {} - - void swap(unique& x) - { - boost::core::invoke_swap(buf_id, x.buf_id); - } - - // called to verify that everything is ok. - template - static void docheck(MultiPass const& mp) - { - if (mp.buf_id != mp.shared()->shared_buf_id) - boost::throw_exception(illegal_backtracking()); - } - - // called from multi_pass::clear_queue, so we can increment the count - template - static void clear_queue(MultiPass& mp) - { - ++mp.shared()->shared_buf_id; - ++mp.buf_id; - } - - template - static void destroy(MultiPass&) {} - - protected: - unsigned long buf_id; - }; - - /////////////////////////////////////////////////////////////////////// - struct shared - { - shared() : shared_buf_id(0) {} - unsigned long shared_buf_id; - }; - }; - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/iterators/detail/buffering_input_iterator_policy.hpp b/framework/contrib/boost/include/boost/spirit/home/support/iterators/detail/buffering_input_iterator_policy.hpp deleted file mode 100644 index bbc85d33aa55..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/iterators/detail/buffering_input_iterator_policy.hpp +++ /dev/null @@ -1,128 +0,0 @@ -// Copyright (c) 2001 Daniel C. Nuffer -// 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_BUFFERING_ITERATOR_INPUT_ITERATOR_POLICY_MAR_04_2010_1224AM) -#define BOOST_SPIRIT_BUFFERING_ITERATOR_INPUT_ITERATOR_POLICY_MAR_04_2010_1224AM - -#include -#include -#include -#include -#include // for std::iterator_traits - -namespace boost { namespace spirit { namespace iterator_policies -{ - /////////////////////////////////////////////////////////////////////////// - // class input_iterator - // - // Implementation of the InputPolicy used by multi_pass, this is different - // from the input_iterator policy only as it is buffering the last input - // character to allow returning it by reference. This is needed for - // wrapping iterators not buffering the last item (such as the - // std::istreambuf_iterator). Unfortunately there is no way to - // automatically figure this out at compile time. - // - // The buffering_input_iterator encapsulates an input iterator of type T - /////////////////////////////////////////////////////////////////////////// - struct buffering_input_iterator - { - /////////////////////////////////////////////////////////////////////// - template - class unique // : public detail::default_input_policy - { - private: - typedef - typename std::iterator_traits::value_type - result_type; - - public: - typedef - typename std::iterator_traits::difference_type - difference_type; - typedef - typename std::iterator_traits::difference_type - distance_type; - typedef - typename std::iterator_traits::pointer - pointer; - typedef result_type& reference; - typedef result_type value_type; - - protected: - unique() {} - explicit unique(T) {} - - void swap(unique&) {} - - public: - template - static void destroy(MultiPass&) {} - - template - static typename MultiPass::reference get_input(MultiPass& mp) - { - return mp.shared()->get_input(); - } - - template - static void advance_input(MultiPass& mp) - { - BOOST_ASSERT(0 != mp.shared()); - mp.shared()->advance_input(); - } - - // test, whether we reached the end of the underlying stream - template - static bool input_at_eof(MultiPass const& mp) - { - static T const end_iter; - return mp.shared()->input_ == end_iter; - } - - template - static bool input_is_valid(MultiPass const& mp, value_type const&) - { - return mp.shared()->input_is_valid_; - } - - // no unique data elements - }; - - /////////////////////////////////////////////////////////////////////// - template - struct shared - { - typedef - typename std::iterator_traits::value_type - result_type; - - explicit shared(T const& input) - : input_(input), curtok_(0), input_is_valid_(false) {} - - void advance_input() - { - ++input_; - input_is_valid_ = false; - } - - result_type& get_input() - { - if (!input_is_valid_) { - curtok_ = *input_; - input_is_valid_ = true; - } - return curtok_; - } - - T input_; - result_type curtok_; - bool input_is_valid_; - }; - }; - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/iterators/detail/combine_policies.hpp b/framework/contrib/boost/include/boost/spirit/home/support/iterators/detail/combine_policies.hpp deleted file mode 100644 index 06946b82f7a0..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/iterators/detail/combine_policies.hpp +++ /dev/null @@ -1,520 +0,0 @@ -// Copyright (c) 2001-2012 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_ITERATOR_COMBINE_POLICIES_APR_06_2008_0136PM) -#define BOOST_SPIRIT_ITERATOR_COMBINE_POLICIES_APR_06_2008_0136PM - -#include -#include - -namespace boost { namespace spirit { namespace iterator_policies -{ - /////////////////////////////////////////////////////////////////////////// - // The purpose of the multi_pass_unique template is to eliminate - // empty policy classes (policies not containing any data items) from the - // multiple inheritance chain. This is necessary since some compilers - // fail to apply the empty base optimization if multiple inheritance is - // involved. - // Additionally this can be used to combine separate policies into one - // single multi_pass_policy as required by the multi_pass template - /////////////////////////////////////////////////////////////////////////// - - /////////////////////////////////////////////////////////////////////////// - // select the correct derived classes based on if a policy is empty - template ::value - , bool CheckingIsEmpty = boost::is_empty::value - , bool InputIsEmpty = boost::is_empty::value> - struct multi_pass_unique; - - /////////////////////////////////////////////////////////////////////////// - template - struct multi_pass_unique - : Ownership, Checking, Input, Storage - { - multi_pass_unique() {} - multi_pass_unique(T& x) : Input(x) {} - multi_pass_unique(T const& x) : Input(x) {} - - template - static void destroy(MultiPass& mp) - { - Ownership::destroy(mp); - Checking::destroy(mp); - Input::destroy(mp); - Storage::destroy(mp); - } - - void swap(multi_pass_unique& x) - { - this->Ownership::swap(x); - this->Checking::swap(x); - this->Input::swap(x); - this->Storage::swap(x); - } - - template - inline static void clear_queue(MultiPass& mp) - { - Checking::clear_queue(mp); - Storage::clear_queue(mp); - } - }; - - /////////////////////////////////////////////////////////////////////////// - template - struct multi_pass_unique - : Ownership, Checking, Storage - { - multi_pass_unique() {} - multi_pass_unique(T const&) {} - - template - static void destroy(MultiPass& mp) - { - Ownership::destroy(mp); - Checking::destroy(mp); - Input::destroy(mp); - Storage::destroy(mp); - } - - void swap(multi_pass_unique& x) - { - this->Ownership::swap(x); - this->Checking::swap(x); - this->Storage::swap(x); - } - - template - inline static void clear_queue(MultiPass& mp) - { - Checking::clear_queue(mp); - Storage::clear_queue(mp); - } - - // implement input policy functions by forwarding to the Input type - template - inline static void advance_input(MultiPass& mp) - { Input::advance_input(mp); } - - template - inline static typename MultiPass::reference get_input(MultiPass& mp) - { return Input::get_input(mp); } - - template - inline static bool input_at_eof(MultiPass const& mp) - { return Input::input_at_eof(mp); } - - template - inline static bool input_is_valid(MultiPass& mp, TokenType& curtok) - { return Input::input_is_valid(mp, curtok); } - }; - - /////////////////////////////////////////////////////////////////////////// - template - struct multi_pass_unique - : Ownership, Input, Storage - { - multi_pass_unique() {} - multi_pass_unique(T& x) : Input(x) {} - multi_pass_unique(T const& x) : Input(x) {} - - template - static void destroy(MultiPass& mp) - { - Ownership::destroy(mp); - Input::destroy(mp); - Storage::destroy(mp); - } - - void swap(multi_pass_unique& x) - { - this->Ownership::swap(x); - this->Input::swap(x); - this->Storage::swap(x); - } - - template - inline static void clear_queue(MultiPass& mp) - { - Checking::clear_queue(mp); - Storage::clear_queue(mp); - } - - // checking policy functions are forwarded to the Checking type - template - inline static void docheck(MultiPass const& mp) - { Checking::docheck(mp); } - }; - - /////////////////////////////////////////////////////////////////////////// - template - struct multi_pass_unique - : Ownership, Storage - { - multi_pass_unique() {} - multi_pass_unique(T const&) {} - - template - static void destroy(MultiPass& mp) - { - Ownership::destroy(mp); - Input::destroy(mp); - Storage::destroy(mp); - } - - void swap(multi_pass_unique& x) - { - this->Ownership::swap(x); - this->Storage::swap(x); - } - - template - inline static void clear_queue(MultiPass& mp) - { - Checking::clear_queue(mp); - Storage::clear_queue(mp); - } - - // implement input policy functions by forwarding to the Input type - template - inline static void advance_input(MultiPass& mp) - { Input::advance_input(mp); } - - template - inline static typename MultiPass::reference get_input(MultiPass& mp) - { return Input::get_input(mp); } - - template - inline static bool input_at_eof(MultiPass const& mp) - { return Input::input_at_eof(mp); } - - template - inline static bool input_is_valid(MultiPass& mp, TokenType& curtok) - { return Input::input_is_valid(mp, curtok); } - - // checking policy functions are forwarded to the Checking type - template - inline static void docheck(MultiPass const& mp) - { Checking::docheck(mp); } - }; - - /////////////////////////////////////////////////////////////////////////// - template - struct multi_pass_unique - : Checking, Input, Storage - { - multi_pass_unique() {} - multi_pass_unique(T& x) : Input(x) {} - multi_pass_unique(T const& x) : Input(x) {} - - template - static void destroy(MultiPass& mp) - { - Checking::destroy(mp); - Input::destroy(mp); - Storage::destroy(mp); - } - - void swap(multi_pass_unique& x) - { - this->Checking::swap(x); - this->Input::swap(x); - this->Storage::swap(x); - } - - template - inline static void clear_queue(MultiPass& mp) - { - Checking::clear_queue(mp); - Storage::clear_queue(mp); - } - - // ownership policy functions are forwarded to the Ownership type - template - inline static void clone(MultiPass& mp) - { Ownership::clone(mp); } - - template - inline static bool release(MultiPass& mp) - { return Ownership::release(mp); } - - template - inline static bool is_unique(MultiPass const& mp) - { return Ownership::is_unique(mp); } - }; - - /////////////////////////////////////////////////////////////////////////// - template - struct multi_pass_unique - : Checking, Storage - { - multi_pass_unique() {} - multi_pass_unique(T const&) {} - - template - static void destroy(MultiPass& mp) - { - Checking::destroy(mp); - Input::destroy(mp); - Storage::destroy(mp); - } - - void swap(multi_pass_unique& x) - { - this->Checking::swap(x); - this->Storage::swap(x); - } - - template - inline static void clear_queue(MultiPass& mp) - { - Checking::clear_queue(mp); - Storage::clear_queue(mp); - } - - // implement input policy functions by forwarding to the Input type - template - inline static void advance_input(MultiPass& mp) - { Input::advance_input(mp); } - - template - inline static typename MultiPass::reference get_input(MultiPass& mp) - { return Input::get_input(mp); } - - template - inline static bool input_at_eof(MultiPass const& mp) - { return Input::input_at_eof(mp); } - - template - inline static bool input_is_valid(MultiPass& mp, TokenType& curtok) - { return Input::input_is_valid(mp, curtok); } - - // ownership policy functions are forwarded to the Ownership type - template - inline static void clone(MultiPass& mp) - { Ownership::clone(mp); } - - template - inline static bool release(MultiPass& mp) - { return Ownership::release(mp); } - - template - inline static bool is_unique(MultiPass const& mp) - { return Ownership::is_unique(mp); } - }; - - /////////////////////////////////////////////////////////////////////////// - template - struct multi_pass_unique - : Input, Storage - { - multi_pass_unique() {} - multi_pass_unique(T& x) : Input(x) {} - multi_pass_unique(T const& x) : Input(x) {} - - template - static void destroy(MultiPass& mp) - { - Input::destroy(mp); - Storage::destroy(mp); - } - - void swap(multi_pass_unique& x) - { - this->Input::swap(x); - this->Storage::swap(x); - } - - template - inline static void clear_queue(MultiPass& mp) - { - Checking::clear_queue(mp); - Storage::clear_queue(mp); - } - - // checking policy functions are forwarded to the Checking type - template - inline static void docheck(MultiPass const& mp) - { Checking::docheck(mp); } - - // ownership policy functions are forwarded to the Ownership type - template - inline static void clone(MultiPass& mp) - { Ownership::clone(mp); } - - template - inline static bool release(MultiPass& mp) - { return Ownership::release(mp); } - - template - inline static bool is_unique(MultiPass const& mp) - { return Ownership::is_unique(mp); } - }; - - /////////////////////////////////////////////////////////////////////////// - template - struct multi_pass_unique - : Storage - { - multi_pass_unique() {} - multi_pass_unique(T const&) {} - - template - static void destroy(MultiPass& mp) - { - Input::destroy(mp); - Storage::destroy(mp); - } - - void swap(multi_pass_unique& x) - { - this->Storage::swap(x); - } - - template - inline static void clear_queue(MultiPass& mp) - { - Checking::clear_queue(mp); - Storage::clear_queue(mp); - } - - // implement input policy functions by forwarding to the Input type - template - inline static void advance_input(MultiPass& mp) - { Input::advance_input(mp); } - - template - inline static typename MultiPass::reference get_input(MultiPass& mp) - { return Input::get_input(mp); } - - template - inline static bool input_at_eof(MultiPass const& mp) - { return Input::input_at_eof(mp); } - - template - inline static bool input_is_valid(MultiPass& mp, TokenType& curtok) - { return Input::input_is_valid(mp, curtok); } - - // checking policy functions are forwarded to the Checking type - template - inline static void docheck(MultiPass const& mp) - { Checking::docheck(mp); } - - // ownership policy functions are forwarded to the Ownership type - template - inline static void clone(MultiPass& mp) - { Ownership::clone(mp); } - - template - inline static bool release(MultiPass& mp) - { return Ownership::release(mp); } - - template - inline static bool is_unique(MultiPass const& mp) - { return Ownership::is_unique(mp); } - }; - - /////////////////////////////////////////////////////////////////////////// - // the multi_pass_shared structure is used to combine the shared data items - // of all policies into one single structure - /////////////////////////////////////////////////////////////////////////// - template - struct multi_pass_shared : Ownership, Checking, Input, Storage - { - explicit multi_pass_shared(T& input) : Input(input) {} - explicit multi_pass_shared(T const& input) : Input(input) {} - }; - - /////////////////////////////////////////////////////////////////////////// - // This is a default implementation of a policy class as required by the - // multi_pass template, combining 4 separate policies into one. Any other - // multi_pass policy class needs to follow the scheme as shown below. - template - struct default_policy - { - typedef Ownership ownership_policy; - typedef Checking checking_policy; - typedef Input input_policy; - typedef Storage storage_policy; - - /////////////////////////////////////////////////////////////////////// - template - struct unique : multi_pass_unique - , typename Storage::BOOST_NESTED_TEMPLATE unique< - typename Input::BOOST_NESTED_TEMPLATE unique::value_type> > - { - typedef typename Ownership::unique ownership_policy; - typedef typename Checking::unique checking_policy; - typedef typename Input::BOOST_NESTED_TEMPLATE unique - input_policy; - typedef typename Storage::BOOST_NESTED_TEMPLATE unique< - typename input_policy::value_type> storage_policy; - - typedef multi_pass_unique unique_base_type; - - unique() {} - explicit unique(T& input) : unique_base_type(input) {} - explicit unique(T const& input) : unique_base_type(input) {} - }; - - /////////////////////////////////////////////////////////////////////// - template - struct shared : multi_pass_shared - , typename Storage::BOOST_NESTED_TEMPLATE shared< - typename Input::BOOST_NESTED_TEMPLATE unique::value_type> > - { - typedef typename Ownership::shared ownership_policy; - typedef typename Checking::shared checking_policy; - typedef typename Input::BOOST_NESTED_TEMPLATE shared - input_policy; - typedef typename Storage::BOOST_NESTED_TEMPLATE shared< - typename Input::BOOST_NESTED_TEMPLATE unique::value_type> - storage_policy; - - typedef multi_pass_shared shared_base_type; - - explicit shared(T& input) - : shared_base_type(input), inhibit_clear_queue_(false) {} - explicit shared(T const& input) - : shared_base_type(input), inhibit_clear_queue_(false) {} - - // This is needed for the correct implementation of expectation - // points. Normally expectation points flush any multi_pass - // iterator they may act on, but if the corresponding error handler - // is of type 'retry' no flushing of the internal buffers should be - // executed (even if explicitly requested). - bool inhibit_clear_queue_; - }; - }; - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/iterators/detail/first_owner_policy.hpp b/framework/contrib/boost/include/boost/spirit/home/support/iterators/detail/first_owner_policy.hpp deleted file mode 100644 index 73d6ee1a8e1c..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/iterators/detail/first_owner_policy.hpp +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright (c) 2001, Daniel C. Nuffer -// 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_ITERATOR_FIRST_OWNER_POLICY_MAR_16_2007_1108AM) -#define BOOST_SPIRIT_ITERATOR_FIRST_OWNER_POLICY_MAR_16_2007_1108AM - -#include -#include - -namespace boost { namespace spirit { namespace iterator_policies -{ - /////////////////////////////////////////////////////////////////////////// - // class first_owner - // Implementation of an OwnershipPolicy used by multi_pass - // This ownership policy dictates that the first iterator created will - // determine the lifespan of the shared components. This works well for - // spirit, since no dynamic allocation of iterators is done, and all - // copies are make on the stack. - // - // There is a caveat about using this policy together with the std_deque - // StoragePolicy. Since first_owner always returns false from unique(), - // std_deque will only release the queued data if clear_queue() is called. - /////////////////////////////////////////////////////////////////////////// - struct first_owner - { - /////////////////////////////////////////////////////////////////////// - struct unique : detail::default_ownership_policy - { - unique() : first(true) {} - unique(unique const&) : first(false) {} - - // return true to indicate deletion of resources - template - static bool release(MultiPass& mp) - { - return mp.first; - } - - // use swap from default policy - // if we're the first, we still remain the first, even if assigned - // to, so don't swap first. swap is only called from operator= - - template - static bool is_unique(MultiPass const&) - { - return false; // no way to know, so always return false - } - - protected: - bool first; - }; - - //////////////////////////////////////////////////////////////////////// - struct shared {}; // no shared data - }; - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/iterators/detail/fixed_size_queue.hpp b/framework/contrib/boost/include/boost/spirit/home/support/iterators/detail/fixed_size_queue.hpp deleted file mode 100644 index 1ba6fc02b610..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/iterators/detail/fixed_size_queue.hpp +++ /dev/null @@ -1,392 +0,0 @@ -// Copyright (c) 2001 Daniel C. Nuffer -// 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_ITERATOR_FIXED_SIZE_QUEUE_MAR_16_2007_1137AM) -#define BOOST_SPIRIT_ITERATOR_FIXED_SIZE_QUEUE_MAR_16_2007_1137AM - -#include -#include -#include - -#include -#include // for BOOST_ASSERT -#include - -/////////////////////////////////////////////////////////////////////////////// -// Make sure we're using a decent version of the Boost.IteratorAdaptors lib -#if !defined(BOOST_ITERATOR_ADAPTORS_VERSION) || \ - BOOST_ITERATOR_ADAPTORS_VERSION < 0x0200 -#error "Please use at least Boost V1.31.0 while compiling the fixed_size_queue class!" -#endif - -/////////////////////////////////////////////////////////////////////////////// -#define BOOST_SPIRIT_ASSERT_FSQ_SIZE \ - BOOST_ASSERT(((m_tail + N + 1) - m_head) % (N+1) == m_size % (N+1)) \ - /**/ - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace detail -{ - /////////////////////////////////////////////////////////////////////////// - template - class fsq_iterator - : public boost::iterator_facade< - fsq_iterator, T, - std::random_access_iterator_tag - > - { - public: - typedef typename Queue::position_type position_type; - typedef boost::iterator_facade< - fsq_iterator, T, - std::random_access_iterator_tag - > base_type; - - fsq_iterator() {} - fsq_iterator(position_type const &p_) : p(p_) {} - - position_type &get_position() { return p; } - position_type const &get_position() const { return p; } - - private: - friend class boost::iterator_core_access; - - typename base_type::reference dereference() const - { - return p.self->m_queue[p.pos]; - } - - void increment() - { - ++p.pos; - if (p.pos == Queue::MAX_SIZE+1) - p.pos = 0; - } - - void decrement() - { - if (p.pos == 0) - p.pos = Queue::MAX_SIZE; - else - --p.pos; - } - - bool is_eof() const - { - return p.self == 0 || p.pos == p.self->size(); - } - - template - bool equal(fsq_iterator const &x) const - { - if (is_eof()) - return x.is_eof(); - if (x.is_eof()) - return false; - - position_type const &rhs_pos = x.get_position(); - return (p.self == rhs_pos.self) && (p.pos == rhs_pos.pos); - } - - template - typename base_type::difference_type distance_to( - fsq_iterator const &x) const - { - typedef typename base_type::difference_type difference_type; - - position_type const &p2 = x.get_position(); - std::size_t pos1 = p.pos; - std::size_t pos2 = p2.pos; - - // Undefined behavior if the iterators come from different - // containers - BOOST_ASSERT(p.self == p2.self); - - if (pos1 < p.self->m_head) - pos1 += Queue::MAX_SIZE; - if (pos2 < p2.self->m_head) - pos2 += Queue::MAX_SIZE; - - if (pos2 > pos1) - return difference_type(pos2 - pos1); - else - return -difference_type(pos1 - pos2); - } - - void advance(typename base_type::difference_type n) - { - // Notice that we don't care values of n that can - // wrap around more than one time, since it would - // be undefined behavior anyway (going outside - // the begin/end range). Negative wrapping is a bit - // cumbersome because we don't want to case p.pos - // to signed. - if (n < 0) - { - n = -n; - if (p.pos < (std::size_t)n) - p.pos = Queue::MAX_SIZE+1 - (n - p.pos); - else - p.pos -= n; - } - else - { - p.pos += n; - if (p.pos >= Queue::MAX_SIZE+1) - p.pos -= Queue::MAX_SIZE+1; - } - } - - private: - position_type p; - }; - - /////////////////////////////////////////////////////////////////////////// - template - class fixed_size_queue - { - private: - struct position - { - fixed_size_queue* self; - std::size_t pos; - - position() : self(0), pos(0) {} - - // The const_cast here is just to avoid to have two different - // position structures for the const and non-const case. - // The const semantic is guaranteed by the iterator itself - position(const fixed_size_queue* s, std::size_t p) - : self(const_cast(s)), pos(p) - {} - - bool is_initialized() const { return self != 0; } - void set_queue(fixed_size_queue* q) { self = q; } - }; - - public: - // Declare the iterators - typedef fsq_iterator, T, T*> iterator; - typedef - fsq_iterator, T const, T const*> - const_iterator; - typedef position position_type; - - friend class fsq_iterator, T, T*>; - friend class fsq_iterator, T const, T const*>; - - fixed_size_queue(); - fixed_size_queue(const fixed_size_queue& x); - fixed_size_queue& operator=(const fixed_size_queue& x); - ~fixed_size_queue(); - - void push_back(const T& e); - void push_front(const T& e); - void serve(T& e); - void pop_front(); - - bool empty() const - { - return m_size == 0; - } - - bool full() const - { - return m_size == N; - } - - iterator begin() - { - return iterator(position(this, m_head)); - } - - const_iterator begin() const - { - return const_iterator(position(this, m_head)); - } - - iterator end() - { - return iterator(position(0, m_tail)); - } - - const_iterator end() const - { - return const_iterator(position(0, m_tail)); - } - - std::size_t size() const - { - return m_size; - } - - T& front() - { - return m_queue[m_head]; - } - - const T& front() const - { - return m_queue[m_head]; - } - - private: - // Redefine the template parameters to avoid using partial template - // specialization on the iterator policy to extract N. - BOOST_STATIC_CONSTANT(std::size_t, MAX_SIZE = N); - - std::size_t m_head; - std::size_t m_tail; - std::size_t m_size; - T m_queue[N+1]; - }; - - template - inline - fixed_size_queue::fixed_size_queue() - : m_head(0) - , m_tail(0) - , m_size(0) - { - BOOST_ASSERT(m_size <= N+1); - BOOST_SPIRIT_ASSERT_FSQ_SIZE; - BOOST_ASSERT(m_head <= N+1); - BOOST_ASSERT(m_tail <= N+1); - } - - template - inline - fixed_size_queue::fixed_size_queue(const fixed_size_queue& x) - : m_head(x.m_head) - , m_tail(x.m_tail) - , m_size(x.m_size) - { - copy(x.begin(), x.end(), begin()); - BOOST_ASSERT(m_size <= N+1); - BOOST_SPIRIT_ASSERT_FSQ_SIZE; - BOOST_ASSERT(m_head <= N+1); - BOOST_ASSERT(m_tail <= N+1); - } - - template - inline fixed_size_queue& - fixed_size_queue::operator=(const fixed_size_queue& x) - { - if (this != &x) - { - m_head = x.m_head; - m_tail = x.m_tail; - m_size = x.m_size; - copy(x.begin(), x.end(), begin()); - } - BOOST_ASSERT(m_size <= N+1); - BOOST_SPIRIT_ASSERT_FSQ_SIZE; - BOOST_ASSERT(m_head <= N+1); - BOOST_ASSERT(m_tail <= N+1); - - return *this; - } - - template - inline - fixed_size_queue::~fixed_size_queue() - { - BOOST_ASSERT(m_size <= N+1); - BOOST_SPIRIT_ASSERT_FSQ_SIZE; - BOOST_ASSERT(m_head <= N+1); - BOOST_ASSERT(m_tail <= N+1); - } - - template - inline void - fixed_size_queue::push_back(const T& e) - { - BOOST_ASSERT(m_size <= N+1); - BOOST_SPIRIT_ASSERT_FSQ_SIZE; - BOOST_ASSERT(m_head <= N+1); - BOOST_ASSERT(m_tail <= N+1); - - BOOST_ASSERT(!full()); - - m_queue[m_tail] = e; - ++m_size; - ++m_tail; - if (m_tail == N+1) - m_tail = 0; - - - BOOST_ASSERT(m_size <= N+1); - BOOST_SPIRIT_ASSERT_FSQ_SIZE; - BOOST_ASSERT(m_head <= N+1); - BOOST_ASSERT(m_tail <= N+1); - } - - template - inline void - fixed_size_queue::push_front(const T& e) - { - BOOST_ASSERT(m_size <= N+1); - BOOST_SPIRIT_ASSERT_FSQ_SIZE; - BOOST_ASSERT(m_head <= N+1); - BOOST_ASSERT(m_tail <= N+1); - - BOOST_ASSERT(!full()); - - if (m_head == 0) - m_head = N; - else - --m_head; - - m_queue[m_head] = e; - ++m_size; - - BOOST_ASSERT(m_size <= N+1); - BOOST_SPIRIT_ASSERT_FSQ_SIZE; - BOOST_ASSERT(m_head <= N+1); - BOOST_ASSERT(m_tail <= N+1); - } - - - template - inline void - fixed_size_queue::serve(T& e) - { - BOOST_ASSERT(m_size <= N+1); - BOOST_SPIRIT_ASSERT_FSQ_SIZE; - BOOST_ASSERT(m_head <= N+1); - BOOST_ASSERT(m_tail <= N+1); - - e = m_queue[m_head]; - pop_front(); - } - - - - template - inline void - fixed_size_queue::pop_front() - { - BOOST_ASSERT(m_size <= N+1); - BOOST_SPIRIT_ASSERT_FSQ_SIZE; - BOOST_ASSERT(m_head <= N+1); - BOOST_ASSERT(m_tail <= N+1); - - ++m_head; - if (m_head == N+1) - m_head = 0; - --m_size; - - BOOST_ASSERT(m_size <= N+1); - BOOST_SPIRIT_ASSERT_FSQ_SIZE; - BOOST_ASSERT(m_head <= N+1); - BOOST_ASSERT(m_tail <= N+1); - } - -}}} - -#undef BOOST_SPIRIT_ASSERT_FSQ_SIZE - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/iterators/detail/fixed_size_queue_policy.hpp b/framework/contrib/boost/include/boost/spirit/home/support/iterators/detail/fixed_size_queue_policy.hpp deleted file mode 100644 index 37d7dd3f6e34..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/iterators/detail/fixed_size_queue_policy.hpp +++ /dev/null @@ -1,129 +0,0 @@ -// Copyright (c) 2001 Daniel C. Nuffer -// 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_ITERATOR_FIXED_SIZE_QUEUE_POLICY_MAR_16_2007_1134AM) -#define BOOST_SPIRIT_ITERATOR_FIXED_SIZE_QUEUE_POLICY_MAR_16_2007_1134AM - -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace iterator_policies -{ - /////////////////////////////////////////////////////////////////////////// - // class fixed_size_queue - // Implementation of the StoragePolicy used by multi_pass - // fixed_size_queue keeps a circular buffer (implemented by - // boost::spirit::fixed_size_queue class) that is size N+1 and stores N - // elements. - // - // It is up to the user to ensure that there is enough look ahead for - // their grammar. Currently there is no way to tell if an iterator is - // pointing to forgotten data. The leading iterator will put an item in - // the queue and remove one when it is incremented. No dynamic allocation - // is done, except on creation of the queue (fixed_size_queue constructor). - /////////////////////////////////////////////////////////////////////////// - template - struct fixed_size_queue - { - /////////////////////////////////////////////////////////////////////// - template - class unique : public detail::default_storage_policy - { - private: - typedef detail::fixed_size_queue queue_type; - - protected: - unique() {} - - unique(unique const& x) - : queued_position(x.queued_position) {} - - void swap(unique& x) - { - boost::core::invoke_swap(queued_position, x.queued_position); - } - - // This is called when the iterator is dereferenced. It's a - // template method so we can recover the type of the multi_pass - // iterator and access the m_input data member. - template - static typename MultiPass::reference - dereference(MultiPass const& mp) - { - if (!mp.queued_position.get_position().is_initialized()) - mp.queued_position.get_position().set_queue(&mp.shared()->queued_elements); - - if (mp.queued_position == mp.shared()->queued_elements.end()) - return MultiPass::get_input(mp); - - return *mp.queued_position; - } - - // This is called when the iterator is incremented. It's a - // template method so we can recover the type of the multi_pass - // iterator and access the m_input data member. - template - static void increment(MultiPass& mp) - { - if (!mp.queued_position.get_position().is_initialized()) - mp.queued_position.get_position().set_queue(&mp.shared()->queued_elements); - - if (mp.queued_position == mp.shared()->queued_elements.end()) - { - // don't let the queue get larger than N - if (mp.shared()->queued_elements.size() >= N) - mp.shared()->queued_elements.pop_front(); - - mp.shared()->queued_elements.push_back( - MultiPass::get_input(mp)); - MultiPass::advance_input(mp); - } - ++mp.queued_position; - } - - // clear_queue is a no-op - - // called to determine whether the iterator is an eof iterator - template - static bool is_eof(MultiPass const& mp) - { - return mp.queued_position == mp.shared()->queued_elements.end() && - MultiPass::input_at_eof(mp); - } - - // called by operator== - template - static bool equal_to(MultiPass const& mp, MultiPass const& x) - { - return mp.queued_position == x.queued_position; - } - - // called by operator< - template - static bool less_than(MultiPass const& mp, MultiPass const& x) - { - return mp.queued_position < x.queued_position; - } - - protected: - mutable typename queue_type::iterator queued_position; - }; - - /////////////////////////////////////////////////////////////////////// - template - struct shared - { - typedef detail::fixed_size_queue queue_type; - queue_type queued_elements; - }; - }; - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/iterators/detail/functor_input_policy.hpp b/framework/contrib/boost/include/boost/spirit/home/support/iterators/detail/functor_input_policy.hpp deleted file mode 100644 index 15bc1acb8680..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/iterators/detail/functor_input_policy.hpp +++ /dev/null @@ -1,115 +0,0 @@ -// 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_ITERATOR_SPLIT_FUNCTOR_INPUT_POLICY_JAN_16_2008_0448M) -#define BOOST_SPIRIT_ITERATOR_SPLIT_FUNCTOR_INPUT_POLICY_JAN_16_2008_0448M - -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace iterator_policies -{ - namespace is_valid_test_ - { - template - inline bool token_is_valid(Token const&) - { - return true; - } - } - - /////////////////////////////////////////////////////////////////////////// - // class functor_input - // Implementation of the InputPolicy used by multi_pass - // functor_input gets tokens from a functor - // - // Note: the functor must have a typedef for result_type - // It also must have a static variable of type result_type defined - // to represent EOF that is called eof. - // - /////////////////////////////////////////////////////////////////////////// - struct functor_input - { - /////////////////////////////////////////////////////////////////////// - template - class unique : public detail::default_input_policy - { - private: - typedef typename Functor::result_type result_type; - - protected: - unique() {} - explicit unique(Functor const& x) : ftor(x) {} - - void swap(unique& x) - { - boost::core::invoke_swap(ftor, x.ftor); - } - - public: - typedef result_type value_type; - typedef std::ptrdiff_t difference_type; - typedef std::ptrdiff_t distance_type; - typedef result_type* pointer; - typedef result_type& reference; - - public: - // get the next token - template - static typename MultiPass::reference get_input(MultiPass& mp) - { - value_type& curtok = mp.shared()->curtok; - if (!input_is_valid(mp, curtok)) - curtok = mp.ftor(); - return curtok; - } - - template - static void advance_input(MultiPass& mp) - { - // if mp.shared is NULL then this instance of the multi_pass - // represents a end iterator - BOOST_ASSERT(0 != mp.shared()); - mp.shared()->curtok = mp.ftor(); - } - - // test, whether we reached the end of the underlying stream - template - static bool input_at_eof(MultiPass const& mp) - { - return mp.shared()->curtok == mp.ftor.eof; - } - - template - static bool input_is_valid(MultiPass const&, value_type const& t) - { - using namespace is_valid_test_; - return token_is_valid(t); - } - - Functor& get_functor() const - { - return ftor; - } - - protected: - mutable Functor ftor; - }; - - /////////////////////////////////////////////////////////////////////// - template - struct shared - { - explicit shared(Functor const&) : curtok(0) {} - - typename Functor::result_type curtok; - }; - }; - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/iterators/detail/input_iterator_policy.hpp b/framework/contrib/boost/include/boost/spirit/home/support/iterators/detail/input_iterator_policy.hpp deleted file mode 100644 index b59dd245242f..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/iterators/detail/input_iterator_policy.hpp +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright (c) 2001 Daniel C. Nuffer -// 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_ITERATOR_INPUT_ITERATOR_POLICY_MAR_16_2007_1156AM) -#define BOOST_SPIRIT_ITERATOR_INPUT_ITERATOR_POLICY_MAR_16_2007_1156AM - -#include -#include -#include -#include // for std::iterator_traits - -namespace boost { namespace spirit { namespace iterator_policies -{ - namespace input_iterator_is_valid_test_ - { - /////////////////////////////////////////////////////////////////////// - template - inline bool token_is_valid(Token const& c) - { - return c ? true : false; - } - } - - /////////////////////////////////////////////////////////////////////////// - // class input_iterator - // Implementation of the InputPolicy used by multi_pass - // - // The input_iterator encapsulates an input iterator of type T - /////////////////////////////////////////////////////////////////////////// - struct input_iterator - { - /////////////////////////////////////////////////////////////////////// - template - class unique // : public detail::default_input_policy - { - private: - typedef - typename std::iterator_traits::value_type - result_type; - - public: - typedef - typename std::iterator_traits::difference_type - difference_type; - typedef - typename std::iterator_traits::difference_type - distance_type; - typedef - typename std::iterator_traits::pointer - pointer; - typedef - typename std::iterator_traits::reference - reference; - typedef result_type value_type; - - protected: - unique() {} - explicit unique(T) {} - - void swap(unique&) {} - - public: - template - static void destroy(MultiPass&) {} - - template - static typename MultiPass::reference get_input(MultiPass& mp) - { - return *mp.shared()->input_; - } - - template - static void advance_input(MultiPass& mp) - { - ++mp.shared()->input_; - } - - // test, whether we reached the end of the underlying stream - template - static bool input_at_eof(MultiPass const& mp) - { - static T const end_iter; - return mp.shared()->input_ == end_iter; - } - - template - static bool input_is_valid(MultiPass const&, value_type const& t) - { - using namespace input_iterator_is_valid_test_; - return token_is_valid(t); - } - - // no unique data elements - }; - - /////////////////////////////////////////////////////////////////////// - template - struct shared - { - explicit shared(T const& input) : input_(input) {} - - T input_; - }; - }; - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/iterators/detail/istream_policy.hpp b/framework/contrib/boost/include/boost/spirit/home/support/iterators/detail/istream_policy.hpp deleted file mode 100644 index 0e5064a64649..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/iterators/detail/istream_policy.hpp +++ /dev/null @@ -1,124 +0,0 @@ -// Copyright (c) 2001 Daniel C. Nuffer -// 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_ISTREAM_POLICY_JAN_04_2010_0130PM) -#define BOOST_SPIRIT_ISTREAM_POLICY_JAN_04_2010_0130PM - -#include -#include - -namespace boost { namespace spirit { namespace iterator_policies -{ - /////////////////////////////////////////////////////////////////////////// - // class istream - // Implementation of the InputPolicy used by multi_pass - // - // The istream encapsulates an std::basic_istream - /////////////////////////////////////////////////////////////////////////// - struct istream - { - /////////////////////////////////////////////////////////////////////// - template - class unique // : public detail::default_input_policy - { - private: - typedef typename T::char_type result_type; - - public: - typedef typename T::off_type difference_type; - typedef typename T::off_type distance_type; - typedef result_type const* pointer; - typedef result_type const& reference; - typedef result_type value_type; - - protected: - unique() {} - explicit unique(T&) {} - - void swap(unique&) {} - - public: - template - static void destroy(MultiPass&) {} - - template - static typename MultiPass::reference get_input(MultiPass& mp) - { - if (!mp.shared()->initialized_) - mp.shared()->read_one(); - return mp.shared()->curtok_; - } - - template - static void advance_input(MultiPass& mp) - { - // We invalidate the currently cached input character to avoid - // reading more input from the underlying iterator than - // required. Without this we would always read ahead one - // character, even if this character never gets consumed by the - // client. - mp.shared()->peek_one(); - } - - // test, whether we reached the end of the underlying stream - template - static bool input_at_eof(MultiPass const& mp) - { - return mp.shared()->eof_reached_; - } - - template - static bool input_is_valid(MultiPass const& mp, value_type const&) - { - return mp.shared()->initialized_; - } - - // no unique data elements - }; - - /////////////////////////////////////////////////////////////////////// - template - struct shared - { - private: - typedef typename T::char_type result_type; - - public: - explicit shared(T& input) - : input_(input), curtok_(-1) - , initialized_(false), eof_reached_(false) - { - peek_one(); // istreams may be at eof right in the beginning - } - - void read_one() - { - if (!(input_ >> curtok_)) { - initialized_ = false; - eof_reached_ = true; - } - else { - initialized_ = true; - } - } - - void peek_one() - { - input_.peek(); // try for eof - initialized_ = false; - eof_reached_ = input_.eof(); - } - - T& input_; - result_type curtok_; - bool initialized_; - bool eof_reached_; - }; - }; - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/iterators/detail/lex_input_policy.hpp b/framework/contrib/boost/include/boost/spirit/home/support/iterators/detail/lex_input_policy.hpp deleted file mode 100644 index 9fece3730d08..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/iterators/detail/lex_input_policy.hpp +++ /dev/null @@ -1,86 +0,0 @@ -// Copyright (c) 2001 Daniel C. Nuffer -// 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_ITERATOR_LEX_INPUT_POLICY_MAR_16_2007_1205PM) -#define BOOST_SPIRIT_ITERATOR_LEX_INPUT_POLICY_MAR_16_2007_1205PM - -#include -#include - -namespace boost { namespace spirit { namespace iterator_policies -{ - /////////////////////////////////////////////////////////////////////////////// - // class lex_input - // Implementation of the InputPolicy used by multi_pass - // - // The lex_input class gets tokens (integers) from yylex() - /////////////////////////////////////////////////////////////////////////// - struct lex_input - { - typedef int value_type; - - /////////////////////////////////////////////////////////////////////// - template - class unique : public detail::default_input_policy - { - public: - typedef std::ptrdiff_t difference_type; - typedef std::ptrdiff_t distance_type; - typedef int* pointer; - typedef int& reference; - - protected: - unique() {} - explicit unique(T) {} - - public: - template - static typename MultiPass::reference get_input(MultiPass& mp) - { - value_type& curtok = mp.shared()->curtok; - if (-1 == curtok) - { - extern int yylex(); - curtok = yylex(); - } - return curtok; - } - - template - static void advance_input(MultiPass& mp) - { - extern int yylex(); - mp.shared()->curtok = yylex(); - } - - // test, whether we reached the end of the underlying stream - template - static bool input_at_eof(MultiPass const& mp) - { - return mp.shared()->curtok == 0; - } - - template - static bool input_is_valid(MultiPass const&, value_type const& t) - { - return -1 != t; - } - }; - - /////////////////////////////////////////////////////////////////////// - template - struct shared - { - explicit shared(T) : curtok(-1) {} - - value_type curtok; - }; - }; - -}}} - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/support/iterators/detail/multi_pass.hpp b/framework/contrib/boost/include/boost/spirit/home/support/iterators/detail/multi_pass.hpp deleted file mode 100644 index 124100a6b443..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/iterators/detail/multi_pass.hpp +++ /dev/null @@ -1,108 +0,0 @@ -// Copyright (c) 2001 Daniel C. Nuffer -// 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_ITERATOR_MULTI_PASS_MAR_16_2007_1122AM) -#define BOOST_SPIRIT_ITERATOR_MULTI_PASS_MAR_16_2007_1122AM - -#include -#include -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace detail -{ - - /////////////////////////////////////////////////////////////////////////// - // Default implementations of the different policies to be used with a - // multi_pass iterator - /////////////////////////////////////////////////////////////////////////// - struct default_input_policy - { - default_input_policy() {} - - template - default_input_policy(Functor const&) {} - - template - static void destroy(MultiPass&) {} - - void swap(default_input_policy&) {} - - template - static void advance_input(MultiPass& mp); - - template - static typename MultiPass::reference get_input(MultiPass& mp); - - template - static bool input_at_eof(MultiPass const& mp); - - template - static bool input_is_valid(MultiPass& mp, TokenType& curtok); - }; - - struct default_ownership_policy - { - template - static void destroy(MultiPass&) {} - - void swap(default_ownership_policy&) {} - - template - static void clone(MultiPass&) {} - - template - static bool release(MultiPass& mp); - - template - static bool is_unique(MultiPass const& mp); - }; - - struct default_storage_policy - { - template - static void destroy(MultiPass&) {} - - void swap(default_storage_policy&) {} - - template - static typename MultiPass::reference dereference(MultiPass const& mp); - - template - static void increment(MultiPass&) {} - - template - static void clear_queue(MultiPass&) {} - - template - static bool is_eof(MultiPass const& mp); - - template - static bool equal_to(MultiPass const& mp, MultiPass const& x); - - template - static bool less_than(MultiPass const& mp, MultiPass const& x); - }; - - struct default_checking_policy - { - template - static void destroy(MultiPass&) {} - - void swap(default_checking_policy&) {} - - template - static void docheck(MultiPass const&) {} - - template - static void clear_queue(MultiPass&) {} - }; - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/iterators/detail/no_check_policy.hpp b/framework/contrib/boost/include/boost/spirit/home/support/iterators/detail/no_check_policy.hpp deleted file mode 100644 index 8f4a26d9c33c..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/iterators/detail/no_check_policy.hpp +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright (c) 2001 Daniel C. Nuffer -// 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_ITERATOR_NO_CHECK_POLICY_MAR_16_2007_1121AM) -#define BOOST_SPIRIT_ITERATOR_NO_CHECK_POLICY_MAR_16_2007_1121AM - -#include -#include - -namespace boost { namespace spirit { namespace iterator_policies -{ - /////////////////////////////////////////////////////////////////////////// - // class no_check - // Implementation of the CheckingPolicy used by multi_pass - // It does not do anything :-) - /////////////////////////////////////////////////////////////////////////// - struct no_check - { - /////////////////////////////////////////////////////////////////////// - struct unique : public detail::default_checking_policy {}; - - /////////////////////////////////////////////////////////////////////// - struct shared {}; - }; - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/iterators/detail/ref_counted_policy.hpp b/framework/contrib/boost/include/boost/spirit/home/support/iterators/detail/ref_counted_policy.hpp deleted file mode 100644 index 723bbee4585a..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/iterators/detail/ref_counted_policy.hpp +++ /dev/null @@ -1,79 +0,0 @@ -// Copyright (c) 2001 Daniel C. Nuffer -// 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_ITERATOR_REF_COUNTED_POLICY_MAR_16_2007_1108AM) -#define BOOST_SPIRIT_ITERATOR_REF_COUNTED_POLICY_MAR_16_2007_1108AM - -#include -#include -#if defined(BOOST_HAS_THREADS) -#include -#endif -#include - -namespace boost { namespace spirit { namespace iterator_policies -{ - /////////////////////////////////////////////////////////////////////////// - // class ref_counted - // Implementation of an OwnershipPolicy used by multi_pass. - // - // Implementation modified from RefCounted class from the Loki library by - // Andrei Alexandrescu. - /////////////////////////////////////////////////////////////////////////// - struct ref_counted - { - /////////////////////////////////////////////////////////////////////// - struct unique // : detail::default_ownership_policy - { - void swap(unique&) {} - - // clone is called when a copy of the iterator is made, so - // increment the ref-count. - template - static void clone(MultiPass& mp) - { - if (0 != mp.shared()) - ++mp.shared()->count; - } - - // called when a copy is deleted. Decrement the ref-count. Return - // value of true indicates that the last copy has been released. - template - static bool release(MultiPass& mp) - { - return 0 != mp.shared() && 0 == --mp.shared()->count; - } - - // returns true if there is only one iterator in existence. - // std_deque StoragePolicy will free it's buffered data if this - // returns true. - template - static bool is_unique(MultiPass const& mp) - { - return 0 == mp.shared() || 1 == mp.shared()->count; - } - - template - static void destroy(MultiPass&) {} - }; - - //////////////////////////////////////////////////////////////////////// - struct shared - { - shared() : count(1) {} - -#if defined(BOOST_HAS_THREADS) - boost::detail::atomic_count count; -#else - std::size_t count; -#endif - }; - - }; - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/iterators/detail/split_functor_input_policy.hpp b/framework/contrib/boost/include/boost/spirit/home/support/iterators/detail/split_functor_input_policy.hpp deleted file mode 100644 index 3047e9661439..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/iterators/detail/split_functor_input_policy.hpp +++ /dev/null @@ -1,198 +0,0 @@ -// 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_ITERATOR_SPLIT_FUNCTOR_INPUT_POLICY_JAN_17_2008_0103PM) -#define BOOST_SPIRIT_ITERATOR_SPLIT_FUNCTOR_INPUT_POLICY_JAN_17_2008_0103PM - -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace iterator_policies -{ - namespace split_functor_input_is_valid_test_ - { - template - inline bool token_is_valid(Token const&) - { - return true; - } - } - - /////////////////////////////////////////////////////////////////////////// - // class split_functor_input - // Implementation of the InputPolicy used by multi_pass - // split_functor_input gets tokens from a functor - // - // This policy should be used when the functor holds two parts of data: a - // unique part (unique for each instance of the iterator) and a shared - // part (to be shared between the different copies of the same iterator). - // Using this policy allows to merge the shared part of the functor with - // the shared part of the iterator data, saving one pointer and one - // allocation per iterator instance. - // - // The Functor template parameter of this policy is expected to be a - // std::pair, where 'unique' and 'shared' represent the - // respective parts of the functor itself. - // - // Note: the unique part of the functor must have a typedef for result_type - // It also must have a static variable of type result_type defined - // to represent EOF that is called eof. - // - /////////////////////////////////////////////////////////////////////////// - struct split_functor_input - { - /////////////////////////////////////////////////////////////////////// - template ::value> - class unique; - - // the unique part of the functor is empty, do not include the functor - // as a member at all to avoid unnecessary padding bytes to be included - // into the generated structure - template - class unique // : public detail::default_input_policy - { - protected: - typedef typename Functor::first_type functor_type; - typedef typename functor_type::result_type result_type; - - public: - typedef result_type value_type; - typedef std::ptrdiff_t difference_type; - typedef std::ptrdiff_t distance_type; - typedef result_type const* pointer; - typedef result_type const& reference; - - protected: - unique() {} - explicit unique(Functor const&) {} - - public: - void swap(unique&) {} - - // get the next token - template - static typename MultiPass::reference get_input(MultiPass& mp) - { - value_type& curtok = mp.shared()->curtok; - using namespace split_functor_input_is_valid_test_; - if (!token_is_valid(curtok)) - functor_type::get_next(mp, curtok); - return curtok; - } - - template - static void advance_input(MultiPass& mp) - { - functor_type::get_next(mp, mp.shared()->curtok); - } - - // test, whether we reached the end of the underlying stream - template - static bool input_at_eof(MultiPass const& mp) - { - return mp.shared()->curtok == functor_type::eof; - } - - template - static bool input_is_valid(MultiPass const&, value_type const& t) - { - using namespace split_functor_input_is_valid_test_; - return token_is_valid(t); - } - - template - static void destroy(MultiPass& mp) - { - functor_type::destroy(mp); - } - }; - - // the unique part of the functor is non-empty - template - class unique : public unique - { - protected: - typedef typename Functor::first_type functor_type; - typedef typename functor_type::result_type result_type; - - protected: - unique() {} - explicit unique(Functor const& x) : ftor(x.first) {} - - void swap(unique& x) - { - boost::core::invoke_swap(ftor, x.ftor); - } - - public: - typedef result_type value_type; - typedef std::ptrdiff_t difference_type; - typedef std::ptrdiff_t distance_type; - typedef result_type const* pointer; - typedef result_type const& reference; - - public: - // get the next token - template - static typename MultiPass::reference get_input(MultiPass& mp) - { - value_type& curtok = mp.shared()->curtok; - using namespace split_functor_input_is_valid_test_; - if (!token_is_valid(curtok)) - functor_type::get_next(mp, curtok); - return curtok; - } - - template - static void advance_input(MultiPass& mp) - { - mp.ftor.get_next(mp, mp.shared()->curtok); - } - - template - static bool input_is_valid(MultiPass const&, value_type const& t) - { - using namespace split_functor_input_is_valid_test_; - return token_is_valid(t); - } - - // test, whether we reached the end of the underlying stream - template - static bool input_at_eof(MultiPass const& mp) - { - return mp.shared()->curtok == mp.ftor.eof; - } - - typename Functor::first_type& get_functor() const - { - return ftor; - } - - mutable functor_type ftor; - }; - - /////////////////////////////////////////////////////////////////////// - template - struct shared - { - protected: - typedef typename Functor::first_type functor_type; - typedef typename functor_type::result_type result_type; - - public: - explicit shared(Functor const& x) : ftor(x.second), curtok(0) {} - - mutable typename Functor::second_type ftor; - result_type curtok; - }; - }; - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/iterators/detail/split_std_deque_policy.hpp b/framework/contrib/boost/include/boost/spirit/home/support/iterators/detail/split_std_deque_policy.hpp deleted file mode 100644 index 0139231ce8e6..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/iterators/detail/split_std_deque_policy.hpp +++ /dev/null @@ -1,171 +0,0 @@ -// Copyright (c) 2001 Daniel C. Nuffer -// 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_ITERATOR_SPLIT_DEQUE_POLICY_APR_06_2008_0138PM) -#define BOOST_SPIRIT_ITERATOR_SPLIT_DEQUE_POLICY_APR_06_2008_0138PM - -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace iterator_policies -{ - /////////////////////////////////////////////////////////////////////////// - // class split_std_deque - // - // Implementation of the StoragePolicy used by multi_pass - // This stores all data in a std::vector (despite its name), and keeps an - // offset to the current position. It stores all the data unless there is - // only one iterator using the queue. - // - /////////////////////////////////////////////////////////////////////////// - struct split_std_deque - { - enum { threshold = 16 }; - - /////////////////////////////////////////////////////////////////////// - template - class unique //: public detail::default_storage_policy - { - private: - typedef std::vector queue_type; - - protected: - unique() : queued_position(0) {} - - unique(unique const& x) - : queued_position(x.queued_position) {} - - void swap(unique& x) - { - boost::core::invoke_swap(queued_position, x.queued_position); - } - - // This is called when the iterator is dereferenced. It's a - // template method so we can recover the type of the multi_pass - // iterator and call advance_input and input_is_valid. - template - static typename MultiPass::reference - dereference(MultiPass const& mp) - { - queue_type& queue = mp.shared()->queued_elements; - typename queue_type::size_type size = queue.size(); - - BOOST_ASSERT(mp.queued_position <= size); - - if (mp.queued_position == size) - { - // check if this is the only iterator - if (size >= threshold && MultiPass::is_unique(mp)) - { - // free up the memory used by the queue. - queue.clear(); - mp.queued_position = 0; - } - return MultiPass::get_input(mp); - } - - return queue[mp.queued_position]; - } - - // This is called when the iterator is incremented. It's a template - // method so we can recover the type of the multi_pass iterator - // and call is_unique and advance_input. - template - static void increment(MultiPass& mp) - { - queue_type& queue = mp.shared()->queued_elements; - typename queue_type::size_type size = queue.size(); - - BOOST_ASSERT(mp.queued_position <= size); - -// // do not increment iterator as long as the current token is -// // invalid -// if (size > 0 && !MultiPass::input_is_valid(mp, queue[mp.queued_position-1])) -// return; - - if (mp.queued_position == size) - { - // check if this is the only iterator - if (size >= threshold && MultiPass::is_unique(mp)) - { - // free up the memory used by the queue. we avoid - // clearing the queue on every increment, though, - // because this would be too time consuming - queue.clear(); - mp.queued_position = 0; - } - else - { - queue.push_back(MultiPass::get_input(mp)); - ++mp.queued_position; - } - MultiPass::advance_input(mp); - } - else - { - ++mp.queued_position; - } - } - - // called to forcibly clear the queue - template - static void clear_queue(MultiPass& mp) - { - mp.shared()->queued_elements.clear(); - mp.queued_position = 0; - } - - // called to determine whether the iterator is an eof iterator - template - static bool is_eof(MultiPass const& mp) - { - return mp.queued_position == mp.shared()->queued_elements.size() - && MultiPass::input_at_eof(mp); - } - - // called by operator== - template - static bool equal_to(MultiPass const& mp, MultiPass const& x) - { - return mp.queued_position == x.queued_position; - } - - // called by operator< - template - static bool less_than(MultiPass const& mp, MultiPass const& x) - { - return mp.queued_position < x.queued_position; - } - - template - static void destroy(MultiPass&) {} - - protected: - mutable typename queue_type::size_type queued_position; - }; - - /////////////////////////////////////////////////////////////////////// - template - struct shared - { - shared() - { - queued_elements.reserve(threshold); - } - - typedef std::vector queue_type; - queue_type queued_elements; - }; - - }; // split_std_deque - -}}} - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/support/iterators/istream_iterator.hpp b/framework/contrib/boost/include/boost/spirit/home/support/iterators/istream_iterator.hpp deleted file mode 100644 index 316495014300..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/iterators/istream_iterator.hpp +++ /dev/null @@ -1,77 +0,0 @@ -// 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_ISTREAM_ITERATOR_JAN_03_2010_0522PM) -#define BOOST_SPIRIT_ISTREAM_ITERATOR_JAN_03_2010_0522PM - -#include -#if defined(BOOST_SPIRIT_DEBUG) -#include -#else -#include -#endif -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - template > - class basic_istream_iterator : - public multi_pass< - std::basic_istream - , iterator_policies::default_policy< - iterator_policies::ref_counted -#if defined(BOOST_SPIRIT_DEBUG) - , iterator_policies::buf_id_check -#else - , iterator_policies::no_check -#endif - , iterator_policies::istream - , iterator_policies::split_std_deque> - > - { - private: - typedef multi_pass< - std::basic_istream - , iterator_policies::default_policy< - iterator_policies::ref_counted -#if defined(BOOST_SPIRIT_DEBUG) - , iterator_policies::buf_id_check -#else - , iterator_policies::no_check -#endif - , iterator_policies::istream - , iterator_policies::split_std_deque> - > base_type; - - public: - basic_istream_iterator() - : base_type() {} - - explicit basic_istream_iterator(std::basic_istream& x) - : base_type(x) {} - -#if BOOST_WORKAROUND(__GLIBCPP__, == 20020514) - basic_istream_iterator(int) // workaround for a bug in the library - : base_type() {} // shipped with gcc 3.1 -#endif // BOOST_WORKAROUND(__GLIBCPP__, == 20020514) - - basic_istream_iterator operator= (base_type const& rhs) - { - this->base_type::operator=(rhs); - return *this; - } - - // default generated operators, destructor and assignment operator are ok. - }; - - typedef basic_istream_iterator istream_iterator; - -}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/iterators/line_pos_iterator.hpp b/framework/contrib/boost/include/boost/spirit/home/support/iterators/line_pos_iterator.hpp deleted file mode 100644 index daa2ec6b4fd7..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/iterators/line_pos_iterator.hpp +++ /dev/null @@ -1,250 +0,0 @@ -/*============================================================================== - Copyright (c) 2001-2011 Joel de Guzman - Copyright (c) 2010 Bryce Lelbach - Copyright (c) 2014 Tomoki Imai - Copyright (c) 2023 Kniazev Nikita - Copyright (c) 2023 Tobias Loew - - 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_SUPPORT_LINE_POS_ITERATOR) -#define BOOST_SPIRIT_SUPPORT_LINE_POS_ITERATOR - -#include -#include -#include - -namespace boost { namespace spirit -{ - //[line_pos_iterator_class - /*`The `line_pos_iterator` is a lightweight line position iterator. - This iterator adapter only stores the current line number, nothing else. - Unlike __classic__'s `position_iterator`, it does not store the - column number and does not need an end iterator. The current column can - be computed, if needed. - NOTE: line counting considers position inside multicharacter line-breaks - (such as CRLF and LFCR) as being on the next line already. */ - //`[heading Class Reference] - template - class line_pos_iterator : public boost::iterator_adaptor< - line_pos_iterator // Derived - , Iterator // Base - , boost::use_default // Value - , boost::forward_traversal_tag // CategoryOrTraversal - > { - public: - line_pos_iterator(); - - explicit line_pos_iterator(Iterator, std::size_t line_start = 1); - - std::size_t position() const; - - private: - friend class boost::iterator_core_access; - - void increment(); - - std::size_t line; // The line position. - bool prev_n; - bool prev_r; - }; - //] - - template - line_pos_iterator::line_pos_iterator() : - line_pos_iterator::iterator_adaptor_(), line(1), prev_n(), prev_r() { } - - template - line_pos_iterator::line_pos_iterator(Iterator base, std::size_t line_start /* = 1 */ ) : - line_pos_iterator::iterator_adaptor_(base), line(line_start), prev_n(), prev_r() { } - - template - std::size_t line_pos_iterator::position() const - { - return line; - } - - template - void line_pos_iterator::increment() - { - typename std::iterator_traits::reference - ch = *(this->base()); - - int newline = ((ch == '\n') & !prev_r) | ((ch == '\r') & !prev_n); - line += newline; - prev_r = (ch == '\r') & newline; - prev_n = (ch == '\n') & newline; - - ++this->base_reference(); - } - - //[line_pos_iterator_utilities - //`[heading get_line] - template - inline std::size_t get_line(Iterator); - /*`Get the line position. Returns -1 if Iterator is not a - `line_pos_iterator`. */ - - //`[heading get_line_start] - template - inline Iterator get_line_start(Iterator lower_bound, Iterator current); - /*`Get an iterator to the beginning of the line. Applicable to any - iterator. */ - - //`[heading get_line_end] - template - inline Iterator get_line_end(Iterator current, Iterator upper_bound); - /*`Get an iterator to the end of the line. Applicable to any - iterator. */ - - //`[heading get_current_line] - template - inline iterator_range - get_current_line(Iterator lower_bound, Iterator current, - Iterator upper_bound); - /*`Get an `iterator_range` containing the current line. Applicable to any - iterator. */ - - //`[heading get_column] - template - inline std::size_t get_column(Iterator lower_bound, Iterator current, - std::size_t tabs = 4); - /*`Get the current column. Applicable to any iterator. */ - //] - - template - inline std::size_t get_line(Iterator) - { - return -1; - } - - template - inline std::size_t get_line(line_pos_iterator i) - { - return i.position(); - } - - namespace detail { - // get_line_start for forward iterators: forward linear search starting from lower-bound - // complexity: linear in length of [lower_bound, current) - template - inline Iterator get_line_start(Iterator lower_bound, - Iterator current, - std::forward_iterator_tag) - { - Iterator latest = lower_bound; - for (Iterator it = lower_bound; it != current; ) { - if ((*it == '\r') || (*it == '\n')) { - latest = ++it; - } - else { - ++it; - } - } - return latest; - } - - // get_line_start for forward iterators: backward linear search starting from current - // complexity: linear in avarage line-length - template - inline Iterator get_line_start(Iterator lower_bound, - Iterator current, - std::bidirectional_iterator_tag) - { - while (current != lower_bound) { - --current; - if ((*current == '\r') || (*current == '\n')) { - return ++current; - } - } - return current; - } - } - - template - inline Iterator get_line_start(Iterator lower_bound, Iterator current) - { - return detail::get_line_start( - lower_bound, - current, - typename std::iterator_traits::iterator_category() - ); - } - - template - inline line_pos_iterator - get_line_start(line_pos_iterator lower_bound, - line_pos_iterator current) - { - // No need in line number counting because it will be the same - Iterator it = get_line_start(lower_bound.base(), current.base()); - return line_pos_iterator(it, current.position()); - } - - template - inline Iterator get_line_end(Iterator current, Iterator upper_bound) - { - for (Iterator i = current; i != upper_bound; ++i) { - if ((*i == '\n') || (*i == '\r')) { - return i; - } - } - return upper_bound; - } - - template - inline line_pos_iterator - get_line_end(line_pos_iterator current, - line_pos_iterator upper_bound) - { - // No need in line number counting because it will be the same - Iterator it = get_line_end(current.base(), upper_bound.base()); - return line_pos_iterator(it, current.position()); - } - - template - inline iterator_range - get_current_line(Iterator lower_bound, - Iterator current, - Iterator upper_bound) - { - Iterator first = get_line_start(lower_bound, current); - Iterator last = get_line_end(current, upper_bound); - return iterator_range(first, last); - } - - template - inline std::size_t get_column(Iterator lower_bound, - Iterator current, - std::size_t tabs) - { - std::size_t column = 1; - Iterator first = get_line_start(lower_bound, current); - - for (Iterator i = first; i != current; ++i) { - switch (*i) { - case '\t': - column += tabs - (column - 1) % tabs; - break; - default: - ++column; - } - } - - return column; - } - - template - inline std::size_t get_column(line_pos_iterator lower_bound, - line_pos_iterator current, - std::size_t tabs = 4) - { - return get_column(lower_bound.base(), current.base(), tabs); - } - -}} - -#endif // BOOST_SPIRIT_SUPPORT_LINE_POS_ITERATOR - diff --git a/framework/contrib/boost/include/boost/spirit/home/support/iterators/look_ahead.hpp b/framework/contrib/boost/include/boost/spirit/home/support/iterators/look_ahead.hpp deleted file mode 100644 index 039dfe261f5d..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/iterators/look_ahead.hpp +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright (c) 2001, Daniel C. Nuffer -// Copyright (c) 2001-2011 Hartmut Kaiser -// http://spirit.sourceforge.net/ -// -// 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_ITERATOR_LOOK_AHEAD_MAR_16_2007_1253PM) -#define BOOST_SPIRIT_ITERATOR_LOOK_AHEAD_MAR_16_2007_1253PM - -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // this could be a template typedef, since such a thing doesn't - // exist in C++, we'll use inheritance to accomplish the same thing. - /////////////////////////////////////////////////////////////////////////// - template - class look_ahead : - public multi_pass > - > - { - private: - typedef multi_pass > - > base_type; - - public: - look_ahead() - : base_type() {} - - explicit look_ahead(T x) - : base_type(x) {} - - look_ahead(look_ahead const& x) - : base_type(x) {} - -#if BOOST_WORKAROUND(__GLIBCPP__, == 20020514) - look_ahead(int) // workaround for a bug in the library - : base_type() {} // shipped with gcc 3.1 -#endif // BOOST_WORKAROUND(__GLIBCPP__, == 20020514) - - look_ahead operator= (base_type const& rhs) - { - this->base_type::operator=(rhs); - return *this; - } - - // default generated operators destructor and assignment operator are ok. - }; - -}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/iterators/multi_pass.hpp b/framework/contrib/boost/include/boost/spirit/home/support/iterators/multi_pass.hpp deleted file mode 100644 index ffd98413389c..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/iterators/multi_pass.hpp +++ /dev/null @@ -1,246 +0,0 @@ -// Copyright (c) 2001, Daniel C. Nuffer -// Copyright (c) 2001-2011 Hartmut Kaiser -// http://spirit.sourceforge.net/ -// -// 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_ITERATOR_MULTI_PASS_MAR_16_2007_1124AM) -#define BOOST_SPIRIT_ITERATOR_MULTI_PASS_MAR_16_2007_1124AM - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // The default multi_pass instantiation uses a ref-counted std_deque scheme. - /////////////////////////////////////////////////////////////////////////// - template - class multi_pass - : private boost::base_from_member< - typename Policies::BOOST_NESTED_TEMPLATE shared*> - , public Policies::BOOST_NESTED_TEMPLATE unique - { - private: - // unique and shared data types - typedef typename Policies::BOOST_NESTED_TEMPLATE unique - policies_base_type; - typedef typename Policies::BOOST_NESTED_TEMPLATE shared - shared_data_type; - - typedef boost::base_from_member member_base; - - // define the types the standard embedded iterator typedefs are taken - // from - typedef typename policies_base_type::input_policy iterator_type; - - public: - // standard iterator typedefs - typedef std::forward_iterator_tag iterator_category; - typedef typename iterator_type::value_type value_type; - typedef typename iterator_type::difference_type difference_type; - typedef typename iterator_type::distance_type distance_type; - typedef typename iterator_type::reference reference; - typedef typename iterator_type::pointer pointer; - - multi_pass() : member_base(static_cast(0)) {} - - explicit multi_pass(T& input) - : member_base(new shared_data_type(input)), policies_base_type(input) {} - - explicit multi_pass(T const& input) - : member_base(new shared_data_type(input)), policies_base_type(input) {} - - multi_pass(multi_pass const& x) - : member_base(x.member), policies_base_type(x) - { - policies_base_type::clone(*this); - } - -#if BOOST_WORKAROUND(__GLIBCPP__, == 20020514) - // The standard library shipped with gcc-3.1 has a bug in - // bits/basic_string.tcc. It tries to use iter::iter(0) to - // construct an iterator. Ironically, this happens in sanity - // checking code that isn't required by the standard. - // The workaround is to provide an additional constructor that - // ignores its int argument and behaves like the default constructor. - multi_pass(int) : member_base(static_cast(0)) {} -#endif // BOOST_WORKAROUND(__GLIBCPP__, == 20020514) - - ~multi_pass() - { - if (policies_base_type::release(*this)) { - policies_base_type::destroy(*this); - delete this->member; - } - } - - multi_pass& operator=(multi_pass const& x) - { - if (this != &x) { - multi_pass temp(x); - temp.swap(*this); - } - return *this; - } - - void swap(multi_pass& x) - { - boost::core::invoke_swap(this->member, x.member); - this->policies_base_type::swap(x); - } - - reference operator*() const - { - policies_base_type::docheck(*this); - return policies_base_type::dereference(*this); - } - pointer operator->() const - { - return &(operator*()); - } - - multi_pass& operator++() - { - policies_base_type::docheck(*this); - policies_base_type::increment(*this); - return *this; - } - multi_pass operator++(int) - { - multi_pass tmp(*this); - ++*this; - return tmp; - } - - void clear_queue(BOOST_SCOPED_ENUM(traits::clear_mode) mode = - traits::clear_mode::clear_if_enabled) - { - if (mode == traits::clear_mode::clear_always || !inhibit_clear_queue()) - policies_base_type::clear_queue(*this); - } - bool inhibit_clear_queue() const - { - return this->member->inhibit_clear_queue_; - } - void inhibit_clear_queue(bool flag) - { - this->member->inhibit_clear_queue_ = flag; - } - - bool operator==(multi_pass const& y) const - { - if (is_eof()) - return y.is_eof(); - if (y.is_eof()) - return false; - - return policies_base_type::equal_to(*this, y); - } - bool operator<(multi_pass const& y) const - { - return policies_base_type::less_than(*this, y); - } - - bool operator!=(multi_pass const& y) const - { - return !(*this == y); - } - bool operator>(multi_pass const& y) const - { - return y < *this; - } - bool operator>=(multi_pass const& y) const - { - return !(*this < y); - } - bool operator<=(multi_pass const& y) const - { - return !(y < *this); - } - - // allow access to base member - shared_data_type* shared() const { return this->member; } - - private: // helper functions - bool is_eof() const - { - return (0 == this->member) || policies_base_type::is_eof(*this); - } - }; - - /////////////////////////////////////////////////////////////////////////// - // Generator function - /////////////////////////////////////////////////////////////////////////// - template - inline multi_pass - make_multi_pass(T& i) - { - return multi_pass(i); - } - template - inline multi_pass - make_multi_pass(T const& i) - { - return multi_pass(i); - } - - /////////////////////////////////////////////////////////////////////////// - template - inline multi_pass - make_default_multi_pass(T& i) - { - return multi_pass(i); - } - template - inline multi_pass - make_default_multi_pass(T const& i) - { - return multi_pass(i); - } - - /////////////////////////////////////////////////////////////////////////// - template - inline void - swap(multi_pass &x, multi_pass &y) - { - x.swap(y); - } - - /////////////////////////////////////////////////////////////////////////// - // define special functions allowing to integrate any multi_pass iterator - // with expectation points - namespace traits - { - template - void clear_queue(multi_pass& mp - , BOOST_SCOPED_ENUM(traits::clear_mode) mode) - { - mp.clear_queue(mode); - } - - template - void inhibit_clear_queue(multi_pass& mp, bool flag) - { - mp.inhibit_clear_queue(flag); - } - - template - bool inhibit_clear_queue(multi_pass& mp) - { - return mp.inhibit_clear_queue(); - } - } - -}} // namespace boost::spirit - -#endif - - diff --git a/framework/contrib/boost/include/boost/spirit/home/support/iterators/multi_pass_fwd.hpp b/framework/contrib/boost/include/boost/spirit/home/support/iterators/multi_pass_fwd.hpp deleted file mode 100644 index fdaa1fb0d404..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/iterators/multi_pass_fwd.hpp +++ /dev/null @@ -1,90 +0,0 @@ -/*============================================================================= - Copyright (c) 2007 Tobias Schwinger - Copyright (c) 2001-2011 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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_ITERATOR_MULTI_PASS_FWD_APR_18_2008_1102AM) -#define BOOST_SPIRIT_ITERATOR_MULTI_PASS_FWD_APR_18_2008_1102AM - -#include -#include - -namespace boost { namespace spirit { - - namespace iterator_policies - { - // input policies - struct input_iterator; - struct buffering_input_iterator; - struct istream; - struct lex_input; - struct functor_input; - struct split_functor_input; - - // ownership policies - struct ref_counted; - struct first_owner; - - // checking policies - class illegal_backtracking; - struct buf_id_check; - struct no_check; - - // storage policies - struct split_std_deque; - template struct fixed_size_queue; - - // policy combiner -#if defined(BOOST_SPIRIT_DEBUG) - template - struct default_policy; -#else - template - struct default_policy; -#endif - } - - template > - class multi_pass; - - template - void swap(multi_pass &x, multi_pass &y); - -}} // namespace boost::spirit - -namespace boost { namespace spirit { namespace traits -{ - // declare special functions allowing to integrate any multi_pass iterator - // with expectation points - - // multi_pass iterators require special handling (for the non-specialized - // versions of these functions see support/multi_pass_wrapper.hpp) - template - void clear_queue(multi_pass& - , BOOST_SCOPED_ENUM(clear_mode) mode = clear_mode::clear_if_enabled); - - template - void inhibit_clear_queue(multi_pass&, bool); - - template - bool inhibit_clear_queue(multi_pass&); - - // Helper template to recognize a multi_pass iterator. This specialization - // will be instantiated for any multi_pass iterator. - template - struct is_multi_pass > : mpl::true_ {}; - -}}} - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/support/iterators/ostream_iterator.hpp b/framework/contrib/boost/include/boost/spirit/home/support/iterators/ostream_iterator.hpp deleted file mode 100644 index b51e8caa6abd..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/iterators/ostream_iterator.hpp +++ /dev/null @@ -1,16 +0,0 @@ -// 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_OSTREAM_ITERATOR_JAN_13_2010_0211PM) -#define BOOST_SPIRIT_OSTREAM_ITERATOR_JAN_13_2010_0211PM - -#include - -namespace boost { namespace spirit -{ - typedef karma::ostream_iterator ostream_iterator; -}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/lazy.hpp b/framework/contrib/boost/include/boost/spirit/home/support/lazy.hpp deleted file mode 100644 index 9faa8e28bd07..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/lazy.hpp +++ /dev/null @@ -1,46 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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_LAZY_NOVEMBER_04_2008_1157AM) -#define BOOST_SPIRIT_LAZY_NOVEMBER_04_2008_1157AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include - -namespace boost { namespace phoenix -{ - template - struct actor; -}} - -namespace boost { namespace spirit -{ - template - typename proto::terminal >::type - lazy(phoenix::actor const& f) - { - return proto::terminal >::type::make(f); - } - - namespace tag - { - struct lazy_eval - { - BOOST_SPIRIT_IS_TAG() - }; - } - - template - struct is_modifier_directive - : mpl::true_ {}; -}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/limits.hpp b/framework/contrib/boost/include/boost/spirit/home/support/limits.hpp deleted file mode 100644 index 563ce5694be7..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/limits.hpp +++ /dev/null @@ -1,22 +0,0 @@ -// 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_SUPPORT_LIMITS_MAR_26_2011_0833PM) -#define BOOST_SPIRIT_SUPPORT_LIMITS_MAR_26_2011_0833PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include - -#if !defined(SPIRIT_ARGUMENTS_LIMIT) -# define SPIRIT_ARGUMENTS_LIMIT BOOST_PHOENIX_LIMIT -#endif -#if !defined(SPIRIT_ATTRIBUTES_LIMIT) -# define SPIRIT_ATTRIBUTES_LIMIT BOOST_PHOENIX_LIMIT -#endif - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/make_component.hpp b/framework/contrib/boost/include/boost/spirit/home/support/make_component.hpp deleted file mode 100644 index 0a8c39152bc3..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/make_component.hpp +++ /dev/null @@ -1,450 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_MAKE_COMPONENT_OCTOBER_16_2008_1250PM -#define BOOST_SPIRIT_MAKE_COMPONENT_OCTOBER_16_2008_1250PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - // There is no real "component" class. Each domain is responsible - // for creating its own components. You need to specialize this for - // each component in your domain. Use this as a guide. - - template - struct make_component - { - template - struct result; - - template - struct result; - - template - typename result::type - operator()(Elements const& elements, Modifiers const& modifiers) const; - }; - - namespace tag - { - // Normally, we use proto tags as-is to distinguish operators. - // The special case is proto::tag::subscript. Spirit uses this - // as either sementic actions or directives. To distinguish between - // the two, we use these special tags below. - - struct directive; - struct action; - } - - template - struct flatten_tree; -}} - -namespace boost { namespace spirit { namespace detail -{ - template - struct make_terminal_impl - : proto::transform_impl - { - typedef typename - proto::result_of::value::type - value; - - typedef typename result_of::make_cons::type elements; - - typedef - make_component - make_component_; - - typedef typename - make_component_::template - result::type - result_type; - - result_type operator()( - typename make_terminal_impl::expr_param expr - , typename make_terminal_impl::state_param /*state*/ - , typename make_terminal_impl::data_param data - ) const - { - return typename make_terminal_impl::make_component_()( - detail::make_cons(proto::value(expr)) - , data - ); - } - }; - - template - struct make_terminal_impl, State, Data, Domain> - : proto::transform_impl, State, Data> - { - typedef phoenix::actor value; - typedef typename result_of::make_cons::type elements; - typedef make_component make_component_; - - typedef typename - make_component_::template - result::type - result_type; - - result_type operator()( - typename make_terminal_impl::expr_param expr - , typename make_terminal_impl::state_param /*state*/ - , typename make_terminal_impl::data_param data - ) const - { - return typename make_terminal_impl::make_component_()( - detail::make_cons(expr) - , data - ); - } - }; - - template - struct make_terminal_impl &, State, Data, Domain> - : make_terminal_impl, State, Data, Domain> - {}; - - template - struct make_terminal_impl const &, State, Data, Domain> - : make_terminal_impl, State, Data, Domain> - {}; - - template - struct make_terminal : proto::transform > - { - template - struct impl : make_terminal_impl {}; - }; - - template - struct make_unary : proto::transform > - { - template - struct impl : proto::transform_impl - { - typedef typename - proto::result_of::child_c::type - child; - - typedef typename Grammar:: - template result::type - child_component; - - typedef typename - result_of::make_cons::type - elements; - - typedef make_component make_component_; - - typedef typename - make_component_::template - result::type - result_type; - - result_type operator()( - typename impl::expr_param expr - , typename impl::state_param state - , typename impl::data_param data - ) const - { - return typename impl::make_component_()( - detail::make_cons( - Grammar()(proto::child(expr), state, data)) - , data - ); - } - }; - }; - - // un-flattened version - template ::value> - struct make_binary - { - template - struct impl : proto::transform_impl - { - typedef typename Grammar:: - template result::type - , State, Data)>::type - lhs_component; - - typedef typename Grammar:: - template result::type - , State, Data)>::type - rhs_component; - - typedef typename - result_of::make_cons< - lhs_component - , typename result_of::make_cons::type - >::type - elements_type; - - typedef make_component make_component_; - - typedef typename - make_component_::template - result::type - result_type; - - result_type operator()( - typename impl::expr_param expr - , typename impl::state_param state - , typename impl::data_param data - ) const - { - elements_type elements = - detail::make_cons( - Grammar()( - proto::child_c<0>(expr), state, data) // LHS - , detail::make_cons( - Grammar()( - proto::child_c<1>(expr), state, data) // RHS - ) - ); - - return make_component_()(elements, data); - } - }; - }; - - template - struct make_binary_helper : proto::transform > - { - template - struct impl : proto::transform_impl - { - typedef typename Grammar:: - template result::type - lhs; - - typedef typename result_of::make_cons::type result_type; - - result_type operator()( - typename impl::expr_param expr - , typename impl::state_param state - , typename impl::data_param data - ) const - { - return detail::make_cons(Grammar()(expr, state, data), state); - } - }; - }; - - // Flattened version - template - struct make_binary - : proto::transform > - { - template - struct impl : proto::transform_impl - { - typedef typename - proto::reverse_fold_tree< - proto::_ - , proto::make - , make_binary_helper - >::template impl - reverse_fold_tree; - - typedef typename reverse_fold_tree::result_type elements; - typedef make_component make_component_; - - typedef typename - make_component_::template - result::type - result_type; - - result_type operator()( - typename impl::expr_param expr - , typename impl::state_param state - , typename impl::data_param data - ) const - { - return make_component_()( - reverse_fold_tree()(expr, state, data), data); - } - }; - }; - - template - struct make_directive : proto::transform > - { - template - struct impl : proto::transform_impl - { - typedef typename - proto::result_of::child_c::type - lhs; - - typedef typename - proto::result_of::value::type - tag_type; - - typedef typename modify:: - template result(tag_type, Data)>::type - modifier_type; - - typedef typename Grammar:: - template result::type - , State - , modifier_type - )>::type - rhs_component; - - typedef typename - result_of::make_cons< - tag_type - , typename result_of::make_cons::type - >::type - elements_type; - - typedef make_component make_component_; - - typedef typename - make_component_::template - result::type - result_type; - - result_type operator()( - typename impl::expr_param expr - , typename impl::state_param state - , typename impl::data_param data - ) const - { - tag_type tag = proto::value(proto::child_c<0>(expr)); - typename remove_reference::type - modifier = modify()(tag, data); - - elements_type elements = - detail::make_cons( - tag // LHS - , detail::make_cons( - Grammar()( - proto::child_c<1>(expr) // RHS - , state, modifier) - ) - ); - - return make_component_()(elements, data); - } - }; - }; - - template - struct make_action : proto::transform > - { - template - struct impl : proto::transform_impl - { - typedef typename Grammar:: - template result::type - , State - , Data - )>::type - lhs_component; - - typedef - typename mpl::eval_if_c< - phoenix::is_actor< - typename proto::result_of::child_c::type - >::type::value - , proto::result_of::child_c - , proto::result_of::value< - typename proto::result_of::child_c::type - > - >::type - rhs_component; - - typedef typename - result_of::make_cons< - lhs_component - , typename result_of::make_cons::type - >::type - elements_type; - - typedef make_component make_component_; - - typedef typename - make_component_::template - result::type - result_type; - - result_type operator()( - typename impl::expr_param expr - , typename impl::state_param state - , typename impl::data_param data - ) const - { - return - (*this)( - expr - , state - , data - , typename phoenix::is_actor< - typename proto::result_of::child_c::type - >::type() - ); - } - - result_type operator()( - typename impl::expr_param expr - , typename impl::state_param state - , typename impl::data_param data - , mpl::false_ - ) const - { - elements_type elements = - detail::make_cons( - Grammar()( - proto::child_c<0>(expr), state, data) // LHS - , detail::make_cons( - proto::value(proto::child_c<1>(expr))) // RHS - ); - - return make_component_()(elements, data); - } - - result_type operator()( - typename impl::expr_param expr - , typename impl::state_param state - , typename impl::data_param data - , mpl::true_ - ) const - { - elements_type elements = - detail::make_cons( - Grammar()( - proto::child_c<0>(expr), state, data) // LHS - , detail::make_cons( - proto::child_c<1>(expr)) // RHS - ); - - return make_component_()(elements, data); - } - }; - }; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/meta_compiler.hpp b/framework/contrib/boost/include/boost/spirit/home/support/meta_compiler.hpp deleted file mode 100644 index b49075578228..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/meta_compiler.hpp +++ /dev/null @@ -1,321 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_META_COMPILER_OCTOBER_16_2008_1258PM -#define BOOST_SPIRIT_META_COMPILER_OCTOBER_16_2008_1258PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include // for transform placeholders -#include - -namespace boost { namespace spirit -{ - // Some defaults... - - template - struct use_operator : mpl::false_ {}; - - template - struct use_function : mpl::false_ {}; - - template - struct use_directive : mpl::false_ {}; - - template - struct is_modifier_directive : mpl::false_ {}; - - template - struct use_terminal : mpl::false_ {}; - - template - struct flatten_tree : mpl::false_ {}; - - // Our meta-compiler. This is the main engine that hooks Spirit - // to the proto expression template engine. - - template - struct meta_compiler - { - struct meta_grammar; - - BOOST_SPIRIT_ASSERT_MSG(( - !use_operator::value - ), error_proto_tag_subscript_cannot_be_used, ()); - -#if !BOOST_WORKAROUND(BOOST_MSVC, < 1400) - // this is the non-broken part for compilers properly supporting - // partial template specialization (VC7.1 does not) - struct cases - { - template - struct case_ - : proto::not_ - {}; - - /////////////////////////////////////////////////////////////////// - // terminals - /////////////////////////////////////////////////////////////////// - template - struct case_ - : proto::when< - proto::if_()>, - detail::make_terminal - > - {}; - - template - struct case_ >::type> - : proto::or_< - /////////////////////////////////////////////////////////////////// - // binary operators - /////////////////////////////////////////////////////////////////// - proto::when, - detail::make_binary - >, - /////////////////////////////////////////////////////////////////// - // unary operators - /////////////////////////////////////////////////////////////////// - proto::when, - detail::make_unary - > - > - {}; - - template - struct case_ - : proto::or_< - /////////////////////////////////////////////////////////////////// - // directives - /////////////////////////////////////////////////////////////////// - proto::when - , proto::if_()> > - , meta_grammar>, - detail::make_directive - >, - /////////////////////////////////////////////////////////////////// - // semantic actions - /////////////////////////////////////////////////////////////////// - proto::when, - detail::make_action - > - > - {}; - }; -#else - // this part actually constitutes invalid C++ code, but it allows us to - // convince VC7.1 to do what we want - struct cases - { - template - struct case_ - : proto::not_ - {}; - - /////////////////////////////////////////////////////////////////// - // terminals - /////////////////////////////////////////////////////////////////// - template <> - struct case_ - : proto::when< - proto::if_()>, - detail::make_terminal - > - {}; - - template - struct case_ - : proto::or_< - /////////////////////////////////////////////////////////////////// - // binary operators - /////////////////////////////////////////////////////////////////// - proto::when, Tag>::type - , meta_grammar, meta_grammar> - , detail::make_binary - >, - /////////////////////////////////////////////////////////////////// - // unary operators - /////////////////////////////////////////////////////////////////// - proto::when, Tag>::type - , meta_grammar> - , detail::make_unary - > - > - {}; - - template <> - struct case_ - : proto::or_< - /////////////////////////////////////////////////////////////////// - // directives - /////////////////////////////////////////////////////////////////// - proto::when - , proto::if_()> > - , meta_grammar>, - detail::make_directive - >, - /////////////////////////////////////////////////////////////////// - // semantic actions - /////////////////////////////////////////////////////////////////// - proto::when, - detail::make_action - > - > - {}; - }; -#endif - - struct meta_grammar - : proto::switch_ - {}; - }; - - namespace result_of - { - // Default case - template - struct compile - { - typedef typename meta_compiler::meta_grammar meta_grammar; - typedef typename meta_grammar:: - template result::type - type; - }; - - // If Expr is not a proto expression, make it a terminal - template - struct compile >::type> - : compile::type, Modifiers> {}; - } - - namespace traits - { - // Check if Expr matches the domain's grammar - template - struct matches : - proto::matches< - typename proto::result_of::as_expr< - typename remove_reference::type>::type, - typename meta_compiler::meta_grammar - > - { - }; - } - - namespace detail - { - template - struct compiler - { - // Default case - template - static typename spirit::result_of::compile::type - compile(Expr const& expr, Modifiers modifiers, mpl::true_) - { - typename meta_compiler::meta_grammar compiler; - return compiler(expr, mpl::void_(), modifiers); - } - - // If Expr is not a proto expression, make it a terminal - template - static typename spirit::result_of::compile::type - compile(Expr const& expr, Modifiers modifiers, mpl::false_) - { - typename meta_compiler::meta_grammar compiler; - typedef typename detail::as_meta_element::type expr_; - typename proto::terminal::type term = {expr}; - return compiler(term, mpl::void_(), modifiers); - } - }; - } - - template - inline typename result_of::compile::type - compile(Expr const& expr) - { - typedef typename proto::is_expr::type is_expr; - return detail::compiler::compile(expr, unused, is_expr()); - } - - template - inline typename result_of::compile::type - compile(Expr const& expr, Modifiers modifiers) - { - typedef typename proto::is_expr::type is_expr; - return detail::compiler::compile(expr, modifiers, is_expr()); - } - - /////////////////////////////////////////////////////////////////////////// - template class generator> - struct make_unary_composite - { - typedef typename - fusion::result_of::value_at_c::type - element_type; - typedef generator result_type; - result_type operator()(Elements const& elements, unused_type) const - { - return result_type(fusion::at_c<0>(elements)); - } - }; - - template class generator> - struct make_binary_composite - { - typedef typename - fusion::result_of::value_at_c::type - left_type; - typedef typename - fusion::result_of::value_at_c::type - right_type; - typedef generator result_type; - - result_type operator()(Elements const& elements, unused_type) const - { - return result_type( - fusion::at_c<0>(elements) - , fusion::at_c<1>(elements) - ); - } - }; - - template class generator> - struct make_nary_composite - { - typedef generator result_type; - result_type operator()(Elements const& elements, unused_type) const - { - return result_type(elements); - } - }; - -}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/modify.hpp b/framework/contrib/boost/include/boost/spirit/home/support/modify.hpp deleted file mode 100644 index a8777924b88e..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/modify.hpp +++ /dev/null @@ -1,116 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - http://spirit.sourceforge.net/ - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_MODIFY_OCTOBER_25_2008_0142PM -#define BOOST_SPIRIT_MODIFY_OCTOBER_25_2008_0142PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include - -namespace boost { namespace spirit -{ - template - struct is_modifier_directive; - - // Testing if a modifier set includes a modifier T involves - // checking for inheritance (i.e. Modifiers is derived from T) - template - struct has_modifier - : is_base_of {}; - - // Adding modifiers is done using multi-inheritance - template - struct compound_modifier : Current, New - { - compound_modifier() - : Current(), New() {} - - compound_modifier(Current const& current, New const& new_) - : Current(current), New(new_) {} - }; - - // Don't add if New is already in Current - template - struct compound_modifier< - Current, New, typename enable_if >::type> - : Current - { - compound_modifier() - : Current() {} - - compound_modifier(Current const& current, New const&) - : Current(current) {} - }; - - // Special case if Current is unused_type - template - struct compound_modifier : New - { - compound_modifier() - : New() {} - - compound_modifier(unused_type, New const& new_) - : New(new_) {} - }; - - // Domains may specialize this modify metafunction to allow - // directives to add information to the Modifier template - // parameter that is passed to the make_component metafunction. - // By default, we return the modifiers untouched - template - struct modify - { - typedef void proto_is_callable_; - - template - struct result; - - template - struct result - { - typedef typename remove_const< - typename remove_reference::type>::type - tag_type; - typedef typename remove_const< - typename remove_reference::type>::type - modifiers_type; - - typedef typename mpl::if_< - is_modifier_directive - , compound_modifier - , Modifiers>::type - type; - }; - - template - typename result::type - operator()(Tag tag, Modifiers modifiers) const - { - return op(tag, modifiers, is_modifier_directive()); - } - - template - Modifiers - op(Tag /*tag*/, Modifiers modifiers, mpl::false_) const - { - return modifiers; - } - - template - compound_modifier - op(Tag tag, Modifiers modifiers, mpl::true_) const - { - return compound_modifier(modifiers, tag); - } - }; -}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/multi_pass.hpp b/framework/contrib/boost/include/boost/spirit/home/support/multi_pass.hpp deleted file mode 100644 index 74f4a2314b97..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/multi_pass.hpp +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright (c) 2001-2009, 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_ITERATOR_MULTI_PASS_MAR_16_2007_0201AM) -#define BOOST_SPIRIT_ITERATOR_MULTI_PASS_MAR_16_2007_0201AM - -#if defined(_MSC_VER) -#pragma once -#endif - -// Include everything needed for the multi_pass -// Ownership policies -#include -#include - -// Input policies -#include -#include -#include -#include -#include -#include - -// Checking policies -#include -#include - -// Storage policies -#include -#include - -// Main multi_pass iterator -#include -#include -#include - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/multi_pass_wrapper.hpp b/framework/contrib/boost/include/boost/spirit/home/support/multi_pass_wrapper.hpp deleted file mode 100644 index ec5fa36f4540..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/multi_pass_wrapper.hpp +++ /dev/null @@ -1,52 +0,0 @@ -// 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_ITERATOR_MULTI_PASS_WRAPPER_JUL_12_2009_0914PM) -#define BOOST_SPIRIT_ITERATOR_MULTI_PASS_WRAPPER_JUL_12_2009_0914PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include - -namespace boost { namespace spirit { namespace traits -{ - // declare special functions allowing to integrate any multi_pass iterator - // with expectation points - - // normal iterators require no special handling - BOOST_SCOPED_ENUM_START(clear_mode) - { - clear_if_enabled, - clear_always - }; - BOOST_SCOPED_ENUM_END - - template - void clear_queue(Iterator& - , BOOST_SCOPED_ENUM(clear_mode) /*mode*/ = clear_mode::clear_if_enabled) - {} - - template - void inhibit_clear_queue(Iterator&, bool) - {} - - template - bool inhibit_clear_queue(Iterator&) - { - return false; - } - - // Helper template to recognize a multi_pass iterator. This specialization - // will be instantiated for any non-multi_pass iterator. - template - struct is_multi_pass : mpl::false_ {}; - -}}} - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/support/nonterminal/expand_arg.hpp b/framework/contrib/boost/include/boost/spirit/home/support/nonterminal/expand_arg.hpp deleted file mode 100644 index c2931d2a2085..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/nonterminal/expand_arg.hpp +++ /dev/null @@ -1,91 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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_EXPAND_ARG_FEB_19_2007_1107AM) -#define BOOST_SPIRIT_EXPAND_ARG_FEB_19_2007_1107AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace detail -{ - /////////////////////////////////////////////////////////////////////////// -#ifdef _MSC_VER -# pragma warning(push) -# pragma warning(disable: 4512) // assignment operator could not be generated. -#endif - template - struct expand_arg - { - template - struct result_type - { - // This is a temporary hack. The better way is to detect if T - // can be called given unused context. - typedef typename - mpl::eval_if< - mpl::or_, traits::is_string > - , mpl::identity - , boost::result_of - >::type - type; - }; - - template - struct result; - - template - struct result - : result_type {}; - - template - struct result - : result_type {}; - - expand_arg(Context& context_) - : context(context_) - { - } - - template - typename result_type::type - call(T const& f, mpl::false_) const - { - return f(unused, context); - } - - template - typename result_type::type - call(T const& val, mpl::true_) const - { - return val; - } - - template - typename result_type::type - operator()(T const& x) const - { - return call(x, mpl::or_, traits::is_string >()); - } - - Context& context; - }; -#ifdef _MSC_VER -# pragma warning(pop) -#endif - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/nonterminal/extract_param.hpp b/framework/contrib/boost/include/boost/spirit/home/support/nonterminal/extract_param.hpp deleted file mode 100644 index eeab61f3d12a..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/nonterminal/extract_param.hpp +++ /dev/null @@ -1,148 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - Copyright (c) 2001-2011 Hartmut Kaiser - Copyright (c) 2009 Francois Barel - - 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_EXTRACT_PARAM_AUGUST_08_2009_0848AM) -#define BOOST_SPIRIT_EXTRACT_PARAM_AUGUST_08_2009_0848AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace detail -{ - /////////////////////////////////////////////////////////////////////////// - // Helpers to extract params (locals, attributes, ...) from nonterminal - // template arguments - /////////////////////////////////////////////////////////////////////////// - template - struct extract_param - { - typedef typename mpl::find_if::type pos; - - typedef typename - mpl::eval_if< - is_same::type> - , mpl::identity - , mpl::deref - >::type - type; - }; - - /////////////////////////////////////////////////////////////////////////// - template - struct extract_locals - : fusion::result_of::as_vector< - typename extract_param< - Types - , is_locals - , locals<> - >::type - > - {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct extract_component - : spirit::result_of::compile< - Domain - , typename extract_param< - Types - , traits::matches - , unused_type - >::type - > - {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct make_function_type : mpl::identity {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct extract_sig - { - typedef typename - extract_param< - Types - , mpl::or_< - function_types::is_function - , mpl::and_< - mpl::not_ > - , mpl::not_ > - , mpl::not_ > - , mpl::not_ > - > - > - , void() - >::type - attr_of_ftype; - - typedef typename - mpl::eval_if< - function_types::is_function - , mpl::identity - , make_function_type - >::type - type; - }; - - template - struct attr_from_sig - { - typedef typename function_types::result_type::type attr; - - typedef typename - mpl::if_< - is_same - , unused_type - , attr - >::type - type; - }; - - template - struct params_from_sig - { - typedef typename function_types::parameter_types::type params; - - typedef typename fusion::result_of::as_list::type type; - }; - - /////////////////////////////////////////////////////////////////////////// - template - struct extract_encoding - : extract_param< - Types - , is_char_encoding - , unused_type - > - {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/nonterminal/locals.hpp b/framework/contrib/boost/include/boost/spirit/home/support/nonterminal/locals.hpp deleted file mode 100644 index 4db034905352..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/nonterminal/locals.hpp +++ /dev/null @@ -1,54 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - 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_LOCALS_APRIL_03_2007_0506PM) -#define BOOST_SPIRIT_LOCALS_APRIL_03_2007_0506PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include - -#if !defined(BOOST_SPIRIT_MAX_LOCALS_SIZE) -# define BOOST_SPIRIT_MAX_LOCALS_SIZE 10 -#else -# if BOOST_SPIRIT_MAX_LOCALS_SIZE < 3 -# undef BOOST_SPIRIT_MAX_LOCALS_SIZE -# define BOOST_SPIRIT_MAX_LOCALS_SIZE 10 -# endif -#endif - -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - template < - BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( - BOOST_SPIRIT_MAX_LOCALS_SIZE, typename T, mpl::na) - > - struct locals - : mpl::vector {}; - - /////////////////////////////////////////////////////////////////////////// - namespace detail - { - template - struct is_locals - : mpl::false_ - {}; - - template - struct is_locals > - : mpl::true_ - {}; - } -}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/numeric_traits.hpp b/framework/contrib/boost/include/boost/spirit/home/support/numeric_traits.hpp deleted file mode 100644 index 9e03fe06f703..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/numeric_traits.hpp +++ /dev/null @@ -1,122 +0,0 @@ -// 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_NUMERIC_TRAITS_JAN_07_2011_0722AM) -#define BOOST_SPIRIT_NUMERIC_TRAITS_JAN_07_2011_0722AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - // Determine if T is a boolean type - /////////////////////////////////////////////////////////////////////////// - template - struct is_bool : mpl::false_ {}; - - template - struct is_bool : is_bool {}; - - template <> - struct is_bool : mpl::true_ {}; - - /////////////////////////////////////////////////////////////////////////// - // Determine if T is a signed integer type - /////////////////////////////////////////////////////////////////////////// - template - struct is_int : mpl::false_ {}; - - template - struct is_int : is_int {}; - - template <> - struct is_int : mpl::true_ {}; - - template <> - struct is_int : mpl::true_ {}; - - template <> - struct is_int : mpl::true_ {}; - -#ifdef BOOST_HAS_LONG_LONG - template <> - struct is_int : mpl::true_ {}; -#endif - - /////////////////////////////////////////////////////////////////////////// - // Determine if T is an unsigned integer type - /////////////////////////////////////////////////////////////////////////// - template - struct is_uint : mpl::false_ {}; - - template - struct is_uint : is_uint {}; - -#if !defined(BOOST_NO_INTRINSIC_WCHAR_T) - template <> - struct is_uint : mpl::true_ {}; -#endif - - template <> - struct is_uint : mpl::true_ {}; - - template <> - struct is_uint : mpl::true_ {}; - -#ifdef BOOST_HAS_LONG_LONG - template <> - struct is_uint : mpl::true_ {}; -#endif - - /////////////////////////////////////////////////////////////////////////// - // Determine if T is a floating point type - /////////////////////////////////////////////////////////////////////////// - template - struct is_real : mpl::false_ {}; - - template - struct is_real : is_uint {}; - - template <> - struct is_real : mpl::true_ {}; - - template <> - struct is_real : mpl::true_ {}; - - template <> - struct is_real : mpl::true_ {}; - - /////////////////////////////////////////////////////////////////////////// - // customization points for numeric operations - /////////////////////////////////////////////////////////////////////////// - template - struct absolute_value; - - template - struct is_negative; - - template - struct is_zero; - - template - struct pow10_helper; - - template - struct is_nan; - - template - struct is_infinite; - - template - struct check_overflow : mpl::bool_::is_bounded> {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/sequence_base_id.hpp b/framework/contrib/boost/include/boost/spirit/home/support/sequence_base_id.hpp deleted file mode 100644 index d2f72148d47a..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/sequence_base_id.hpp +++ /dev/null @@ -1,39 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_SUPPORT_SEQUENCE_BASE_ID_HPP -#define BOOST_SPIRIT_SUPPORT_SEQUENCE_BASE_ID_HPP - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include - -namespace boost { namespace spirit { namespace traits -{ - namespace detail - { - BOOST_MPL_HAS_XXX_TRAIT_DEF(sequence_base_id) - } - - // We specialize this for sequences (see support/attributes.hpp). - // For sequences, we only wrap the attribute in a tuple IFF - // it is not already a fusion tuple. - // - // Note: in the comment above, "sequence" is a spirit sequence - // component (parser or generator), and a tuple is a fusion sequence - // (to avoid terminology confusion). - template - struct pass_attribute >::type> - : wrap_if_not_tuple {}; - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/string_traits.hpp b/framework/contrib/boost/include/boost/spirit/home/support/string_traits.hpp deleted file mode 100644 index f890cf962b13..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/string_traits.hpp +++ /dev/null @@ -1,358 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - Copyright (c) 2001-2011 Hartmut Kaiser - Copyright (c) 2010 Bryce Lelbach - - 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_STRING_TRAITS_OCTOBER_2008_1252PM) -#define BOOST_SPIRIT_STRING_TRAITS_OCTOBER_2008_1252PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include // for BOOST_PROTO_DISABLE_IF_IS_CONST -#include -#if defined(__GNUC__) && (__GNUC__ < 4) -#include -#endif - -namespace boost { namespace spirit { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - // Determine if T is a character type - /////////////////////////////////////////////////////////////////////////// - template - struct is_char : mpl::false_ {}; - - template - struct is_char : is_char {}; - - template <> - struct is_char : mpl::true_ {}; - - template <> - struct is_char : mpl::true_ {}; - - /////////////////////////////////////////////////////////////////////////// - // Determine if T is a string - /////////////////////////////////////////////////////////////////////////// - template - struct is_string : mpl::false_ {}; - - template - struct is_string : is_string {}; - - template <> - struct is_string : mpl::true_ {}; - - template <> - struct is_string : mpl::true_ {}; - - template <> - struct is_string : mpl::true_ {}; - - template <> - struct is_string : mpl::true_ {}; - - template - struct is_string : mpl::true_ {}; - - template - struct is_string : mpl::true_ {}; - - template - struct is_string : mpl::true_ {}; - - template - struct is_string : mpl::true_ {}; - - template - struct is_string : mpl::true_ {}; - - template - struct is_string : mpl::true_ {}; - - template - struct is_string : mpl::true_ {}; - - template - struct is_string : mpl::true_ {}; - - template - struct is_string > : mpl::true_ {}; - - /////////////////////////////////////////////////////////////////////////// - // Get the underlying char type of a string - /////////////////////////////////////////////////////////////////////////// - template - struct char_type_of; - - template - struct char_type_of : char_type_of {}; - - template <> - struct char_type_of : mpl::identity {}; - - template <> - struct char_type_of : mpl::identity {}; - - template <> - struct char_type_of : mpl::identity {}; - - template <> - struct char_type_of : mpl::identity {}; - - template <> - struct char_type_of : mpl::identity {}; - - template <> - struct char_type_of : mpl::identity {}; - - template - struct char_type_of : mpl::identity {}; - - template - struct char_type_of : mpl::identity {}; - - template - struct char_type_of : mpl::identity {}; - - template - struct char_type_of : mpl::identity {}; - - template - struct char_type_of : mpl::identity {}; - - template - struct char_type_of : mpl::identity {}; - - template - struct char_type_of : mpl::identity {}; - - template - struct char_type_of : mpl::identity {}; - - template - struct char_type_of > - : mpl::identity {}; - - /////////////////////////////////////////////////////////////////////////// - // Get the C string from a string - /////////////////////////////////////////////////////////////////////////// - template - struct extract_c_string; - - template - struct extract_c_string - { - typedef typename char_type_of::type char_type; - - template - static T const* call (T* str) - { - return (T const*)str; - } - - template - static T const* call (T const* str) - { - return str; - } - }; - - // Forwarder that strips const - template - struct extract_c_string - { - typedef typename extract_c_string::char_type char_type; - - static typename extract_c_string::char_type const* call (T const str) - { - return extract_c_string::call(str); - } - }; - - // Forwarder that strips references - template - struct extract_c_string - { - typedef typename extract_c_string::char_type char_type; - - static typename extract_c_string::char_type const* call (T& str) - { - return extract_c_string::call(str); - } - }; - - // Forwarder that strips const references - template - struct extract_c_string - { - typedef typename extract_c_string::char_type char_type; - - static typename extract_c_string::char_type const* call (T const& str) - { - return extract_c_string::call(str); - } - }; - - template - struct extract_c_string > - { - typedef T char_type; - - typedef std::basic_string string; - - static T const* call (string const& str) - { - return str.c_str(); - } - }; - - template - typename extract_c_string::char_type const* - get_c_string (T* str) - { - return extract_c_string::call(str); - } - - template - typename extract_c_string::char_type const* - get_c_string (T const* str) - { - return extract_c_string::call(str); - } - - template - typename extract_c_string::char_type const* - get_c_string (String& str) - { - return extract_c_string::call(str); - } - - template - typename extract_c_string::char_type const* - get_c_string (String const& str) - { - return extract_c_string::call(str); - } - - /////////////////////////////////////////////////////////////////////////// - // Get the begin/end iterators from a string - /////////////////////////////////////////////////////////////////////////// - - // Implementation for C-style strings. - -// gcc 3.x.x has problems resolving ambiguities here -#if defined(__GNUC__) && (__GNUC__ < 4) - template - inline typename add_const::type * get_begin(T* str) { return str; } - - template - inline typename add_const::type* get_end(T* str) - { - T* last = str; - while (*last) - last++; - return last; - } -#else - template - inline T const* get_begin(T const* str) { return str; } - - template - inline T* get_begin(T* str) { return str; } - - template - inline T const* get_end(T const* str) - { - T const* last = str; - while (*last) - last++; - return last; - } - - template - inline T* get_end(T* str) - { - T* last = str; - while (*last) - last++; - return last; - } -#endif - - // Implementation for containers (includes basic_string). - template - inline typename Str::const_iterator get_begin(Str const& str) - { return str.begin(); } - - template - inline typename Str::iterator - get_begin(Str& str BOOST_PROTO_DISABLE_IF_IS_CONST(Str)) - { return str.begin(); } - - template - inline typename Str::const_iterator get_end(Str const& str) - { return str.end(); } - - template - inline typename Str::iterator - get_end(Str& str BOOST_PROTO_DISABLE_IF_IS_CONST(Str)) - { return str.end(); } - - // Default implementation for other types: try a C-style string - // conversion. - // These overloads are explicitly disabled for containers, - // as they would be ambiguous with the previous ones. - template - inline typename disable_if - , T const*>::type get_begin(Str const& str) - { return str; } - - template - inline typename disable_if - , T const*>::type get_end(Str const& str) - { return get_end(get_begin(str)); } -} - -namespace result_of -{ - template - struct get_begin - { - typedef typename traits::char_type_of::type char_type; - - typedef typename mpl::if_< - is_const - , char_type const - , char_type - >::type* type; - }; - - template - struct get_begin >::type> - { - typedef typename mpl::if_< - is_const - , typename Str::const_iterator - , typename Str::iterator - >::type type; - }; - - template - struct get_end : get_begin {}; -} - -}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/terminal.hpp b/framework/contrib/boost/include/boost/spirit/home/support/terminal.hpp deleted file mode 100644 index 16b9e062f7d6..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/terminal.hpp +++ /dev/null @@ -1,687 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - Copyright (c) 2001-2011 Hartmut Kaiser - Copyright (c) 2011 Thomas Heller - - 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_TERMINAL_NOVEMBER_04_2008_0906AM) -#define BOOST_SPIRIT_TERMINAL_NOVEMBER_04_2008_0906AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include // includes as_actor specialization -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - template - struct terminal_ex - { - typedef Terminal terminal_type; - typedef Args args_type; - - terminal_ex(Args const& args_) - : args(args_) {} - terminal_ex(Args const& args_, Terminal const& term_) - : args(args_), term(term_) {} - - Args args; // Args is guaranteed to be a fusion::vectorN so you - // can use that template for detection and specialization - Terminal term; - }; - - template - struct lazy_terminal - { - typedef Terminal terminal_type; - typedef Actor actor_type; - static int const arity = Arity; - - lazy_terminal(Actor const& actor_) - : actor(actor_) {} - lazy_terminal(Actor const& actor_, Terminal const& term_) - : actor(actor_), term(term_) {} - - Actor actor; - Terminal term; - }; - - template - struct use_lazy_terminal : mpl::false_ {}; - - template - struct use_lazy_directive : mpl::false_ {}; - - template - struct terminal; - - template - struct use_terminal > - : use_terminal {}; - - template - struct use_terminal > - : use_lazy_terminal {}; - - template - struct use_directive > - : use_lazy_directive {}; - - template < - typename F - , typename A0 = unused_type - , typename A1 = unused_type - , typename A2 = unused_type - , typename Unused = unused_type - > - struct make_lazy; - - template - struct make_lazy - { - typedef typename - proto::terminal< - lazy_terminal< - typename F::terminal_type - , typename phoenix::detail::expression::function_eval::type - , 1 // arity - > - >::type - result_type; - typedef result_type type; - - result_type - operator()(F f, A0 const& _0_) const - { - typedef typename result_type::proto_child0 child_type; - return result_type::make(child_type( - phoenix::detail::expression::function_eval::make(f, _0_) - , f.proto_base().child0 - )); - } - }; - - template - struct make_lazy - { - typedef typename - proto::terminal< - lazy_terminal< - typename F::terminal_type - , typename phoenix::detail::expression::function_eval::type - , 2 // arity - > - >::type - result_type; - typedef result_type type; - - result_type - operator()(F f, A0 const& _0_, A1 const& _1_) const - { - typedef typename result_type::proto_child0 child_type; - return result_type::make(child_type( - phoenix::detail::expression::function_eval::make(f, _0_, _1_) - , f.proto_base().child0 - )); - } - }; - - template - struct make_lazy - { - typedef typename - proto::terminal< - lazy_terminal< - typename F::terminal_type - , typename phoenix::detail::expression::function_eval::type - , 3 // arity - > - >::type - result_type; - typedef result_type type; - - result_type - operator()(F f, A0 const& _0_, A1 const& _1_, A2 const& _2_) const - { - typedef typename result_type::proto_child0 child_type; - return result_type::make(child_type( - phoenix::detail::expression::function_eval::make(f, _0_, _1_, _2_) - , f.proto_base().child0 - )); - } - }; - - namespace detail - { - // Helper struct for SFINAE purposes - template struct bool_; - - template <> - struct bool_ : mpl::bool_ - { - typedef bool_* is_true; - }; - - template <> - struct bool_ : mpl::bool_ - { - typedef bool_* is_false; - }; - - // Metafunction to detect if at least one arg is a Phoenix actor - template < - typename A0 - , typename A1 = unused_type - , typename A2 = unused_type - > - struct contains_actor - : bool_< - phoenix::is_actor::value - || phoenix::is_actor::value - || phoenix::is_actor::value - > - {}; - - // to_lazy_arg: convert a terminal arg type to the type make_lazy needs - template - struct to_lazy_arg - : phoenix::as_actor // wrap A in a Phoenix actor if not already one - {}; - - template - struct to_lazy_arg - : to_lazy_arg - {}; - - template - struct to_lazy_arg - : to_lazy_arg - {}; - - template <> - struct to_lazy_arg - { - // unused arg: make_lazy wants unused_type - typedef unused_type type; - }; - - // to_nonlazy_arg: convert a terminal arg type to the type make_vector needs - template - struct to_nonlazy_arg - { - // identity - typedef A type; - }; - - template - struct to_nonlazy_arg - : to_nonlazy_arg - {}; - - template - struct to_nonlazy_arg - : to_nonlazy_arg - {}; - - // incomplete type: should not be appeared unused_type in nonlazy arg. - template <> - struct to_nonlazy_arg; - } - - template - struct terminal - : proto::extends< - typename proto::terminal::type - , terminal - > - { - typedef terminal this_type; - typedef Terminal terminal_type; - - typedef proto::extends< - typename proto::terminal::type - , terminal - > base_type; - - terminal() {} - - terminal(Terminal const& t) - : base_type(proto::terminal::type::make(t)) - {} - -#if defined(BOOST_MSVC) -#pragma warning(push) -// warning C4348: 'boost::spirit::terminal<...>::result_helper': redefinition of default parameter: parameter 3, 4 -#pragma warning(disable: 4348) -#endif - - template < - bool Lazy - , typename A0 - , typename A1 = unused_type - , typename A2 = unused_type - > - struct result_helper; - -#if defined(BOOST_MSVC) -#pragma warning(pop) -#endif - - template < - typename A0 - > - struct result_helper - { - typedef typename - proto::terminal< - terminal_ex< - Terminal - , typename detail::result_of::make_vector< - typename detail::to_nonlazy_arg::type>::type> - >::type - type; - }; - - template < - typename A0 - , typename A1 - > - struct result_helper - { - typedef typename - proto::terminal< - terminal_ex< - Terminal - , typename detail::result_of::make_vector< - typename detail::to_nonlazy_arg::type - , typename detail::to_nonlazy_arg::type>::type> - >::type - type; - }; - - template < - typename A0 - , typename A1 - , typename A2 - > - struct result_helper - { - typedef typename - proto::terminal< - terminal_ex< - Terminal - , typename detail::result_of::make_vector< - typename detail::to_nonlazy_arg::type - , typename detail::to_nonlazy_arg::type - , typename detail::to_nonlazy_arg::type>::type> - >::type - type; - }; - - template < - typename A0 - , typename A1 - , typename A2 - > - struct result_helper - { - typedef typename - make_lazy::type - , typename detail::to_lazy_arg::type - , typename detail::to_lazy_arg::type>::type - type; - }; - - // FIXME: we need to change this to conform to the result_of protocol - template < - typename A0 - , typename A1 = unused_type - , typename A2 = unused_type // Support up to 3 args - > - struct result - { - typedef typename - result_helper< - detail::contains_actor::value - , A0, A1, A2 - >::type - type; - }; - - template - struct result - { - typedef typename - result_helper< - detail::contains_actor::value - , A0, unused_type, unused_type - >::type - type; - }; - - template - struct result - { - typedef typename - result_helper< - detail::contains_actor::value - , A0, A1, unused_type - >::type - type; - }; - - - template - struct result - { - typedef typename - result_helper< - detail::contains_actor::value - , A0, A1, A2 - >::type - type; - }; - - // Note: in the following overloads, SFINAE cannot - // be done on return type because of gcc bug #24915: - // http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24915 - // Hence an additional, fake argument is used for SFINAE, - // using a type which can never be a real argument type. - - // Non-lazy overloads. Only enabled when all - // args are immediates (no Phoenix actor). - - template - typename result::type - operator()(A0 const& _0_ - , typename detail::contains_actor::is_false = 0) const - { - typedef typename result::type result_type; - typedef typename result_type::proto_child0 child_type; - return result_type::make( - child_type( - detail::make_vector(_0_) - , this->proto_base().child0) - ); - } - - template - typename result::type - operator()(A0 const& _0_, A1 const& _1_ - , typename detail::contains_actor::is_false = 0) const - { - typedef typename result::type result_type; - typedef typename result_type::proto_child0 child_type; - return result_type::make( - child_type( - detail::make_vector(_0_, _1_) - , this->proto_base().child0) - ); - } - - template - typename result::type - operator()(A0 const& _0_, A1 const& _1_, A2 const& _2_ - , typename detail::contains_actor::is_false = 0) const - { - typedef typename result::type result_type; - typedef typename result_type::proto_child0 child_type; - return result_type::make( - child_type( - detail::make_vector(_0_, _1_, _2_) - , this->proto_base().child0) - ); - } - - // Lazy overloads. Enabled when at - // least one arg is a Phoenix actor. - template - typename result::type - operator()(A0 const& _0_ - , typename detail::contains_actor::is_true = 0) const - { - return make_lazy::type>()(*this - , phoenix::as_actor::convert(_0_)); - } - - template - typename result::type - operator()(A0 const& _0_, A1 const& _1_ - , typename detail::contains_actor::is_true = 0) const - { - return make_lazy::type - , typename phoenix::as_actor::type>()(*this - , phoenix::as_actor::convert(_0_) - , phoenix::as_actor::convert(_1_)); - } - - template - typename result::type - operator()(A0 const& _0_, A1 const& _1_, A2 const& _2_ - , typename detail::contains_actor::is_true = 0) const - { - return make_lazy::type - , typename phoenix::as_actor::type - , typename phoenix::as_actor::type>()(*this - , phoenix::as_actor::convert(_0_) - , phoenix::as_actor::convert(_1_) - , phoenix::as_actor::convert(_2_)); - } - }; - - /////////////////////////////////////////////////////////////////////////// - namespace result_of - { - // Calculate the type of the compound terminal if generated by one of - // the spirit::terminal::operator() overloads above - - // The terminal type itself is passed through without modification - template - struct terminal - { - typedef spirit::terminal type; - }; - - template - struct terminal - { - typedef typename spirit::terminal:: - template result::type type; - }; - - template - struct terminal - { - typedef typename spirit::terminal:: - template result::type type; - }; - - template - struct terminal - { - typedef typename spirit::terminal:: - template result::type type; - }; - } - - /////////////////////////////////////////////////////////////////////////// - // support for stateful tag types - namespace tag - { - template < - typename Data, typename Tag - , typename DataTag1 = unused_type, typename DataTag2 = unused_type> - struct stateful_tag - { - BOOST_SPIRIT_IS_TAG() - - typedef Data data_type; - - stateful_tag() {} - stateful_tag(data_type const& data) : data_(data) {} - - data_type data_; - }; - } - - template < - typename Data, typename Tag - , typename DataTag1 = unused_type, typename DataTag2 = unused_type> - struct stateful_tag_type - : spirit::terminal > - { - typedef tag::stateful_tag tag_type; - - stateful_tag_type() {} - stateful_tag_type(Data const& data) - : spirit::terminal(data) - {} - }; - - namespace detail - { - // extract expression if this is a Tag - template - struct get_stateful_data - { - typedef typename StatefulTag::data_type data_type; - - // is invoked if given tag is != Tag - template - static data_type call(Tag_) { return data_type(); } - - // this is invoked if given tag is same as'Tag' - static data_type const& call(StatefulTag const& t) { return t.data_; } - }; - } - -}} - -namespace boost { namespace phoenix -{ - template - struct is_custom_terminal - : mpl::true_ - {}; - - template - struct custom_terminal - { -#ifndef BOOST_PHOENIX_NO_SPECIALIZE_CUSTOM_TERMINAL - typedef void _is_default_custom_terminal; // fix for #7730 -#endif - - typedef spirit::terminal result_type; - - template - result_type operator()(Tag const & t, Context const &) - { - return spirit::terminal(t); - } - }; -}} - -// Define a spirit terminal. This macro may be placed in any namespace. -// Common placeholders are placed in the main boost::spirit namespace -// (see common_terminals.hpp) - -#define BOOST_SPIRIT_TERMINAL_X(x, y) ((x, y)) BOOST_SPIRIT_TERMINAL_Y -#define BOOST_SPIRIT_TERMINAL_Y(x, y) ((x, y)) BOOST_SPIRIT_TERMINAL_X -#define BOOST_SPIRIT_TERMINAL_X0 -#define BOOST_SPIRIT_TERMINAL_Y0 - -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - -#define BOOST_SPIRIT_TERMINAL_NAME(name, type_name) \ - namespace tag { struct name { BOOST_SPIRIT_IS_TAG() }; } \ - typedef boost::proto::terminal::type type_name; \ - type_name const name = {{}}; \ - inline void BOOST_PP_CAT(silence_unused_warnings_, name)() { (void) name; } \ - /***/ - -#else - -#define BOOST_SPIRIT_TERMINAL_NAME(name, type_name) \ - namespace tag { struct name { BOOST_SPIRIT_IS_TAG() }; } \ - typedef boost::proto::terminal::type type_name; \ - /***/ - -#endif - -#define BOOST_SPIRIT_TERMINAL(name) \ - BOOST_SPIRIT_TERMINAL_NAME(name, name ## _type) \ - /***/ - -#define BOOST_SPIRIT_DEFINE_TERMINALS_NAME_A(r, _, names) \ - BOOST_SPIRIT_TERMINAL_NAME( \ - BOOST_PP_TUPLE_ELEM(2, 0, names), \ - BOOST_PP_TUPLE_ELEM(2, 1, names) \ - ) \ - /***/ - -#define BOOST_SPIRIT_DEFINE_TERMINALS_NAME(seq) \ - BOOST_PP_SEQ_FOR_EACH(BOOST_SPIRIT_DEFINE_TERMINALS_NAME_A, _, \ - BOOST_PP_CAT(BOOST_SPIRIT_TERMINAL_X seq, 0)) \ - /***/ - -// Define a spirit extended terminal. This macro may be placed in any namespace. -// Common placeholders are placed in the main boost::spirit namespace -// (see common_terminals.hpp) - -#ifndef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS - -#define BOOST_SPIRIT_TERMINAL_NAME_EX(name, type_name) \ - namespace tag { struct name { BOOST_SPIRIT_IS_TAG() }; } \ - typedef boost::spirit::terminal type_name; \ - type_name const name = type_name(); \ - inline void BOOST_PP_CAT(silence_unused_warnings_, name)() { (void) name; } \ - /***/ - -#else - -#define BOOST_SPIRIT_TERMINAL_NAME_EX(name, type_name) \ - namespace tag { struct name { BOOST_SPIRIT_IS_TAG() }; } \ - typedef boost::spirit::terminal type_name; \ - /***/ - -#endif - -#define BOOST_SPIRIT_TERMINAL_EX(name) \ - BOOST_SPIRIT_TERMINAL_NAME_EX(name, name ## _type) \ - /***/ - -#define BOOST_SPIRIT_DEFINE_TERMINALS_NAME_EX_A(r, _, names) \ - BOOST_SPIRIT_TERMINAL_NAME_EX( \ - BOOST_PP_TUPLE_ELEM(2, 0, names), \ - BOOST_PP_TUPLE_ELEM(2, 1, names) \ - ) \ - /***/ - -#define BOOST_SPIRIT_DEFINE_TERMINALS_NAME_EX(seq) \ - BOOST_PP_SEQ_FOR_EACH(BOOST_SPIRIT_DEFINE_TERMINALS_NAME_EX_A, _, \ - BOOST_PP_CAT(BOOST_SPIRIT_TERMINAL_X seq, 0)) \ - /***/ - -#endif - - diff --git a/framework/contrib/boost/include/boost/spirit/home/support/terminal_expression.hpp b/framework/contrib/boost/include/boost/spirit/home/support/terminal_expression.hpp deleted file mode 100644 index 0d206bfd9fac..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/terminal_expression.hpp +++ /dev/null @@ -1,12 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - Copyright (c) 2001-2011 Hartmut Kaiser - Copyright (c) 2011 Thomas Heller - - 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_TERMINAL_EXPRESSION_MARCH_24_2011_1210AM) -#define BOOST_SPIRIT_TERMINAL_EXPRESSION_MARCH_24_2011_1210AM - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/unused.hpp b/framework/contrib/boost/include/boost/spirit/home/support/unused.hpp deleted file mode 100644 index 4ffad6b09b9d..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/unused.hpp +++ /dev/null @@ -1,82 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - 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_UNUSED_APRIL_16_2006_0616PM) -#define BOOST_SPIRIT_UNUSED_APRIL_16_2006_0616PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit -{ - /////////////////////////////////////////////////////////////////////////// - // We do not import fusion ::unused_type anymore to avoid boost::fusion - // being turned into an associate namespace for boost::spirit, as this - // interferes with ADL in unexpected ways. We rather copy the full - // unused_type implementation from boost::fusion. - /////////////////////////////////////////////////////////////////////////// - struct unused_type - { - BOOST_DEFAULTED_FUNCTION(unused_type(), {}) - - template - unused_type(T const&) - { - } - - template - unused_type const& - operator=(T const&) const - { - return *this; - } - - template - unused_type& - operator=(T const&) - { - return *this; - } - }; - - unused_type const unused = unused_type(); - - namespace detail - { - struct unused_only - { - unused_only(unused_type const&) {} - }; - } - - template - inline Out& operator<<(Out& out, detail::unused_only const&) - { - return out; - } - - template - inline In& operator>>(In& in, unused_type&) - { - return in; - } - - /////////////////////////////////////////////////////////////////////////// - namespace traits - { - // We use this test to detect if the argument is not an unused_type - template struct not_is_unused : mpl::true_ {}; - template <> struct not_is_unused : mpl::false_ {}; - } -}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/utf8.hpp b/framework/contrib/boost/include/boost/spirit/home/support/utf8.hpp deleted file mode 100644 index 9d0fb23ada06..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/utf8.hpp +++ /dev/null @@ -1,135 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - Copyright (c) 2023 Nikita Kniazev - - 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_UC_TYPES_NOVEMBER_23_2008_0840PM) -#define BOOST_SPIRIT_UC_TYPES_NOVEMBER_23_2008_0840PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - typedef ::boost::uint32_t ucs4_char; - typedef char utf8_char; - typedef std::basic_string ucs4_string; - typedef std::basic_string utf8_string; - -namespace detail { - inline void utf8_put_encode(utf8_string& out, ucs4_char x) - { - // https://www.unicode.org/versions/Unicode15.0.0/ch03.pdf D90 - if (BOOST_UNLIKELY(x > 0x10FFFFul || (0xD7FFul < x && x < 0xE000ul))) - x = 0xFFFDul; - - // Table 3-6. UTF-8 Bit Distribution - if (x < 0x80ul) { - out.push_back(static_cast(x)); - } - else if (x < 0x800ul) { - out.push_back(static_cast(0xC0ul + (x >> 6))); - out.push_back(static_cast(0x80ul + (x & 0x3Ful))); - } - else if (x < 0x10000ul) { - out.push_back(static_cast(0xE0ul + (x >> 12))); - out.push_back(static_cast(0x80ul + ((x >> 6) & 0x3Ful))); - out.push_back(static_cast(0x80ul + (x & 0x3Ful))); - } - else { - out.push_back(static_cast(0xF0ul + (x >> 18))); - out.push_back(static_cast(0x80ul + ((x >> 12) & 0x3Ful))); - out.push_back(static_cast(0x80ul + ((x >> 6) & 0x3Ful))); - out.push_back(static_cast(0x80ul + (x & 0x3Ful))); - } - } -} - - template - inline utf8_string to_utf8(Char value) - { - utf8_string result; - typedef typename make_unsigned::type UChar; - detail::utf8_put_encode(result, static_cast(value)); - return result; - } - - template - inline utf8_string to_utf8(Char const* str) - { - utf8_string result; - typedef typename make_unsigned::type UChar; - while (*str) - detail::utf8_put_encode(result, static_cast(*str++)); - return result; - } - - template - inline utf8_string - to_utf8(std::basic_string const& str) - { - utf8_string result; - typedef typename make_unsigned::type UChar; - for (Char const* ptr = str.data(), - * end = ptr + str.size(); ptr < end; ++ptr) - detail::utf8_put_encode(result, static_cast(*ptr)); - return result; - } - - // Assume wchar_t content is UTF-16 on MSVC, or mingw/wineg++ with -fshort-wchar -#if defined(_MSC_VER) || defined(__SIZEOF_WCHAR_T__) && __SIZEOF_WCHAR_T__ == 2 - inline utf8_string to_utf8(wchar_t value) - { - utf8_string result; - detail::utf8_put_encode(result, static_cast::type>(value)); - return result; - } - -namespace detail { - inline ucs4_char decode_utf16(wchar_t const*& s) - { - typedef make_unsigned::type uwchar_t; - - uwchar_t x(*s); - if (x < 0xD800ul || x > 0xDFFFul) - return x; - - // expected high-surrogate - if (BOOST_UNLIKELY((x >> 10) != 0x36ul)) - return 0xFFFDul; - - uwchar_t y(*++s); - // expected low-surrogate - if (BOOST_UNLIKELY((y >> 10) != 0x37ul)) - return 0xFFFDul; - - return ((x & 0x3FFul) << 10) + (y & 0x3FFul) + 0x10000ul; - } -} - - inline utf8_string to_utf8(wchar_t const* str) - { - utf8_string result; - for (ucs4_char c; (c = detail::decode_utf16(str)) != ucs4_char(); ++str) - detail::utf8_put_encode(result, c); - return result; - } - - template - inline utf8_string - to_utf8(std::basic_string const& str) - { - return to_utf8(str.c_str()); - } -#endif -}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/utree.hpp b/framework/contrib/boost/include/boost/spirit/home/support/utree.hpp deleted file mode 100644 index 8b85047aacb9..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/utree.hpp +++ /dev/null @@ -1,20 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - - 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_UTREE_NOV_30_2010_1246PM) -#define BOOST_SPIRIT_UTREE_NOV_30_2010_1246PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include -#include -#include -#include -#include - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/utree/detail/utree_detail1.hpp b/framework/contrib/boost/include/boost/spirit/home/support/utree/detail/utree_detail1.hpp deleted file mode 100644 index dc5a9c477c6b..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/utree/detail/utree_detail1.hpp +++ /dev/null @@ -1,146 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - Copyright (c) 2001-2011 Hartmut Kaiser - Copyright (c) 2011 Bryce Lelbach - - 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_UTREE_DETAIL1) -#define BOOST_SPIRIT_UTREE_DETAIL1 - -#include - -namespace boost { namespace spirit { namespace detail -{ - template - struct visit_impl; - - struct index_impl; - - /////////////////////////////////////////////////////////////////////////// - // Our POD double linked list. Straightforward implementation. - // This implementation is very primitive and is not meant to be - // used stand-alone. This is the internal data representation - // of lists in our utree. - /////////////////////////////////////////////////////////////////////////// - struct list // keep this a POD! - { - struct node; - - template - class node_iterator; - - void free(); - void copy(list const& other); - void default_construct(); - - template - void insert(T const& val, Iterator pos); - - template - void push_front(T const& val); - - template - void push_back(T const& val); - - void pop_front(); - void pop_back(); - node* erase(node* pos); - - node* first; - node* last; - std::size_t size; - }; - - /////////////////////////////////////////////////////////////////////////// - // A range of utree(s) using an iterator range (begin/end) of node(s) - /////////////////////////////////////////////////////////////////////////// - struct range - { - list::node* first; - list::node* last; - }; - - /////////////////////////////////////////////////////////////////////////// - // A range of char*s - /////////////////////////////////////////////////////////////////////////// - struct string_range - { - char const* first; - char const* last; - }; - - /////////////////////////////////////////////////////////////////////////// - // A void* plus type_info - /////////////////////////////////////////////////////////////////////////// - struct void_ptr - { - void* p; - std::type_info const* i; - }; - - /////////////////////////////////////////////////////////////////////////// - // Our POD fast string. This implementation is very primitive and is not - // meant to be used stand-alone. This is the internal data representation - // of strings in our utree. This is deliberately a POD to allow it to be - // placed in a union. This POD fast string specifically utilizes - // (sizeof(list) * alignment_of(list)) - (2 * sizeof(char)). In a 32 bit - // system, this is 14 bytes. The two extra bytes are used by utree to store - // management info. - // - // It is a const string (i.e. immutable). It stores the characters directly - // if possible and only uses the heap if the string does not fit. Null - // characters are allowed, making it suitable to encode raw binary. The - // string length is encoded in the first byte if the string is placed in-situ, - // else, the length plus a pointer to the string in the heap are stored. - /////////////////////////////////////////////////////////////////////////// - struct fast_string // Keep this a POD! - { - static std::size_t const - buff_size = (sizeof(list) + boost::alignment_of::value) - / sizeof(char); - - static std::size_t const - small_string_size = buff_size-sizeof(char); - - static std::size_t const - max_string_len = small_string_size - 3; - - struct heap_store - { - char* str; - std::size_t size; - }; - - union - { - char buff[buff_size]; - long lbuff[buff_size / (sizeof(long)/sizeof(char))]; // for initialize - heap_store heap; - }; - - int get_type() const; - void set_type(int t); - bool is_heap_allocated() const; - - std::size_t size() const; - char const* str() const; - - template - void construct(Iterator f, Iterator l); - - void swap(fast_string& other); - void free(); - void copy(fast_string const& other); - void initialize(); - - char& info(); - char info() const; - - short tag() const; - void tag(short tag); - }; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/utree/detail/utree_detail2.hpp b/framework/contrib/boost/include/boost/spirit/home/support/utree/detail/utree_detail2.hpp deleted file mode 100644 index f61be1de3311..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/utree/detail/utree_detail2.hpp +++ /dev/null @@ -1,1638 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - Copyright (c) 2001-2011 Hartmut Kaiser - Copyright (c) 2011 Bryce Lelbach - - 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_UTREE_DETAIL2) -#define BOOST_SPIRIT_UTREE_DETAIL2 - -#include -#include -#include -#include -#include -#include // for std::memcpy - -#ifdef _MSC_VER -# pragma warning(push) -# pragma warning(disable: 4800) // forcing value to bool 'true' or 'false' -# if _MSC_VER < 1800 -# pragma warning(disable: 4702) // unreachable code -# endif -#endif - -namespace boost { namespace spirit { namespace detail -{ - inline char& fast_string::info() - { - return buff[small_string_size]; - } - - inline char fast_string::info() const - { - return buff[small_string_size]; - } - - inline int fast_string::get_type() const - { - return info() >> 1; - } - - inline void fast_string::set_type(int t) - { - info() = (t << 1) | (info() & 1); - } - - inline short fast_string::tag() const - { - boost::int16_t tmp; - std::memcpy(&tmp, &buff[small_string_size-2], sizeof(tmp)); - return tmp; - } - - inline void fast_string::tag(short tag) - { - boost::int16_t tmp = tag; - std::memcpy(&buff[small_string_size-2], &tmp, sizeof(tmp)); - } - - inline bool fast_string::is_heap_allocated() const - { - return info() & 1; - } - - inline std::size_t fast_string::size() const - { - if (is_heap_allocated()) - return heap.size; - else - return max_string_len - buff[max_string_len]; - } - - inline char const* fast_string::str() const - { - if (is_heap_allocated()) - return heap.str; - else - return buff; - } - - template - inline void fast_string::construct(Iterator f, Iterator l) - { - std::size_t const size = static_cast(l-f); - char* str; - if (size < max_string_len) - { - // if it fits, store it in-situ; small_string_size minus the length - // of the string is placed in buff[small_string_size - 1] - str = buff; - buff[max_string_len] = static_cast(max_string_len - size); - info() &= ~0x1; - } - else - { - // else, store it in the heap - str = new char[size + 1]; // add one for the null char - heap.str = str; - heap.size = size; - info() |= 0x1; - } - for (std::size_t i = 0; i != size; ++i) - { - *str++ = *f++; - } - *str = '\0'; // add the null char - } - - inline void fast_string::swap(fast_string& other) - { - std::swap(*this, other); - } - - inline void fast_string::free() - { - if (is_heap_allocated()) - { - delete [] heap.str; - } - } - - inline void fast_string::copy(fast_string const& other) - { - construct(other.str(), other.str() + other.size()); - } - - inline void fast_string::initialize() - { - for (std::size_t i = 0; i != buff_size / (sizeof(long)/sizeof(char)); ++i) - lbuff[i] = 0; - } - - struct list::node : boost::noncopyable - { - template - node(T const& val, node* next, node* prev) - : val(val), next(next), prev(prev) {} - - void unlink() - { - prev->next = next; - next->prev = prev; - } - - utree val; - node* next; - node* prev; - }; - - template - class list::node_iterator - : public boost::iterator_facade< - node_iterator - , Value - , boost::bidirectional_traversal_tag> - { - public: - - node_iterator() - : node(0), prev(0) {} - - node_iterator(list::node* node, list::node* prev) - : node(node), prev(prev) {} - - private: - - friend class boost::iterator_core_access; - friend class boost::spirit::utree; - friend struct boost::spirit::detail::list; - - void increment() - { - if (node != 0) // not at end - { - prev = node; - node = node->next; - } - } - - void decrement() - { - if (prev != 0) // not at begin - { - node = prev; - prev = prev->prev; - } - } - - bool equal(node_iterator const& other) const - { - return node == other.node; - } - - typename node_iterator::reference dereference() const - { - return node->val; - } - - list::node* node; - list::node* prev; - }; - - template - class list::node_iterator > - : public boost::iterator_facade< - node_iterator > - , boost::reference_wrapper - , boost::bidirectional_traversal_tag> - { - public: - - node_iterator() - : node(0), prev(0), curr(nil_node) {} - - node_iterator(list::node* node, list::node* prev) - : node(node), prev(prev), curr(node ? node->val : nil_node) {} - - private: - - friend class boost::iterator_core_access; - friend class boost::spirit::utree; - friend struct boost::spirit::detail::list; - - void increment() - { - if (node != 0) // not at end - { - prev = node; - node = node->next; - curr = boost::ref(node ? node->val : nil_node); - } - } - - void decrement() - { - if (prev != 0) // not at begin - { - node = prev; - prev = prev->prev; - curr = boost::ref(node ? node->val : nil_node); - } - } - - bool equal(node_iterator const& other) const - { - return node == other.node; - } - - typename node_iterator::reference dereference() const - { - return curr; - } - - list::node* node; - list::node* prev; - - static Value nil_node; - mutable boost::reference_wrapper curr; - }; - - template - Value list::node_iterator >::nil_node = Value(); - - inline void list::free() - { - node* p = first; - while (p != 0) - { - node* next = p->next; - delete p; - p = next; - } - } - - inline void list::copy(list const& other) - { - node* p = other.first; - while (p != 0) - { - push_back(p->val); - p = p->next; - } - } - - inline void list::default_construct() - { - first = last = 0; - size = 0; - } - - template - inline void list::insert(T const& val, Iterator pos) - { - if (!pos.node) - { - push_back(val); - return; - } - - detail::list::node* new_node = - new detail::list::node(val, pos.node, pos.node->prev); - - if (pos.node->prev) - pos.node->prev->next = new_node; - else - first = new_node; - - pos.node->prev = new_node; - ++size; - } - - template - inline void list::push_front(T const& val) - { - detail::list::node* new_node; - if (first == 0) - { - new_node = new detail::list::node(val, 0, 0); - first = last = new_node; - ++size; - } - else - { - new_node = new detail::list::node(val, first, first->prev); - first->prev = new_node; - first = new_node; - ++size; - } - } - - template - inline void list::push_back(T const& val) - { - if (last == 0) - push_front(val); - else { - detail::list::node* new_node = - new detail::list::node(val, last->next, last); - last->next = new_node; - last = new_node; - ++size; - } - } - - inline void list::pop_front() - { - BOOST_ASSERT(size != 0); - if (first == last) // there's only one item - { - delete first; - size = 0; - first = last = 0; - } - else - { - node* np = first; - first = first->next; - first->prev = 0; - delete np; - --size; - } - } - - inline void list::pop_back() - { - BOOST_ASSERT(size != 0); - if (first == last) // there's only one item - { - delete first; - size = 0; - first = last = 0; - } - else - { - node* np = last; - last = last->prev; - last->next = 0; - delete np; - --size; - } - } - - inline list::node* list::erase(node* pos) - { - BOOST_ASSERT(pos != 0); - if (pos == first) - { - pop_front(); - return first; - } - else if (pos == last) - { - pop_back(); - return 0; - } - else - { - node* next(pos->next); - pos->unlink(); - delete pos; - --size; - return next; - } - } - - /////////////////////////////////////////////////////////////////////////// - // simple binder for binary visitation (we don't want to bring in the big guns) - template - struct bind_impl - { - typedef typename F::result_type result_type; - X& x; // always by reference - F f; - bind_impl(F f, X& x) : x(x), f(f) {} - - template - typename F::result_type operator()(Y& y) const - { - return f(x, y); - } - - template - typename F::result_type operator()(Y const& y) const - { - return f(x, y); - } - }; - - template - bind_impl bind(F f, X const& x) - { - return bind_impl(f, x); - } - - template - bind_impl bind(F f, X& x) - { - return bind_impl(f, x); - } - - template - struct visit_impl - { - template - typename F::result_type - static apply(UTreeX& x, F f) // single dispatch - { - typedef typename - boost::mpl::if_, - typename UTreeX::const_iterator, - typename UTreeX::iterator>::type - iterator; - - typedef boost::iterator_range list_range; - typedef utree_type type; - - switch (x.get_type()) - { - default: - BOOST_THROW_EXCEPTION( - bad_type_exception("corrupt utree type", x.get_type())); - break; - - case type::invalid_type: - return f(invalid); - - case type::nil_type: - return f(nil); - - case type::bool_type: - return f(x.b); - - case type::int_type: - return f(x.i); - - case type::double_type: - return f(x.d); - - case type::list_type: - return f(list_range(iterator(x.l.first, 0), iterator(0, x.l.last))); - - case type::range_type: - return f(list_range(iterator(x.r.first, 0), iterator(0, x.r.last))); - - case type::string_type: - return f(utf8_string_range_type(x.s.str(), x.s.size())); - - case type::string_range_type: - return f(utf8_string_range_type(x.sr.first, x.sr.last)); - - case type::symbol_type: - return f(utf8_symbol_range_type(x.s.str(), x.s.size())); - - case type::binary_type: - return f(binary_range_type(x.s.str(), x.s.size())); - - case type::reference_type: - return apply(*x.p, f); - - case type::any_type: - return f(any_ptr(x.v.p, x.v.i)); - - case type::function_type: - return f(*x.pf); - } - } - - template - typename F::result_type - static apply(UTreeX& x, UTreeY& y, F f) // double dispatch - { - typedef typename - boost::mpl::if_, - typename UTreeX::const_iterator, - typename UTreeX::iterator>::type - iterator; - - typedef boost::iterator_range list_range; - typedef utree_type type; - - switch (x.get_type()) - { - default: - BOOST_THROW_EXCEPTION( - bad_type_exception("corrupt utree type", x.get_type())); - break; - - case type::invalid_type: - return visit_impl::apply(y, detail::bind(f, invalid)); - - case type::nil_type: - return visit_impl::apply(y, detail::bind(f, nil)); - - case type::bool_type: - return visit_impl::apply(y, detail::bind(f, x.b)); - - case type::int_type: - return visit_impl::apply(y, detail::bind(f, x.i)); - - case type::double_type: - return visit_impl::apply(y, detail::bind(f, x.d)); - - case type::list_type: - return visit_impl::apply( - y, detail::bind(f, - list_range(iterator(x.l.first, 0), iterator(0, x.l.last)))); - - case type::range_type: - return visit_impl::apply( - y, detail::bind(f, - list_range(iterator(x.r.first, 0), iterator(0, x.r.last)))); - - case type::string_type: - return visit_impl::apply(y, detail::bind( - f, utf8_string_range_type(x.s.str(), x.s.size()))); - - case type::string_range_type: - return visit_impl::apply(y, detail::bind( - f, utf8_string_range_type(x.sr.first, x.sr.last))); - - case type::symbol_type: - return visit_impl::apply(y, detail::bind( - f, utf8_symbol_range_type(x.s.str(), x.s.size()))); - - case type::binary_type: - return visit_impl::apply(y, detail::bind( - f, binary_range_type(x.s.str(), x.s.size()))); - - case type::reference_type: - return apply(*x.p, y, f); - - case type::any_type: - return visit_impl::apply( - y, detail::bind(f, any_ptr(x.v.p, x.v.i))); - - case type::function_type: - return visit_impl::apply(y, detail::bind(f, *x.pf)); - } - } - }; - - struct index_impl - { - static utree& apply(utree& ut, std::size_t i) - { - switch (ut.get_type()) - { - case utree_type::reference_type: - return apply(ut.deref(), i); - case utree_type::range_type: - return apply(ut.r.first, i); - case utree_type::list_type: - return apply(ut.l.first, i); - default: - BOOST_THROW_EXCEPTION( - bad_type_exception - ("index operation performed on non-list utree type", - ut.get_type())); - } - } - - static utree const& apply(utree const& ut, std::size_t i) - { - switch (ut.get_type()) - { - case utree_type::reference_type: - return apply(ut.deref(), i); - case utree_type::range_type: - return apply(ut.r.first, i); - case utree_type::list_type: - return apply(ut.l.first, i); - default: - BOOST_THROW_EXCEPTION( - bad_type_exception - ("index operation performed on non-list utree type", - ut.get_type())); - } - } - - static utree& apply(list::node* node, std::size_t i) - { - for (; i > 0; --i) - node = node->next; - return node->val; - } - - static utree const& apply(list::node const* node, std::size_t i) - { - for (; i > 0; --i) - node = node->next; - return node->val; - } - }; -}}} - -namespace boost { namespace spirit -{ - template - stored_function::stored_function(F f) - : f(f) - { - } - - template - stored_function::~stored_function() - { - } - - template - utree stored_function::operator()(utree const& env) const - { - return f(env); - } - - template - utree stored_function::operator()(utree& env) const - { - return f(env); - } - - template - function_base* - stored_function::clone() const - { - return new stored_function(f); - } - - template - referenced_function::referenced_function(F& f) - : f(f) - { - } - - template - referenced_function::~referenced_function() - { - } - - template - utree referenced_function::operator()(utree const& env) const - { - return f(env); - } - - template - utree referenced_function::operator()(utree& env) const - { - return f(env); - } - - template - function_base* - referenced_function::clone() const - { - return new referenced_function(f); - } - - inline utree::utree(utree::invalid_type) - { - s.initialize(); - set_type(type::invalid_type); - } - - inline utree::utree(utree::nil_type) - { - s.initialize(); - set_type(type::nil_type); - } - - inline utree::utree(bool b_) - { - s.initialize(); - b = b_; - set_type(type::bool_type); - } - - inline utree::utree(char c) - { - s.initialize(); - // char constructs a single element string - s.construct(&c, &c+1); - set_type(type::string_type); - } - - inline utree::utree(unsigned int i_) - { - s.initialize(); - i = i_; - set_type(type::int_type); - } - - inline utree::utree(int i_) - { - s.initialize(); - i = i_; - set_type(type::int_type); - } - - inline utree::utree(double d_) - { - s.initialize(); - d = d_; - set_type(type::double_type); - } - - inline utree::utree(char const* str) - { - s.initialize(); - s.construct(str, str + strlen(str)); - set_type(type::string_type); - } - - inline utree::utree(char const* str, std::size_t len) - { - s.initialize(); - s.construct(str, str + len); - set_type(type::string_type); - } - - inline utree::utree(std::string const& str) - { - s.initialize(); - s.construct(str.begin(), str.end()); - set_type(type::string_type); - } - - template - inline utree::utree(basic_string const& bin) - { - s.initialize(); - s.construct(bin.begin(), bin.end()); - set_type(type_); - } - - inline utree::utree(boost::reference_wrapper ref) - { - s.initialize(); - p = ref.get_pointer(); - set_type(type::reference_type); - } - - inline utree::utree(any_ptr const& p) - { - s.initialize(); - v.p = p.p; - v.i = p.i; - set_type(type::any_type); - } - - inline utree::utree(function_base const& pf_) - { - s.initialize(); - pf = pf_.clone(); - set_type(type::function_type); - } - - inline utree::utree(function_base* pf_) - { - s.initialize(); - pf = pf_; - set_type(type::function_type); - } - - template - inline utree::utree(boost::iterator_range r) - { - s.initialize(); - - assign(r.begin(), r.end()); - } - - inline utree::utree(range r, shallow_tag) - { - s.initialize(); - this->r.first = r.begin().node; - this->r.last = r.end().prev; - set_type(type::range_type); - } - - inline utree::utree(const_range r, shallow_tag) - { - s.initialize(); - this->r.first = r.begin().node; - this->r.last = r.end().prev; - set_type(type::range_type); - } - - inline utree::utree(utf8_string_range_type const& str, shallow_tag) - { - s.initialize(); - this->sr.first = str.begin(); - this->sr.last = str.end(); - set_type(type::string_range_type); - } - - inline utree::utree(utree const& other) - { - s.initialize(); - copy(other); - } - - inline utree::~utree() - { - free(); - } - - inline utree& utree::operator=(utree const& other) - { - if (this != &other) - { - free(); - copy(other); - } - return *this; - } - - inline utree& utree::operator=(nil_type) - { - free(); - set_type(type::nil_type); - return *this; - } - - inline utree& utree::operator=(bool b_) - { - free(); - b = b_; - set_type(type::bool_type); - return *this; - } - - inline utree& utree::operator=(char c) - { - // char constructs a single element string - free(); - s.construct(&c, &c+1); - set_type(type::string_type); - return *this; - } - - inline utree& utree::operator=(unsigned int i_) - { - free(); - i = i_; - set_type(type::int_type); - return *this; - } - - inline utree& utree::operator=(int i_) - { - free(); - i = i_; - set_type(type::int_type); - return *this; - } - - inline utree& utree::operator=(double d_) - { - free(); - d = d_; - set_type(type::double_type); - return *this; - } - - inline utree& utree::operator=(char const* s_) - { - free(); - s.construct(s_, s_ + strlen(s_)); - set_type(type::string_type); - return *this; - } - - inline utree& utree::operator=(std::string const& s_) - { - free(); - s.construct(s_.begin(), s_.end()); - set_type(type::string_type); - return *this; - } - - template - inline utree& utree::operator=(basic_string const& bin) - { - free(); - s.construct(bin.begin(), bin.end()); - set_type(type_); - return *this; - } - - inline utree& utree::operator=(boost::reference_wrapper ref) - { - free(); - p = ref.get_pointer(); - set_type(type::reference_type); - return *this; - } - - inline utree& utree::operator=(any_ptr const& p_) - { - free(); - v.p = p_.p; - v.i = p_.i; - set_type(type::any_type); - return *this; - } - - inline utree& utree::operator=(function_base const& pf_) - { - free(); - pf = pf_.clone(); - set_type(type::function_type); - return *this; - } - - inline utree& utree::operator=(function_base* pf_) - { - free(); - pf = pf_; - set_type(type::function_type); - return *this; - } - - template - inline utree& utree::operator=(boost::iterator_range r) - { - free(); - assign(r.begin(), r.end()); - return *this; - } - - template - typename boost::result_of::type - inline utree::visit(utree const& x, F f) - { - return detail::visit_impl::apply(x, f); - } - - template - typename boost::result_of::type - inline utree::visit(utree& x, F f) - { - return detail::visit_impl::apply(x, f); - } - - template - typename boost::result_of::type - inline utree::visit(utree const& x, utree const& y, F f) - { - return detail::visit_impl::apply(x, y, f); - } - - template - typename boost::result_of::type - inline utree::visit(utree const& x, utree& y, F f) - { - return detail::visit_impl::apply(x, y, f); - } - - template - typename boost::result_of::type - inline utree::visit(utree& x, utree const& y, F f) - { - return detail::visit_impl::apply(x, y, f); - } - - template - typename boost::result_of::type - inline utree::visit(utree& x, utree& y, F f) - { - return detail::visit_impl::apply(x, y, f); - } - - inline utree::reference get(utree::reference ut, utree::size_type i) - { return detail::index_impl::apply(ut, i); } - - inline utree::const_reference - get(utree::const_reference ut, utree::size_type i) - { return detail::index_impl::apply(ut, i); } - - template - inline void utree::push_front(T const& val) - { - if (get_type() == type::reference_type) - return p->push_front(val); - - ensure_list_type("push_front()"); - l.push_front(val); - } - - template - inline void utree::push_back(T const& val) - { - if (get_type() == type::reference_type) - return p->push_back(val); - - ensure_list_type("push_back()"); - l.push_back(val); - } - - template - inline utree::iterator utree::insert(iterator pos, T const& val) - { - if (get_type() == type::reference_type) - return p->insert(pos, val); - - ensure_list_type("insert()"); - if (!pos.node) - { - l.push_back(val); - return utree::iterator(l.last, l.last->prev); - } - l.insert(val, pos); - return utree::iterator(pos.node->prev, pos.node->prev->prev); - } - - template - inline void utree::insert(iterator pos, std::size_t n, T const& val) - { - if (get_type() == type::reference_type) - return p->insert(pos, n, val); - - ensure_list_type("insert()"); - for (std::size_t i = 0; i != n; ++i) - insert(pos, val); - } - - template - inline void utree::insert(iterator pos, Iterator first, Iterator last) - { - if (get_type() == type::reference_type) - return p->insert(pos, first, last); - - ensure_list_type("insert()"); - while (first != last) - insert(pos, *first++); - } - - template - inline void utree::assign(Iterator first, Iterator last) - { - if (get_type() == type::reference_type) - return p->assign(first, last); - - clear(); - set_type(type::list_type); - - while (first != last) - { - push_back(*first); - ++first; - } - } - - inline void utree::clear() - { - if (get_type() == type::reference_type) - return p->clear(); - - // clear will always make this an invalid type - free(); - set_type(type::invalid_type); - } - - inline void utree::pop_front() - { - if (get_type() == type::reference_type) - return p->pop_front(); - if (get_type() != type::list_type) - BOOST_THROW_EXCEPTION( - bad_type_exception - ("pop_front() called on non-list utree type", - get_type())); - - l.pop_front(); - } - - inline void utree::pop_back() - { - if (get_type() == type::reference_type) - return p->pop_back(); - if (get_type() != type::list_type) - BOOST_THROW_EXCEPTION( - bad_type_exception - ("pop_back() called on non-list utree type", - get_type())); - - l.pop_back(); - } - - inline utree::iterator utree::erase(iterator pos) - { - if (get_type() == type::reference_type) - return p->erase(pos); - if (get_type() != type::list_type) - BOOST_THROW_EXCEPTION( - bad_type_exception - ("erase() called on non-list utree type", - get_type())); - - detail::list::node* np = l.erase(pos.node); - return iterator(np, np?np->prev:l.last); - } - - inline utree::iterator utree::erase(iterator first, iterator last) - { - if (get_type() == type::reference_type) - return p->erase(first, last); - - if (get_type() != type::list_type) - BOOST_THROW_EXCEPTION( - bad_type_exception - ("erase() called on non-list utree type", - get_type())); - while (first != last) - erase(first++); - return last; - } - - inline utree::iterator utree::begin() - { - if (get_type() == type::reference_type) - return p->begin(); - else if (get_type() == type::range_type) - return iterator(r.first, 0); - - // otherwise... - ensure_list_type("begin()"); - return iterator(l.first, 0); - } - - inline utree::iterator utree::end() - { - if (get_type() == type::reference_type) - return p->end(); - else if (get_type() == type::range_type) - return iterator(0, r.first); - - // otherwise... - ensure_list_type("end()"); - return iterator(0, l.last); - } - - inline utree::ref_iterator utree::ref_begin() - { - if (get_type() == type::reference_type) - return p->ref_begin(); - else if (get_type() == type::range_type) - return ref_iterator(r.first, 0); - - // otherwise... - ensure_list_type("ref_begin()"); - return ref_iterator(l.first, 0); - } - - inline utree::ref_iterator utree::ref_end() - { - if (get_type() == type::reference_type) - return p->ref_end(); - else if (get_type() == type::range_type) - return ref_iterator(0, r.first); - - // otherwise... - ensure_list_type("ref_end()"); - return ref_iterator(0, l.last); - } - - inline utree::const_iterator utree::begin() const - { - if (get_type() == type::reference_type) - return ((utree const*)p)->begin(); - if (get_type() == type::range_type) - return const_iterator(r.first, 0); - - // otherwise... - if (get_type() != type::list_type) - BOOST_THROW_EXCEPTION( - bad_type_exception - ("begin() called on non-list utree type", - get_type())); - - return const_iterator(l.first, 0); - } - - inline utree::const_iterator utree::end() const - { - if (get_type() == type::reference_type) - return ((utree const*)p)->end(); - if (get_type() == type::range_type) - return const_iterator(0, r.first); - - // otherwise... - if (get_type() != type::list_type) - BOOST_THROW_EXCEPTION( - bad_type_exception - ("end() called on non-list utree type", - get_type())); - - return const_iterator(0, l.last); - } - - inline bool utree::empty() const - { - type::info t = get_type(); - if (t == type::reference_type) - return ((utree const*)p)->empty(); - - if (t == type::range_type) - return r.first == 0; - if (t == type::list_type) - return l.size == 0; - - return t == type::nil_type || t == type::invalid_type; - } - - inline std::size_t utree::size() const - { - type::info t = get_type(); - if (t == type::reference_type) - return ((utree const*)p)->size(); - - if (t == type::range_type) - { - // FIXME: O(n), and we have the room to store the size of a range - // in the union if we compute it when assigned/constructed. - std::size_t size = 0; - detail::list::node* n = r.first; - while (n) - { - n = n->next; - ++size; - } - return size; - } - if (t == type::list_type) - return l.size; - - if (t == type::string_type) - return s.size(); - - if (t == type::symbol_type) - return s.size(); - - if (t == type::binary_type) - return s.size(); - - if (t == type::string_range_type) - return sr.last - sr.first; - - if (t != type::nil_type) - BOOST_THROW_EXCEPTION( - bad_type_exception - ("size() called on non-list and non-string utree type", - get_type())); - - return 0; - } - - inline utree_type::info utree::which() const - { - return get_type(); - } - - inline utree& utree::front() - { - if (get_type() == type::reference_type) - return p->front(); - if (get_type() == type::range_type) - { - if (!r.first) - BOOST_THROW_EXCEPTION( - empty_exception("front() called on empty utree range")); - return r.first->val; - } - - // otherwise... - if (get_type() != type::list_type) - BOOST_THROW_EXCEPTION( - bad_type_exception - ("front() called on non-list utree type", get_type())); - else if (!l.first) - BOOST_THROW_EXCEPTION( - empty_exception("front() called on empty utree list")); - - return l.first->val; - } - - inline utree& utree::back() - { - if (get_type() == type::reference_type) - return p->back(); - if (get_type() == type::range_type) - { - if (!r.last) - BOOST_THROW_EXCEPTION( - empty_exception("back() called on empty utree range")); - return r.last->val; - } - - // otherwise... - if (get_type() != type::list_type) - BOOST_THROW_EXCEPTION( - bad_type_exception - ("back() called on non-list utree type", get_type())); - else if (!l.last) - BOOST_THROW_EXCEPTION( - empty_exception("back() called on empty utree list")); - - return l.last->val; - } - - inline utree const& utree::front() const - { - if (get_type() == type::reference_type) - return ((utree const*)p)->front(); - if (get_type() == type::range_type) - { - if (!r.first) - BOOST_THROW_EXCEPTION( - empty_exception("front() called on empty utree range")); - return r.first->val; - } - - // otherwise... - if (get_type() != type::list_type) - BOOST_THROW_EXCEPTION( - bad_type_exception - ("front() called on non-list utree type", get_type())); - else if (!l.first) - BOOST_THROW_EXCEPTION( - empty_exception("front() called on empty utree list")); - - return l.first->val; - } - - inline utree const& utree::back() const - { - if (get_type() == type::reference_type) - return ((utree const*)p)->back(); - if (get_type() == type::range_type) - { - if (!r.last) - BOOST_THROW_EXCEPTION( - empty_exception("back() called on empty utree range")); - return r.last->val; - } - - // otherwise... - if (get_type() != type::list_type) - BOOST_THROW_EXCEPTION( - bad_type_exception - ("back() called on non-list utree type", get_type())); - else if (!l.last) - BOOST_THROW_EXCEPTION( - empty_exception("back() called on empty utree list")); - - return l.last->val; - } - - inline void utree::swap(utree& other) - { - s.swap(other.s); - } - - inline utree::type::info utree::get_type() const - { - // the fast string holds the type info - return static_cast(s.get_type()); - } - - inline void utree::set_type(type::info t) - { - // the fast string holds the type info - s.set_type(t); - } - - inline void utree::ensure_list_type(char const* failed_in) - { - type::info t = get_type(); - if (t == type::invalid_type) - { - set_type(type::list_type); - l.default_construct(); - } - else if (get_type() != type::list_type) - { - std::string msg = failed_in; - msg += "called on non-list and non-invalid utree type"; - BOOST_THROW_EXCEPTION(bad_type_exception(msg.c_str(), get_type())); - } - } - - inline void utree::free() - { - switch (get_type()) - { - case type::binary_type: - case type::symbol_type: - case type::string_type: - s.free(); - break; - case type::list_type: - l.free(); - break; - case type::function_type: - delete pf; - break; - default: - break; - }; - s.initialize(); - } - - inline void utree::copy(utree const& other) - { - set_type(other.get_type()); - switch (other.get_type()) - { - default: - BOOST_THROW_EXCEPTION( - bad_type_exception("corrupt utree type", other.get_type())); - break; - case type::invalid_type: - case type::nil_type: - s.tag(other.s.tag()); - break; - case type::bool_type: - b = other.b; - s.tag(other.s.tag()); - break; - case type::int_type: - i = other.i; - s.tag(other.s.tag()); - break; - case type::double_type: - d = other.d; - s.tag(other.s.tag()); - break; - case type::reference_type: - p = other.p; - s.tag(other.s.tag()); - break; - case type::any_type: - v = other.v; - s.tag(other.s.tag()); - break; - case type::range_type: - r = other.r; - s.tag(other.s.tag()); - break; - case type::string_range_type: - sr = other.sr; - s.tag(other.s.tag()); - break; - case type::function_type: - pf = other.pf->clone(); - s.tag(other.s.tag()); - break; - case type::string_type: - case type::symbol_type: - case type::binary_type: - s.copy(other.s); - s.tag(other.s.tag()); - break; - case type::list_type: - l.copy(other.l); - s.tag(other.s.tag()); - break; - } - } - - template - struct is_iterator_range - : boost::mpl::false_ - {}; - - template - struct is_iterator_range > - : boost::mpl::true_ - {}; - - template - struct utree_cast - { - typedef To result_type; - - template - To dispatch(From const& val, boost::mpl::true_) const - { - return To(val); // From is convertible to To - } - - template - BOOST_NORETURN To dispatch(From const&, boost::mpl::false_) const - { - // From is NOT convertible to To !!! - throw std::bad_cast(); - BOOST_UNREACHABLE_RETURN(To()) - } - - template - To operator()(From const& val) const - { - // boost::iterator_range has a templated constructor, accepting - // any argument and hence any type is 'convertible' to it. - typedef typename boost::mpl::eval_if< - is_iterator_range - , boost::is_same, boost::is_convertible - >::type is_convertible; - return dispatch(val, is_convertible()); - } - }; - - template - struct utree_cast - { - typedef T* result_type; - - template - BOOST_NORETURN T* operator()(From const&) const - { - // From is NOT convertible to T !!! - throw std::bad_cast(); - BOOST_UNREACHABLE_RETURN(NULL) - } - - T* operator()(any_ptr const& p) const - { - return p.get(); - } - }; - - template - inline T utree::get() const - { - return utree::visit(*this, utree_cast()); - } - - inline utree& utree::deref() - { - return (get_type() == type::reference_type) ? *p : *this; - } - - inline utree const& utree::deref() const - { - return (get_type() == type::reference_type) ? *p : *this; - } - - inline short utree::tag() const - { - return s.tag(); - } - - inline void utree::tag(short tag) - { - s.tag(tag); - } - - inline utree utree::eval(utree const& env) const - { - if (get_type() == type::reference_type) - return deref().eval(env); - - if (get_type() != type::function_type) - BOOST_THROW_EXCEPTION( - bad_type_exception( - "eval() called on non-function utree type", get_type())); - return (*pf)(env); - } - - inline utree utree::eval(utree& env) const - { - if (get_type() == type::reference_type) - return deref().eval(env); - - if (get_type() != type::function_type) - BOOST_THROW_EXCEPTION( - bad_type_exception( - "eval() called on non-function utree type", get_type())); - return (*pf)(env); - } - - inline utree utree::operator() (utree const& env) const - { - return eval(env); - } - - inline utree utree::operator() (utree& env) const - { - return eval(env); - } -}} - -#ifdef _MSC_VER -# pragma warning(pop) -#endif -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/utree/operators.hpp b/framework/contrib/boost/include/boost/spirit/home/support/utree/operators.hpp deleted file mode 100644 index bda323343bc3..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/utree/operators.hpp +++ /dev/null @@ -1,719 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - Copyright (c) 2001-2011 Hartmut Kaiser - Copyright (c) 2011 Bryce Lelbach - - 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_UTREE_OPERATORS) -#define BOOST_SPIRIT_UTREE_OPERATORS - -#if defined(BOOST_MSVC) -# pragma warning(push) -# pragma warning(disable: 4804) -# pragma warning(disable: 4805) -#endif - -#include -#if !defined(BOOST_SPIRIT_DISABLE_UTREE_IO) - #include - #include -#endif -#include -#include -#include -#include -#include - -namespace boost { namespace spirit -{ - // Relational operators - bool operator==(utree const& a, utree const& b); - bool operator<(utree const& a, utree const& b); - bool operator!=(utree const& a, utree const& b); - bool operator>(utree const& a, utree const& b); - bool operator<=(utree const& a, utree const& b); - bool operator>=(utree const& a, utree const& b); - -#if !defined(BOOST_SPIRIT_DISABLE_UTREE_IO) - // output - std::ostream& operator<<(std::ostream& out, utree const& x); - std::ostream& operator<<(std::ostream& out, utree::invalid_type const& x); - std::ostream& operator<<(std::ostream& out, utree::nil_type const& x); -#endif - - // Logical operators - utree operator&&(utree const& a, utree const& b); - utree operator||(utree const& a, utree const& b); - utree operator!(utree const& a); - - // Arithmetic operators - utree operator+(utree const& a, utree const& b); - utree operator-(utree const& a, utree const& b); - utree operator*(utree const& a, utree const& b); - utree operator/(utree const& a, utree const& b); - utree operator%(utree const& a, utree const& b); - utree operator-(utree const& a); - - // Bitwise operators - utree operator&(utree const& a, utree const& b); - utree operator|(utree const& a, utree const& b); - utree operator^(utree const& a, utree const& b); - utree operator<<(utree const& a, utree const& b); - utree operator>>(utree const& a, utree const& b); - utree operator~(utree const& a); - - // Implementation - struct utree_is_equal - { - typedef bool result_type; - - template - bool dispatch(const A&, const B&, boost::mpl::false_) const - { - return false; // cannot compare different types by default - } - - template - bool dispatch(const A& a, const B& b, boost::mpl::true_) const - { - return a == b; // for arithmetic types - } - - template - bool operator()(const A& a, const B& b) const - { - return dispatch(a, b, - boost::mpl::and_< - boost::is_arithmetic, - boost::is_arithmetic >()); - } - - template - bool operator()(const T& a, const T& b) const - { - // This code works for lists - return a == b; - } - - template - bool operator()( - basic_string const& a, - basic_string const& b) const - { - return static_cast(a) == static_cast(b); - } - - bool operator()(utree::invalid_type, utree::invalid_type) const - { - return true; - } - - bool operator()(utree::nil_type, utree::nil_type) const - { - return true; - } - - bool operator()(function_base const&, function_base const&) const - { - return false; // just don't allow comparison of functions - } - }; - - struct utree_is_less_than - { - typedef bool result_type; - - template - bool dispatch(const A&, const B&, boost::mpl::false_) const - { - return false; // cannot compare different types by default - } - - template - bool dispatch(const A& a, const B& b, boost::mpl::true_) const - { - return a < b; // for arithmetic types - } - - template - bool operator()(const A& a, const B& b) const - { - return dispatch(a, b, - boost::mpl::and_< - boost::is_arithmetic, - boost::is_arithmetic >()); - } - - template - bool operator()(const T& a, const T& b) const - { - // This code works for lists - return a < b; - } - - template - bool operator()( - basic_string const& a, - basic_string const& b) const - { - return static_cast(a) < static_cast(b); - } - - bool operator()(utree::invalid_type, utree::invalid_type) const - { - BOOST_THROW_EXCEPTION(bad_type_exception - ("no less-than comparison for this utree type", - utree_type::invalid_type)); - BOOST_UNREACHABLE_RETURN(false) // no less than comparison for nil - } - - bool operator()(utree::nil_type, utree::nil_type) const - { - BOOST_THROW_EXCEPTION(bad_type_exception - ("no less-than comparison for this utree type", - utree_type::nil_type)); - BOOST_UNREACHABLE_RETURN(false) // no less than comparison for nil - } - - bool operator()(any_ptr const&, any_ptr const&) const - { - BOOST_THROW_EXCEPTION(bad_type_exception - ("no less-than comparison for this utree type", - utree_type::any_type)); - BOOST_UNREACHABLE_RETURN(false) // no less than comparison for any_ptr - } - - bool operator()(function_base const&, function_base const&) const - { - BOOST_THROW_EXCEPTION(bad_type_exception - ("no less-than comparison for this utree type", - utree_type::function_type)); - BOOST_UNREACHABLE_RETURN(false) // no less than comparison of functions - } - }; - -#if !defined(BOOST_SPIRIT_DISABLE_UTREE_IO) - struct utree_print - { - typedef void result_type; - - std::ostream& out; - utree_print(std::ostream& out) : out(out) {} - - void operator()(utree::invalid_type) const - { - out << " "; - } - - void operator()(utree::nil_type) const - { - out << " "; - } - - template - void operator()(T val) const - { - out << val << ' '; - } - - void operator()(bool b) const - { - out << (b ? "true" : "false") << ' '; - } - - void operator()(binary_range_type const& b) const - { - boost::io::ios_all_saver saver(out); - out << "#"; - out.width(2); - out.fill('0'); - - typedef binary_range_type::const_iterator iterator; - for (iterator i = b.begin(); i != b.end(); ++i) - out << std::hex << int((unsigned char)*i); - out << "# "; - } - - void operator()(utf8_string_range_type const& str) const - { - typedef utf8_string_range_type::const_iterator iterator; - iterator i = str.begin(); - out << '"'; - for (; i != str.end(); ++i) - out << *i; - out << "\" "; - } - - void operator()(utf8_symbol_range_type const& str) const - { - typedef utf8_symbol_range_type::const_iterator iterator; - iterator i = str.begin(); - for (; i != str.end(); ++i) - out << *i; - out << ' '; - } - - template - void operator()(boost::iterator_range const& range) const - { - typedef typename boost::iterator_range::const_iterator iterator; - (*this)('('); - for (iterator i = range.begin(); i != range.end(); ++i) - { - boost::spirit::utree::visit(*i, *this); - } - (*this)(')'); - } - - void operator()(any_ptr const&) const - { - return (*this)(""); - } - - void operator()(function_base const&) const - { - return (*this)(""); - } - }; -#endif - - template - struct logical_function - { - typedef utree result_type; - - // We assume anything except false is true - - // binary - template - utree operator()(A const& a, B const& b) const - { - return dispatch(a, b - , boost::is_arithmetic() - , boost::is_arithmetic()); - } - - // binary - template - utree dispatch(A const& a, B const& b, mpl::true_, mpl::true_) const - { - return Base::eval(a, b); // for arithmetic types - } - - // binary - template - utree dispatch(A const&, B const& b, mpl::false_, mpl::true_) const - { - return Base::eval(true, b); - } - - // binary - template - utree dispatch(A const& a, B const&, mpl::true_, mpl::false_) const - { - return Base::eval(a, true); - } - - // binary - template - utree dispatch(A const&, B const&, mpl::false_, mpl::false_) const - { - return Base::eval(true, true); - } - - // unary - template - utree operator()(A const& a) const - { - return dispatch(a, boost::is_arithmetic()); - } - - // unary - template - utree dispatch(A const& a, mpl::true_) const - { - return Base::eval(a); - } - - // unary - template - utree dispatch(A const&, mpl::false_) const - { - return Base::eval(true); - } - }; - - template - struct arithmetic_function - { - typedef utree result_type; - - template - utree dispatch(A const&, B const&, boost::mpl::false_) const - { - return utree(); // cannot apply to non-arithmetic types - } - - template - utree dispatch(A const& a, B const& b, boost::mpl::true_) const - { - return Base::eval(a, b); // for arithmetic types - } - - // binary - template - utree operator()(A const& a, B const& b) const - { - return dispatch(a, b, - boost::mpl::and_< - boost::is_arithmetic, - boost::is_arithmetic >()); - } - - template - utree dispatch(A const&, boost::mpl::false_) const - { - return utree(); // cannot apply to non-arithmetic types - } - - template - utree dispatch(A const& a, boost::mpl::true_) const - { - return Base::eval(a); // for arithmetic types - } - - // unary - template - utree operator()(A const& a) const - { - return dispatch(a, boost::is_arithmetic()); - } - }; - - template - struct integral_function - { - typedef utree result_type; - - template - utree dispatch(A const&, B const&, boost::mpl::false_) const - { - return utree(); // cannot apply to non-integral types - } - - template - utree dispatch(A const& a, B const& b, boost::mpl::true_) const - { - return Base::eval(a, b); // for integral types - } - - // binary - template - utree operator()(A const& a, B const& b) const - { - return dispatch(a, b, - boost::mpl::and_< - boost::is_integral, - boost::is_integral >()); - } - - template - utree dispatch(A const&, boost::mpl::false_) const - { - return utree(); // cannot apply to non-integral types - } - - template - utree dispatch(A const& a, boost::mpl::true_) const - { - return Base::eval(a); // for integral types - } - - // unary - template - utree operator()(A const& a) const - { - return dispatch(a, boost::is_integral()); - } - }; - -#define BOOST_SPIRIT_UTREE_CREATE_FUNCTION_BINARY \ - template \ - static utree eval(Lhs const& a, Rhs const& b) \ - /***/ - -#define BOOST_SPIRIT_UTREE_CREATE_FUNCTION_UNARY \ - template \ - static utree eval(Operand const& a) \ - /***/ - -#define BOOST_SPIRIT_UTREE_CREATE_FUNCTION(arity, name, expr, base) \ - struct BOOST_PP_CAT(function_impl_, name) \ - { \ - BOOST_SPIRIT_UTREE_CREATE_FUNCTION_##arity \ - { \ - return utree(expr); \ - } \ - }; \ - base const \ - BOOST_PP_CAT(base, BOOST_PP_CAT(_, name)) = {}; \ - /***/ - -#define BOOST_SPIRIT_UTREE_CREATE_ARITHMETIC_FUNCTION(arity, name, expr) \ - BOOST_SPIRIT_UTREE_CREATE_FUNCTION(arity, name, expr, arithmetic_function)\ - /***/ - -#define BOOST_SPIRIT_UTREE_CREATE_INTEGRAL_FUNCTION(arity, name, expr) \ - BOOST_SPIRIT_UTREE_CREATE_FUNCTION(arity, name, expr, integral_function) \ - /***/ - -#define BOOST_SPIRIT_UTREE_CREATE_LOGICAL_FUNCTION(arity, name, expr) \ - BOOST_SPIRIT_UTREE_CREATE_FUNCTION(arity, name, expr, logical_function) \ - /***/ - - inline bool operator==(utree const& a, utree const& b) - { - return utree::visit(a, b, utree_is_equal()); - } - - inline bool operator<(utree const& a, utree const& b) - { - return utree::visit(a, b, utree_is_less_than()); - } - - inline bool operator!=(utree const& a, utree const& b) - { - return !(a == b); - } - - inline bool operator>(utree const& a, utree const& b) - { - return b < a; - } - - inline bool operator<=(utree const& a, utree const& b) - { - return !(b < a); - } - - inline bool operator>=(utree const& a, utree const& b) - { - return !(a < b); - } - -#if !defined(BOOST_SPIRIT_DISABLE_UTREE_IO) - inline std::ostream& operator<<(std::ostream& out, utree const& x) - { - utree::visit(x, utree_print(out)); - return out; - } - - inline std::ostream& operator<<(std::ostream& out, utree::invalid_type const&) - { - return out; - } - - inline std::ostream& operator<<(std::ostream& out, utree::nil_type const&) - { - return out; - } -#endif - - BOOST_SPIRIT_UTREE_CREATE_LOGICAL_FUNCTION(BINARY, and_, a&&b) - BOOST_SPIRIT_UTREE_CREATE_LOGICAL_FUNCTION(BINARY, or_, a||b) - BOOST_SPIRIT_UTREE_CREATE_LOGICAL_FUNCTION(UNARY, not_, !a) - - BOOST_SPIRIT_UTREE_CREATE_ARITHMETIC_FUNCTION(BINARY, plus, a+b) - BOOST_SPIRIT_UTREE_CREATE_ARITHMETIC_FUNCTION(BINARY, minus, a-b) - BOOST_SPIRIT_UTREE_CREATE_ARITHMETIC_FUNCTION(BINARY, times, a*b) - BOOST_SPIRIT_UTREE_CREATE_ARITHMETIC_FUNCTION(BINARY, divides, a/b) - BOOST_SPIRIT_UTREE_CREATE_INTEGRAL_FUNCTION (BINARY, modulus, a%b) - BOOST_SPIRIT_UTREE_CREATE_ARITHMETIC_FUNCTION(UNARY, negate, -a) - - BOOST_SPIRIT_UTREE_CREATE_INTEGRAL_FUNCTION(BINARY, bitand_, a&b) - BOOST_SPIRIT_UTREE_CREATE_INTEGRAL_FUNCTION(BINARY, bitor_, a|b) - BOOST_SPIRIT_UTREE_CREATE_INTEGRAL_FUNCTION(BINARY, bitxor_, a^b) - BOOST_SPIRIT_UTREE_CREATE_INTEGRAL_FUNCTION(BINARY, shift_left, a<>b) - BOOST_SPIRIT_UTREE_CREATE_INTEGRAL_FUNCTION(UNARY, invert, ~a) - - // avoid `'~' on an expression of type bool` warning - template <> inline utree function_impl_invert::eval(bool const& a) - { - return utree(!a); - } - -#undef BOOST_SPIRIT_UTREE_CREATE_FUNCTION_BINARY -#undef BOOST_SPIRIT_UTREE_CREATE_FUNCTION_UNARY -#undef BOOST_SPIRIT_UTREE_CREATE_FUNCTION -#undef BOOST_SPIRIT_UTREE_CREATE_LOGICAL_FUNCTION -#undef BOOST_SPIRIT_UTREE_CREATE_INTEGRAL_FUNCTION -#undef BOOST_SPIRIT_UTREE_CREATE_ARITHMETIC_FUNCTION - - inline utree operator&&(utree const& a, utree const& b) - { - return utree::visit(a, b, logical_function_and_); - } - - inline utree operator||(utree const& a, utree const& b) - { - return utree::visit(a, b, logical_function_or_); - } - - inline utree operator!(utree const& a) - { - return utree::visit(a, logical_function_not_); - } - - inline utree operator+(utree const& a, utree const& b) - { - utree r = utree::visit(a, b, arithmetic_function_plus); - if (r.which() == utree_type::invalid_type) - { - BOOST_THROW_EXCEPTION(bad_type_exception - ("addition performed on non-arithmetic utree types", - a.which(), b.which())); - } - return r; - } - - inline utree operator-(utree const& a, utree const& b) - { - utree r = utree::visit(a, b, arithmetic_function_minus); - if (r.which() == utree_type::invalid_type) - { - BOOST_THROW_EXCEPTION(bad_type_exception - ("subtraction performed on non-arithmetic utree types", - a.which(), b.which())); - } - return r; - } - - inline utree operator*(utree const& a, utree const& b) - { - utree r = utree::visit(a, b, arithmetic_function_times); - if (r.which() == utree_type::invalid_type) - { - BOOST_THROW_EXCEPTION(bad_type_exception - ("multiplication performed on non-arithmetic utree types", - a.which(), b.which())); - } - return r; - } - - inline utree operator/(utree const& a, utree const& b) - { - utree r = utree::visit(a, b, arithmetic_function_divides); - if (r.which() == utree_type::invalid_type) - { - BOOST_THROW_EXCEPTION(bad_type_exception - ("division performed on non-arithmetic utree types", - a.which(), b.which())); - } - return r; - } - - inline utree operator%(utree const& a, utree const& b) - { - utree r = utree::visit(a, b, integral_function_modulus); - if (r.which() == utree_type::invalid_type) - { - BOOST_THROW_EXCEPTION(bad_type_exception - ("modulos performed on non-integral utree types", - a.which(), b.which())); - } - return r; - } - - inline utree operator-(utree const& a) - { - utree r = utree::visit(a, arithmetic_function_negate); - if (r.which() == utree_type::invalid_type) - { - BOOST_THROW_EXCEPTION(bad_type_exception - ("negation performed on non-arithmetic utree type", - a.which())); - } - return r; - } - - inline utree operator&(utree const& a, utree const& b) - { - utree r = utree::visit(a, b, integral_function_bitand_); - if (r.which() == utree_type::invalid_type) - { - BOOST_THROW_EXCEPTION(bad_type_exception - ("bitwise and performed on non-integral utree types", - a.which(), b.which())); - } - return r; - } - - inline utree operator|(utree const& a, utree const& b) - { - utree r = utree::visit(a, b, integral_function_bitor_); - if (r.which() == utree_type::invalid_type) - { - BOOST_THROW_EXCEPTION(bad_type_exception - ("bitwise or performed on non-integral utree types", - a.which(), b.which())); - } - return r; - } - - inline utree operator^(utree const& a, utree const& b) - { - utree r = utree::visit(a, b, integral_function_bitxor_); - if (r.which() == utree_type::invalid_type) - { - BOOST_THROW_EXCEPTION(bad_type_exception - ("bitwise xor performed on non-integral utree types", - a.which(), b.which())); - } - return r; - } - - inline utree operator<<(utree const& a, utree const& b) - { - utree r = utree::visit(a, b, integral_function_shift_left); - if (r.which() == utree_type::invalid_type) - { - BOOST_THROW_EXCEPTION(bad_type_exception - ("left shift performed on non-integral utree types", - a.which(), b.which())); - } - return r; - } - - inline utree operator>>(utree const& a, utree const& b) - { - utree r = utree::visit(a, b, integral_function_shift_right); - if (r.which() == utree_type::invalid_type) - { - BOOST_THROW_EXCEPTION(bad_type_exception - ("right shift performed on non-integral utree types", - a.which(), b.which())); - } - return r; - } - - inline utree operator~(utree const& a) - { - utree r = utree::visit(a, integral_function_invert); - if (r.which() == utree_type::invalid_type) - { - BOOST_THROW_EXCEPTION(bad_type_exception - ("inversion performed on non-integral utree type", - a.which())); - } - return r; - } -}} - -#if defined(BOOST_MSVC) -# pragma warning(pop) -#endif - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/utree/utree.hpp b/framework/contrib/boost/include/boost/spirit/home/support/utree/utree.hpp deleted file mode 100644 index e9ccad7f00a8..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/utree/utree.hpp +++ /dev/null @@ -1,636 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - Copyright (c) 2001-2011 Hartmut Kaiser - Copyright (c) 2010-2011 Bryce Lelbach - - 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_UTREE) -#define BOOST_SPIRIT_UTREE - -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#if defined(BOOST_MSVC) -# pragma warning(push) -# pragma warning(disable: 4804) -# pragma warning(disable: 4805) -# pragma warning(disable: 4244) -#endif - -namespace boost { namespace spirit -{ - //[utree_exceptions - /*` All exceptions thrown by utree are derived from utree_exception. */ - struct BOOST_SYMBOL_VISIBLE utree_exception : std::exception {}; - - /*`The `bad_type_exception` is thrown whenever somebody calls a member - function, which applies to certain stored utree_type's only, but this - precondition is violated as the `utree` instance holds some other type. - */ - struct bad_type_exception /*: utree_exception*/; - - /*`The `empty_exception` is thrown whenever a precondition of a list - or range utree method is violated due to the list or range being empty. - */ - struct empty_exception /*: utree_exception*/; - //] - - //[utree_types - /*`Each instance of an `utree` data structure can store exactly one of the - following data types at a time: - */ - struct utree_type - { - enum info - { - invalid_type, // the utree has not been initialized (it's - // default constructed) - nil_type, // nil is the sentinel (empty) utree type. - list_type, // A doubly linked list of utrees. - range_type, // A range of list::iterators. - reference_type, // A reference to another utree. - any_type, // A pointer or reference to any C++ type. - function_type, // A utree holding a stored_function object, - // where F is an unary function object taking a - // utree as it's parameter and returning a - // utree. - - // numeric atoms - bool_type, // An utree holding a boolean value - int_type, // An utree holding a integer (int) value - double_type, // An utree holding a floating point (double) value - - // text atoms (utf8) - string_type, // An UTF-8 string - string_range_type, // A pair of iterators into an UTF-8 string - symbol_type, // An UTF-8 symbol name - - binary_type // Arbitrary binary data - }; - typedef boost::uint_t::exact exact_integral_type; - typedef boost::uint_t::fast fast_integral_type; - }; - //] - - // streaming operator for utree types - essential for diagnostics - inline std::ostream& operator<<(std::ostream& out, utree_type::info t) - { - boost::io::ios_all_saver saver(out); - switch (t) { - case utree_type::invalid_type: { out << "invalid"; break; } - case utree_type::nil_type: { out << "nil"; break; } - case utree_type::list_type: { out << "list"; break; } - case utree_type::range_type: { out << "range"; break; } - case utree_type::reference_type: { out << "reference"; break; } - case utree_type::any_type: { out << "any"; break; } - case utree_type::function_type: { out << "function"; break; } - case utree_type::bool_type: { out << "bool"; break; } - case utree_type::int_type: { out << "int"; break; } - case utree_type::double_type: { out << "double"; break; } - case utree_type::string_type: { out << "string"; break; } - case utree_type::string_range_type: { out << "string_range"; break; } - case utree_type::symbol_type: { out << "symbol"; break; } - case utree_type::binary_type: { out << "binary"; break; } - default: { out << "unknown"; break; } - } - out << std::hex << "[0x" - << static_cast(t) << "]"; - return out; - } - - struct bad_type_exception : utree_exception - { - std::string msg; - - bad_type_exception(char const* error, utree_type::info got) - : msg() - { - std::ostringstream oss; - oss << "utree: " << error - << " (got utree type '" << got << "')"; - msg = oss.str(); - } - - bad_type_exception(char const* error, utree_type::info got1, - utree_type::info got2) - : msg() - { - std::ostringstream oss; - oss << "utree: " << error - << " (got utree types '" << got1 << "' and '" << got2 << "')"; - msg = oss.str(); - } - - virtual ~bad_type_exception() BOOST_NOEXCEPT_OR_NOTHROW {} - - virtual char const* what() const BOOST_NOEXCEPT_OR_NOTHROW - { return msg.c_str(); } - }; - - struct empty_exception : utree_exception - { - char const* msg; - - empty_exception(char const* error) : msg(error) {} - - virtual ~empty_exception() BOOST_NOEXCEPT_OR_NOTHROW {} - - virtual char const* what() const BOOST_NOEXCEPT_OR_NOTHROW - { return msg; } - }; - - /////////////////////////////////////////////////////////////////////////// - // A typed string with parametric Base storage. The storage can be any - // range or (stl container) of chars. - /////////////////////////////////////////////////////////////////////////// - template - struct basic_string : Base - { - static utree_type::info const type = type_; - - basic_string() - : Base() {} - - basic_string(Base const& base) - : Base(base) {} - - template - basic_string(Iterator bits, std::size_t len) - : Base(bits, bits + len) {} - - template - basic_string(Iterator first, Iterator last) - : Base(first, last) {} - - basic_string& operator=(Base const& other) - { - Base::operator=(other); - return *this; - } - }; - - //[utree_strings - /*`The `utree` string types described below are used by the `utree` API - only. These are not used to store information in the `utree` itself. - Their purpose is to refer to different internal `utree` node types - only. For instance, creating a `utree` from a binary data type will - create a `binary_type` utree node (see above). - */ - /*`The binary data type can be represented either verbatim as a sequence - of bytes or as a pair of iterators into some other stored binary data - sequence. Use this string type to access/create a `binary_type` `utree`. - */ - typedef basic_string< - boost::iterator_range, utree_type::binary_type - > binary_range_type; - typedef basic_string< - std::string, utree_type::binary_type - > binary_string_type; - - /*`The UTF-8 string can be represented either verbatim as a sequence of - characters or as a pair of iterators into some other stored binary data - sequence. Use this string type to access/create a `string_type` `utree`. - */ - typedef basic_string< - boost::iterator_range, utree_type::string_type - > utf8_string_range_type; - typedef basic_string< - std::string, utree_type::string_type - > utf8_string_type; - - /*`The UTF-8 symbol can be represented either verbatim as a sequence of - characters or as a pair of iterators into some other stored binary data - sequence. Use this string type to access/create a `symbol_type` `utree`. - */ - typedef basic_string< - boost::iterator_range, utree_type::symbol_type - > utf8_symbol_range_type; - typedef basic_string< - std::string, utree_type::symbol_type - > utf8_symbol_type; - //] - - /////////////////////////////////////////////////////////////////////////// - // Our function type - /////////////////////////////////////////////////////////////////////////// - class utree; - - //[utree_function_object_interface - struct function_base - { - virtual ~function_base() {} - virtual utree operator()(utree const& env) const = 0; - virtual utree operator()(utree& env) const = 0; - - // Calling f.clone() must return a newly allocated function_base - // instance that is equal to f. - virtual function_base* clone() const = 0; - }; - - template - struct stored_function : function_base - { - F f; - stored_function(F f = F()); - virtual ~stored_function(); - virtual utree operator()(utree const& env) const; - virtual utree operator()(utree& env) const; - virtual function_base* clone() const; - }; - - template - struct referenced_function : function_base - { - F& f; - referenced_function(F& f); - virtual ~referenced_function(); - virtual utree operator()(utree const& env) const; - virtual utree operator()(utree& env) const; - virtual function_base* clone() const; - }; - //] - - /////////////////////////////////////////////////////////////////////////// - // Shallow tag. Instructs utree to hold an iterator_range - // as-is without deep copying the range. - /////////////////////////////////////////////////////////////////////////// - struct shallow_tag {}; - shallow_tag const shallow = {}; - - /////////////////////////////////////////////////////////////////////////// - // A void* plus type_info - /////////////////////////////////////////////////////////////////////////// - class any_ptr - { - public: - template - typename boost::disable_if< - boost::is_polymorphic< - typename boost::remove_pointer::type>, - Ptr>::type - get() const - { - if (*i == typeid(Ptr)) - { - return static_cast(p); - } - boost::throw_exception(std::bad_cast()); - } - - template - any_ptr(T* p) - : p(p), i(&typeid(T*)) - {} - - friend bool operator==(any_ptr const& a, any_ptr const& b) - { - return (a.p == b.p) && (*a.i == *b.i); - } - - private: - // constructor is private - any_ptr(void* p, std::type_info const* i) - : p(p), i(i) {} - - template - friend struct detail::visit_impl; - - friend class utree; - - void* p; - std::type_info const* i; - }; - - //[utree - class utree { - public: - /////////////////////////////////////////////////////////////////////// - // The invalid type - struct invalid_type {}; - - /////////////////////////////////////////////////////////////////////// - // The nil type - struct nil_type {}; - - /////////////////////////////////////////////////////////////////////// - // The list type, this can be used to initialize an utree to hold an - // empty list - struct list_type; - - //[utree_container_types - typedef utree value_type; - typedef utree& reference; - typedef utree const& const_reference; - typedef std::ptrdiff_t difference_type; - typedef std::size_t size_type; - - typedef detail::list::node_iterator iterator; - typedef detail::list::node_iterator const_iterator; - //] - - typedef detail::list::node_iterator > - ref_iterator; - - typedef boost::iterator_range range; - typedef boost::iterator_range const_range; - - // dtor - ~utree(); - - //////////////////////////////////////////////////////////////////////// - //[utree_initialization - /*`A `utree` can be constructed or initialized from a wide range of - data types, allowing to create `utree` instances for every - possible node type (see the description of `utree_type::info` above). - For this reason it exposes a constructor and an assignment operator - for each of the allowed node types as shown below. All constructors - are non-explicit on purpose, allowing to use an utree instance as - the attribute to almost any Qi parser. - */ - // This constructs an `invalid_type` node. When used in places - // where a boost::optional is expected (i.e. as an attribute for the - // optional component), this represents the 'empty' state. - utree(invalid_type = invalid_type()); - - // This initializes a `nil_type` node, which represents a valid, - // 'initialized empty' utree (different from invalid_type!). - utree(nil_type); - reference operator=(nil_type); - - // This initializes a `boolean_type` node, which can hold 'true' or - // 'false' only. - explicit utree(bool); - reference operator=(bool); - - // This initializes an `integer_type` node, which can hold arbitrary - // integers. For convenience these functions are overloaded for signed - // and unsigned integer types. - utree(unsigned int); - utree(int); - reference operator=(unsigned int); - reference operator=(int); - - // This initializes a `double_type` node, which can hold arbitrary - // floating point (double) values. - utree(double); - reference operator=(double); - - // This initializes a `string_type` node, which can hold a narrow - // character sequence (usually an UTF-8 string). - utree(char); - utree(char const*); - utree(char const*, std::size_t); - utree(std::string const&); - reference operator=(char); - reference operator=(char const*); - reference operator=(std::string const&); - - // This constructs a `string_range_type` node, which does not copy the - // data but stores the iterator range to the character sequence the - // range has been initialized from. - utree(utf8_string_range_type const&, shallow_tag); - - // This initializes a `reference_type` node, which holds a reference to - // another utree node. All operations on such a node are automatically - // forwarded to the referenced utree instance. - utree(boost::reference_wrapper); - reference operator=(boost::reference_wrapper); - - // This initializes an `any_type` node, which can hold a pointer to an - // instance of any type together with the typeid of that type. When - // accessing that pointer the typeid will be checked, causing a - // std::bad_cast to be thrown if the typeids do not match. - utree(any_ptr const&); - reference operator=(any_ptr const&); - - // This initializes a `range_type` node, which holds an utree list node - // the elements of which are copy constructed (assigned) from the - // elements referenced by the given range of iterators. - template - utree(boost::iterator_range); - template - reference operator=(boost::iterator_range); - - // This initializes a `function_type` node from a polymorphic function - // object pointer (takes ownership) or reference. - utree(function_base const&); - reference operator=(function_base const&); - utree(function_base*); - reference operator=(function_base*); - - // This initializes either a `string_type`, a `symbol_type`, or a - // `binary_type` node (depending on the template parameter `type_`), - // which will hold the corresponding narrow character sequence (usually - // an UTF-8 string). - template - utree(basic_string const&); - template - reference operator=(basic_string const&); - //] - - // copy - utree(const_reference); - reference operator=(const_reference); - - // range - utree(range, shallow_tag); - utree(const_range, shallow_tag); - - // assign dispatch - template - void assign(Iterator, Iterator); - - //////////////////////////////////////////////////////////////////////// - - //////////////////////////////////////////////////////////////////////// - // function object visitation interface - - // single dispatch - template - typename boost::result_of::type - static visit(utree const&, F); - - template - typename boost::result_of::type - static visit(utree&, F); - - // double dispatch - template - typename boost::result_of::type - static visit(utree const&, utree const&, F); - - template - typename boost::result_of::type - static visit(utree&, utree const&, F); - - template - typename boost::result_of::type - static visit(utree const&, utree&, F); - - template - typename boost::result_of::type - static visit(utree&, utree&, F); - - //////////////////////////////////////////////////////////////////////// - - /////////////////////////////////////////////////////////////////////// - //[utree_container_functions - // STL Container interface - - // insertion - template - void push_back(T const&); - template - void push_front(T const&); - template - iterator insert(iterator, T const&); - template - void insert(iterator, std::size_t, T const&); - template - void insert(iterator, Iterator, Iterator); - - // erasure - void pop_front(); - void pop_back(); - iterator erase(iterator); - iterator erase(iterator, iterator); - - // front access - reference front(); - const_reference front() const; - iterator begin(); - const_iterator begin() const; - ref_iterator ref_begin(); - - // back access - reference back(); - const_reference back() const; - iterator end(); - const_iterator end() const; - ref_iterator ref_end(); - //] - - // This clears the utree instance and resets its type to `invalid_type` - void clear(); - - void swap(utree&); - - bool empty() const; - - size_type size() const; - /*`[warning `size()` has O(n) complexity on `utree` ranges. On utree - lists, it has O(1) complexity.]`*/ - - //////////////////////////////////////////////////////////////////////// - - //[utree_variant_functions - // return the data type (`utree_type::info`) of the currently stored - // data item - utree_type::info which() const; - - // access the currently stored data in a type safe manner, this will - // throw a `std::bad_cast()` if the currently stored data item is not - // default convertible to `T`. - template - T get() const; - //] - - reference deref(); - const_reference deref() const; - - short tag() const; - void tag(short); - - utree eval(utree const&) const; - utree eval(utree&) const; - - utree operator() (utree const&) const; - utree operator() (utree&) const; - //<- - protected: - void ensure_list_type(char const* failed_in = "ensure_list_type()"); - - private: - typedef utree_type type; - - template - friend struct detail::visit_impl; - friend struct detail::index_impl; - - type::info get_type() const; - void set_type(type::info); - void free(); - void copy(const_reference); - - union { - detail::fast_string s; - detail::list l; - detail::range r; - detail::string_range sr; - detail::void_ptr v; - bool b; - int i; - double d; - utree* p; - function_base* pf; - }; - //-> - }; - //] - - //[utree_tuple_interface - /*<-*/inline/*->*/ - utree::reference get(utree::reference, utree::size_type); - /*<-*/inline/*->*/ - utree::const_reference get(utree::const_reference, utree::size_type); - /*`[warning `get()` has O(n) complexity.]`*/ - //] - - struct utree::list_type : utree - { - using utree::operator=; - - list_type() : utree() { ensure_list_type("list_type()"); } - - template - list_type(T0 t0) : utree(t0) {} - - template - list_type(T0 t0, T1 t1) : utree(t0, t1) {} - }; - - /////////////////////////////////////////////////////////////////////////// - // predefined instances for singular types - utree::invalid_type const invalid = {}; - utree::nil_type const nil = {}; - utree::list_type const empty_list = utree::list_type(); -}} - -#if defined(BOOST_MSVC) - #pragma warning(pop) -#endif - -#endif - diff --git a/framework/contrib/boost/include/boost/spirit/home/support/utree/utree_traits.hpp b/framework/contrib/boost/include/boost/spirit/home/support/utree/utree_traits.hpp deleted file mode 100644 index df5e725f5685..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/utree/utree_traits.hpp +++ /dev/null @@ -1,1294 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - Copyright (c) 2001-2011 Hartmut Kaiser - Copyright (c) 2010-2011 Bryce Lelbach - - 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_OUTPUT_UTREE_TRAITS_APR_16_2010_0655AM) -#define BOOST_SPIRIT_OUTPUT_UTREE_TRAITS_APR_16_2010_0655AM - -#include -#include -#include -#include -#include -#include -#include - -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost -{ - template - inline T get(boost::spirit::utree const& x) - { - return x.get(); - } -} - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace traits -{ - namespace detail - { - inline bool is_list(utree const& ut) - { - switch (traits::which(ut)) - { - case utree_type::reference_type: - return is_list(ut.deref()); - - case utree_type::list_type: - case utree_type::range_type: - return true; - - default: - break; - } - return false; - } - - inline bool is_uninitialized(utree const& ut) - { - return traits::which(ut) == utree_type::invalid_type; - } - } - - // this specialization tells Spirit how to extract the type of the value - // stored in the given utree node - template <> - struct variant_which - { - static int call(utree const& u) { return u.which(); } - }; - - template <> - struct variant_which - { - static int call(utree::list_type const& u) { return u.which(); } - }; - - /////////////////////////////////////////////////////////////////////////// - // Make sure all components of an alternative expose utree, even if they - // actually expose a utree::list_type - template - struct alternative_attribute_transform - : mpl::identity - {}; - - /////////////////////////////////////////////////////////////////////////// - // Make sure all components of a sequence expose utree, even if they - // actually expose a utree::list_type - template - struct sequence_attribute_transform - : mpl::identity - {}; - - /////////////////////////////////////////////////////////////////////////// - // this specialization lets Spirit know that typed basic_strings - // are strings - template - struct is_string > - : mpl::true_ - {}; - - /////////////////////////////////////////////////////////////////////////// - // these specializations extract the character type of a utree typed string - template - struct char_type_of, I> > - : char_type_of - {}; - - template - struct char_type_of > - : mpl::identity - {}; - - /////////////////////////////////////////////////////////////////////////// - // these specializations extract a c string from a utree typed string - template - struct extract_c_string; - - template - struct extract_c_string< - spirit::basic_string, I> - > { - typedef T char_type; - - typedef spirit::basic_string, I> string; - - static T const* call (string& s) - { - return s.begin(); - } - - static T const* call (string const& s) - { - return s.begin(); - } - }; - - template - struct extract_c_string > - { - typedef char char_type; - - typedef spirit::basic_string string; - - static char const* call (string& s) - { - return s.c_str(); - } - - static char const* call (string const& s) - { - return s.c_str(); - } - }; - - /////////////////////////////////////////////////////////////////////////// - // these specializations are needed because utree::value_type == utree - template <> - struct is_substitute - : mpl::true_ - {}; - - template <> - struct is_weak_substitute - : mpl::true_ - {}; - - template <> - struct is_substitute - : mpl::true_ - {}; - - template <> - struct is_weak_substitute - : mpl::true_ - {}; - - /////////////////////////////////////////////////////////////////////////// - // this specialization tells Spirit.Qi to allow assignment to an utree from - // a variant - namespace detail - { - struct assign_to_utree_visitor : static_visitor<> - { - assign_to_utree_visitor(utree& ut) : ut_(ut) {} - - template - void operator()(T& val) const - { - ut_ = val; - } - - utree& ut_; - }; - } - - template - struct assign_to_container_from_value< - utree, variant > - { - static void - call(variant const& val, utree& attr) - { - apply_visitor(detail::assign_to_utree_visitor(attr), val); - } - }; - - /////////////////////////////////////////////////////////////////////////// - // this specialization tells Spirit.Qi to allow assignment to an utree from - // a STL container - template - struct assign_to_container_from_value - { - // any non-container type will be either directly assigned or appended - static void call(Attribute const& val, utree& attr, mpl::false_) - { - if (attr.empty()) - attr = val; - else - push_back(attr, val); - } - - // any container type will be converted into a list_type utree - static void call(Attribute const& val, utree& attr, mpl::true_) - { - typedef typename traits::container_iterator::type - iterator_type; - - // make sure the attribute is a list, at least an empty one - if (attr.empty()) - attr = empty_list; - - iterator_type end = traits::end(val); - for (iterator_type i = traits::begin(val); i != end; traits::next(i)) - push_back(attr, traits::deref(i)); - } - - static void call(Attribute const& val, utree& attr) - { - call(val, attr, is_container()); - } - }; - - /////////////////////////////////////////////////////////////////////////// - // this specialization is required to disambiguate the specializations - // related to utree - template <> - struct assign_to_container_from_value - { - static void call(utree const& val, utree& attr) - { - if (attr.empty()) { - attr = val; - } - else if (detail::is_list(val)) { - typedef utree::const_iterator iterator_type; - - iterator_type end = traits::end(val); - for (iterator_type i = traits::begin(val); i != end; traits::next(i)) - push_back(attr, traits::deref(i)); - } - else { - push_back(attr, val); - } - } - }; - - template <> - struct assign_to_container_from_value - : assign_to_container_from_value - {}; - - // If the destination is a utree_list, we need to force the right hand side - // value into a new sub-node, always, no questions asked. - template <> - struct assign_to_container_from_value - { - static void call(utree const& val, utree& attr) - { - push_back(attr, val); - } - }; - - // If both, the right hand side and the left hand side are utree_lists - // we have a lhs rule which has a single rule exposing a utree_list as its - // rhs (optionally wrapped into a directive or other unary parser). In this - // case we do not create a new sub-node. - template <> - struct assign_to_container_from_value - : assign_to_container_from_value - {}; - - /////////////////////////////////////////////////////////////////////////// - // this specialization makes sure strings get assigned as a whole and are - // not converted into a utree list - template <> - struct assign_to_container_from_value - { - static void call(utf8_string_type const& val, utree& attr) - { - if (attr.empty()) - attr = val; - else - push_back(attr, val); - } - }; - - // this specialization keeps symbols from being transformed into strings - template<> - struct assign_to_container_from_value - { - static void call (utf8_symbol_type const& val, utree& attr) - { - if (attr.empty()) - attr = val; - else - push_back(attr, val); - } - }; - - template <> - struct assign_to_container_from_value - { - static void call(binary_string_type const& val, utree& attr) - { - if (attr.empty()) - attr = val; - else - push_back(attr, val); - } - }; - - template<> - struct assign_to_container_from_value - { - static void call (utf8_symbol_range_type const& val, utree& attr) - { - if (attr.empty()) - attr = val; - else - push_back(attr, val); - } - }; - - template <> - struct assign_to_container_from_value - { - static void call(binary_range_type const& val, utree& attr) - { - if (attr.empty()) - attr = val; - else - push_back(attr, val); - } - }; - - template <> - struct assign_to_container_from_value - { - static void call(std::string const& val, utree& attr) - { - if (attr.empty()) - attr = val; - else - push_back(attr, val); - } - }; - - /////////////////////////////////////////////////////////////////////////// - // this specialization tells Spirit.Qi to allow assignment to an utree from - // generic iterators - template - struct assign_to_attribute_from_iterators - { - static void - call(Iterator const& first, Iterator const& last, utree& attr) - { - if (attr.empty()) - attr.assign(first, last); - else { - for (Iterator i = first; i != last; ++i) - push_back(attr, traits::deref(i)); - } - } - }; - - /////////////////////////////////////////////////////////////////////////// - // Karma only: convert utree node to string - namespace detail - { - struct attribute_as_string_type - { - typedef utf8_string_range_type type; - - static type call(utree const& attr) - { - return boost::get(attr); - } - - static bool is_valid(utree const& attr) - { - switch (traits::which(attr)) - { - case utree_type::reference_type: - return is_valid(attr.deref()); - - case utree_type::string_range_type: - case utree_type::string_type: - return true; - - default: - return false; - } - } - }; - } - - template <> - struct attribute_as - : detail::attribute_as_string_type - {}; - - template <> - struct attribute_as - : detail::attribute_as_string_type - {}; - - template <> - struct attribute_as - : detail::attribute_as_string_type - {}; - - /////////////////////////////////////////////////////////////////////////// - namespace detail - { - struct attribute_as_symbol_type - { - typedef utf8_symbol_range_type type; - - static type call(utree const& attr) - { - return boost::get(attr); - } - - static bool is_valid(utree const& attr) - { - switch (traits::which(attr)) - { - case utree_type::reference_type: - return is_valid(attr.deref()); - - case utree_type::symbol_type: - return true; - - default: - return false; - } - } - }; - } - - template <> - struct attribute_as - : detail::attribute_as_symbol_type - {}; - - template <> - struct attribute_as - : detail::attribute_as_symbol_type - {}; - - template - struct attribute_as - : attribute_as - {}; - - /////////////////////////////////////////////////////////////////////////// - namespace detail - { - struct attribute_as_binary_string_type - { - typedef binary_range_type type; - - static type call(utree const& attr) - { - return boost::get(attr); - } - - static bool is_valid(utree const& attr) - { - switch (traits::which(attr)) - { - case utree_type::reference_type: - return is_valid(attr.deref()); - - case utree_type::binary_type: - return true; - - default: - return false; - } - } - }; - } - - template <> - struct attribute_as - : detail::attribute_as_binary_string_type - {}; - - template <> - struct attribute_as - : detail::attribute_as_binary_string_type - {}; - - /////////////////////////////////////////////////////////////////////////// - // push_back support for utree - template - struct push_back_container - { - static bool call(utree& c, T const& val) - { - switch (traits::which(c)) - { - case utree_type::invalid_type: - case utree_type::nil_type: - case utree_type::list_type: - c.push_back(val); - break; - - default: - { - utree ut; - ut.push_back(c); - ut.push_back(val); - c.swap(ut); - } - break; - } - return true; - } - }; - - template - struct push_back_container - : push_back_container - {}; - - /////////////////////////////////////////////////////////////////////////// - // ensure the utree attribute is an empty list - template <> - struct make_container_attribute - { - static void call(utree& ut) - { - if (!detail::is_list(ut)) { - if (detail::is_uninitialized(ut)) - ut = empty_list; - else { - utree retval (empty_list); - retval.push_back(ut); - ut.swap(retval); - } - } - } - }; - - template <> - struct make_container_attribute - : make_container_attribute - {}; - - /////////////////////////////////////////////////////////////////////////// - // an utree is a container on its own - template <> - struct build_std_vector - { - typedef utree type; - }; - - template <> - struct build_std_vector - { - typedef utree::list_type type; - }; - - /////////////////////////////////////////////////////////////////////////// - // debug support for utree - template - struct print_attribute_debug - { - static void call(Out& out, utree const& val) - { - out << val; - } - }; - - /////////////////////////////////////////////////////////////////////////// - // force utree list attribute in a sequence to be dereferenced if a rule - // or a grammar exposes an utree as it's attribute - namespace detail - { - // Checks whether the exposed Attribute allows to handle utree or - // utree::list_type directly. Returning mpl::false_ from this meta - // function will force a new utree instance to be created for each - // invocation of the embedded parser. - - // The purpose of using utree::list_type as an attribute is to force a - // new sub-node in the result. - template - struct handles_utree_list_container - : mpl::and_< - mpl::not_ >, - traits::is_container > - {}; - - // The following specializations make sure that the actual handling of - // an utree (or utree::list_type) attribute is deferred to the embedded - // parsers of a sequence, alternative or optional component. - template - struct handles_utree_list_container >::type> - : mpl::true_ - {}; - - template - struct handles_utree_list_container > - : mpl::true_ - {}; - - template - struct handles_utree_list_container< - boost::variant > - : mpl::true_ - {}; - } - - template < - typename IteratorA, typename IteratorB, typename Context - , typename T1, typename T2, typename T3, typename T4> - struct handles_container - , utree, Context, IteratorB> - : detail::handles_utree_list_container, Context, IteratorB - >::type> - {}; - - template < - typename IteratorA, typename IteratorB, typename Context - , typename T1, typename T2, typename T3, typename T4> - struct handles_container - , utree, Context, IteratorB> - : detail::handles_utree_list_container, Context, IteratorB - >::type> - {}; - - template < - typename IteratorA, typename IteratorB, typename Context - , typename T1, typename T2, typename T3, typename T4> - struct handles_container - , utree::list_type, Context, IteratorB> - : detail::handles_utree_list_container, Context, IteratorB - >::type> - {}; - - template < - typename IteratorA, typename IteratorB, typename Context - , typename T1, typename T2, typename T3, typename T4> - struct handles_container - , utree::list_type, Context, IteratorB> - : detail::handles_utree_list_container, Context, IteratorB - >::type> - {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct pass_through_container< - utree, utree, Attribute, Sequence, qi::domain> - : detail::handles_utree_list_container - {}; - - template - struct pass_through_container< - utree::list_type, utree, Attribute, Sequence, qi::domain> - : detail::handles_utree_list_container - {}; - - /////////////////////////////////////////////////////////////////////////// - namespace detail - { - // Checks whether the exposed Attribute allows to handle utree or - // utree::list_type directly. Returning mpl::false_ from this meta - // function will force a new utree instance to be created for each - // invocation of the embedded parser. - - // The purpose of using utree::list_type as an attribute is to force a - // new sub-node in the result. - template - struct handles_utree_container - : mpl::and_< - mpl::not_ >, - traits::is_container > - {}; - - // The following specializations make sure that the actual handling of - // an utree (or utree::list_type) attribute is deferred to the embedded - // parsers of a sequence, alternative or optional component. - template - struct handles_utree_container >::type> - : mpl::true_ - {}; - - template - struct handles_utree_container > - : mpl::true_ - {}; - - template - struct handles_utree_container< - boost::variant > - : mpl::true_ - {}; - } - - template < - typename IteratorA, typename IteratorB, typename Context - , typename T1, typename T2, typename T3, typename T4> - struct handles_container - , utree, Context, IteratorB> - : detail::handles_utree_container, Context, IteratorB - >::type> - {}; - - template < - typename IteratorA, typename IteratorB, typename Context - , typename T1, typename T2, typename T3, typename T4> - struct handles_container - , utree, Context, IteratorB> - : detail::handles_utree_container, Context, IteratorB - >::type> - {}; - - /////////////////////////////////////////////////////////////////////////// - template - struct pass_through_container< - utree, utree, Attribute, Sequence, karma::domain> - : detail::handles_utree_container - {}; - - /////////////////////////////////////////////////////////////////////////// - // the specialization below tells Spirit how to handle utree if it is used - // with an optional component - template <> - struct optional_attribute - { - typedef utree const& type; - - static type call(utree const& val) - { - return val; - } - - // only 'invalid_type' utree nodes are not valid - static bool is_valid(utree const& val) - { - return !detail::is_uninitialized(val); - } - }; - - template <> - struct build_optional - { - typedef utree type; - }; - - template <> - struct build_optional - { - typedef utree::list_type type; - }; - - // an utree is an optional (in any domain) - template <> - struct not_is_optional - : mpl::false_ - {}; - - template <> - struct not_is_optional - : mpl::false_ - {}; - - template <> - struct not_is_optional - : mpl::false_ - {}; - - template <> - struct not_is_optional - : mpl::false_ - {}; - - /////////////////////////////////////////////////////////////////////////// - // the specialization below tells Spirit to handle utree as if it - // where a 'real' variant (in the context of karma) - template <> - struct not_is_variant - : mpl::false_ - {}; - - template <> - struct not_is_variant - : mpl::false_ - {}; - - // The specializations below tell Spirit to verify whether an attribute - // type is compatible with a given variant type - template <> - struct compute_compatible_component_variant< - utree, iterator_range > - : mpl::true_ - { - typedef iterator_range compatible_type; - - static bool is_compatible(int d) - { - return d == utree_type::list_type; - } - }; - - template <> - struct compute_compatible_component_variant< - utree, iterator_range > - : mpl::true_ - { - typedef iterator_range compatible_type; - - static bool is_compatible(int d) - { - return d == utree_type::list_type; - } - }; - - template <> - struct compute_compatible_component_variant - : mpl::true_ - { - typedef utree::invalid_type compatible_type; - - static bool is_compatible(int d) - { - return d == utree_type::invalid_type; - } - }; - - template <> - struct compute_compatible_component_variant - : mpl::true_ - { - typedef utree::nil_type compatible_type; - - static bool is_compatible(int d) - { - return d == utree_type::nil_type; - } - }; - - template <> - struct compute_compatible_component_variant - : mpl::true_ - { - typedef bool compatible_type; - - static bool is_compatible(int d) - { - return d == utree_type::bool_type; - } - }; - - template <> - struct compute_compatible_component_variant - : mpl::true_ - { - typedef int compatible_type; - - static bool is_compatible(int d) - { - return d == utree_type::int_type; - } - }; - - template <> - struct compute_compatible_component_variant - : mpl::true_ - { - typedef double compatible_type; - - static bool is_compatible(int d) - { - return d == utree_type::double_type; - } - }; - - template <> - struct compute_compatible_component_variant< - utree, utf8_string_range_type> - : mpl::true_ - { - typedef utf8_string_range_type compatible_type; - - static bool is_compatible(int d) - { - return d == utree_type::string_type; - } - }; - - template <> - struct compute_compatible_component_variant< - utree, utf8_string_type> - : mpl::true_ - { - typedef utf8_string_type compatible_type; - - static bool is_compatible(int d) - { - return d == utree_type::string_type; - } - }; - - template <> - struct compute_compatible_component_variant< - utree, utf8_symbol_range_type> - : mpl::true_ - { - typedef utf8_symbol_range_type compatible_type; - - static bool is_compatible(int d) - { - return d == utree_type::symbol_type; - } - }; - - template <> - struct compute_compatible_component_variant< - utree, utf8_symbol_type> - : mpl::true_ - { - typedef utf8_symbol_type compatible_type; - - static bool is_compatible(int d) - { - return d == utree_type::symbol_type; - } - }; - - template <> - struct compute_compatible_component_variant< - utree, binary_range_type> - : mpl::true_ - { - typedef binary_range_type compatible_type; - - static bool is_compatible(int d) - { - return d == utree_type::binary_type; - } - }; - - template <> - struct compute_compatible_component_variant< - utree, binary_string_type> - : mpl::true_ - { - typedef binary_string_type compatible_type; - - static bool is_compatible(int d) - { - return d == utree_type::binary_type; - } - }; - - template <> - struct compute_compatible_component_variant - : mpl::true_ - { - typedef utree compatible_type; - - static bool is_compatible(int d) - { - return d >= utree_type::invalid_type && - d <= utree_type::reference_type; - } - }; - - template <> - struct compute_compatible_component_variant< - utree, std::vector > - : mpl::true_ - { - typedef utree compatible_type; - - static bool is_compatible(int d) - { - return d >= utree_type::invalid_type && - d <= utree_type::reference_type; - } - }; - - template - struct compute_compatible_component_variant >::type> - : mpl::true_ - { - typedef iterator_range compatible_type; - - static bool is_compatible(int d) - { - return d == utree_type::list_type; - } - }; - - template - struct compute_compatible_component_variant - : compute_compatible_component_variant - {}; - - /////////////////////////////////////////////////////////////////////////// - template <> - struct symbols_lookup - { - typedef std::string type; - - static type call(utree const& t) - { - utf8_symbol_range_type r = boost::get(t); - return std::string(traits::begin(r), traits::end(r)); - } - }; - - template <> - struct symbols_lookup - { - typedef std::string type; - - static type call(utf8_symbol_type const& t) - { - return t; - } - }; - - /////////////////////////////////////////////////////////////////////////// - namespace detail - { - template - inline T get_or_deref(utree const& t) - { - if (detail::is_list(t)) - return boost::get(t.front()); - return boost::get(t); - } - } - - template <> - struct extract_from_container - { - typedef utree::nil_type type; - - template - static type call(utree const&, Context&) - { - return nil; - } - }; - - template <> - struct extract_from_container - { - typedef char type; - - template - static type call(utree const& t, Context&) - { - utf8_symbol_range_type r = detail::get_or_deref(t); - return r.front(); - } - }; - - template <> - struct extract_from_container - { - typedef bool type; - - template - static type call(utree const& t, Context&) - { - return detail::get_or_deref(t); - } - }; - - template <> - struct extract_from_container - { - typedef int type; - - template - static type call(utree const& t, Context&) - { - return detail::get_or_deref(t); - } - }; - - template <> - struct extract_from_container - { - typedef double type; - - template - static type call(utree const& t, Context&) - { - return detail::get_or_deref(t); - } - }; - - template - struct extract_from_container > - { - typedef std::basic_string type; - - template - static type call(utree const& t, Context&) - { - utf8_string_range_type r = detail::get_or_deref(t); - return type(traits::begin(r), traits::end(r)); - } - }; - - template <> - struct extract_from_container - { - typedef utf8_symbol_type type; - - template - static type call(utree const& t, Context&) - { - utf8_symbol_range_type r = detail::get_or_deref(t); - return type(traits::begin(r), traits::end(r)); - } - }; - - template <> - struct extract_from_container - { - typedef utf8_string_type type; - - template - static type call(utree const& t, Context&) - { - utf8_string_range_type r = detail::get_or_deref(t); - return type(traits::begin(r), traits::end(r)); - } - }; - - /////////////////////////////////////////////////////////////////////////// - template <> - struct transform_attribute - { - typedef utree::nil_type type; - - static type pre(utree const&) - { - return nil; - } - }; - - template <> - struct transform_attribute - { - typedef char type; - - static type pre(utree const& t) - { - utf8_string_range_type r = detail::get_or_deref(t); - return r.front(); - } - }; - - template <> - struct transform_attribute - { - typedef bool type; - - static type pre(utree const& t) - { - return detail::get_or_deref(t); - } - }; - - template <> - struct transform_attribute - { - typedef int type; - - static type pre(utree const& t) - { - return detail::get_or_deref(t); - } - }; - - template <> - struct transform_attribute - { - typedef double type; - - static type pre(utree const& t) - { - return detail::get_or_deref(t); - } - }; - - template - struct transform_attribute< - utree const, std::basic_string, karma::domain> - { - typedef std::basic_string type; - - static type pre(utree const& t) - { - utf8_string_range_type r = detail::get_or_deref(t); - return type(traits::begin(r), traits::end(r)); - } - }; - - // this specialization is used whenever a utree is passed to a rule as part - // of a sequence - template - struct transform_attribute< - iterator_range const, utree, karma::domain> - { - typedef utree type; - - static type pre(iterator_range const& t) - { - // return utree the begin iterator points to - Iterator it = t.begin(); - utree result(boost::ref(*it)); - ++it; - return result; - } - }; - - /////////////////////////////////////////////////////////////////////////// - template <> - struct transform_attribute - { - typedef utf8_string_type type; - - static type pre(utree const& t) - { - utf8_string_range_type r = detail::get_or_deref(t); - return type(traits::begin(r), traits::end(r)); - } - }; - - template <> - struct transform_attribute - { - typedef utf8_symbol_type type; - - static type pre(utree const& t) - { - utf8_symbol_range_type r = detail::get_or_deref(t); - return type(traits::begin(r), traits::end(r)); - } - }; - - template - struct transform_attribute - : transform_attribute - {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/support/utree/utree_traits_fwd.hpp b/framework/contrib/boost/include/boost/spirit/home/support/utree/utree_traits_fwd.hpp deleted file mode 100644 index 7830c7950f6d..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/support/utree/utree_traits_fwd.hpp +++ /dev/null @@ -1,24 +0,0 @@ -/*============================================================================= - 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_OUTPUT_UTREE_TRAITS_FWD_FEB_14_2011_0632AM) -#define BOOST_SPIRIT_OUTPUT_UTREE_TRAITS_FWD_FEB_14_2011_0632AM - -/////////////////////////////////////////////////////////////////////////////// -// forward declarations only -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit -{ - class utree; -}} - -namespace boost -{ - template - inline T get(boost::spirit::utree const& x); -} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3.hpp b/framework/contrib/boost/include/boost/spirit/home/x3.hpp deleted file mode 100644 index c82d00a178ea..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3.hpp +++ /dev/null @@ -1,71 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2013 Joel de Guzman - - 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_X3_MARCH_04_2007_0852PM) -#define BOOST_SPIRIT_X3_MARCH_04_2007_0852PM - -#if defined(_MSC_VER) -#pragma once -#endif - -#if !defined BOOST_SPIRIT_X3_HIDE_CXX17_WARNING && !( true \ - && defined __cpp_if_constexpr && __cpp_if_constexpr >= 201606 \ - && defined __cpp_inline_variables && __cpp_inline_variables >= 201606 \ - && defined __cpp_fold_expressions && __cpp_fold_expressions >= 201603 \ - && defined __cpp_variadic_using && __cpp_variadic_using >= 201611 \ - && (defined __cpp_template_auto && __cpp_template_auto >= 201606 \ - || defined __cpp_nontype_template_parameter_auto && __cpp_nontype_template_parameter_auto >= 201606) \ - && defined __cpp_nontype_template_args && __cpp_nontype_template_args >= 201411 \ -) -# define BOOST_SPIRIT_X3_STRINGIZE_IMPL(x) #x -# define BOOST_SPIRIT_X3_STRINGIZE(x) BOOST_SPIRIT_X3_STRINGIZE_IMPL(x) -# if defined __GNUC__ || defined __clang__ -# warning "Spirit X3 will soon use C++17 features which your compiler does not support" -# if (defined __clang__ && __clang_major__ >= 4 || __GNUC__ >= 7) && __cplusplus < 201703L -# warning "Use -std=c++17 or -std=gnu++17 compiler flag to enable C++17 mode" -# endif -# warning "Minimal supported compiler versions: Clang 4 / GCC 7 / MSC 1915 (VS 2017 v15.8)" -# if defined __clang__ -# pragma message "This compiler seems to be Clang " BOOST_SPIRIT_X3_STRINGIZE(__clang_major__) " (__cplusplus=" BOOST_SPIRIT_X3_STRINGIZE(__cplusplus) ")" -# else -# pragma message "This compiler seems to be GCC " BOOST_SPIRIT_X3_STRINGIZE(__GNUC__) " (__cplusplus=" BOOST_SPIRIT_X3_STRINGIZE(__cplusplus) ")" -# endif -# warning "Define BOOST_SPIRIT_X3_HIDE_CXX17_WARNING to hide the warning" -# elif defined _MSC_VER -# pragma message (__FILE__ "(" BOOST_SPIRIT_X3_STRINGIZE(__LINE__) "): warning: Spirit X3 will soon use C++17 features which your compiler does not support" ) -# ifdef _MSVC_LANG -# if _MSC_VER >= 1915 && _MSVC_LANG < 201703L -# pragma message (__FILE__ "(" BOOST_SPIRIT_X3_STRINGIZE(__LINE__) "): warning: Use /std:c++17 compiler flag to enable C++17 mode" ) -# endif -# define BOOST_SPIRIT_X3_TMP "_MSVC_LANG=" BOOST_SPIRIT_X3_STRINGIZE(_MSVC_LANG) -# elif defined _HAS_CXX17 -# define BOOST_SPIRIT_X3_TMP "_HAS_CXX17 defined" -# else -# define BOOST_SPIRIT_X3_TMP "__cplusplus=" BOOST_SPIRIT_X3_STRINGIZE(__cplusplus) -# endif -# pragma message (__FILE__ "(" BOOST_SPIRIT_X3_STRINGIZE(__LINE__) "): warning: Minimal supported compiler versions: Clang 4 / GCC 7 / MSC 1915 (VS 2017 v15.8)" ) -# pragma message (__FILE__ "(" BOOST_SPIRIT_X3_STRINGIZE(__LINE__) "): warning: This compiler seems to be MSC " BOOST_SPIRIT_X3_STRINGIZE(_MSC_VER) " (" BOOST_SPIRIT_X3_TMP ")" ) -# undef BOOST_SPIRIT_X3_TMP -# pragma message (__FILE__ "(" BOOST_SPIRIT_X3_STRINGIZE(__LINE__) "): warning: Define BOOST_SPIRIT_X3_HIDE_CXX17_WARNING to hide the warning" ) -# else -# pragma message "warning: Spirit X3 will soon use C++17 features which your compiler does not support" -# pragma message "warning: Minimal supported compiler versions: Clang 4 / GCC 7 / MSC 1915 (VS 2017 v15.8)" -# pragma message "warning: Define BOOST_SPIRIT_X3_HIDE_CXX17_WARNING to hide the warning" -# endif -# undef BOOST_SPIRIT_X3_STRINGIZE -# undef BOOST_SPIRIT_X3_STRINGIZE_IMPL -#endif - -#include -#include -#include -#include -#include -#include -#include -#include - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/auxiliary.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/auxiliary.hpp deleted file mode 100644 index baa8a94c8b60..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/auxiliary.hpp +++ /dev/null @@ -1,18 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - 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_X3_AUXILIARY_FEBRUARY_03_2007_0355PM) -#define BOOST_SPIRIT_X3_AUXILIARY_FEBRUARY_03_2007_0355PM - -#include -#include -#include -#include -#include -#include - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/auxiliary/any_parser.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/auxiliary/any_parser.hpp deleted file mode 100644 index df14bfdba4fd..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/auxiliary/any_parser.hpp +++ /dev/null @@ -1,150 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - Copyright (c) 2013-2014 Agustin Berge - - 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_X3_AUXILIARY_ANY_PARSER_APR_09_2014_1145PM) -#define BOOST_SPIRIT_X3_AUXILIARY_ANY_PARSER_APR_09_2014_1145PM - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace x3 -{ - template < - typename Iterator - , typename Attribute = unused_type - , typename Context = subcontext<>> - struct any_parser : parser> - { - typedef Attribute attribute_type; - - static bool const has_attribute = - !is_same::value; - static bool const handles_container = - traits::is_container::value; - - public: - any_parser() = default; - - template >::type> - any_parser(Expr const& expr) - : _content(new holder(expr)) {} - - any_parser(any_parser const& other) - : _content(other._content ? other._content->clone() : nullptr) {} - - any_parser(any_parser&& other) = default; - - any_parser& operator=(any_parser const& other) - { - _content.reset(other._content ? other._content->clone() : nullptr); - return *this; - } - - any_parser& operator=(any_parser&& other) = default; - - template - bool parse(Iterator_& first, Iterator_ const& last - , Context_ const& context, unused_type, Attribute& attr) const - { - BOOST_STATIC_ASSERT_MSG( - (is_same::value) - , "Incompatible iterator used" - ); - - BOOST_ASSERT_MSG( - (_content != nullptr) - , "Invalid use of uninitialized any_parser" - ); - - return _content->parse(first, last, context, attr); - } - - template - bool parse(Iterator_& first, Iterator_ const& last - , Context_ const& context, unused_type, Attribute_& attr_) const - { - Attribute attr; - if (parse(first, last, context, unused, attr)) - { - traits::move_to(attr, attr_); - return true; - } - return false; - } - - std::string get_info() const - { - return _content ? _content->get_info() : ""; - } - - private: - - struct placeholder - { - virtual placeholder* clone() const = 0; - - virtual bool parse(Iterator& first, Iterator const& last - , Context const& context, Attribute& attr) const = 0; - - virtual std::string get_info() const = 0; - - virtual ~placeholder() {} - }; - - template - struct holder : placeholder - { - typedef typename extension::as_parser::value_type parser_type; - - explicit holder(Expr const& p) - : _parser(as_parser(p)) {} - - holder* clone() const override - { - return new holder(*this); - } - - bool parse(Iterator& first, Iterator const& last - , Context const& context, Attribute& attr) const override - { - return _parser.parse(first, last, context, unused, attr); - } - - std::string get_info() const override - { - return x3::what(_parser); - } - - parser_type _parser; - }; - - private: - std::unique_ptr _content; - }; - - template - struct get_info> - { - typedef std::string result_type; - std::string operator()( - any_parser const& p) const - { - return p.get_info(); - } - }; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/auxiliary/attr.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/auxiliary/attr.hpp deleted file mode 100644 index 7fd6136f5912..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/auxiliary/attr.hpp +++ /dev/null @@ -1,120 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Hartmut Kaiser - Copyright (c) 2001-2014 Joel de Guzman - Copyright (c) 2013 Agustin Berge - - 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) -==============================================================================*/ -#ifndef BOOST_SPIRIT_X3_ATTR_JUL_23_2008_0956AM -#define BOOST_SPIRIT_X3_ATTR_JUL_23_2008_0956AM - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace x3 -{ - -namespace detail -{ - template > - struct array_helper; - - template - struct array_helper> - { - constexpr array_helper(Value const (&value)[N]) - : value_{ value[Is]... } {} - - constexpr array_helper(Value (&&value)[N]) - : value_{ static_cast(value[Is])... } {} - - Value value_[N]; - }; -} - - template - struct attr_parser : parser> - { - typedef Value attribute_type; - - static bool const has_attribute = - !is_same::value; - static bool const handles_container = - traits::is_container::value; - - constexpr attr_parser(Value const& value) - : value_(value) {} - constexpr attr_parser(Value&& value) - : value_(std::move(value)) {} - - template - bool parse(Iterator& /* first */, Iterator const& /* last */ - , Context const& /* context */, RuleContext&, Attribute& attr_) const - { - // $$$ Change to copy_to once we have it $$$ - traits::move_to(value_, attr_); - return true; - } - - Value value_; - }; - - template - struct attr_parser : parser> - , detail::array_helper - { - using detail::array_helper::array_helper; - - typedef Value attribute_type[N]; - - static bool const has_attribute = - !is_same::value; - static bool const handles_container = true; - - template - bool parse(Iterator& /* first */, Iterator const& /* last */ - , Context const& /* context */, RuleContext&, Attribute& attr_) const - { - // $$$ Change to copy_to once we have it $$$ - traits::move_to(this->value_ + 0, this->value_ + N, attr_); - return true; - } - }; - - template - struct get_info> - { - typedef std::string result_type; - std::string operator()(attr_parser const& /*p*/) const - { - return "attr"; - } - }; - - struct attr_gen - { - template - constexpr attr_parser::type>::type> - operator()(Value&& value) const - { - return { std::forward(value) }; - } - }; - - constexpr auto attr = attr_gen{}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/auxiliary/eoi.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/auxiliary/eoi.hpp deleted file mode 100644 index 86f95e109023..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/auxiliary/eoi.hpp +++ /dev/null @@ -1,41 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - 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_X3_EOI_MARCH_23_2007_0454PM) -#define BOOST_SPIRIT_X3_EOI_MARCH_23_2007_0454PM - -#include -#include -#include - -namespace boost { namespace spirit { namespace x3 -{ - struct eoi_parser : parser - { - typedef unused_type attribute_type; - static bool const has_attribute = false; - - template - bool parse(Iterator& first, Iterator const& last - , Context const& context, unused_type, Attribute&) const - { - x3::skip_over(first, last, context); - return first == last; - } - }; - - template<> - struct get_info - { - typedef std::string result_type; - result_type operator()(eoi_parser const &) const { return "eoi"; } - }; - - constexpr auto eoi = eoi_parser{}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/auxiliary/eol.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/auxiliary/eol.hpp deleted file mode 100644 index f07c01641749..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/auxiliary/eol.hpp +++ /dev/null @@ -1,55 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - 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_X3_EOL_MARCH_23_2007_0454PM) -#define BOOST_SPIRIT_X3_EOL_MARCH_23_2007_0454PM - -#include -#include -#include - -namespace boost { namespace spirit { namespace x3 -{ - struct eol_parser : parser - { - typedef unused_type attribute_type; - static bool const has_attribute = false; - - template - bool parse(Iterator& first, Iterator const& last - , Context const& context, unused_type, Attribute& /*attr*/) const - { - x3::skip_over(first, last, context); - Iterator iter = first; - bool matched = false; - if (iter != last && *iter == '\r') // CR - { - matched = true; - ++iter; - } - if (iter != last && *iter == '\n') // LF - { - matched = true; - ++iter; - } - - if (matched) first = iter; - return matched; - } - }; - - template<> - struct get_info - { - typedef std::string result_type; - result_type operator()(eol_parser const &) const { return "eol"; } - }; - - constexpr auto eol = eol_parser{}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/auxiliary/eps.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/auxiliary/eps.hpp deleted file mode 100644 index bcae6386c01d..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/auxiliary/eps.hpp +++ /dev/null @@ -1,86 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - - 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_X3_EPS_MARCH_23_2007_0454PM) -#define BOOST_SPIRIT_X3_EPS_MARCH_23_2007_0454PM - -#include -#include -#include - -namespace boost { namespace spirit { namespace x3 -{ - struct rule_context_tag; - - struct semantic_predicate : parser - { - typedef unused_type attribute_type; - static bool const has_attribute = false; - - constexpr semantic_predicate(bool predicate) - : predicate(predicate) {} - - template - bool parse(Iterator& first, Iterator const& last - , Context const& context, unused_type, Attribute&) const - { - x3::skip_over(first, last, context); - return predicate; - } - - bool predicate; - }; - - template - struct lazy_semantic_predicate : parser> - { - typedef unused_type attribute_type; - static bool const has_attribute = false; - - constexpr lazy_semantic_predicate(F f) - : f(f) {} - - template - bool parse(Iterator& first, Iterator const& last - , Context const& context, unused_type, Attribute& /* attr */) const - { - x3::skip_over(first, last, context); - return f(x3::get(context)); - } - - F f; - }; - - struct eps_parser : parser - { - typedef unused_type attribute_type; - static bool const has_attribute = false; - - template - bool parse(Iterator& first, Iterator const& last - , Context const& context, RuleContext&, Attribute&) const - { - x3::skip_over(first, last, context); - return true; - } - - constexpr semantic_predicate operator()(bool predicate) const - { - return { predicate }; - } - - template - constexpr lazy_semantic_predicate operator()(F f) const - { - return { f }; - } - }; - - constexpr auto eps = eps_parser{}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/auxiliary/guard.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/auxiliary/guard.hpp deleted file mode 100644 index 982980ff8f59..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/auxiliary/guard.hpp +++ /dev/null @@ -1,69 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - - 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_X3_GUARD_FERBRUARY_02_2013_0649PM) -#define BOOST_SPIRIT_X3_GUARD_FERBRUARY_02_2013_0649PM - -#include -#include - -namespace boost { namespace spirit { namespace x3 -{ - enum class error_handler_result - { - fail - , retry - , accept - , rethrow - }; - - template - struct guard : unary_parser> - { - typedef unary_parser> base_type; - static bool const is_pass_through_unary = true; - - constexpr guard(Subject const& subject, Handler handler) - : base_type(subject), handler(handler) {} - - template - bool parse(Iterator& first, Iterator const& last - , Context const& context, RuleContext& rcontext, Attribute& attr) const - { - for (;;) - { - try - { - Iterator i = first; - bool r = this->subject.parse(i, last, context, rcontext, attr); - if (r) - first = i; - return r; - } - catch (expectation_failure const& x) - { - switch (handler(first, last, x, context)) - { - case error_handler_result::fail: - return false; - case error_handler_result::retry: - continue; - case error_handler_result::accept: - return true; - case error_handler_result::rethrow: - throw; - } - } - } - return false; - } - - Handler handler; - }; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/binary.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/binary.hpp deleted file mode 100644 index a5010db8ffec..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/binary.hpp +++ /dev/null @@ -1,16 +0,0 @@ -/*============================================================================= - 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_X3_BINARY_MAY_08_2007_0906AM) -#define BOOST_SPIRIT_X3_BINARY_MAY_08_2007_0906AM - -#if defined(_MSC_VER) -#pragma once -#endif - -#include - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/binary/binary.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/binary/binary.hpp deleted file mode 100644 index 4d56a758c5f7..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/binary/binary.hpp +++ /dev/null @@ -1,172 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Hartmut Kaiser - Copyright (c) 2001-2011 Joel de Guzman - - 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_X3_BINARY_MAY_08_2007_0808AM) -#define BOOST_SPIRIT_X3_BINARY_MAY_08_2007_0808AM - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace x3 -{ - template - struct binary_lit_parser - : parser > - { - static bool const has_attribute = false; - typedef unused_type attribute_type; - - constexpr binary_lit_parser(T n_) - : n(n_) {} - - template - bool parse(Iterator& first, Iterator const& last - , Context const& context, unused_type, Attribute& attr_param) const - { - x3::skip_over(first, last, context); - - unsigned char const* bytes = n.data(); - - Iterator it = first; - for (unsigned int i = 0; i < sizeof(n); ++i) - { - if (it == last || *bytes++ != static_cast(*it++)) - return false; - } - - first = it; - x3::traits::move_to(n, attr_param); - return true; - } - - boost::endian::endian_arithmetic n; - }; - - /////////////////////////////////////////////////////////////////////////// - template - struct any_binary_parser : parser > - { - - typedef T attribute_type; - static bool const has_attribute = - !is_same::value; - - template - bool parse(Iterator& first, Iterator const& last - , Context const& context, unused_type, Attribute& attr_param) const - { - x3::skip_over(first, last, context); - - // Properly align the buffer for performance reasons - alignas(T) unsigned char buf[sizeof(T)]; - unsigned char * bytes = buf; - - Iterator it = first; - for (unsigned int i = 0; i < sizeof(T); ++i) - { - if (it == last) - return false; - *bytes++ = *it++; - } - - first = it; - - static_assert(bits % CHAR_BIT == 0, - "Boost.Endian supports only multiples of CHAR_BIT"); - x3::traits::move_to( - endian::endian_load(buf), - attr_param); - return true; - } - - constexpr binary_lit_parser operator()(T n) const - { - return {n}; - } - }; - -#define BOOST_SPIRIT_MAKE_BINARY_PRIMITIVE(name, endiantype, attrtype, bits) \ - typedef any_binary_parser< attrtype, boost::endian::order::endiantype, bits > name##type; \ - constexpr name##type name = name##type(); - - - BOOST_SPIRIT_MAKE_BINARY_PRIMITIVE(byte_, native, uint_least8_t, 8) - BOOST_SPIRIT_MAKE_BINARY_PRIMITIVE(word, native, uint_least16_t, 16) - BOOST_SPIRIT_MAKE_BINARY_PRIMITIVE(big_word, big, uint_least16_t, 16) - BOOST_SPIRIT_MAKE_BINARY_PRIMITIVE(little_word, little, uint_least16_t, 16) - BOOST_SPIRIT_MAKE_BINARY_PRIMITIVE(dword, native, uint_least32_t, 32) - BOOST_SPIRIT_MAKE_BINARY_PRIMITIVE(big_dword, big, uint_least32_t, 32) - BOOST_SPIRIT_MAKE_BINARY_PRIMITIVE(little_dword, little, uint_least32_t, 32) -#ifdef BOOST_HAS_LONG_LONG - BOOST_SPIRIT_MAKE_BINARY_PRIMITIVE(qword, native, uint_least64_t, 64) - BOOST_SPIRIT_MAKE_BINARY_PRIMITIVE(big_qword, big, uint_least64_t, 64) - BOOST_SPIRIT_MAKE_BINARY_PRIMITIVE(little_qword, little, uint_least64_t, 64) -#endif - BOOST_SPIRIT_MAKE_BINARY_PRIMITIVE(bin_float, native, float, sizeof(float) * CHAR_BIT) - BOOST_SPIRIT_MAKE_BINARY_PRIMITIVE(big_bin_float, big, float, sizeof(float) * CHAR_BIT) - BOOST_SPIRIT_MAKE_BINARY_PRIMITIVE(little_bin_float, little, float, sizeof(float) * CHAR_BIT) - BOOST_SPIRIT_MAKE_BINARY_PRIMITIVE(bin_double, native, double, sizeof(double) * CHAR_BIT) - BOOST_SPIRIT_MAKE_BINARY_PRIMITIVE(big_bin_double, big, double, sizeof(double) * CHAR_BIT) - BOOST_SPIRIT_MAKE_BINARY_PRIMITIVE(little_bin_double, little, double, sizeof(double) * CHAR_BIT) - -#undef BOOST_SPIRIT_MAKE_BINARY_PRIMITIVE - - /////////////////////////////////////////////////////////////////////////// - template - struct get_info> - { - typedef std::string result_type; - std::string operator()(any_binary_parser const&) const - { - return "little-endian binary"; - } - }; - - template - struct get_info> - { - typedef std::string result_type; - std::string operator()(any_binary_parser const&) const - { - return "big-endian binary"; - } - }; - - template - struct get_info> - { - typedef std::string result_type; - std::string operator()(binary_lit_parser const&) const - { - return "little-endian binary"; - } - }; - - template - struct get_info> - { - typedef std::string result_type; - std::string operator()(binary_lit_parser const&) const - { - return "big-endian binary"; - } - }; - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/char.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/char.hpp deleted file mode 100644 index da8155b6b0c2..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/char.hpp +++ /dev/null @@ -1,20 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - - 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_X3_CHAR_FEBRUARY_02_2007_0921AM) -#define BOOST_SPIRIT_X3_CHAR_FEBRUARY_02_2007_0921AM - -#include -#include -#include -#include -#include - -#if defined(BOOST_SPIRIT_X3_UNICODE) -#include -#endif - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/char/any_char.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/char/any_char.hpp deleted file mode 100644 index f6541477529d..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/char/any_char.hpp +++ /dev/null @@ -1,68 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - - 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_X3_ANY_CHAR_APRIL_16_2006_1051AM) -#define BOOST_SPIRIT_X3_ANY_CHAR_APRIL_16_2006_1051AM - -#include -#include -#include - -namespace boost { namespace spirit { namespace x3 -{ - template - struct any_char : char_parser> - { - typedef typename Encoding::char_type char_type; - typedef Encoding encoding; - typedef char_type attribute_type; - static bool const has_attribute = true; - - template - bool test(Char ch_, Context const&) const - { - return encoding::ischar(ch_); - } - - template - constexpr literal_char operator()(Char ch) const - { - return { ch }; - } - - template - constexpr literal_char operator()(const Char (&ch)[2]) const - { - return { ch[0] }; - } - - template - constexpr char_set operator()(const Char (&ch)[N]) const - { - return { ch }; - } - - template - constexpr char_range operator()(Char from, Char to) const - { - return { from, to }; - } - - template - constexpr char_range operator()(Char (&from)[2], Char (&to)[2]) const - { - return { static_cast(from[0]), static_cast(to[0]) }; - } - - template - char_set operator()(std::basic_string const& s) const - { - return { s }; - } - }; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/char/char.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/char/char.hpp deleted file mode 100644 index 9684ea45e5a5..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/char/char.hpp +++ /dev/null @@ -1,161 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - - 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_X3_CHAR_APRIL_16_2006_1051AM) -#define BOOST_SPIRIT_X3_CHAR_APRIL_16_2006_1051AM - -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace x3 -{ - namespace standard - { - typedef any_char char_type; - constexpr auto char_ = char_type{}; - - constexpr literal_char - lit(char ch) - { - return { ch }; - } - - constexpr literal_char - lit(wchar_t ch) - { - return { ch }; - } - - } - - using standard::char_type; - using standard::char_; - using standard::lit; - -#ifndef BOOST_SPIRIT_NO_STANDARD_WIDE - namespace standard_wide - { - typedef any_char char_type; - constexpr auto char_ = char_type{}; - - constexpr literal_char - lit(wchar_t ch) - { - return { ch }; - } - } -#endif - - namespace ascii - { - typedef any_char char_type; - constexpr auto char_ = char_type{}; - - constexpr literal_char - lit(char ch) - { - return { ch }; - } - - constexpr literal_char - lit(wchar_t ch) - { - return { ch }; - } - } - - namespace iso8859_1 - { - typedef any_char char_type; - constexpr auto char_ = char_type{}; - - constexpr literal_char - lit(char ch) - { - return { ch }; - } - - constexpr literal_char - lit(wchar_t ch) - { - return { ch }; - } - } - - namespace extension - { - template <> - struct as_parser - { - typedef literal_char< - char_encoding::standard, unused_type> - type; - - typedef type value_type; - - static constexpr type call(char ch) - { - return { ch }; - } - }; - -#ifndef BOOST_SPIRIT_NO_STANDARD_WIDE - template <> - struct as_parser - { - typedef literal_char< - char_encoding::standard_wide, unused_type> - type; - - typedef type value_type; - - static constexpr type call(wchar_t ch) - { - return { ch }; - } - }; -#endif - - template <> - struct as_parser - { - typedef literal_char< - char_encoding::standard, unused_type> - type; - - typedef type value_type; - - static constexpr type call(char const ch[]) - { - return { ch[0] }; - } - }; - -#ifndef BOOST_SPIRIT_NO_STANDARD_WIDE - template <> - struct as_parser - { - typedef literal_char< - char_encoding::standard_wide, unused_type> - type; - - typedef type value_type; - - static constexpr type call(wchar_t const ch[] ) - { - return { ch[0] }; - } - }; -#endif - - } - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/char/char_class.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/char/char_class.hpp deleted file mode 100644 index 05f810a8e9e5..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/char/char_class.hpp +++ /dev/null @@ -1,132 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - - 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_X3_CHAR_CLASS_APRIL_16_2006_1051AM) -#define BOOST_SPIRIT_X3_CHAR_CLASS_APRIL_16_2006_1051AM - -#include -#include -#include -#include -#include -#include -#include -namespace boost { namespace spirit { namespace x3 -{ - /////////////////////////////////////////////////////////////////////////// - template - struct char_class_base - { - typedef typename Encoding::classify_type char_type; - -#define BOOST_SPIRIT_X3_CLASSIFY(name) \ - template \ - static bool \ - is(name##_tag, Char ch) \ - { \ - return Encoding::is##name \ - BOOST_PREVENT_MACRO_SUBSTITUTION \ - (detail::cast_char(ch)); \ - } \ - /***/ - - BOOST_SPIRIT_X3_CLASSIFY(char) - BOOST_SPIRIT_X3_CLASSIFY(alnum) - BOOST_SPIRIT_X3_CLASSIFY(alpha) - BOOST_SPIRIT_X3_CLASSIFY(digit) - BOOST_SPIRIT_X3_CLASSIFY(xdigit) - BOOST_SPIRIT_X3_CLASSIFY(cntrl) - BOOST_SPIRIT_X3_CLASSIFY(graph) - BOOST_SPIRIT_X3_CLASSIFY(lower) - BOOST_SPIRIT_X3_CLASSIFY(print) - BOOST_SPIRIT_X3_CLASSIFY(punct) - BOOST_SPIRIT_X3_CLASSIFY(space) - BOOST_SPIRIT_X3_CLASSIFY(blank) - BOOST_SPIRIT_X3_CLASSIFY(upper) - -#undef BOOST_SPIRIT_X3_CLASSIFY - }; - - template - struct char_class - : char_parser> - { - typedef Encoding encoding; - typedef Tag tag; - typedef typename Encoding::char_type char_type; - typedef char_type attribute_type; - static bool const has_attribute = true; - - template - bool test(Char ch, Context const& context) const - { - return encoding::ischar(ch) - && char_class_base::is( - get_case_compare(context).get_char_class_tag(tag()), ch); - } - }; - -#define BOOST_SPIRIT_X3_CHAR_CLASS(encoding, name) \ - typedef char_class name##_type; \ - constexpr name##_type name = name##_type(); \ - /***/ - -#define BOOST_SPIRIT_X3_CHAR_CLASSES(encoding) \ - namespace encoding \ - { \ - BOOST_SPIRIT_X3_CHAR_CLASS(encoding, alnum) \ - BOOST_SPIRIT_X3_CHAR_CLASS(encoding, alpha) \ - BOOST_SPIRIT_X3_CHAR_CLASS(encoding, digit) \ - BOOST_SPIRIT_X3_CHAR_CLASS(encoding, xdigit) \ - BOOST_SPIRIT_X3_CHAR_CLASS(encoding, cntrl) \ - BOOST_SPIRIT_X3_CHAR_CLASS(encoding, graph) \ - BOOST_SPIRIT_X3_CHAR_CLASS(encoding, lower) \ - BOOST_SPIRIT_X3_CHAR_CLASS(encoding, print) \ - BOOST_SPIRIT_X3_CHAR_CLASS(encoding, punct) \ - BOOST_SPIRIT_X3_CHAR_CLASS(encoding, space) \ - BOOST_SPIRIT_X3_CHAR_CLASS(encoding, blank) \ - BOOST_SPIRIT_X3_CHAR_CLASS(encoding, upper) \ - } \ - /***/ - - BOOST_SPIRIT_X3_CHAR_CLASSES(standard) -#ifndef BOOST_SPIRIT_NO_STANDARD_WIDE - BOOST_SPIRIT_X3_CHAR_CLASSES(standard_wide) -#endif - BOOST_SPIRIT_X3_CHAR_CLASSES(ascii) - BOOST_SPIRIT_X3_CHAR_CLASSES(iso8859_1) - -#undef BOOST_SPIRIT_X3_CHAR_CLASS -#undef BOOST_SPIRIT_X3_CHAR_CLASSES - - using standard::alnum_type; - using standard::alpha_type; - using standard::digit_type; - using standard::xdigit_type; - using standard::cntrl_type; - using standard::graph_type; - using standard::lower_type; - using standard::print_type; - using standard::punct_type; - using standard::space_type; - using standard::blank_type; - using standard::upper_type; - - using standard::alnum; - using standard::alpha; - using standard::digit; - using standard::xdigit; - using standard::cntrl; - using standard::graph; - using standard::lower; - using standard::print; - using standard::punct; - using standard::space; - using standard::blank; - using standard::upper; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/char/char_class_tags.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/char/char_class_tags.hpp deleted file mode 100644 index 0f3f61aae633..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/char/char_class_tags.hpp +++ /dev/null @@ -1,29 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - - 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_X3_CHAR_CLASS_TAGS_APRIL_16_2006_1051AM) -#define BOOST_SPIRIT_X3_CHAR_CLASS_TAGS_APRIL_16_2006_1051AM - - -namespace boost { namespace spirit { namespace x3 -{ - /////////////////////////////////////////////////////////////////////////// - struct char_tag {}; - struct alnum_tag {}; - struct alpha_tag {}; - struct blank_tag {}; - struct cntrl_tag {}; - struct digit_tag {}; - struct graph_tag {}; - struct print_tag {}; - struct punct_tag {}; - struct space_tag {}; - struct xdigit_tag {}; - struct lower_tag {}; - struct upper_tag {}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/char/char_parser.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/char/char_parser.hpp deleted file mode 100644 index 973d4937213f..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/char/char_parser.hpp +++ /dev/null @@ -1,40 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - - 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_X3_CHAR_PARSER_APR_16_2006_0906AM) -#define BOOST_SPIRIT_X3_CHAR_PARSER_APR_16_2006_0906AM - -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace x3 -{ - /////////////////////////////////////////////////////////////////////////// - // The base char_parser - /////////////////////////////////////////////////////////////////////////// - template - struct char_parser : parser - { - template - bool parse( - Iterator& first, Iterator const& last - , Context const& context, unused_type, Attribute& attr) const - { - x3::skip_over(first, last, context); - if (first != last && this->derived().test(*first, context)) - { - x3::traits::move_to(*first, attr); - ++first; - return true; - } - return false; - } - }; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/char/char_set.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/char/char_set.hpp deleted file mode 100644 index 30eb4df6dec4..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/char/char_set.hpp +++ /dev/null @@ -1,127 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - - 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_X3_CHAR_SET_OCT_12_2014_1051AM) -#define BOOST_SPIRIT_X3_CHAR_SET_OCT_12_2014_1051AM - -#include -#include -#include -#include -#include -#include - -#include - -namespace boost { namespace spirit { namespace x3 -{ - /////////////////////////////////////////////////////////////////////////// - // Parser for a character range - /////////////////////////////////////////////////////////////////////////// - template - struct char_range - : char_parser< char_range > - { - - typedef typename Encoding::char_type char_type; - typedef Encoding encoding; - typedef Attribute attribute_type; - static bool const has_attribute = - !is_same::value; - - - constexpr char_range(char_type from_, char_type to_) - : from(from_), to(to_) {} - - template - bool test(Char ch_, Context const& context) const - { - - char_type ch = char_type(ch_); // optimize for token based parsing - return (get_case_compare(context)(ch, from) >= 0) - && (get_case_compare(context)(ch , to) <= 0); - } - - char_type from, to; - }; - - - /////////////////////////////////////////////////////////////////////////// - // Parser for a character set - /////////////////////////////////////////////////////////////////////////// - template - struct char_set : char_parser> - { - typedef typename Encoding::char_type char_type; - typedef Encoding encoding; - typedef Attribute attribute_type; - static bool const has_attribute = - !is_same::value; - - template - char_set(String const& str) - { - using spirit::x3::detail::cast_char; - - auto* definition = traits::get_c_string(str); - auto ch = *definition++; - while (ch) - { - auto next = *definition++; - if (next == '-') - { - next = *definition++; - if (next == 0) - { - chset.set(cast_char(ch)); - chset.set('-'); - break; - } - chset.set( - cast_char(ch), - cast_char(next) - ); - } - else - { - chset.set(cast_char(ch)); - } - ch = next; - } - } - - template - bool test(Char ch_, Context const& context) const - { - return get_case_compare(context).in_set(ch_, chset); - } - - support::detail::basic_chset chset; - }; - - template - struct get_info> - { - typedef std::string result_type; - std::string operator()(char_set const& /* p */) const - { - return "char-set"; - } - }; - - template - struct get_info> - { - typedef std::string result_type; - std::string operator()(char_range const& p) const - { - return "char_range \"" + to_utf8(Encoding::toucs4(p.from)) + '-' + to_utf8(Encoding::toucs4(p.to))+ '"'; - } - }; - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/char/detail/cast_char.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/char/detail/cast_char.hpp deleted file mode 100644 index 6a2b896c0249..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/char/detail/cast_char.hpp +++ /dev/null @@ -1,61 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - 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_X3_CAST_CHAR_NOVEMBER_10_2006_0907AM) -#define BOOST_SPIRIT_X3_CAST_CHAR_NOVEMBER_10_2006_0907AM - -#include -#include -#include - -namespace boost { namespace spirit { namespace x3 { namespace detail -{ - // Here's the thing... typical encodings (except ASCII) deal with unsigned - // integers > 127 (ASCII uses only 127). Yet, most char and wchar_t are signed. - // Thus, a char with value > 127 is negative (e.g. char 233 is -23). When you - // cast this to an unsigned int with 32 bits, you get 4294967273! - // - // The trick is to cast to an unsigned version of the source char first - // before casting to the target. {P.S. Don't worry about the code, the - // optimizer will optimize the if-else branches} - - template - TargetChar cast_char(SourceChar ch) - { -#if defined(_MSC_VER) -# pragma warning(push) -# pragma warning(disable: 4127) // conditional expression is constant -#endif - if (is_signed::value != is_signed::value) - { - if (is_signed::value) - { - // source is signed, target is unsigned - typedef typename make_unsigned::type USourceChar; - return TargetChar(USourceChar(ch)); - } - else - { - // source is unsigned, target is signed - typedef typename make_signed::type SSourceChar; - return TargetChar(SSourceChar(ch)); - } - } - else - { - // source and target has same signedness - return TargetChar(ch); // just cast - } -#if defined(_MSC_VER) -# pragma warning(pop) -#endif - } -}}}} - -#endif - - diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/char/literal_char.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/char/literal_char.hpp deleted file mode 100644 index 63bb75bf7da2..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/char/literal_char.hpp +++ /dev/null @@ -1,49 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - - 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_X3_LITERAL_CHAR_APRIL_16_2006_1051AM) -#define BOOST_SPIRIT_X3_LITERAL_CHAR_APRIL_16_2006_1051AM - -#include -#include -#include - -namespace boost { namespace spirit { namespace x3 -{ - template - struct literal_char : char_parser> - { - typedef typename Encoding::char_type char_type; - typedef Encoding encoding; - typedef Attribute attribute_type; - static bool const has_attribute = - !is_same::value; - - template - constexpr literal_char(Char ch) - : ch(static_cast(ch)) {} - - template - bool test(Char ch_, Context const& context) const - { - return get_case_compare(context)(ch, char_type(ch_)) == 0; - } - - char_type ch; - }; - - template - struct get_info> - { - typedef std::string result_type; - std::string operator()(literal_char const& p) const - { - return '\'' + to_utf8(Encoding::toucs4(p.ch)) + '\''; - } - }; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/char/negated_char_parser.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/char/negated_char_parser.hpp deleted file mode 100644 index 2f581a0afec6..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/char/negated_char_parser.hpp +++ /dev/null @@ -1,61 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - - 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_X3_NEGATED_CHAR_PARSER_APR_16_2006_0906AM) -#define BOOST_SPIRIT_X3_NEGATED_CHAR_PARSER_APR_16_2006_0906AM - -#include -#include -#include - -namespace boost { namespace spirit { namespace x3 -{ - /////////////////////////////////////////////////////////////////////////// - // negated_char_parser handles ~cp expressions (cp is a char_parser) - /////////////////////////////////////////////////////////////////////////// - template - struct negated_char_parser : - char_parser> - { - constexpr negated_char_parser(Positive const& positive) - : positive(positive) {} - - template - bool test(CharParam ch, Context const& context) const - { - return !positive.test(ch, context); - } - - Positive positive; - }; - - template - constexpr negated_char_parser - operator~(char_parser const& cp) - { - return { cp.derived() }; - } - - template - constexpr Positive const& - operator~(negated_char_parser const& cp) - { - return cp.positive; - } -}}} - -namespace boost { namespace spirit { namespace x3 { namespace traits -{ - template - struct attribute_of, Context> - : attribute_of {}; - - template - struct has_attribute, Context> - : has_attribute {}; -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/char/unicode.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/char/unicode.hpp deleted file mode 100644 index 5f2cbdca4204..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/char/unicode.hpp +++ /dev/null @@ -1,825 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - - 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_X3_UNICODE_JAN_20_2012_1218AM) -#define BOOST_SPIRIT_X3_UNICODE_JAN_20_2012_1218AM - -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace x3 -{ - /////////////////////////////////////////////////////////////////////////// - // Unicode Major Categories - /////////////////////////////////////////////////////////////////////////// - struct char_tag; - struct alnum_tag; - struct alpha_tag; - struct blank_tag; - struct cntrl_tag; - struct digit_tag; - struct graph_tag; - struct print_tag; - struct punct_tag; - struct space_tag; - struct xdigit_tag; - struct lower_tag; - struct upper_tag; - - /////////////////////////////////////////////////////////////////////////// - // Unicode Major Categories - /////////////////////////////////////////////////////////////////////////// - struct letter_tag {}; - struct mark_tag {}; - struct number_tag {}; - struct separator_tag {}; - struct other_tag {}; - struct punctuation_tag {}; - struct symbol_tag {}; - - /////////////////////////////////////////////////////////////////////////// - // Unicode General Categories - /////////////////////////////////////////////////////////////////////////// - struct uppercase_letter_tag {}; - struct lowercase_letter_tag {}; - struct titlecase_letter_tag {}; - struct modifier_letter_tag {}; - struct other_letter_tag {}; - - struct nonspacing_mark_tag {}; - struct enclosing_mark_tag {}; - struct spacing_mark_tag {}; - - struct decimal_number_tag {}; - struct letter_number_tag {}; - struct other_number_tag {}; - - struct space_separator_tag {}; - struct line_separator_tag {}; - struct paragraph_separator_tag {}; - - struct control_tag {}; - struct format_tag {}; - struct private_use_tag {}; - struct surrogate_tag {}; - struct unassigned_tag {}; - - struct dash_punctuation_tag {}; - struct open_punctuation_tag {}; - struct close_punctuation_tag {}; - struct connector_punctuation_tag {}; - struct other_punctuation_tag {}; - struct initial_punctuation_tag {}; - struct final_punctuation_tag {}; - - struct math_symbol_tag {}; - struct currency_symbol_tag {}; - struct modifier_symbol_tag {}; - struct other_symbol_tag {}; - - /////////////////////////////////////////////////////////////////////////// - // Unicode Derived Categories - /////////////////////////////////////////////////////////////////////////// - struct alphabetic_tag {}; - struct uppercase_tag {}; - struct lowercase_tag {}; - struct white_space_tag {}; - struct hex_digit_tag {}; - struct noncharacter_code_point_tag {}; - struct default_ignorable_code_point_tag {}; - - /////////////////////////////////////////////////////////////////////////// - // Unicode Scripts - /////////////////////////////////////////////////////////////////////////// - struct adlam_tag {}; - struct caucasian_albanian_tag {}; - struct ahom_tag {}; - struct arabic_tag {}; - struct imperial_aramaic_tag {}; - struct armenian_tag {}; - struct avestan_tag {}; - struct balinese_tag {}; - struct bamum_tag {}; - struct bassa_vah_tag {}; - struct batak_tag {}; - struct bengali_tag {}; - struct bhaiksuki_tag {}; - struct bopomofo_tag {}; - struct brahmi_tag {}; - struct braille_tag {}; - struct buginese_tag {}; - struct buhid_tag {}; - struct chakma_tag {}; - struct canadian_aboriginal_tag {}; - struct carian_tag {}; - struct cham_tag {}; - struct cherokee_tag {}; - struct chorasmian_tag {}; - struct coptic_tag {}; - struct cypro_minoan_tag {}; - struct cypriot_tag {}; - struct cyrillic_tag {}; - struct devanagari_tag {}; - struct dives_akuru_tag {}; - struct dogra_tag {}; - struct deseret_tag {}; - struct duployan_tag {}; - struct egyptian_hieroglyphs_tag {}; - struct elbasan_tag {}; - struct elymaic_tag {}; - struct ethiopic_tag {}; - struct georgian_tag {}; - struct glagolitic_tag {}; - struct gunjala_gondi_tag {}; - struct masaram_gondi_tag {}; - struct gothic_tag {}; - struct grantha_tag {}; - struct greek_tag {}; - struct gujarati_tag {}; - struct gurmukhi_tag {}; - struct hangul_tag {}; - struct han_tag {}; - struct hanunoo_tag {}; - struct hatran_tag {}; - struct hebrew_tag {}; - struct hiragana_tag {}; - struct anatolian_hieroglyphs_tag {}; - struct pahawh_hmong_tag {}; - struct nyiakeng_puachue_hmong_tag {}; - struct katakana_or_hiragana_tag {}; - struct old_hungarian_tag {}; - struct old_italic_tag {}; - struct javanese_tag {}; - struct kayah_li_tag {}; - struct katakana_tag {}; - struct kawi_tag {}; - struct kharoshthi_tag {}; - struct khmer_tag {}; - struct khojki_tag {}; - struct khitan_small_script_tag {}; - struct kannada_tag {}; - struct kaithi_tag {}; - struct tai_tham_tag {}; - struct lao_tag {}; - struct latin_tag {}; - struct lepcha_tag {}; - struct limbu_tag {}; - struct linear_a_tag {}; - struct linear_b_tag {}; - struct lisu_tag {}; - struct lycian_tag {}; - struct lydian_tag {}; - struct mahajani_tag {}; - struct makasar_tag {}; - struct mandaic_tag {}; - struct manichaean_tag {}; - struct marchen_tag {}; - struct medefaidrin_tag {}; - struct mende_kikakui_tag {}; - struct meroitic_cursive_tag {}; - struct meroitic_hieroglyphs_tag {}; - struct malayalam_tag {}; - struct modi_tag {}; - struct mongolian_tag {}; - struct mro_tag {}; - struct meetei_mayek_tag {}; - struct multani_tag {}; - struct myanmar_tag {}; - struct nag_mundari_tag {}; - struct nandinagari_tag {}; - struct old_north_arabian_tag {}; - struct nabataean_tag {}; - struct newa_tag {}; - struct nko_tag {}; - struct nushu_tag {}; - struct ogham_tag {}; - struct ol_chiki_tag {}; - struct old_turkic_tag {}; - struct oriya_tag {}; - struct osage_tag {}; - struct osmanya_tag {}; - struct old_uyghur_tag {}; - struct palmyrene_tag {}; - struct pau_cin_hau_tag {}; - struct old_permic_tag {}; - struct phags_pa_tag {}; - struct inscriptional_pahlavi_tag {}; - struct psalter_pahlavi_tag {}; - struct phoenician_tag {}; - struct miao_tag {}; - struct inscriptional_parthian_tag {}; - struct rejang_tag {}; - struct hanifi_rohingya_tag {}; - struct runic_tag {}; - struct samaritan_tag {}; - struct old_south_arabian_tag {}; - struct saurashtra_tag {}; - struct signwriting_tag {}; - struct shavian_tag {}; - struct sharada_tag {}; - struct siddham_tag {}; - struct khudawadi_tag {}; - struct sinhala_tag {}; - struct sogdian_tag {}; - struct old_sogdian_tag {}; - struct sora_sompeng_tag {}; - struct soyombo_tag {}; - struct sundanese_tag {}; - struct syloti_nagri_tag {}; - struct syriac_tag {}; - struct tagbanwa_tag {}; - struct takri_tag {}; - struct tai_le_tag {}; - struct new_tai_lue_tag {}; - struct tamil_tag {}; - struct tangut_tag {}; - struct tai_viet_tag {}; - struct telugu_tag {}; - struct tifinagh_tag {}; - struct tagalog_tag {}; - struct thaana_tag {}; - struct thai_tag {}; - struct tibetan_tag {}; - struct tirhuta_tag {}; - struct tangsa_tag {}; - struct toto_tag {}; - struct ugaritic_tag {}; - struct vai_tag {}; - struct vithkuqi_tag {}; - struct warang_citi_tag {}; - struct wancho_tag {}; - struct old_persian_tag {}; - struct cuneiform_tag {}; - struct yezidi_tag {}; - struct yi_tag {}; - struct zanabazar_square_tag {}; - struct inherited_tag {}; - struct common_tag {}; - struct unknown_tag {}; - - /////////////////////////////////////////////////////////////////////////// - struct unicode_char_class_base - { - typedef char_encoding::unicode encoding; - typedef char_encoding::unicode::char_type char_type; - -#define BOOST_SPIRIT_X3_BASIC_CLASSIFY(name) \ - template \ - static bool \ - is(name##_tag, Char ch) \ - { \ - return encoding::is ##name \ - BOOST_PREVENT_MACRO_SUBSTITUTION \ - (detail::cast_char(ch)); \ - } \ - /***/ - -#define BOOST_SPIRIT_X3_CLASSIFY(name) \ - template \ - static bool \ - is(name##_tag, Char ch) \ - { \ - return encoding::is_##name \ - BOOST_PREVENT_MACRO_SUBSTITUTION \ - (detail::cast_char(ch)); \ - } \ - /***/ - - - /////////////////////////////////////////////////////////////////////////// - // Unicode Major Categories - /////////////////////////////////////////////////////////////////////////// - BOOST_SPIRIT_X3_BASIC_CLASSIFY(char) - BOOST_SPIRIT_X3_BASIC_CLASSIFY(alnum) - BOOST_SPIRIT_X3_BASIC_CLASSIFY(alpha) - BOOST_SPIRIT_X3_BASIC_CLASSIFY(digit) - BOOST_SPIRIT_X3_BASIC_CLASSIFY(xdigit) - BOOST_SPIRIT_X3_BASIC_CLASSIFY(cntrl) - BOOST_SPIRIT_X3_BASIC_CLASSIFY(graph) - BOOST_SPIRIT_X3_BASIC_CLASSIFY(lower) - BOOST_SPIRIT_X3_BASIC_CLASSIFY(print) - BOOST_SPIRIT_X3_BASIC_CLASSIFY(punct) - BOOST_SPIRIT_X3_BASIC_CLASSIFY(space) - BOOST_SPIRIT_X3_BASIC_CLASSIFY(blank) - BOOST_SPIRIT_X3_BASIC_CLASSIFY(upper) - - /////////////////////////////////////////////////////////////////////////// - // Unicode Major Categories - /////////////////////////////////////////////////////////////////////////// - BOOST_SPIRIT_X3_CLASSIFY(letter) - BOOST_SPIRIT_X3_CLASSIFY(mark) - BOOST_SPIRIT_X3_CLASSIFY(number) - BOOST_SPIRIT_X3_CLASSIFY(separator) - BOOST_SPIRIT_X3_CLASSIFY(other) - BOOST_SPIRIT_X3_CLASSIFY(punctuation) - BOOST_SPIRIT_X3_CLASSIFY(symbol) - - /////////////////////////////////////////////////////////////////////////// - // Unicode General Categories - /////////////////////////////////////////////////////////////////////////// - BOOST_SPIRIT_X3_CLASSIFY(uppercase_letter) - BOOST_SPIRIT_X3_CLASSIFY(lowercase_letter) - BOOST_SPIRIT_X3_CLASSIFY(titlecase_letter) - BOOST_SPIRIT_X3_CLASSIFY(modifier_letter) - BOOST_SPIRIT_X3_CLASSIFY(other_letter) - - BOOST_SPIRIT_X3_CLASSIFY(nonspacing_mark) - BOOST_SPIRIT_X3_CLASSIFY(enclosing_mark) - BOOST_SPIRIT_X3_CLASSIFY(spacing_mark) - - BOOST_SPIRIT_X3_CLASSIFY(decimal_number) - BOOST_SPIRIT_X3_CLASSIFY(letter_number) - BOOST_SPIRIT_X3_CLASSIFY(other_number) - - BOOST_SPIRIT_X3_CLASSIFY(space_separator) - BOOST_SPIRIT_X3_CLASSIFY(line_separator) - BOOST_SPIRIT_X3_CLASSIFY(paragraph_separator) - - BOOST_SPIRIT_X3_CLASSIFY(control) - BOOST_SPIRIT_X3_CLASSIFY(format) - BOOST_SPIRIT_X3_CLASSIFY(private_use) - BOOST_SPIRIT_X3_CLASSIFY(surrogate) - BOOST_SPIRIT_X3_CLASSIFY(unassigned) - - BOOST_SPIRIT_X3_CLASSIFY(dash_punctuation) - BOOST_SPIRIT_X3_CLASSIFY(open_punctuation) - BOOST_SPIRIT_X3_CLASSIFY(close_punctuation) - BOOST_SPIRIT_X3_CLASSIFY(connector_punctuation) - BOOST_SPIRIT_X3_CLASSIFY(other_punctuation) - BOOST_SPIRIT_X3_CLASSIFY(initial_punctuation) - BOOST_SPIRIT_X3_CLASSIFY(final_punctuation) - - BOOST_SPIRIT_X3_CLASSIFY(math_symbol) - BOOST_SPIRIT_X3_CLASSIFY(currency_symbol) - BOOST_SPIRIT_X3_CLASSIFY(modifier_symbol) - BOOST_SPIRIT_X3_CLASSIFY(other_symbol) - - /////////////////////////////////////////////////////////////////////////// - // Unicode Derived Categories - /////////////////////////////////////////////////////////////////////////// - BOOST_SPIRIT_X3_CLASSIFY(alphabetic) - BOOST_SPIRIT_X3_CLASSIFY(uppercase) - BOOST_SPIRIT_X3_CLASSIFY(lowercase) - BOOST_SPIRIT_X3_CLASSIFY(white_space) - BOOST_SPIRIT_X3_CLASSIFY(hex_digit) - BOOST_SPIRIT_X3_CLASSIFY(noncharacter_code_point) - BOOST_SPIRIT_X3_CLASSIFY(default_ignorable_code_point) - - /////////////////////////////////////////////////////////////////////////// - // Unicode Scripts - /////////////////////////////////////////////////////////////////////////// - BOOST_SPIRIT_X3_CLASSIFY(adlam) - BOOST_SPIRIT_X3_CLASSIFY(caucasian_albanian) - BOOST_SPIRIT_X3_CLASSIFY(ahom) - BOOST_SPIRIT_X3_CLASSIFY(arabic) - BOOST_SPIRIT_X3_CLASSIFY(imperial_aramaic) - BOOST_SPIRIT_X3_CLASSIFY(armenian) - BOOST_SPIRIT_X3_CLASSIFY(avestan) - BOOST_SPIRIT_X3_CLASSIFY(balinese) - BOOST_SPIRIT_X3_CLASSIFY(bamum) - BOOST_SPIRIT_X3_CLASSIFY(bassa_vah) - BOOST_SPIRIT_X3_CLASSIFY(batak) - BOOST_SPIRIT_X3_CLASSIFY(bengali) - BOOST_SPIRIT_X3_CLASSIFY(bhaiksuki) - BOOST_SPIRIT_X3_CLASSIFY(bopomofo) - BOOST_SPIRIT_X3_CLASSIFY(brahmi) - BOOST_SPIRIT_X3_CLASSIFY(braille) - BOOST_SPIRIT_X3_CLASSIFY(buginese) - BOOST_SPIRIT_X3_CLASSIFY(buhid) - BOOST_SPIRIT_X3_CLASSIFY(chakma) - BOOST_SPIRIT_X3_CLASSIFY(canadian_aboriginal) - BOOST_SPIRIT_X3_CLASSIFY(carian) - BOOST_SPIRIT_X3_CLASSIFY(cham) - BOOST_SPIRIT_X3_CLASSIFY(cherokee) - BOOST_SPIRIT_X3_CLASSIFY(chorasmian) - BOOST_SPIRIT_X3_CLASSIFY(coptic) - BOOST_SPIRIT_X3_CLASSIFY(cypro_minoan) - BOOST_SPIRIT_X3_CLASSIFY(cypriot) - BOOST_SPIRIT_X3_CLASSIFY(cyrillic) - BOOST_SPIRIT_X3_CLASSIFY(devanagari) - BOOST_SPIRIT_X3_CLASSIFY(dives_akuru) - BOOST_SPIRIT_X3_CLASSIFY(dogra) - BOOST_SPIRIT_X3_CLASSIFY(deseret) - BOOST_SPIRIT_X3_CLASSIFY(duployan) - BOOST_SPIRIT_X3_CLASSIFY(egyptian_hieroglyphs) - BOOST_SPIRIT_X3_CLASSIFY(elbasan) - BOOST_SPIRIT_X3_CLASSIFY(elymaic) - BOOST_SPIRIT_X3_CLASSIFY(ethiopic) - BOOST_SPIRIT_X3_CLASSIFY(georgian) - BOOST_SPIRIT_X3_CLASSIFY(glagolitic) - BOOST_SPIRIT_X3_CLASSIFY(gunjala_gondi) - BOOST_SPIRIT_X3_CLASSIFY(masaram_gondi) - BOOST_SPIRIT_X3_CLASSIFY(gothic) - BOOST_SPIRIT_X3_CLASSIFY(grantha) - BOOST_SPIRIT_X3_CLASSIFY(greek) - BOOST_SPIRIT_X3_CLASSIFY(gujarati) - BOOST_SPIRIT_X3_CLASSIFY(gurmukhi) - BOOST_SPIRIT_X3_CLASSIFY(hangul) - BOOST_SPIRIT_X3_CLASSIFY(han) - BOOST_SPIRIT_X3_CLASSIFY(hanunoo) - BOOST_SPIRIT_X3_CLASSIFY(hatran) - BOOST_SPIRIT_X3_CLASSIFY(hebrew) - BOOST_SPIRIT_X3_CLASSIFY(hiragana) - BOOST_SPIRIT_X3_CLASSIFY(anatolian_hieroglyphs) - BOOST_SPIRIT_X3_CLASSIFY(pahawh_hmong) - BOOST_SPIRIT_X3_CLASSIFY(nyiakeng_puachue_hmong) - BOOST_SPIRIT_X3_CLASSIFY(katakana_or_hiragana) - BOOST_SPIRIT_X3_CLASSIFY(old_hungarian) - BOOST_SPIRIT_X3_CLASSIFY(old_italic) - BOOST_SPIRIT_X3_CLASSIFY(javanese) - BOOST_SPIRIT_X3_CLASSIFY(kayah_li) - BOOST_SPIRIT_X3_CLASSIFY(katakana) - BOOST_SPIRIT_X3_CLASSIFY(kawi) - BOOST_SPIRIT_X3_CLASSIFY(kharoshthi) - BOOST_SPIRIT_X3_CLASSIFY(khmer) - BOOST_SPIRIT_X3_CLASSIFY(khojki) - BOOST_SPIRIT_X3_CLASSIFY(khitan_small_script) - BOOST_SPIRIT_X3_CLASSIFY(kannada) - BOOST_SPIRIT_X3_CLASSIFY(kaithi) - BOOST_SPIRIT_X3_CLASSIFY(tai_tham) - BOOST_SPIRIT_X3_CLASSIFY(lao) - BOOST_SPIRIT_X3_CLASSIFY(latin) - BOOST_SPIRIT_X3_CLASSIFY(lepcha) - BOOST_SPIRIT_X3_CLASSIFY(limbu) - BOOST_SPIRIT_X3_CLASSIFY(linear_a) - BOOST_SPIRIT_X3_CLASSIFY(linear_b) - BOOST_SPIRIT_X3_CLASSIFY(lisu) - BOOST_SPIRIT_X3_CLASSIFY(lycian) - BOOST_SPIRIT_X3_CLASSIFY(lydian) - BOOST_SPIRIT_X3_CLASSIFY(mahajani) - BOOST_SPIRIT_X3_CLASSIFY(makasar) - BOOST_SPIRIT_X3_CLASSIFY(mandaic) - BOOST_SPIRIT_X3_CLASSIFY(manichaean) - BOOST_SPIRIT_X3_CLASSIFY(marchen) - BOOST_SPIRIT_X3_CLASSIFY(medefaidrin) - BOOST_SPIRIT_X3_CLASSIFY(mende_kikakui) - BOOST_SPIRIT_X3_CLASSIFY(meroitic_cursive) - BOOST_SPIRIT_X3_CLASSIFY(meroitic_hieroglyphs) - BOOST_SPIRIT_X3_CLASSIFY(malayalam) - BOOST_SPIRIT_X3_CLASSIFY(modi) - BOOST_SPIRIT_X3_CLASSIFY(mongolian) - BOOST_SPIRIT_X3_CLASSIFY(mro) - BOOST_SPIRIT_X3_CLASSIFY(meetei_mayek) - BOOST_SPIRIT_X3_CLASSIFY(multani) - BOOST_SPIRIT_X3_CLASSIFY(myanmar) - BOOST_SPIRIT_X3_CLASSIFY(nag_mundari) - BOOST_SPIRIT_X3_CLASSIFY(nandinagari) - BOOST_SPIRIT_X3_CLASSIFY(old_north_arabian) - BOOST_SPIRIT_X3_CLASSIFY(nabataean) - BOOST_SPIRIT_X3_CLASSIFY(newa) - BOOST_SPIRIT_X3_CLASSIFY(nko) - BOOST_SPIRIT_X3_CLASSIFY(nushu) - BOOST_SPIRIT_X3_CLASSIFY(ogham) - BOOST_SPIRIT_X3_CLASSIFY(ol_chiki) - BOOST_SPIRIT_X3_CLASSIFY(old_turkic) - BOOST_SPIRIT_X3_CLASSIFY(oriya) - BOOST_SPIRIT_X3_CLASSIFY(osage) - BOOST_SPIRIT_X3_CLASSIFY(osmanya) - BOOST_SPIRIT_X3_CLASSIFY(old_uyghur) - BOOST_SPIRIT_X3_CLASSIFY(palmyrene) - BOOST_SPIRIT_X3_CLASSIFY(pau_cin_hau) - BOOST_SPIRIT_X3_CLASSIFY(old_permic) - BOOST_SPIRIT_X3_CLASSIFY(phags_pa) - BOOST_SPIRIT_X3_CLASSIFY(inscriptional_pahlavi) - BOOST_SPIRIT_X3_CLASSIFY(psalter_pahlavi) - BOOST_SPIRIT_X3_CLASSIFY(phoenician) - BOOST_SPIRIT_X3_CLASSIFY(miao) - BOOST_SPIRIT_X3_CLASSIFY(inscriptional_parthian) - BOOST_SPIRIT_X3_CLASSIFY(rejang) - BOOST_SPIRIT_X3_CLASSIFY(hanifi_rohingya) - BOOST_SPIRIT_X3_CLASSIFY(runic) - BOOST_SPIRIT_X3_CLASSIFY(samaritan) - BOOST_SPIRIT_X3_CLASSIFY(old_south_arabian) - BOOST_SPIRIT_X3_CLASSIFY(saurashtra) - BOOST_SPIRIT_X3_CLASSIFY(signwriting) - BOOST_SPIRIT_X3_CLASSIFY(shavian) - BOOST_SPIRIT_X3_CLASSIFY(sharada) - BOOST_SPIRIT_X3_CLASSIFY(siddham) - BOOST_SPIRIT_X3_CLASSIFY(khudawadi) - BOOST_SPIRIT_X3_CLASSIFY(sinhala) - BOOST_SPIRIT_X3_CLASSIFY(sogdian) - BOOST_SPIRIT_X3_CLASSIFY(old_sogdian) - BOOST_SPIRIT_X3_CLASSIFY(sora_sompeng) - BOOST_SPIRIT_X3_CLASSIFY(soyombo) - BOOST_SPIRIT_X3_CLASSIFY(sundanese) - BOOST_SPIRIT_X3_CLASSIFY(syloti_nagri) - BOOST_SPIRIT_X3_CLASSIFY(syriac) - BOOST_SPIRIT_X3_CLASSIFY(tagbanwa) - BOOST_SPIRIT_X3_CLASSIFY(takri) - BOOST_SPIRIT_X3_CLASSIFY(tai_le) - BOOST_SPIRIT_X3_CLASSIFY(new_tai_lue) - BOOST_SPIRIT_X3_CLASSIFY(tamil) - BOOST_SPIRIT_X3_CLASSIFY(tangut) - BOOST_SPIRIT_X3_CLASSIFY(tai_viet) - BOOST_SPIRIT_X3_CLASSIFY(telugu) - BOOST_SPIRIT_X3_CLASSIFY(tifinagh) - BOOST_SPIRIT_X3_CLASSIFY(tagalog) - BOOST_SPIRIT_X3_CLASSIFY(thaana) - BOOST_SPIRIT_X3_CLASSIFY(thai) - BOOST_SPIRIT_X3_CLASSIFY(tibetan) - BOOST_SPIRIT_X3_CLASSIFY(tirhuta) - BOOST_SPIRIT_X3_CLASSIFY(tangsa) - BOOST_SPIRIT_X3_CLASSIFY(toto) - BOOST_SPIRIT_X3_CLASSIFY(ugaritic) - BOOST_SPIRIT_X3_CLASSIFY(vai) - BOOST_SPIRIT_X3_CLASSIFY(vithkuqi) - BOOST_SPIRIT_X3_CLASSIFY(warang_citi) - BOOST_SPIRIT_X3_CLASSIFY(wancho) - BOOST_SPIRIT_X3_CLASSIFY(old_persian) - BOOST_SPIRIT_X3_CLASSIFY(cuneiform) - BOOST_SPIRIT_X3_CLASSIFY(yezidi) - BOOST_SPIRIT_X3_CLASSIFY(yi) - BOOST_SPIRIT_X3_CLASSIFY(zanabazar_square) - BOOST_SPIRIT_X3_CLASSIFY(inherited) - BOOST_SPIRIT_X3_CLASSIFY(common) - BOOST_SPIRIT_X3_CLASSIFY(unknown) - -#undef BOOST_SPIRIT_X3_BASIC_CLASSIFY -#undef BOOST_SPIRIT_X3_CLASSIFY - }; - - template - struct unicode_char_class - : char_parser> - { - typedef char_encoding::unicode encoding; - typedef Tag tag; - typedef typename encoding::char_type char_type; - typedef char_type attribute_type; - static bool const has_attribute = true; - - template - bool test(Char ch, Context const&) const - { - return encoding::ischar(ch) && unicode_char_class_base::is(tag(), ch); - } - }; - -#define BOOST_SPIRIT_X3_CHAR_CLASS(name) \ - typedef unicode_char_class name##_type; \ - constexpr name##_type name = name##_type(); \ - /***/ - - namespace unicode - { - typedef any_char char_type; - constexpr auto char_ = char_type{}; - - /////////////////////////////////////////////////////////////////////////// - // Unicode Major Categories - /////////////////////////////////////////////////////////////////////////// - BOOST_SPIRIT_X3_CHAR_CLASS(alnum) - BOOST_SPIRIT_X3_CHAR_CLASS(alpha) - BOOST_SPIRIT_X3_CHAR_CLASS(digit) - BOOST_SPIRIT_X3_CHAR_CLASS(xdigit) - BOOST_SPIRIT_X3_CHAR_CLASS(cntrl) - BOOST_SPIRIT_X3_CHAR_CLASS(graph) - BOOST_SPIRIT_X3_CHAR_CLASS(lower) - BOOST_SPIRIT_X3_CHAR_CLASS(print) - BOOST_SPIRIT_X3_CHAR_CLASS(punct) - BOOST_SPIRIT_X3_CHAR_CLASS(space) - BOOST_SPIRIT_X3_CHAR_CLASS(blank) - BOOST_SPIRIT_X3_CHAR_CLASS(upper) - - /////////////////////////////////////////////////////////////////////////// - // Unicode Major Categories - /////////////////////////////////////////////////////////////////////////// - BOOST_SPIRIT_X3_CHAR_CLASS(letter) - BOOST_SPIRIT_X3_CHAR_CLASS(mark) - BOOST_SPIRIT_X3_CHAR_CLASS(number) - BOOST_SPIRIT_X3_CHAR_CLASS(separator) - BOOST_SPIRIT_X3_CHAR_CLASS(other) - BOOST_SPIRIT_X3_CHAR_CLASS(punctuation) - BOOST_SPIRIT_X3_CHAR_CLASS(symbol) - - /////////////////////////////////////////////////////////////////////////// - // Unicode General Categories - /////////////////////////////////////////////////////////////////////////// - BOOST_SPIRIT_X3_CHAR_CLASS(uppercase_letter) - BOOST_SPIRIT_X3_CHAR_CLASS(lowercase_letter) - BOOST_SPIRIT_X3_CHAR_CLASS(titlecase_letter) - BOOST_SPIRIT_X3_CHAR_CLASS(modifier_letter) - BOOST_SPIRIT_X3_CHAR_CLASS(other_letter) - - BOOST_SPIRIT_X3_CHAR_CLASS(nonspacing_mark) - BOOST_SPIRIT_X3_CHAR_CLASS(enclosing_mark) - BOOST_SPIRIT_X3_CHAR_CLASS(spacing_mark) - - BOOST_SPIRIT_X3_CHAR_CLASS(decimal_number) - BOOST_SPIRIT_X3_CHAR_CLASS(letter_number) - BOOST_SPIRIT_X3_CHAR_CLASS(other_number) - - BOOST_SPIRIT_X3_CHAR_CLASS(space_separator) - BOOST_SPIRIT_X3_CHAR_CLASS(line_separator) - BOOST_SPIRIT_X3_CHAR_CLASS(paragraph_separator) - - BOOST_SPIRIT_X3_CHAR_CLASS(control) - BOOST_SPIRIT_X3_CHAR_CLASS(format) - BOOST_SPIRIT_X3_CHAR_CLASS(private_use) - BOOST_SPIRIT_X3_CHAR_CLASS(surrogate) - BOOST_SPIRIT_X3_CHAR_CLASS(unassigned) - - BOOST_SPIRIT_X3_CHAR_CLASS(dash_punctuation) - BOOST_SPIRIT_X3_CHAR_CLASS(open_punctuation) - BOOST_SPIRIT_X3_CHAR_CLASS(close_punctuation) - BOOST_SPIRIT_X3_CHAR_CLASS(connector_punctuation) - BOOST_SPIRIT_X3_CHAR_CLASS(other_punctuation) - BOOST_SPIRIT_X3_CHAR_CLASS(initial_punctuation) - BOOST_SPIRIT_X3_CHAR_CLASS(final_punctuation) - - BOOST_SPIRIT_X3_CHAR_CLASS(math_symbol) - BOOST_SPIRIT_X3_CHAR_CLASS(currency_symbol) - BOOST_SPIRIT_X3_CHAR_CLASS(modifier_symbol) - BOOST_SPIRIT_X3_CHAR_CLASS(other_symbol) - - /////////////////////////////////////////////////////////////////////////// - // Unicode Derived Categories - /////////////////////////////////////////////////////////////////////////// - BOOST_SPIRIT_X3_CHAR_CLASS(alphabetic) - BOOST_SPIRIT_X3_CHAR_CLASS(uppercase) - BOOST_SPIRIT_X3_CHAR_CLASS(lowercase) - BOOST_SPIRIT_X3_CHAR_CLASS(white_space) - BOOST_SPIRIT_X3_CHAR_CLASS(hex_digit) - BOOST_SPIRIT_X3_CHAR_CLASS(noncharacter_code_point) - BOOST_SPIRIT_X3_CHAR_CLASS(default_ignorable_code_point) - - /////////////////////////////////////////////////////////////////////////// - // Unicode Scripts - /////////////////////////////////////////////////////////////////////////// - BOOST_SPIRIT_X3_CHAR_CLASS(adlam) - BOOST_SPIRIT_X3_CHAR_CLASS(caucasian_albanian) - BOOST_SPIRIT_X3_CHAR_CLASS(ahom) - BOOST_SPIRIT_X3_CHAR_CLASS(arabic) - BOOST_SPIRIT_X3_CHAR_CLASS(imperial_aramaic) - BOOST_SPIRIT_X3_CHAR_CLASS(armenian) - BOOST_SPIRIT_X3_CHAR_CLASS(avestan) - BOOST_SPIRIT_X3_CHAR_CLASS(balinese) - BOOST_SPIRIT_X3_CHAR_CLASS(bamum) - BOOST_SPIRIT_X3_CHAR_CLASS(bassa_vah) - BOOST_SPIRIT_X3_CHAR_CLASS(batak) - BOOST_SPIRIT_X3_CHAR_CLASS(bengali) - BOOST_SPIRIT_X3_CHAR_CLASS(bhaiksuki) - BOOST_SPIRIT_X3_CHAR_CLASS(bopomofo) - BOOST_SPIRIT_X3_CHAR_CLASS(brahmi) - BOOST_SPIRIT_X3_CHAR_CLASS(braille) - BOOST_SPIRIT_X3_CHAR_CLASS(buginese) - BOOST_SPIRIT_X3_CHAR_CLASS(buhid) - BOOST_SPIRIT_X3_CHAR_CLASS(chakma) - BOOST_SPIRIT_X3_CHAR_CLASS(canadian_aboriginal) - BOOST_SPIRIT_X3_CHAR_CLASS(carian) - BOOST_SPIRIT_X3_CHAR_CLASS(cham) - BOOST_SPIRIT_X3_CHAR_CLASS(cherokee) - BOOST_SPIRIT_X3_CHAR_CLASS(chorasmian) - BOOST_SPIRIT_X3_CHAR_CLASS(coptic) - BOOST_SPIRIT_X3_CHAR_CLASS(cypro_minoan) - BOOST_SPIRIT_X3_CHAR_CLASS(cypriot) - BOOST_SPIRIT_X3_CHAR_CLASS(cyrillic) - BOOST_SPIRIT_X3_CHAR_CLASS(devanagari) - BOOST_SPIRIT_X3_CHAR_CLASS(dives_akuru) - BOOST_SPIRIT_X3_CHAR_CLASS(dogra) - BOOST_SPIRIT_X3_CHAR_CLASS(deseret) - BOOST_SPIRIT_X3_CHAR_CLASS(duployan) - BOOST_SPIRIT_X3_CHAR_CLASS(egyptian_hieroglyphs) - BOOST_SPIRIT_X3_CHAR_CLASS(elbasan) - BOOST_SPIRIT_X3_CHAR_CLASS(elymaic) - BOOST_SPIRIT_X3_CHAR_CLASS(ethiopic) - BOOST_SPIRIT_X3_CHAR_CLASS(georgian) - BOOST_SPIRIT_X3_CHAR_CLASS(glagolitic) - BOOST_SPIRIT_X3_CHAR_CLASS(gunjala_gondi) - BOOST_SPIRIT_X3_CHAR_CLASS(masaram_gondi) - BOOST_SPIRIT_X3_CHAR_CLASS(gothic) - BOOST_SPIRIT_X3_CHAR_CLASS(grantha) - BOOST_SPIRIT_X3_CHAR_CLASS(greek) - BOOST_SPIRIT_X3_CHAR_CLASS(gujarati) - BOOST_SPIRIT_X3_CHAR_CLASS(gurmukhi) - BOOST_SPIRIT_X3_CHAR_CLASS(hangul) - BOOST_SPIRIT_X3_CHAR_CLASS(han) - BOOST_SPIRIT_X3_CHAR_CLASS(hanunoo) - BOOST_SPIRIT_X3_CHAR_CLASS(hatran) - BOOST_SPIRIT_X3_CHAR_CLASS(hebrew) - BOOST_SPIRIT_X3_CHAR_CLASS(hiragana) - BOOST_SPIRIT_X3_CHAR_CLASS(anatolian_hieroglyphs) - BOOST_SPIRIT_X3_CHAR_CLASS(pahawh_hmong) - BOOST_SPIRIT_X3_CHAR_CLASS(nyiakeng_puachue_hmong) - BOOST_SPIRIT_X3_CHAR_CLASS(katakana_or_hiragana) - BOOST_SPIRIT_X3_CHAR_CLASS(old_hungarian) - BOOST_SPIRIT_X3_CHAR_CLASS(old_italic) - BOOST_SPIRIT_X3_CHAR_CLASS(javanese) - BOOST_SPIRIT_X3_CHAR_CLASS(kayah_li) - BOOST_SPIRIT_X3_CHAR_CLASS(katakana) - BOOST_SPIRIT_X3_CHAR_CLASS(kawi) - BOOST_SPIRIT_X3_CHAR_CLASS(kharoshthi) - BOOST_SPIRIT_X3_CHAR_CLASS(khmer) - BOOST_SPIRIT_X3_CHAR_CLASS(khojki) - BOOST_SPIRIT_X3_CHAR_CLASS(khitan_small_script) - BOOST_SPIRIT_X3_CHAR_CLASS(kannada) - BOOST_SPIRIT_X3_CHAR_CLASS(kaithi) - BOOST_SPIRIT_X3_CHAR_CLASS(tai_tham) - BOOST_SPIRIT_X3_CHAR_CLASS(lao) - BOOST_SPIRIT_X3_CHAR_CLASS(latin) - BOOST_SPIRIT_X3_CHAR_CLASS(lepcha) - BOOST_SPIRIT_X3_CHAR_CLASS(limbu) - BOOST_SPIRIT_X3_CHAR_CLASS(linear_a) - BOOST_SPIRIT_X3_CHAR_CLASS(linear_b) - BOOST_SPIRIT_X3_CHAR_CLASS(lisu) - BOOST_SPIRIT_X3_CHAR_CLASS(lycian) - BOOST_SPIRIT_X3_CHAR_CLASS(lydian) - BOOST_SPIRIT_X3_CHAR_CLASS(mahajani) - BOOST_SPIRIT_X3_CHAR_CLASS(makasar) - BOOST_SPIRIT_X3_CHAR_CLASS(mandaic) - BOOST_SPIRIT_X3_CHAR_CLASS(manichaean) - BOOST_SPIRIT_X3_CHAR_CLASS(marchen) - BOOST_SPIRIT_X3_CHAR_CLASS(medefaidrin) - BOOST_SPIRIT_X3_CHAR_CLASS(mende_kikakui) - BOOST_SPIRIT_X3_CHAR_CLASS(meroitic_cursive) - BOOST_SPIRIT_X3_CHAR_CLASS(meroitic_hieroglyphs) - BOOST_SPIRIT_X3_CHAR_CLASS(malayalam) - BOOST_SPIRIT_X3_CHAR_CLASS(modi) - BOOST_SPIRIT_X3_CHAR_CLASS(mongolian) - BOOST_SPIRIT_X3_CHAR_CLASS(mro) - BOOST_SPIRIT_X3_CHAR_CLASS(meetei_mayek) - BOOST_SPIRIT_X3_CHAR_CLASS(multani) - BOOST_SPIRIT_X3_CHAR_CLASS(myanmar) - BOOST_SPIRIT_X3_CHAR_CLASS(nag_mundari) - BOOST_SPIRIT_X3_CHAR_CLASS(nandinagari) - BOOST_SPIRIT_X3_CHAR_CLASS(old_north_arabian) - BOOST_SPIRIT_X3_CHAR_CLASS(nabataean) - BOOST_SPIRIT_X3_CHAR_CLASS(newa) - BOOST_SPIRIT_X3_CHAR_CLASS(nko) - BOOST_SPIRIT_X3_CHAR_CLASS(nushu) - BOOST_SPIRIT_X3_CHAR_CLASS(ogham) - BOOST_SPIRIT_X3_CHAR_CLASS(ol_chiki) - BOOST_SPIRIT_X3_CHAR_CLASS(old_turkic) - BOOST_SPIRIT_X3_CHAR_CLASS(oriya) - BOOST_SPIRIT_X3_CHAR_CLASS(osage) - BOOST_SPIRIT_X3_CHAR_CLASS(osmanya) - BOOST_SPIRIT_X3_CHAR_CLASS(old_uyghur) - BOOST_SPIRIT_X3_CHAR_CLASS(palmyrene) - BOOST_SPIRIT_X3_CHAR_CLASS(pau_cin_hau) - BOOST_SPIRIT_X3_CHAR_CLASS(old_permic) - BOOST_SPIRIT_X3_CHAR_CLASS(phags_pa) - BOOST_SPIRIT_X3_CHAR_CLASS(inscriptional_pahlavi) - BOOST_SPIRIT_X3_CHAR_CLASS(psalter_pahlavi) - BOOST_SPIRIT_X3_CHAR_CLASS(phoenician) - BOOST_SPIRIT_X3_CHAR_CLASS(miao) - BOOST_SPIRIT_X3_CHAR_CLASS(inscriptional_parthian) - BOOST_SPIRIT_X3_CHAR_CLASS(rejang) - BOOST_SPIRIT_X3_CHAR_CLASS(hanifi_rohingya) - BOOST_SPIRIT_X3_CHAR_CLASS(runic) - BOOST_SPIRIT_X3_CHAR_CLASS(samaritan) - BOOST_SPIRIT_X3_CHAR_CLASS(old_south_arabian) - BOOST_SPIRIT_X3_CHAR_CLASS(saurashtra) - BOOST_SPIRIT_X3_CHAR_CLASS(signwriting) - BOOST_SPIRIT_X3_CHAR_CLASS(shavian) - BOOST_SPIRIT_X3_CHAR_CLASS(sharada) - BOOST_SPIRIT_X3_CHAR_CLASS(siddham) - BOOST_SPIRIT_X3_CHAR_CLASS(khudawadi) - BOOST_SPIRIT_X3_CHAR_CLASS(sinhala) - BOOST_SPIRIT_X3_CHAR_CLASS(sogdian) - BOOST_SPIRIT_X3_CHAR_CLASS(old_sogdian) - BOOST_SPIRIT_X3_CHAR_CLASS(sora_sompeng) - BOOST_SPIRIT_X3_CHAR_CLASS(soyombo) - BOOST_SPIRIT_X3_CHAR_CLASS(sundanese) - BOOST_SPIRIT_X3_CHAR_CLASS(syloti_nagri) - BOOST_SPIRIT_X3_CHAR_CLASS(syriac) - BOOST_SPIRIT_X3_CHAR_CLASS(tagbanwa) - BOOST_SPIRIT_X3_CHAR_CLASS(takri) - BOOST_SPIRIT_X3_CHAR_CLASS(tai_le) - BOOST_SPIRIT_X3_CHAR_CLASS(new_tai_lue) - BOOST_SPIRIT_X3_CHAR_CLASS(tamil) - BOOST_SPIRIT_X3_CHAR_CLASS(tangut) - BOOST_SPIRIT_X3_CHAR_CLASS(tai_viet) - BOOST_SPIRIT_X3_CHAR_CLASS(telugu) - BOOST_SPIRIT_X3_CHAR_CLASS(tifinagh) - BOOST_SPIRIT_X3_CHAR_CLASS(tagalog) - BOOST_SPIRIT_X3_CHAR_CLASS(thaana) - BOOST_SPIRIT_X3_CHAR_CLASS(thai) - BOOST_SPIRIT_X3_CHAR_CLASS(tibetan) - BOOST_SPIRIT_X3_CHAR_CLASS(tirhuta) - BOOST_SPIRIT_X3_CHAR_CLASS(tangsa) - BOOST_SPIRIT_X3_CHAR_CLASS(toto) - BOOST_SPIRIT_X3_CHAR_CLASS(ugaritic) - BOOST_SPIRIT_X3_CHAR_CLASS(vai) - BOOST_SPIRIT_X3_CHAR_CLASS(vithkuqi) - BOOST_SPIRIT_X3_CHAR_CLASS(warang_citi) - BOOST_SPIRIT_X3_CHAR_CLASS(wancho) - BOOST_SPIRIT_X3_CHAR_CLASS(old_persian) - BOOST_SPIRIT_X3_CHAR_CLASS(cuneiform) - BOOST_SPIRIT_X3_CHAR_CLASS(yezidi) - BOOST_SPIRIT_X3_CHAR_CLASS(yi) - BOOST_SPIRIT_X3_CHAR_CLASS(zanabazar_square) - BOOST_SPIRIT_X3_CHAR_CLASS(inherited) - BOOST_SPIRIT_X3_CHAR_CLASS(common) - BOOST_SPIRIT_X3_CHAR_CLASS(unknown) - } - -#undef BOOST_SPIRIT_X3_CHAR_CLASS - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/core.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/core.hpp deleted file mode 100644 index b732c408e0de..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/core.hpp +++ /dev/null @@ -1,16 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - - 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_X3_CORE_APRIL_04_2012_0318PM) -#define BOOST_SPIRIT_X3_CORE_APRIL_04_2012_0318PM - -#include -//~ #include -#include -#include -#include - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/core/action.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/core/action.hpp deleted file mode 100644 index 0de52c93b003..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/core/action.hpp +++ /dev/null @@ -1,110 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - - 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_X3_ACTION_JANUARY_07_2007_1128AM) -#define BOOST_SPIRIT_X3_ACTION_JANUARY_07_2007_1128AM - -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace x3 -{ - struct raw_attribute_type; - struct parse_pass_context_tag; - - template - inline bool& _pass(Context const& context) - { - return x3::get(context); - } - - template - struct action : unary_parser> - { - typedef unary_parser> base_type; - static bool const is_pass_through_unary = true; - static bool const has_action = true; - - constexpr action(Subject const& subject, Action f) - : base_type(subject), f(f) {} - - template - bool call_action( - Iterator& first, Iterator const& last - , Context const& context, RuleContext& rcontext, Attribute& attr) const - { - bool pass = true; - auto action_context = make_context(pass, context); - call(f, first, last, action_context, rcontext, attr); - return pass; - } - - template - bool parse_main(Iterator& first, Iterator const& last - , Context const& context, RuleContext& rcontext, Attribute& attr) const - { - Iterator save = first; - if (this->subject.parse(first, last, context, rcontext, attr)) - { - if (call_action(first, last, context, rcontext, attr)) - return true; - - // reset iterators if semantic action failed the match - // retrospectively - first = save; - } - return false; - } - - // attr==raw_attribute_type, action wants iterator_range (see raw.hpp) - template - bool parse_main(Iterator& first, Iterator const& last - , Context const& context, RuleContext& rcontext, raw_attribute_type&) const - { - boost::iterator_range rng; - // synthesize the attribute since one is not supplied - return parse_main(first, last, context, rcontext, rng); - } - - // attr==unused, action wants attribute - template - bool parse(Iterator& first, Iterator const& last - , Context const& context, RuleContext& rcontext, unused_type) const - { - typedef typename - traits::attribute_of, Context>::type - attribute_type; - - // synthesize the attribute since one is not supplied - attribute_type attribute{}; - return parse_main(first, last, context, rcontext, attribute); - } - - // main parse function - template - bool parse(Iterator& first, Iterator const& last - , Context const& context, RuleContext& rcontext, Attribute& attr) const - { - return parse_main(first, last, context, rcontext, attr); - } - - Action f; - }; - - template - constexpr action::value_type, Action> - operator/(P const& p, Action f) - { - return { as_parser(p), f }; - } -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/core/call.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/core/call.hpp deleted file mode 100644 index a344cf4bf30f..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/core/call.hpp +++ /dev/null @@ -1,76 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - - 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_X3_CALL_CONTEXT_MAY_26_2014_0234PM) -#define BOOST_SPIRIT_X3_CALL_CONTEXT_MAY_26_2014_0234PM - -#include - -#include -#include -#include - -namespace boost { namespace spirit { namespace x3 -{ - //////////////////////////////////////////////////////////////////////////// - struct rule_val_context_tag; - - template - inline decltype(auto) _val(Context const& context) - { - return x3::get(context); - } - - //////////////////////////////////////////////////////////////////////////// - struct where_context_tag; - - template - inline decltype(auto) _where(Context const& context) - { - return x3::get(context); - } - - //////////////////////////////////////////////////////////////////////////// - struct attr_context_tag; - - template - inline decltype(auto) _attr(Context const& context) - { - return x3::get(context); - } - - //////////////////////////////////////////////////////////////////////////// - namespace detail - { - template - auto call(F f, Context const& context, mpl::true_) - { - return f(context); - } - - template - auto call(F f, Context const& /* context */, mpl::false_) - { - return f(); - } - } - - template < - typename F, typename Iterator - , typename Context, typename RuleContext, typename Attribute> - auto call( - F f, Iterator& first, Iterator const& last - , Context const& context, RuleContext& rcontext, Attribute& attr) - { - boost::iterator_range rng(first, last); - auto val_context = make_context(rcontext, context); - auto where_context = make_context(rng, val_context); - auto attr_context = make_context(attr, where_context); - return detail::call(f, attr_context, is_callable()); - } -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/core/detail/parse_into_container.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/core/detail/parse_into_container.hpp deleted file mode 100644 index d5d87b37ba3a..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/core/detail/parse_into_container.hpp +++ /dev/null @@ -1,309 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - - 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_X3_PARSE_INTO_CONTAINER_JAN_15_2013_0957PM) -#define BOOST_SPIRIT_X3_PARSE_INTO_CONTAINER_JAN_15_2013_0957PM - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include // for std::make_move_iterator - -namespace boost { namespace spirit { namespace x3 { namespace detail -{ - template - struct saver_visitor; - - // save to associative fusion container where Key is simple type - template - struct save_to_assoc_attr - { - template - static void call(const Key, Value& value, Attribute& attr) - { - traits::move_to(value, fusion::at_key(attr)); - } - }; - - // save to associative fusion container where Key - // is variant over possible keys - template - struct save_to_assoc_attr > - { - typedef variant variant_t; - - template - static void call(const variant_t key, Value& value, Attribute& attr) - { - apply_visitor(saver_visitor(attr, value), key); - } - }; - - template - struct saver_visitor : boost::static_visitor - { - saver_visitor(Attribute& attr, Value& value) - : attr(attr), value(value) {}; - - Attribute& attr; - Value& value; - - template - void operator()(Key) const - { - save_to_assoc_attr::call(Key(), value,attr); - } - }; - - template - struct parser_accepts_container - : traits::is_substitute< - typename traits::attribute_of::type - , Container - > - {}; - - template - struct parse_into_container_base_impl - { - private: - - // Parser has attribute (synthesize; Attribute is a container) - template - static bool call_synthesize_x( - Parser const& parser - , Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, Attribute& attr, mpl::false_) - { - // synthesized attribute needs to be value initialized - using value_type = typename traits::container_value::type; - value_type val{}; - - if (!parser.parse(first, last, context, rcontext, val)) - return false; - - // push the parsed value into our attribute - traits::push_back(attr, static_cast(val)); - return true; - } - - // Parser has attribute (synthesize; Attribute is a container) - template - static bool call_synthesize_x( - Parser const& parser - , Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, Attribute& attr, mpl::true_) - { - return parser.parse(first, last, context, rcontext, attr); - } - - // Parser has attribute (synthesize; Attribute is a container) - template - static bool call_synthesize( - Parser const& parser - , Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, Attribute& attr) - { - typedef - parser_accepts_container - parser_accepts_container; - - return call_synthesize_x(parser, first, last, context, rcontext, attr - , parser_accepts_container()); - } - - // Parser has attribute (synthesize; Attribute is a single element fusion sequence) - template - static bool call_synthesize_into_fusion_seq(Parser const& parser - , Iterator& first, Iterator const& last, Context const& context - , RContext& rcontext, Attribute& attr, mpl::false_ /* is_associative */) - { - static_assert(traits::has_size::value, - "Expecting a single element fusion sequence"); - return call_synthesize(parser, first, last, context, rcontext, - fusion::front(attr)); - } - - // Parser has attribute (synthesize; Attribute is fusion map sequence) - template - static bool call_synthesize_into_fusion_seq( - Parser const& parser - , Iterator& first, Iterator const& last, Context const& context - , RContext& rcontext, Attribute& attr, mpl::true_ /*is_associative*/) - { - using attribute_type = typename traits::attribute_of::type; - static_assert(traits::has_size::value, - "To parse directly into fusion map parser must produce 2 element attr"); - - // use type of first element of attribute as key - using key = typename std::remove_reference< - typename fusion::result_of::front::type>::type; - - attribute_type attr_; - if (!parser.parse(first, last, context, rcontext, attr_)) - return false; - - save_to_assoc_attr::call(fusion::front(attr_), fusion::back(attr_), attr); - return true; - } - - template - static bool call_synthesize_dispatch_by_seq(Parser const& parser - , Iterator& first, Iterator const& last, Context const& context - , RContext& rcontext, Attribute& attr, mpl::true_ /*is_sequence*/) - { - return call_synthesize_into_fusion_seq( - parser, first, last, context, rcontext, attr - , fusion::traits::is_associative()); - } - - template - static bool call_synthesize_dispatch_by_seq(Parser const& parser - , Iterator& first, Iterator const& last, Context const& context - , RContext& rcontext, Attribute& attr, mpl::false_ /*is_sequence*/) - { - return call_synthesize(parser, first, last, context, rcontext, attr); - } - - // Parser has attribute (synthesize) - template - static bool call(Parser const& parser - , Iterator& first, Iterator const& last, Context const& context - , RContext& rcontext, Attribute& attr, mpl::true_) - { - return call_synthesize_dispatch_by_seq(parser, first, last, context, rcontext, attr - , fusion::traits::is_sequence()); - } - - // Parser has no attribute (pass unused) - template - static bool call( - Parser const& parser - , Iterator& first, Iterator const& last, Context const& context - , RContext& rcontext, Attribute& /* attr */, mpl::false_) - { - return parser.parse(first, last, context, rcontext, unused); - } - - - public: - - template - static bool call(Parser const& parser - , Iterator& first, Iterator const& last, Context const& context - , RContext& rcontext, Attribute& attr) - { - return call(parser, first, last, context, rcontext, attr - , mpl::bool_::value>()); - } - }; - - template - struct parse_into_container_impl : parse_into_container_base_impl {}; - - template - struct parser_attr_is_substitute_for_container_value - : traits::is_substitute< - typename traits::pseudo_attribute< - Context - , typename traits::attribute_of::type - , Iterator - >::type - , typename traits::container_value::type - > - {}; - - template - struct parse_into_container_impl>::type> - { - template - static bool call( - Parser const& parser - , Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, Attribute& attr, mpl::false_) - { - return parse_into_container_base_impl::call( - parser, first, last, context, rcontext, attr); - } - - template - static bool call( - Parser const& parser - , Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, unused_type attr, mpl::true_) - { - return parser.parse(first, last, context, rcontext, attr); - } - - template - static bool call( - Parser const& parser - , Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, Attribute& attr, mpl::true_) - { - if (traits::is_empty(attr)) - return parser.parse(first, last, context, rcontext, attr); - Attribute rest; - bool r = parser.parse(first, last, context, rcontext, rest); - if (r) - traits::append(attr, std::make_move_iterator(rest.begin()), - std::make_move_iterator(rest.end())); - return r; - } - - template - static bool call(Parser const& parser - , Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, Attribute& attr) - { - typedef parser_accepts_container< - Parser, Attribute, Context> - parser_accepts_container; - - typedef parser_attr_is_substitute_for_container_value< - Parser, Iterator, Attribute, Context> - parser_attr_is_substitute_for_container_value; - - typedef mpl::or_< - parser_accepts_container - , mpl::not_> - pass_attibute_as_is; - - return call(parser, first, last, context, rcontext, attr, - pass_attibute_as_is()); - } - }; - - template - bool parse_into_container( - Parser const& parser - , Iterator& first, Iterator const& last, Context const& context - , RContext& rcontext, Attribute& attr) - { - return parse_into_container_impl::call( - parser, first, last, context, rcontext, attr); - } - -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/core/parse.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/core/parse.hpp deleted file mode 100644 index 21162409d801..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/core/parse.hpp +++ /dev/null @@ -1,191 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - - 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_X3_PARSE_APRIL_16_2006_0442PM) -#define BOOST_SPIRIT_X3_PARSE_APRIL_16_2006_0442PM - -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace x3 -{ - /////////////////////////////////////////////////////////////////////////// - template - inline bool - parse_main( - Iterator& first - , Iterator last - , Parser const& p - , Attribute& attr) - { - // Make sure the iterator is at least a readable forward traversal iterator. - // If you got a compilation error here, then you are using a weaker iterator - // while calling this function, you need to supply a readable forward traversal - // iterator instead. - BOOST_CONCEPT_ASSERT((boost_concepts::ReadableIteratorConcept)); - BOOST_CONCEPT_ASSERT((boost_concepts::ForwardTraversalConcept)); - - // If you get an error no matching function for call to 'as_parser' - // here, then p is not a parser or there is no suitable conversion - // from p to a parser. - return as_parser(p).parse(first, last, unused, unused, attr); - } - - /////////////////////////////////////////////////////////////////////////// - template - inline bool - parse( - Iterator& first - , Iterator last - , Parser const& p - , Attribute& attr) - { - return parse_main(first, last, p, attr); - } - - /////////////////////////////////////////////////////////////////////////// - template - inline bool - parse( - Iterator const& first_ - , Iterator last - , Parser const& p - , Attribute& attr) - { - Iterator first = first_; - return parse_main(first, last, p, attr); - } - - /////////////////////////////////////////////////////////////////////////// - template - inline bool - parse( - Iterator& first - , Iterator last - , Parser const& p) - { - return parse_main(first, last, p, unused); - } - - /////////////////////////////////////////////////////////////////////////// - template - inline bool - parse( - Iterator const& first_ - , Iterator last - , Parser const& p) - { - Iterator first = first_; - return parse_main(first, last, p, unused); - } - - /////////////////////////////////////////////////////////////////////////// - enum class skip_flag - { - post_skip, // force post-skipping in phrase_parse() - dont_post_skip // inhibit post-skipping in phrase_parse() - }; - - /////////////////////////////////////////////////////////////////////////// - template - inline bool - phrase_parse_main( - Iterator& first - , Iterator last - , Parser const& p - , Skipper const& s - , Attribute& attr - , skip_flag post_skip = skip_flag::post_skip) - { - // Make sure the iterator is at least a readable forward traversal iterator. - // If you got a compilation error here, then you are using a weaker iterator - // while calling this function, you need to supply a readable forward traversal - // iterator instead. - BOOST_CONCEPT_ASSERT((boost_concepts::ReadableIteratorConcept)); - BOOST_CONCEPT_ASSERT((boost_concepts::ForwardTraversalConcept)); - - static_assert(!std::is_same::value, - "Error! Skipper cannot be unused_type."); - - // If you get an error no matching function for call to 'as_parser' - // here, for either p or s, then p or s is not a parser or there is - // no suitable conversion from p to a parser. - auto skipper_ctx = make_context(as_parser(s)); - bool r = as_parser(p).parse(first, last, skipper_ctx, unused, attr); - if (post_skip == skip_flag::post_skip) - x3::skip_over(first, last, skipper_ctx); - return r; - } - - /////////////////////////////////////////////////////////////////////////// - template - inline bool - phrase_parse( - Iterator& first - , Iterator last - , Parser const& p - , Skipper const& s - , Attribute& attr - , skip_flag post_skip = skip_flag::post_skip) - { - return phrase_parse_main(first, last, p, s, attr, post_skip); - } - - /////////////////////////////////////////////////////////////////////////// - template - inline bool - phrase_parse( - Iterator const& first_ - , Iterator last - , Parser const& p - , Skipper const& s - , Attribute& attr - , skip_flag post_skip = skip_flag::post_skip) - { - Iterator first = first_; - return phrase_parse_main(first, last, p, s, attr, post_skip); - } - - /////////////////////////////////////////////////////////////////////////// - template - inline bool - phrase_parse( - Iterator& first - , Iterator last - , Parser const& p - , Skipper const& s - , skip_flag post_skip = skip_flag::post_skip) - { - return phrase_parse_main(first, last, p, s, unused, post_skip); - } - - /////////////////////////////////////////////////////////////////////////// - template - inline bool - phrase_parse( - Iterator const& first_ - , Iterator last - , Parser const& p - , Skipper const& s - , skip_flag post_skip = skip_flag::post_skip) - { - Iterator first = first_; - return phrase_parse_main(first, last, p, s, unused, post_skip); - } - - /////////////////////////////////////////////////////////////////////////// - template - struct phrase_parse_context - { - typedef decltype( - make_context(as_parser(std::declval()))) - type; - }; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/core/parser.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/core/parser.hpp deleted file mode 100644 index c5cc09520e7f..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/core/parser.hpp +++ /dev/null @@ -1,230 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - Copyright (c) 2013 Agustin Berge - - 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_X3_PARSER_OCTOBER_16_2008_0254PM) -#define BOOST_SPIRIT_X3_PARSER_OCTOBER_16_2008_0254PM - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if !defined(BOOST_SPIRIT_X3_NO_RTTI) -#include -#endif - -namespace boost { namespace spirit { namespace x3 -{ - template - struct action; - - template - struct guard; - - struct parser_base {}; - struct parser_id; - - template - struct parser : parser_base - { - typedef Derived derived_type; - static bool const handles_container = false; - static bool const is_pass_through_unary = false; - static bool const has_action = false; - - constexpr Derived const& derived() const - { - return *static_cast(this); - } - - template - constexpr action operator[](Action f) const - { - return { this->derived(), f }; - } - - template - constexpr guard on_error(Handler f) const - { - return { this->derived(), f }; - } - }; - - struct unary_category; - struct binary_category; - - template - struct unary_parser : parser - { - typedef unary_category category; - typedef Subject subject_type; - static bool const has_action = Subject::has_action; - - constexpr unary_parser(Subject const& subject) - : subject(subject) {} - - unary_parser const& get_unary() const { return *this; } - - Subject subject; - }; - - template - struct binary_parser : parser - { - typedef binary_category category; - typedef Left left_type; - typedef Right right_type; - static bool const has_action = - left_type::has_action || right_type::has_action; - - constexpr binary_parser(Left const& left, Right const& right) - : left(left), right(right) {} - - binary_parser const& get_binary() const { return *this; } - - Left left; - Right right; - }; - - /////////////////////////////////////////////////////////////////////////// - // as_parser: convert a type, T, into a parser. - /////////////////////////////////////////////////////////////////////////// - namespace extension - { - namespace detail - { - namespace as_parser_guard - { - void as_spirit_parser(...); - - template()))> - struct deduce_as_parser - { - typedef R type; - typedef typename - boost::remove_cv< - typename boost::remove_reference::type - >::type - value_type; - - static type call(T const& v) - { - return as_spirit_parser(v); - } - }; - template - struct deduce_as_parser - {}; - } - using as_parser_guard::deduce_as_parser; - } - - template - struct as_parser : detail::deduce_as_parser {}; - - template <> - struct as_parser - { - typedef unused_type type; - typedef unused_type value_type; - static constexpr type call(unused_type) - { - return unused; - } - }; - - template - struct as_parser>::type> - { - typedef Derived const& type; - typedef Derived value_type; - static constexpr type call(Derived const& p) - { - return p; - } - }; - - template - struct as_parser> - { - typedef Derived const& type; - typedef Derived value_type; - static constexpr type call(parser const& p) - { - return p.derived(); - } - }; - } - - template - constexpr typename extension::as_parser::type - as_parser(T const& x) - { - return extension::as_parser::call(x); - } - - template - constexpr Derived const& - as_parser(parser const& p) - { - return p.derived(); - } - - /////////////////////////////////////////////////////////////////////////// - // The main what function - // - // Note: unlike Spirit2, spirit parsers are no longer required to have a - // "what" member function. In X3, we specialize the get_info struct - // below where needed. If a specialization is not provided, the default - // below will be used. The default "what" result will be the typeid - // name of the parser if BOOST_SPIRIT_X3_NO_RTTI is not defined, otherwise - // "undefined" - /////////////////////////////////////////////////////////////////////////// - template - struct get_info - { - typedef std::string result_type; - std::string operator()(Parser const&) const - { -#if !defined(BOOST_SPIRIT_X3_NO_RTTI) - return typeid(Parser).name(); -#else - return "undefined"; -#endif - } - }; - - template - std::string what(Parser const& p) - { - return get_info()(p); - } -}}} - -namespace boost { namespace spirit { namespace x3 { namespace traits -{ - template - struct has_attribute, Context> - : has_attribute {}; - - template - struct has_attribute, Context> - : mpl::bool_::value || - has_attribute::value> {}; -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/core/proxy.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/core/proxy.hpp deleted file mode 100644 index c9cc114876c0..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/core/proxy.hpp +++ /dev/null @@ -1,48 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - - 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_X3_PROXY_FEBRUARY_1_2013_0211PM) -#define BOOST_SPIRIT_X3_PROXY_FEBRUARY_1_2013_0211PM - -#include -#include -#include - -namespace boost { namespace spirit { namespace x3 -{ - template - struct proxy : unary_parser - { - static bool const is_pass_through_unary = true; - - constexpr proxy(Subject const& subject) - : unary_parser(subject) {} - - // Overload this when appropriate. The proxy parser will pick up - // the most derived overload. - template - bool parse_subject(Iterator& first, Iterator const& last - , Context const& context, RuleContext& rcontext, Attribute& attr, Category) const - { - this->subject.parse(first, last, context, rcontext, attr); - return true; - } - - // Main entry point. - template - bool parse(Iterator& first, Iterator const& last - , Context const& context, RuleContext& rcontext, Attribute& attr) const - { - return this->derived().parse_subject(first, last, context, rcontext, attr - , typename traits::attribute_category::type()); - } - }; - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/core/skip_over.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/core/skip_over.hpp deleted file mode 100644 index 66e4c4a94f1f..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/core/skip_over.hpp +++ /dev/null @@ -1,100 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - - 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_X3_SKIP_APRIL_16_2006_0625PM) -#define BOOST_SPIRIT_X3_SKIP_APRIL_16_2006_0625PM - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace x3 -{ - /////////////////////////////////////////////////////////////////////////// - // Move the /first/ iterator to the first non-matching position - // given a skip-parser. The function is a no-op if unused_type or - // unused_skipper is passed as the skip-parser. - /////////////////////////////////////////////////////////////////////////// - template - struct unused_skipper : unused_type - { - unused_skipper(Skipper const& skipper) - : skipper(skipper) {} - Skipper const& skipper; - }; - - namespace detail - { - template - struct is_unused_skipper - : mpl::false_ {}; - - template - struct is_unused_skipper> - : mpl::true_ {}; - - template <> - struct is_unused_skipper - : mpl::true_ {}; - - template - inline Skipper const& - get_unused_skipper(Skipper const& skipper) - { - return skipper; - } - template - inline Skipper const& - get_unused_skipper(unused_skipper const& unused_skipper) - { - return unused_skipper.skipper; - } - - template - inline void skip_over( - Iterator& first, Iterator const& last, Skipper const& skipper) - { - while (skipper.parse(first, last, unused, unused, unused)) - /***/; - } - - template - inline void skip_over(Iterator&, Iterator const&, unused_type) - { - } - - template - inline void skip_over( - Iterator&, Iterator const&, unused_skipper const&) - { - } - } - - // this tag is used to find the skipper from the context - struct skipper_tag; - - template - struct has_skipper - : mpl::not_(boost::declval())) - >::type>::type - >> {}; - - template - inline void skip_over( - Iterator& first, Iterator const& last, Context const& context) - { - detail::skip_over(first, last, x3::get(context)); - } -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/directive.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/directive.hpp deleted file mode 100644 index 0ff683f93040..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/directive.hpp +++ /dev/null @@ -1,26 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2015 Joel de Guzman - - 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_X3_DIRECTIVE_FEBRUARY_05_2007_0313PM) -#define BOOST_SPIRIT_X3_DIRECTIVE_FEBRUARY_05_2007_0313PM - -//~ #include -#include -//~ #include -//~ #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/directive/confix.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/directive/confix.hpp deleted file mode 100644 index 8734fe11c855..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/directive/confix.hpp +++ /dev/null @@ -1,83 +0,0 @@ -/*============================================================================= - Copyright (c) 2009 Chris Hoeppler - Copyright (c) 2014 Lee Clagett - - 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_X3_CONFIX_MAY_30_2014_1819PM) -#define BOOST_SPIRIT_X3_CONFIX_MAY_30_2014_1819PM - -#include - -namespace boost { namespace spirit { namespace x3 -{ - template - struct confix_directive : - unary_parser> - { - typedef unary_parser< - Subject, confix_directive> base_type; - static bool const is_pass_through_unary = true; - static bool const handles_container = Subject::handles_container; - - constexpr confix_directive(Prefix const& prefix - , Subject const& subject - , Postfix const& postfix) : - base_type(subject), - prefix(prefix), - postfix(postfix) - { - } - - template - bool parse( - Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, Attribute& attr) const - { - Iterator save = first; - - if (!(prefix.parse(first, last, context, rcontext, unused) && - this->subject.parse(first, last, context, rcontext, attr) && - postfix.parse(first, last, context, rcontext, unused))) - { - first = save; - return false; - } - - return true; - } - - Prefix prefix; - Postfix postfix; - }; - - template - struct confix_gen - { - template - constexpr confix_directive< - Prefix, typename extension::as_parser::value_type, Postfix> - operator[](Subject const& subject) const - { - return { prefix, as_parser(subject), postfix }; - } - - Prefix prefix; - Postfix postfix; - }; - - - template - constexpr confix_gen::value_type, - typename extension::as_parser::value_type> - confix(Prefix const& prefix, Postfix const& postfix) - { - return { as_parser(prefix), as_parser(postfix) }; - } - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/directive/expect.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/directive/expect.hpp deleted file mode 100644 index c39f887e30bb..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/directive/expect.hpp +++ /dev/null @@ -1,105 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - - 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_X3_EXPECT_MARCH_16_2012_1024PM) -#define BOOST_SPIRIT_X3_EXPECT_MARCH_16_2012_1024PM - -#include -#include -#include - -#include // for BOOST_SYMBOL_VISIBLE -#include -#include - -namespace boost { namespace spirit { namespace x3 -{ - template - struct BOOST_SYMBOL_VISIBLE expectation_failure : std::runtime_error - { - public: - - expectation_failure(Iterator where, std::string const& which) - : std::runtime_error("boost::spirit::x3::expectation_failure") - , where_(where), which_(which) - {} - ~expectation_failure() {} - - std::string which() const { return which_; } - Iterator const& where() const { return where_; } - - private: - - Iterator where_; - std::string which_; - }; - - template - struct expect_directive : unary_parser> - { - typedef unary_parser > base_type; - static bool const is_pass_through_unary = true; - - constexpr expect_directive(Subject const& subject) - : base_type(subject) {} - - template - bool parse(Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, Attribute& attr) const - { - bool r = this->subject.parse(first, last, context, rcontext, attr); - - if (!r) - { - boost::throw_exception( - expectation_failure( - first, what(this->subject))); - } - return r; - } - }; - - struct expect_gen - { - template - constexpr expect_directive::value_type> - operator[](Subject const& subject) const - { - return { as_parser(subject) }; - } - }; - - constexpr auto expect = expect_gen{}; -}}} - -namespace boost { namespace spirit { namespace x3 { namespace detail -{ - // Special case handling for expect expressions. - template - struct parse_into_container_impl, Context, RContext> - { - template - static bool call( - expect_directive const& parser - , Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, Attribute& attr) - { - bool r = parse_into_container( - parser.subject, first, last, context, rcontext, attr); - - if (!r) - { - boost::throw_exception( - expectation_failure( - first, what(parser.subject))); - } - return r; - } - }; -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/directive/lexeme.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/directive/lexeme.hpp deleted file mode 100644 index 942957b2c691..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/directive/lexeme.hpp +++ /dev/null @@ -1,78 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - - 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_X3_LEXEME_MARCH_24_2007_0802AM) -#define BOOST_SPIRIT_X3_LEXEME_MARCH_24_2007_0802AM - -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace x3 -{ - template - struct lexeme_directive : unary_parser> - { - typedef unary_parser > base_type; - static bool const is_pass_through_unary = true; - static bool const handles_container = Subject::handles_container; - - constexpr lexeme_directive(Subject const& subject) - : base_type(subject) {} - - template - typename enable_if, bool>::type - parse(Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, Attribute& attr) const - { - x3::skip_over(first, last, context); - auto const& skipper = x3::get(context); - - typedef unused_skipper< - typename remove_reference::type> - unused_skipper_type; - unused_skipper_type unused_skipper(skipper); - - return this->subject.parse( - first, last - , make_context(unused_skipper, context) - , rcontext - , attr); - } - - template - typename disable_if, bool>::type - parse(Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, Attribute& attr) const - { - // no need to pre-skip if skipper is unused - return this->subject.parse( - first, last - , context - , rcontext - , attr); - } - }; - - struct lexeme_gen - { - template - constexpr lexeme_directive::value_type> - operator[](Subject const& subject) const - { - return { as_parser(subject) }; - } - }; - - constexpr auto lexeme = lexeme_gen{}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/directive/matches.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/directive/matches.hpp deleted file mode 100644 index 46428465ace2..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/directive/matches.hpp +++ /dev/null @@ -1,51 +0,0 @@ -/*============================================================================= - Copyright (c) 2015 Mario Lang - 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_HOME_X3_EXTENSIONS_MATCHES_HPP) -#define BOOST_SPIRIT_HOME_X3_EXTENSIONS_MATCHES_HPP - -#include -#include -#include - -namespace boost { namespace spirit { namespace x3 -{ - template - struct matches_directive : unary_parser> - { - using base_type = unary_parser>; - static bool const has_attribute = true; - using attribute_type = bool; - - constexpr matches_directive(Subject const& subject) : base_type(subject) {} - - template - bool parse(Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, Attribute& attr) const - { - bool const result = this->subject.parse( - first, last, context, rcontext, unused); - traits::move_to(result, attr); - return true; - } - }; - - struct matches_gen - { - template - constexpr matches_directive::value_type> - operator[](Subject const& subject) const - { - return { as_parser(subject) }; - } - }; - - constexpr auto matches = matches_gen{}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/directive/no_case.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/directive/no_case.hpp deleted file mode 100644 index 89c53e2fa524..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/directive/no_case.hpp +++ /dev/null @@ -1,54 +0,0 @@ -/*============================================================================= - Copyright (c) 2014 Thomas Bernard - - 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_X3_NO_CASE_SEPT_16_2014_0912PM) -#define BOOST_SPIRIT_X3_NO_CASE_SEPT_16_2014_0912PM - -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace x3 -{ - // propagate no_case information through the context - template - struct no_case_directive : unary_parser> - { - typedef unary_parser > base_type; - static bool const is_pass_through_unary = true; - static bool const handles_container = Subject::handles_container; - - constexpr no_case_directive(Subject const& subject) - : base_type(subject) {} - - template - bool parse(Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, Attribute& attr) const - { - return this->subject.parse( - first, last - , make_context(no_case_compare_, context) - , rcontext - , attr); - } - }; - - struct no_case_gen - { - template - constexpr no_case_directive::value_type> - operator[](Subject const& subject) const - { - return { as_parser(subject) }; - } - }; - - constexpr auto no_case = no_case_gen{}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/directive/no_skip.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/directive/no_skip.hpp deleted file mode 100644 index dee4628000f3..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/directive/no_skip.hpp +++ /dev/null @@ -1,78 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - Copyright (c) 2001-2011 Hartmut Kaiser - Copyright (c) 2013 Agustin Berge - - 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_X3_NO_SKIP_JAN_16_2010_0802PM) -#define BOOST_SPIRIT_X3_NO_SKIP_JAN_16_2010_0802PM - -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace x3 -{ - // same as lexeme[], but does not pre-skip - template - struct no_skip_directive : unary_parser> - { - typedef unary_parser > base_type; - static bool const is_pass_through_unary = true; - static bool const handles_container = Subject::handles_container; - - constexpr no_skip_directive(Subject const& subject) - : base_type(subject) {} - - template - typename enable_if, bool>::type - parse(Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, Attribute& attr) const - { - auto const& skipper = x3::get(context); - - typedef unused_skipper< - typename remove_reference::type> - unused_skipper_type; - unused_skipper_type unused_skipper(skipper); - - return this->subject.parse( - first, last - , make_context(unused_skipper, context) - , rcontext - , attr); - } - template - typename disable_if, bool>::type - parse(Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, Attribute& attr) const - { - return this->subject.parse( - first, last - , context - , rcontext - , attr); - } - }; - - struct no_skip_gen - { - template - constexpr no_skip_directive::value_type> - operator[](Subject const& subject) const - { - return { as_parser(subject) }; - } - }; - - constexpr auto no_skip = no_skip_gen{}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/directive/omit.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/directive/omit.hpp deleted file mode 100644 index 36e1fefb27fb..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/directive/omit.hpp +++ /dev/null @@ -1,51 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - - 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_X3_OMIT_MARCH_24_2007_0802AM) -#define BOOST_SPIRIT_X3_OMIT_MARCH_24_2007_0802AM - -#include -#include - -namespace boost { namespace spirit { namespace x3 -{ - /////////////////////////////////////////////////////////////////////////// - // omit_directive forces the attribute of subject parser - // to be unused_type - /////////////////////////////////////////////////////////////////////////// - template - struct omit_directive : unary_parser> - { - typedef unary_parser > base_type; - typedef unused_type attribute_type; - static bool const has_attribute = false; - - typedef Subject subject_type; - constexpr omit_directive(Subject const& subject) - : base_type(subject) {} - - template - bool parse(Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, unused_type) const - { - return this->subject.parse(first, last, context, rcontext, unused); - } - }; - - struct omit_gen - { - template - constexpr omit_directive::value_type> - operator[](Subject const& subject) const - { - return { as_parser(subject) }; - } - }; - - constexpr auto omit = omit_gen{}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/directive/raw.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/directive/raw.hpp deleted file mode 100644 index 2914eb921ee8..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/directive/raw.hpp +++ /dev/null @@ -1,86 +0,0 @@ -/*============================================================================= - Copyright (c) 2014 Joel de Guzman - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_X3_DIRECTIVE_RAW_HPP -#define BOOST_SPIRIT_X3_DIRECTIVE_RAW_HPP - -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace x3 -{ - // this is a pseudo attribute type indicating that the parser wants the - // iterator range pointing to the [first, last) matching characters from - // the input iterators. - struct raw_attribute_type {}; - - template - struct raw_directive : unary_parser> - { - typedef unary_parser > base_type; - typedef raw_attribute_type attribute_type; - static bool const handles_container = true; - typedef Subject subject_type; - - constexpr raw_directive(Subject const& subject) - : base_type(subject) {} - - template - bool parse(Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, Attribute& attr) const - { - x3::skip_over(first, last, context); - Iterator i = first; - if (this->subject.parse(i, last, context, rcontext, unused)) - { - traits::move_to(first, i, attr); - first = i; - return true; - } - return false; - } - - template - bool parse(Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, unused_type) const - { - return this->subject.parse(first, last, context, rcontext, unused); - } - }; - - struct raw_gen - { - template - constexpr raw_directive::value_type> - operator[](Subject const& subject) const - { - return { as_parser(subject) }; - } - }; - - constexpr auto raw = raw_gen{}; - - namespace traits - { - template - struct pseudo_attribute - { - using attribute_type = raw_attribute_type; - using type = boost::iterator_range; - - static type call(Iterator& first, Iterator const& last, attribute_type) - { - return { first, last }; - } - }; - } -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/directive/repeat.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/directive/repeat.hpp deleted file mode 100644 index 6deb2db30353..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/directive/repeat.hpp +++ /dev/null @@ -1,154 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2011 Joel de Guzman - Copyright (c) 2001-2011 Hartmut Kaiser - Copyright (c) 2014 Thomas Bernard - - 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) -==============================================================================*/ -#ifndef BOOST_SPIRIT_X3_DIRECTIVE_REPEAT_HPP -#define BOOST_SPIRIT_X3_DIRECTIVE_REPEAT_HPP - -#include -#include - -namespace boost { namespace spirit { namespace x3 { namespace detail -{ - template - struct exact_count // handles repeat(exact)[p] - { - typedef T type; - bool got_max(T i) const { return i >= exact_value; } - bool got_min(T i) const { return i >= exact_value; } - - T const exact_value; - }; - - template - struct finite_count // handles repeat(min, max)[p] - { - typedef T type; - bool got_max(T i) const { return i >= max_value; } - bool got_min(T i) const { return i >= min_value; } - - T const min_value; - T const max_value; - }; - - template - struct infinite_count // handles repeat(min, inf)[p] - { - typedef T type; - bool got_max(T /*i*/) const { return false; } - bool got_min(T i) const { return i >= min_value; } - - T const min_value; - }; -}}}} - -namespace boost { namespace spirit { namespace x3 -{ - template - struct repeat_directive : unary_parser> - { - typedef unary_parser> base_type; - static bool const is_pass_through_unary = true; - static bool const handles_container = true; - - constexpr repeat_directive(Subject const& subject, RepeatCountLimit const& repeat_limit_) - : base_type(subject) - , repeat_limit(repeat_limit_) - {} - - template - bool parse( - Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, Attribute& attr) const - { - Iterator local_iterator = first; - typename RepeatCountLimit::type i{}; - for (/**/; !repeat_limit.got_min(i); ++i) - { - if (!detail::parse_into_container( - this->subject, local_iterator, last, context, rcontext, attr)) - return false; - } - - first = local_iterator; - // parse some more up to the maximum specified - for (/**/; !repeat_limit.got_max(i); ++i) - { - if (!detail::parse_into_container( - this->subject, first, last, context, rcontext, attr)) - break; - } - return true; - } - - RepeatCountLimit repeat_limit; - }; - - // Infinite loop tag type - struct inf_type {}; - constexpr inf_type inf = inf_type(); - - struct repeat_gen - { - template - constexpr auto operator[](Subject const& subject) const - { - return *as_parser(subject); - } - - template - struct repeat_gen_lvl1 - { - constexpr repeat_gen_lvl1(T&& repeat_limit_) - : repeat_limit(repeat_limit_) - {} - - template - constexpr repeat_directive< typename extension::as_parser::value_type, T> - operator[](Subject const& subject) const - { - return { as_parser(subject),repeat_limit }; - } - - T repeat_limit; - }; - - template - constexpr repeat_gen_lvl1> - operator()(T const exact) const - { - return { detail::exact_count{exact} }; - } - - template - constexpr repeat_gen_lvl1> - operator()(T const min_val, T const max_val) const - { - return { detail::finite_count{min_val,max_val} }; - } - - template - constexpr repeat_gen_lvl1> - operator()(T const min_val, inf_type const &) const - { - return { detail::infinite_count{min_val} }; - } - }; - - constexpr auto repeat = repeat_gen{}; -}}} - -namespace boost { namespace spirit { namespace x3 { namespace traits -{ - template - struct attribute_of, Context> - : build_container::type> {}; -}}}} - - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/directive/seek.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/directive/seek.hpp deleted file mode 100644 index d78def1c2b5d..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/directive/seek.hpp +++ /dev/null @@ -1,59 +0,0 @@ -/*============================================================================= - Copyright (c) 2011 Jamboree - Copyright (c) 2014 Lee Clagett - - 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_X3_SEEK_APRIL_13_2014_1920PM) -#define BOOST_SPIRIT_X3_SEEK_APRIL_13_2014_1920PM - -#include - -namespace boost { namespace spirit { namespace x3 -{ - template - struct seek_directive : unary_parser> - { - typedef unary_parser> base_type; - static bool const is_pass_through_unary = true; - static bool const handles_container = Subject::handles_container; - - constexpr seek_directive(Subject const& subject) : - base_type(subject) {} - - template - bool parse( - Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, Attribute& attr) const - { - for (Iterator current(first);; ++current) - { - if (this->subject.parse(current, last, context, rcontext, attr)) - { - first = current; - return true; - } - - // fail only after subject fails & no input - if (current == last) - return false; - } - } - }; - - struct seek_gen - { - template - constexpr seek_directive::value_type> - operator[](Subject const& subject) const - { - return { as_parser(subject) }; - } - }; - - constexpr auto seek = seek_gen{}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/directive/skip.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/directive/skip.hpp deleted file mode 100644 index 21a7b27f41f7..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/directive/skip.hpp +++ /dev/null @@ -1,120 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - Copyright (c) 2013 Agustin Berge - - 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_X3_SKIP_JANUARY_26_2008_0422PM) -#define BOOST_SPIRIT_X3_SKIP_JANUARY_26_2008_0422PM - -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace x3 -{ - template - struct reskip_directive : unary_parser> - { - typedef unary_parser> base_type; - static bool const is_pass_through_unary = true; - static bool const handles_container = Subject::handles_container; - - constexpr reskip_directive(Subject const& subject) - : base_type(subject) {} - - template - typename disable_if, bool>::type - parse(Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, Attribute& attr) const - { - auto const& skipper = - detail::get_unused_skipper(x3::get(context)); - - return this->subject.parse( - first, last - , make_context(skipper, context) - , rcontext - , attr); - } - template - typename enable_if, bool>::type - parse(Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, Attribute& attr) const - { - return this->subject.parse( - first, last - , context - , rcontext - , attr); - } - }; - - template - struct skip_directive : unary_parser> - { - typedef unary_parser> base_type; - static bool const is_pass_through_unary = true; - static bool const handles_container = Subject::handles_container; - - constexpr skip_directive(Subject const& subject, Skipper const& skipper) - : base_type(subject) - , skipper(skipper) - {} - - template - bool parse(Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, Attribute& attr) const - { - return this->subject.parse( - first, last - , make_context(skipper, context) - , rcontext - , attr); - } - - Skipper const skipper; - }; - - struct reskip_gen - { - template - struct skip_gen - { - constexpr skip_gen(Skipper const& skipper) - : skipper_(skipper) {} - - template - constexpr skip_directive::value_type, Skipper> - operator[](Subject const& subject) const - { - return { as_parser(subject), skipper_ }; - } - - Skipper skipper_; - }; - - template - constexpr skip_gen const operator()(Skipper const& skipper) const - { - return { skipper }; - } - - template - constexpr reskip_directive::value_type> - operator[](Subject const& subject) const - { - return { as_parser(subject) }; - } - }; - - constexpr auto skip = reskip_gen{}; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/directive/with.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/directive/with.hpp deleted file mode 100644 index 8cd9eb6fe447..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/directive/with.hpp +++ /dev/null @@ -1,86 +0,0 @@ -/*============================================================================= - Copyright (c) 2014 Joel de Guzman - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_X3_DIRECTIVE_WITH_HPP -#define BOOST_SPIRIT_X3_DIRECTIVE_WITH_HPP - -#include -#include - -namespace boost { namespace spirit { namespace x3 -{ - /////////////////////////////////////////////////////////////////////////// - // with directive injects a value into the context prior to parsing. - /////////////////////////////////////////////////////////////////////////// - template - struct with_value_holder - : unary_parser - { - typedef unary_parser base_type; - mutable T val; - constexpr with_value_holder(Subject const& subject, T&& val) - : base_type(subject) - , val(std::forward(val)) {} - }; - - template - struct with_value_holder - : unary_parser - { - typedef unary_parser base_type; - T& val; - constexpr with_value_holder(Subject const& subject, T& val) - : base_type(subject) - , val(val) {} - }; - - template - struct with_directive - : with_value_holder, T> - { - typedef with_value_holder, T> base_type; - static bool const is_pass_through_unary = true; - static bool const handles_container = Subject::handles_container; - - typedef Subject subject_type; - - constexpr with_directive(Subject const& subject, T&& val) - : base_type(subject, std::forward(val)) {} - - template - bool parse(Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, Attribute& attr) const - { - return this->subject.parse( - first, last - , make_context(this->val, context) - , rcontext - , attr); - } - }; - - template - struct with_gen - { - T&& val; - - template - constexpr with_directive::value_type, ID, T> - operator[](Subject const& subject) const - { - return { as_parser(subject), std::forward(val) }; - } - }; - - template - constexpr with_gen with(T&& val) - { - return { std::forward(val) }; - } -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/nonterminal.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/nonterminal.hpp deleted file mode 100644 index b26fda8680e1..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/nonterminal.hpp +++ /dev/null @@ -1,15 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - - 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_X3_NONTERMINAL_FEBRUARY_12_2007_1018AM) -#define BOOST_SPIRIT_X3_NONTERMINAL_FEBRUARY_12_2007_1018AM - -#include -//~ #include -//~ #include -//~ #include - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/nonterminal/debug_handler_state.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/nonterminal/debug_handler_state.hpp deleted file mode 100644 index 9ece9b7a7418..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/nonterminal/debug_handler_state.hpp +++ /dev/null @@ -1,20 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - - 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_X3_DEBUG_HANDLER_STATE_APR_21_2010_0733PM) -#define BOOST_SPIRIT_X3_DEBUG_HANDLER_STATE_APR_21_2010_0733PM - -namespace boost { namespace spirit { namespace x3 -{ - enum debug_handler_state - { - pre_parse - , successful_parse - , failed_parse - }; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/nonterminal/detail/rule.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/nonterminal/detail/rule.hpp deleted file mode 100644 index 78e54746d77e..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/nonterminal/detail/rule.hpp +++ /dev/null @@ -1,347 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - - 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_X3_DETAIL_RULE_JAN_08_2012_0326PM) -#define BOOST_SPIRIT_X3_DETAIL_RULE_JAN_08_2012_0326PM - -#include -#include -#include -#include -#include -#include -#include - -#if defined(BOOST_SPIRIT_X3_DEBUG) -#include -#endif - -#include - -namespace boost { namespace spirit { namespace x3 -{ - template - struct identity; - - template - struct rule; - - struct parse_pass_context_tag; - - namespace detail - { - template - struct rule_id {}; - - // we use this so we can detect if the default parse_rule - // is the being called. - struct default_parse_rule_result - { - default_parse_rule_result(bool r) - : r(r) {} - operator bool() const { return r; } - bool r; - }; - } - - // default parse_rule implementation - template - inline detail::default_parse_rule_result - parse_rule( - detail::rule_id - , Iterator& first, Iterator const& last - , Context const& context, ActualAttribute& attr); -}}} - -namespace boost { namespace spirit { namespace x3 { namespace detail -{ -#if defined(BOOST_SPIRIT_X3_DEBUG) - template - struct context_debug - { - context_debug( - char const* rule_name - , Iterator const& first, Iterator const& last - , Attribute const& attr - , bool const& ok_parse //was parse successful? - ) - : ok_parse(ok_parse), rule_name(rule_name) - , first(first), last(last) - , attr(attr) - , f(detail::get_simple_trace()) - { - f(first, last, attr, pre_parse, rule_name); - } - - ~context_debug() - { - auto status = ok_parse ? successful_parse : failed_parse ; - f(first, last, attr, status, rule_name); - } - - bool const& ok_parse; - char const* rule_name; - Iterator const& first; - Iterator const& last; - Attribute const& attr; - detail::simple_trace_type& f; - }; -#endif - - template - struct has_on_error : mpl::false_ {}; - - template - struct has_on_error().on_error( - std::declval() - , std::declval() - , std::declval>() - , std::declval() - ) - )) - > - : mpl::true_ - {}; - - template - struct has_on_success : mpl::false_ {}; - - template - struct has_on_success().on_success( - std::declval() - , std::declval() - , std::declval() - , std::declval() - ) - )) - > - : mpl::true_ - {}; - - template - struct make_id - { - typedef identity type; - }; - - template - struct make_id> - { - typedef identity type; - }; - - template - Context const& - make_rule_context(RHS const& /* rhs */, Context const& context - , mpl::false_ /* is_default_parse_rule */) - { - return context; - } - - template - auto make_rule_context(RHS const& rhs, Context const& context - , mpl::true_ /* is_default_parse_rule */ ) - { - return make_unique_context(rhs, context); - } - - template - struct rule_parser - { - template - static bool call_on_success( - Iterator& /* before */, Iterator& /* after */ - , Context const& /* context */, ActualAttribute& /* attr */ - , mpl::false_ /* No on_success handler */ ) - { - return true; - } - - template - static bool call_on_success( - Iterator& before, Iterator& after - , Context const& context, ActualAttribute& attr - , mpl::true_ /* Has on_success handler */) - { - x3::skip_over(before, after, context); - bool pass = true; - ID().on_success( - before - , after - , attr - , make_context(pass, context) - ); - return pass; - } - - template - static bool parse_rhs_main( - RHS const& rhs - , Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, ActualAttribute& attr - , mpl::false_) - { - // see if the user has a BOOST_SPIRIT_DEFINE for this rule - typedef - decltype(parse_rule( - detail::rule_id{}, first, last - , make_unique_context(rhs, context), std::declval())) - parse_rule_result; - - // If there is no BOOST_SPIRIT_DEFINE for this rule, - // we'll make a context for this rule tagged by its ID - // so we can extract the rule later on in the default - // (generic) parse_rule function. - typedef - is_same - is_default_parse_rule; - - Iterator start = first; - bool r = rhs.parse( - first - , last - , make_rule_context(rhs, context, std::conditional_t()) - , rcontext - , attr - ); - - if (r) - { - r = call_on_success(start, first, context, attr - , has_on_success()); - } - - return r; - } - - template - static bool parse_rhs_main( - RHS const& rhs - , Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, ActualAttribute& attr - , mpl::true_ /* on_error is found */) - { - for (;;) - { - try - { - return parse_rhs_main( - rhs, first, last, context, rcontext, attr, mpl::false_()); - } - catch (expectation_failure const& x) - { - switch (ID().on_error(first, last, x, context)) - { - case error_handler_result::fail: - return false; - case error_handler_result::retry: - continue; - case error_handler_result::accept: - return true; - case error_handler_result::rethrow: - throw; - } - } - } - } - - template - static bool parse_rhs_main( - RHS const& rhs - , Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, ActualAttribute& attr) - { - return parse_rhs_main( - rhs, first, last, context, rcontext, attr - , has_on_error() - ); - } - - template - static bool parse_rhs( - RHS const& rhs - , Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, ActualAttribute& attr - , mpl::false_) - { - return parse_rhs_main(rhs, first, last, context, rcontext, attr); - } - - template - static bool parse_rhs( - RHS const& rhs - , Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, ActualAttribute& /* attr */ - , mpl::true_) - { - return parse_rhs_main(rhs, first, last, context, rcontext, unused); - } - - template - static bool call_rule_definition( - RHS const& rhs - , char const* rule_name - , Iterator& first, Iterator const& last - , Context const& context, ActualAttribute& attr - , ExplicitAttrPropagation) - { - boost::ignore_unused(rule_name); - - // do down-stream transformation, provides attribute for - // rhs parser - typedef traits::transform_attribute< - ActualAttribute, Attribute, parser_id> - transform; - - typedef typename transform::type transform_attr; - transform_attr attr_ = transform::pre(attr); - - bool ok_parse - //Creates a place to hold the result of parse_rhs - //called inside the following scope. - ; - { - // Create a scope to cause the dbg variable below (within - // the #if...#endif) to call it's DTOR before any - // modifications are made to the attribute, attr_ passed - // to parse_rhs (such as might be done in - // transform::post when, for example, - // ActualAttribute is a recursive variant). -#if defined(BOOST_SPIRIT_X3_DEBUG) - context_debug - dbg(rule_name, first, last, attr_, ok_parse); -#endif - ok_parse = parse_rhs(rhs, first, last, context, attr_, attr_ - , mpl::bool_ - < ( RHS::has_action - && !ExplicitAttrPropagation::value - ) - >() - ); - } - if (ok_parse) - { - // do up-stream transformation, this integrates the results - // back into the original attribute value, if appropriate - transform::post(attr, std::forward(attr_)); - } - return ok_parse; - } - }; -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/nonterminal/detail/transform_attribute.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/nonterminal/detail/transform_attribute.hpp deleted file mode 100644 index 304928518946..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/nonterminal/detail/transform_attribute.hpp +++ /dev/null @@ -1,92 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_X3_NONTERMINAL_DETAIL_TRANSFORM_ATTRIBUTE_HPP -#define BOOST_SPIRIT_X3_NONTERMINAL_DETAIL_TRANSFORM_ATTRIBUTE_HPP - -#include -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace x3 -{ - struct parser_id; - - template - struct default_transform_attribute - { - typedef Transformed type; - - static Transformed pre(Exposed&) { return Transformed(); } - - static void post(Exposed& val, Transformed&& attribute) - { - traits::move_to(std::forward(attribute), val); - } - }; - - // handle case where no transformation is required as the types are the same - template - struct default_transform_attribute - { - typedef Attribute& type; - static Attribute& pre(Attribute& val) { return val; } - static void post(Attribute&, Attribute const&) {} - }; - - // main specialization for x3 - template - struct transform_attribute - : default_transform_attribute {}; - - // unused_type needs some special handling as well - template <> - struct transform_attribute - { - typedef unused_type type; - static unused_type pre(unused_type) { return unused; } - static void post(unused_type, unused_type) {} - }; - - template <> - struct transform_attribute - : transform_attribute {}; - - template - struct transform_attribute - : transform_attribute {}; - - template - struct transform_attribute - : transform_attribute {}; - - template - struct transform_attribute - : transform_attribute {}; - - template - struct transform_attribute - : transform_attribute {}; -}}} - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace x3 { namespace traits -{ - template - struct transform_attribute - : x3::transform_attribute - { - static_assert(!std::is_reference::value, - "Exposed cannot be a reference type"); - static_assert(!std::is_reference::value, - "Transformed cannot be a reference type"); - }; -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/nonterminal/rule.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/nonterminal/rule.hpp deleted file mode 100644 index 8458a1ab34ea..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/nonterminal/rule.hpp +++ /dev/null @@ -1,260 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - - 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_X3_RULE_JAN_08_2012_0326PM) -#define BOOST_SPIRIT_X3_RULE_JAN_08_2012_0326PM - -#include -#include -#include -#include -#include -#include -#include - -#if !defined(BOOST_SPIRIT_X3_NO_RTTI) -#include -#endif - -namespace boost { namespace spirit { namespace x3 -{ - // default parse_rule implementation - template - inline detail::default_parse_rule_result - parse_rule( - detail::rule_id - , Iterator& first, Iterator const& last - , Context const& context, ActualAttribute& attr) - { - static_assert(!is_same(context)), unused_type>::value, - "BOOST_SPIRIT_DEFINE undefined for this rule."); - return x3::get(context).parse(first, last, context, unused, attr); - } - - template - struct rule_definition : parser> - { - typedef rule_definition this_type; - typedef ID id; - typedef RHS rhs_type; - typedef rule lhs_type; - typedef Attribute attribute_type; - - static bool const has_attribute = - !is_same::value; - static bool const handles_container = - traits::is_container::value; - static bool const force_attribute = - force_attribute_; - - constexpr rule_definition(RHS const& rhs, char const* name) - : rhs(rhs), name(name) {} - - template - bool parse(Iterator& first, Iterator const& last - , Context const& context, unused_type, Attribute_& attr) const - { - return detail::rule_parser - ::call_rule_definition( - rhs, name, first, last - , context - , attr - , mpl::bool_()); - } - - RHS rhs; - char const* name; - }; - - template - struct rule : parser> - { - static_assert(!std::is_reference::value, - "Reference qualifier on rule attribute type is meaningless"); - - typedef ID id; - typedef Attribute attribute_type; - static bool const has_attribute = - !std::is_same, unused_type>::value; - static bool const handles_container = - traits::is_container::value; - static bool const force_attribute = force_attribute_; - -#if !defined(BOOST_SPIRIT_X3_NO_RTTI) - rule() : name(typeid(rule).name()) {} -#else - constexpr rule() : name("unnamed") {} -#endif - - constexpr rule(char const* name) - : name(name) {} - - constexpr rule(rule const& r) - : name(r.name) - { - // Assert that we are not copying an unitialized static rule. If - // the static is in another TU, it may be initialized after we copy - // it. If so, its name member will be nullptr. - BOOST_ASSERT_MSG(r.name, "uninitialized rule"); // static initialization order fiasco - } - - template - constexpr rule_definition< - ID, typename extension::as_parser::value_type, Attribute, force_attribute_> - operator=(RHS const& rhs) const& - { - return { as_parser(rhs), name }; - } - - template - constexpr rule_definition< - ID, typename extension::as_parser::value_type, Attribute, true> - operator%=(RHS const& rhs) const& - { - return { as_parser(rhs), name }; - } - - // When a rule placeholder constructed and immediately consumed it cannot be used recursively, - // that's why the rule definition injection into a parser context can be skipped. - // This optimization has a huge impact on compile times because immediate rules are commonly - // used to cast an attribute like `as`/`attr_cast` does in Qi. - template - constexpr rule_definition< - ID, typename extension::as_parser::value_type, Attribute, force_attribute_, true> - operator=(RHS const& rhs) const&& - { - return { as_parser(rhs), name }; - } - - template - constexpr rule_definition< - ID, typename extension::as_parser::value_type, Attribute, true, true> - operator%=(RHS const& rhs) const&& - { - return { as_parser(rhs), name }; - } - - - template - bool parse(Iterator& first, Iterator const& last - , Context const& context, unused_type, Attribute_& attr) const - { - static_assert(has_attribute, - "The rule does not have an attribute. Check your parser."); - - using transform = traits::transform_attribute< - Attribute_, attribute_type, parser_id>; - - using transform_attr = typename transform::type; - transform_attr attr_ = transform::pre(attr); - - if (parse_rule(detail::rule_id{}, first, last, context, attr_)) { - transform::post(attr, std::forward(attr_)); - return true; - } - return false; - } - - template - bool parse(Iterator& first, Iterator const& last - , Context const& context, unused_type, unused_type) const - { - // make sure we pass exactly the rule attribute type - attribute_type no_attr{}; - return parse_rule(detail::rule_id{}, first, last, context, no_attr); - } - - char const* name; - }; - - namespace traits - { - template - struct is_rule : mpl::false_ {}; - - template - struct is_rule> : mpl::true_ {}; - - template - struct is_rule> : mpl::true_ {}; - } - - template - struct get_info>::type> - { - typedef std::string result_type; - std::string operator()(T const& r) const - { - BOOST_ASSERT_MSG(r.name, "uninitialized rule"); // static initialization order fiasco - return r.name? r.name : "uninitialized"; - } - }; - -#define BOOST_SPIRIT_DECLARE_(r, data, rule_type) \ - template \ - bool parse_rule( \ - ::boost::spirit::x3::detail::rule_id \ - , Iterator& first, Iterator const& last \ - , Context const& context, rule_type::attribute_type& attr); \ - /***/ - -#define BOOST_SPIRIT_DECLARE(...) BOOST_PP_SEQ_FOR_EACH( \ - BOOST_SPIRIT_DECLARE_, _, BOOST_PP_VARIADIC_TO_SEQ(__VA_ARGS__)) \ - /***/ - -#if BOOST_WORKAROUND(BOOST_MSVC, < 1910) -#define BOOST_SPIRIT_DEFINE_(r, data, rule_name) \ - using BOOST_PP_CAT(rule_name, _synonym) = decltype(rule_name); \ - template \ - inline bool parse_rule( \ - ::boost::spirit::x3::detail::rule_id \ - , Iterator& first, Iterator const& last \ - , Context const& context, BOOST_PP_CAT(rule_name, _synonym)::attribute_type& attr) \ - { \ - using rule_t = BOOST_JOIN(rule_name, _synonym); \ - return ::boost::spirit::x3::detail \ - ::rule_parser \ - ::call_rule_definition( \ - BOOST_JOIN(rule_name, _def), rule_name.name \ - , first, last, context, attr \ - , ::boost::mpl::bool_()); \ - } \ - /***/ -#else -#define BOOST_SPIRIT_DEFINE_(r, data, rule_name) \ - template \ - inline bool parse_rule( \ - ::boost::spirit::x3::detail::rule_id \ - , Iterator& first, Iterator const& last \ - , Context const& context, decltype(rule_name)::attribute_type& attr) \ - { \ - using rule_t = decltype(rule_name); \ - return ::boost::spirit::x3::detail \ - ::rule_parser \ - ::call_rule_definition( \ - BOOST_JOIN(rule_name, _def), rule_name.name \ - , first, last, context, attr \ - , ::boost::mpl::bool_()); \ - } \ - /***/ -#endif - -#define BOOST_SPIRIT_DEFINE(...) BOOST_PP_SEQ_FOR_EACH( \ - BOOST_SPIRIT_DEFINE_, _, BOOST_PP_VARIADIC_TO_SEQ(__VA_ARGS__)) \ - /***/ - -#define BOOST_SPIRIT_INSTANTIATE(rule_type, Iterator, Context) \ - template bool parse_rule( \ - ::boost::spirit::x3::detail::rule_id \ - , Iterator& first, Iterator const& last \ - , Context const& context, rule_type::attribute_type&); \ - /***/ - - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/nonterminal/simple_trace.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/nonterminal/simple_trace.hpp deleted file mode 100644 index 8a4851a3937f..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/nonterminal/simple_trace.hpp +++ /dev/null @@ -1,140 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - 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_X3_SIMPLE_TRACE_DECEMBER_06_2008_1102AM) -#define BOOST_SPIRIT_X3_SIMPLE_TRACE_DECEMBER_06_2008_1102AM - -#include -#include -#include -#include -#include -#include - -// The stream to use for debug output -#if !defined(BOOST_SPIRIT_X3_DEBUG_OUT) -#define BOOST_SPIRIT_X3_DEBUG_OUT std::cerr -#endif - -// number of tokens to print while debugging -#if !defined(BOOST_SPIRIT_X3_DEBUG_PRINT_SOME) -#define BOOST_SPIRIT_X3_DEBUG_PRINT_SOME 20 -#endif - -// number of spaces to indent -#if !defined(BOOST_SPIRIT_X3_DEBUG_INDENT) -#define BOOST_SPIRIT_X3_DEBUG_INDENT 2 -#endif - -namespace boost { namespace spirit { namespace x3 -{ - namespace detail - { - template - inline void token_printer(std::ostream& o, Char c) - { - // allow customization of the token printer routine - x3::traits::print_token(o, c); - } - } - - template - struct simple_trace - { - simple_trace(std::ostream& out) - : out(out), indent(0) {} - - void print_indent(int n) const - { - n *= IndentSpaces; - for (int i = 0; i != n; ++i) - out << ' '; - } - - template - void print_some( - char const* tag - , Iterator first, Iterator const& last) const - { - print_indent(indent); - out << '<' << tag << '>'; - int const n = CharsToPrint; - for (int i = 0; first != last && i != n && *first; ++i, ++first) - detail::token_printer(out, *first); - out << "' << std::endl; - - // $$$ FIXME convert invalid xml characters (e.g. '<') to valid - // character entities. $$$ - } - - template - void operator()( - Iterator const& first - , Iterator const& last - , Attribute const& attr - , State state - , std::string const& rule_name) const - { - switch (state) - { - case pre_parse: - print_indent(indent++); - out - << '<' << rule_name << '>' - << std::endl; - print_some("try", first, last); - break; - - case successful_parse: - print_some("success", first, last); - if (!is_same::value) - { - print_indent(indent); - out - << ""; - traits::print_attribute(out, attr); - out - << ""; - out << std::endl; - } - print_indent(--indent); - out - << "' - << std::endl; - break; - - case failed_parse: - print_indent(indent); - out << "" << std::endl; - print_indent(--indent); - out - << "' - << std::endl; - break; - } - } - - std::ostream& out; - mutable int indent; - }; - - namespace detail - { - typedef simple_trace< - BOOST_SPIRIT_X3_DEBUG_INDENT, BOOST_SPIRIT_X3_DEBUG_PRINT_SOME> - simple_trace_type; - - inline simple_trace_type& - get_simple_trace() - { - static simple_trace_type tracer(BOOST_SPIRIT_X3_DEBUG_OUT); - return tracer; - } - } -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/numeric.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/numeric.hpp deleted file mode 100644 index 3acff052d10c..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/numeric.hpp +++ /dev/null @@ -1,17 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - - 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_X3_NUMERIC_FEBRUARY_05_2007_1231PM) -#define BOOST_SPIRIT_X3_NUMERIC_FEBRUARY_05_2007_1231PM - -#include -#include -#include -#ifndef BOOST_SPIRIT_NO_REAL_NUMBERS -#include -#endif - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/numeric/bool.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/numeric/bool.hpp deleted file mode 100644 index b3541c775dd3..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/numeric/bool.hpp +++ /dev/null @@ -1,161 +0,0 @@ -/*============================================================================= - Copyright (c) 2009 Hartmut Kaiser - Copyright (c) 2014 Joel de Guzman - - 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) -==============================================================================*/ -#ifndef BOOST_SPIRIT_X3_NUMERIC_BOOL_HPP -#define BOOST_SPIRIT_X3_NUMERIC_BOOL_HPP - -#include -#include -#include - -namespace boost { namespace spirit { namespace x3 -{ - template > - struct bool_parser : parser> - { - typedef Encoding encoding; - typedef T attribute_type; - static bool const has_attribute = true; - - constexpr bool_parser() - : policies() {} - - constexpr bool_parser(BoolPolicies const& policies) - : policies(policies) {} - - template - bool parse(Iterator& first, Iterator const& last - , Context const& context, unused_type, T& attr) const - { - x3::skip_over(first, last, context); - return policies.parse_true(first, last, attr, get_case_compare(context)) - || policies.parse_false(first, last, attr, get_case_compare(context)); - } - - template - bool parse(Iterator& first, Iterator const& last - , Context const& context, unused_type, Attribute& attr_param) const - { - // this case is called when Attribute is not T - T attr_; - if (parse(first, last, context, unused, attr_)) - { - traits::move_to(attr_, attr_param); - return true; - } - return false; - } - - BoolPolicies policies; - }; - - template > - struct literal_bool_parser : parser> - { - typedef Encoding encoding; - typedef T attribute_type; - static bool const has_attribute = true; - - template - constexpr literal_bool_parser(Value const& n) - : policies(), n_(n) {} - - template - constexpr literal_bool_parser(Value const& n, BoolPolicies const& policies) - : policies(policies), n_(n) {} - - template - bool parse_main(Iterator& first, Iterator const& last - , Context const& context, T& attr) const - { - x3::skip_over(first, last, context); - return (n_ && policies.parse_true(first, last, attr, get_case_compare(context))) - || (!n_ && policies.parse_false(first, last, attr, get_case_compare(context))); - } - - template - bool parse(Iterator& first, Iterator const& last - , Context const& context, unused_type, T& attr) const - { - return parse_main(first, last, context, attr); - } - - template - bool parse(Iterator& first, Iterator const& last - , Context const& context, unused_type, Attribute& attr_param) const - { - // this case is called when Attribute is not T - T attr_; - if (parse_main(first, last, context, attr_)) - { - traits::move_to(attr_, attr_param); - return true; - } - return false; - } - - BoolPolicies policies; - T n_; - }; - - namespace standard - { - typedef bool_parser bool_type; - constexpr bool_type bool_ = {}; - - typedef literal_bool_parser true_type; - constexpr true_type true_ = { true }; - - typedef literal_bool_parser false_type; - constexpr false_type false_ = { false }; - } - -#ifndef BOOST_SPIRIT_NO_STANDARD_WIDE - namespace standard_wide - { - typedef bool_parser bool_type; - constexpr bool_type bool_ = {}; - - typedef literal_bool_parser true_type; - constexpr true_type true_ = { true }; - - typedef literal_bool_parser false_type; - constexpr false_type false_ = { false }; - } -#endif - - namespace ascii - { - typedef bool_parser bool_type; - constexpr bool_type bool_ = {}; - - typedef literal_bool_parser true_type; - constexpr true_type true_ = { true }; - - typedef literal_bool_parser false_type; - constexpr false_type false_ = { false }; - } - - namespace iso8859_1 - { - typedef bool_parser bool_type; - constexpr bool_type bool_ = {}; - - typedef literal_bool_parser true_type; - constexpr true_type true_ = { true }; - - typedef literal_bool_parser false_type; - constexpr false_type false_ = { false }; - } - - using standard::bool_; - using standard::true_; - using standard::false_; - - }}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/numeric/bool_policies.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/numeric/bool_policies.hpp deleted file mode 100644 index 0f8076c9393c..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/numeric/bool_policies.hpp +++ /dev/null @@ -1,48 +0,0 @@ -/*============================================================================= - Copyright (c) 2009 Hartmut Kaiser - Copyright (c) 2014 Joel de Guzman - - 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_X3_BOOL_POLICIES_SEP_29_2009_0710AM) -#define BOOST_SPIRIT_X3_BOOL_POLICIES_SEP_29_2009_0710AM - -#include -#include - -namespace boost { namespace spirit { namespace x3 -{ - /////////////////////////////////////////////////////////////////////////// - // Default boolean policies - /////////////////////////////////////////////////////////////////////////// - template - struct bool_policies - { - template - static bool - parse_true(Iterator& first, Iterator const& last, Attribute& attr_, CaseCompare const& case_compare) - { - if (detail::string_parse("true", first, last, unused, case_compare)) - { - traits::move_to(T(true), attr_); // result is true - return true; - } - return false; - } - - template - static bool - parse_false(Iterator& first, Iterator const& last, Attribute& attr_, CaseCompare const& case_compare) - { - if (detail::string_parse("false", first, last, unused, case_compare)) - { - traits::move_to(T(false), attr_); // result is false - return true; - } - return false; - } - }; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/numeric/int.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/numeric/int.hpp deleted file mode 100644 index caa27394645e..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/numeric/int.hpp +++ /dev/null @@ -1,62 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - - 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_X3_INT_APR_17_2006_0830AM) -#define BOOST_SPIRIT_X3_INT_APR_17_2006_0830AM - -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace x3 -{ - /////////////////////////////////////////////////////////////////////////// - template < - typename T - , unsigned Radix = 10 - , unsigned MinDigits = 1 - , int MaxDigits = -1> - struct int_parser : parser> - { - // check template parameter 'Radix' for validity - static_assert( - (Radix == 2 || Radix == 8 || Radix == 10 || Radix == 16), - "Error Unsupported Radix"); - - typedef T attribute_type; - static bool const has_attribute = true; - - template - bool parse(Iterator& first, Iterator const& last - , Context const& context, unused_type, Attribute& attr) const - { - typedef extract_int extract; - x3::skip_over(first, last, context); - return extract::call(first, last, attr); - } - }; - -#define BOOST_SPIRIT_X3_INT_PARSER(int_type, name) \ - typedef int_parser name##type; \ - constexpr name##type name = {}; \ - /***/ - - BOOST_SPIRIT_X3_INT_PARSER(long, long_) - BOOST_SPIRIT_X3_INT_PARSER(short, short_) - BOOST_SPIRIT_X3_INT_PARSER(int, int_) - BOOST_SPIRIT_X3_INT_PARSER(long long, long_long) - - BOOST_SPIRIT_X3_INT_PARSER(int8_t, int8) - BOOST_SPIRIT_X3_INT_PARSER(int16_t, int16) - BOOST_SPIRIT_X3_INT_PARSER(int32_t, int32) - BOOST_SPIRIT_X3_INT_PARSER(int64_t, int64) - -#undef BOOST_SPIRIT_X3_INT_PARSER - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/numeric/real.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/numeric/real.hpp deleted file mode 100644 index dac46bb090bd..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/numeric/real.hpp +++ /dev/null @@ -1,65 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - - 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_X3_REAL_APRIL_18_2006_0850AM) -#define BOOST_SPIRIT_X3_REAL_APRIL_18_2006_0850AM - -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace x3 -{ - template > - struct real_parser : parser > - { - typedef T attribute_type; - static bool const has_attribute = true; - - constexpr real_parser() - : policies() {} - - constexpr real_parser(RealPolicies const& policies) - : policies(policies) {} - - template - bool parse(Iterator& first, Iterator const& last - , Context const& context, unused_type, T& attr_) const - { - x3::skip_over(first, last, context); - return extract_real::parse(first, last, attr_, policies); - } - - template - bool parse(Iterator& first, Iterator const& last - , Context const& context, unused_type, Attribute& attr_param) const - { - // this case is called when Attribute is not T - T attr_; - if (parse(first, last, context, unused, attr_)) - { - traits::move_to(attr_, attr_param); - return true; - } - return false; - } - - RealPolicies policies; - }; - - typedef real_parser float_type; - constexpr float_type float_ = {}; - - typedef real_parser double_type; - constexpr double_type double_ = {}; - - typedef real_parser long_double_type; - constexpr long_double_type long_double = {}; - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/numeric/real_policies.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/numeric/real_policies.hpp deleted file mode 100644 index fdd382d4fc41..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/numeric/real_policies.hpp +++ /dev/null @@ -1,169 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - 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_X3_REAL_POLICIES_APRIL_17_2006_1158PM) -#define BOOST_SPIRIT_X3_REAL_POLICIES_APRIL_17_2006_1158PM - -#include -#include - -namespace boost { namespace spirit { namespace x3 -{ - /////////////////////////////////////////////////////////////////////////// - // Default (unsigned) real number policies - /////////////////////////////////////////////////////////////////////////// - template - struct ureal_policies - { - // trailing dot policy suggested by Gustavo Guerra - static bool const allow_leading_dot = true; - static bool const allow_trailing_dot = true; - static bool const expect_dot = false; - - template - static bool - parse_sign(Iterator& /*first*/, Iterator const& /*last*/) - { - return false; - } - - template - static bool - parse_n(Iterator& first, Iterator const& last, Attribute& attr_) - { - return extract_uint::call(first, last, attr_); - } - - template - static bool - parse_dot(Iterator& first, Iterator const& last) - { - if (first == last || *first != '.') - return false; - ++first; - return true; - } - - template - static bool - parse_frac_n(Iterator& first, Iterator const& last, Attribute& attr_) - { - return extract_uint::call(first, last, attr_); - } - - template - static bool - parse_exp(Iterator& first, Iterator const& last) - { - if (first == last || (*first != 'e' && *first != 'E')) - return false; - ++first; - return true; - } - - template - static bool - parse_exp_n(Iterator& first, Iterator const& last, int& attr_) - { - return extract_int::call(first, last, attr_); - } - - /////////////////////////////////////////////////////////////////////// - // The parse_nan() and parse_inf() functions get called whenever - // a number to parse does not start with a digit (after having - // successfully parsed an optional sign). - // - // The functions should return true if a Nan or Inf has been found. In - // this case the attr should be set to the matched value (NaN or - // Inf). The optional sign will be automatically applied afterwards. - // - // The default implementation below recognizes representations of NaN - // and Inf as mandated by the C99 Standard and as proposed for - // inclusion into the C++0x Standard: nan, nan(...), inf and infinity - // (the matching is performed case-insensitively). - /////////////////////////////////////////////////////////////////////// - template - static bool - parse_nan(Iterator& first, Iterator const& last, Attribute& attr_) - { - if (first == last) - return false; // end of input reached - - if (*first != 'n' && *first != 'N') - return false; // not "nan" - - // nan[(...)] ? - if (detail::string_parse("nan", "NAN", first, last, unused)) - { - if (first != last && *first == '(') - { - // skip trailing (...) part - Iterator i = first; - - while (++i != last && *i != ')') - ; - if (i == last) - return false; // no trailing ')' found, give up - - first = ++i; - } - attr_ = std::numeric_limits::quiet_NaN(); - return true; - } - return false; - } - - template - static bool - parse_inf(Iterator& first, Iterator const& last, Attribute& attr_) - { - if (first == last) - return false; // end of input reached - - if (*first != 'i' && *first != 'I') - return false; // not "inf" - - // inf or infinity ? - if (detail::string_parse("inf", "INF", first, last, unused)) - { - // skip allowed 'inity' part of infinity - detail::string_parse("inity", "INITY", first, last, unused); - attr_ = std::numeric_limits::infinity(); - return true; - } - return false; - } - }; - - /////////////////////////////////////////////////////////////////////////// - // Default (signed) real number policies - /////////////////////////////////////////////////////////////////////////// - template - struct real_policies : ureal_policies - { - template - static bool - parse_sign(Iterator& first, Iterator const& last) - { - return extract_sign(first, last); - } - }; - - template - struct strict_ureal_policies : ureal_policies - { - static bool const expect_dot = true; - }; - - template - struct strict_real_policies : real_policies - { - static bool const expect_dot = true; - }; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/numeric/uint.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/numeric/uint.hpp deleted file mode 100644 index 869ee48f91a7..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/numeric/uint.hpp +++ /dev/null @@ -1,75 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - Copyright (c) 2011 Jan Frederick Eick - - 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_X3_UINT_APR_17_2006_0901AM) -#define BOOST_SPIRIT_X3_UINT_APR_17_2006_0901AM - -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace x3 -{ - /////////////////////////////////////////////////////////////////////////// - template < - typename T - , unsigned Radix = 10 - , unsigned MinDigits = 1 - , int MaxDigits = -1> - struct uint_parser : parser> - { - // check template parameter 'Radix' for validity - static_assert( - (Radix >= 2 && Radix <= 36), - "Error Unsupported Radix"); - - typedef T attribute_type; - static bool const has_attribute = true; - - template - bool parse(Iterator& first, Iterator const& last - , Context const& context, unused_type, Attribute& attr) const - { - typedef extract_uint extract; - x3::skip_over(first, last, context); - return extract::call(first, last, attr); - } - }; - -#define BOOST_SPIRIT_X3_UINT_PARSER(uint_type, name) \ - typedef uint_parser name##type; \ - constexpr name##type name = {}; \ - /***/ - - BOOST_SPIRIT_X3_UINT_PARSER(unsigned long, ulong_) - BOOST_SPIRIT_X3_UINT_PARSER(unsigned short, ushort_) - BOOST_SPIRIT_X3_UINT_PARSER(unsigned int, uint_) - BOOST_SPIRIT_X3_UINT_PARSER(unsigned long long, ulong_long) - - BOOST_SPIRIT_X3_UINT_PARSER(uint8_t, uint8) - BOOST_SPIRIT_X3_UINT_PARSER(uint16_t, uint16) - BOOST_SPIRIT_X3_UINT_PARSER(uint32_t, uint32) - BOOST_SPIRIT_X3_UINT_PARSER(uint64_t, uint64) - -#undef BOOST_SPIRIT_X3_UINT_PARSER - -#define BOOST_SPIRIT_X3_UINT_PARSER(uint_type, radix, name) \ - typedef uint_parser name##type; \ - constexpr name##type name = name##type(); \ - /***/ - - BOOST_SPIRIT_X3_UINT_PARSER(unsigned, 2, bin) - BOOST_SPIRIT_X3_UINT_PARSER(unsigned, 8, oct) - BOOST_SPIRIT_X3_UINT_PARSER(unsigned, 16, hex) - -#undef BOOST_SPIRIT_X3_UINT_PARSER - - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/operator.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/operator.hpp deleted file mode 100644 index c67f18c4cc95..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/operator.hpp +++ /dev/null @@ -1,22 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - - 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_X3_OPERATOR_FEBRUARY_02_2007_0558PM) -#define BOOST_SPIRIT_X3_OPERATOR_FEBRUARY_02_2007_0558PM - -#include -#include -//~ #include -//~ #include -#include -#include -#include -#include -#include -#include -#include - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/operator/alternative.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/operator/alternative.hpp deleted file mode 100644 index aeb6998ba49e..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/operator/alternative.hpp +++ /dev/null @@ -1,63 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - - 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_X3_ALTERNATIVE_JAN_07_2013_1131AM) -#define BOOST_SPIRIT_X3_ALTERNATIVE_JAN_07_2013_1131AM - -#include -#include -#include - -#include - -namespace boost { namespace spirit { namespace x3 -{ - template - struct alternative : binary_parser> - { - typedef binary_parser> base_type; - - constexpr alternative(Left const& left, Right const& right) - : base_type(left, right) {} - - template - bool parse( - Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, unused_type) const - { - return this->left.parse(first, last, context, rcontext, unused) - || this->right.parse(first, last, context, rcontext, unused); - } - - template - bool parse( - Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, Attribute& attr) const - { - return detail::parse_alternative(this->left, first, last, context, rcontext, attr) - || detail::parse_alternative(this->right, first, last, context, rcontext, attr); - } - }; - - template - constexpr alternative< - typename extension::as_parser::value_type - , typename extension::as_parser::value_type> - operator|(Left const& left, Right const& right) - { - return { as_parser(left), as_parser(right) }; - } -}}} - -namespace boost { namespace spirit { namespace x3 { namespace traits -{ - template - struct attribute_of, Context> - : x3::detail::attribute_of_binary {}; -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/operator/and_predicate.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/operator/and_predicate.hpp deleted file mode 100644 index e8bcf58af5f3..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/operator/and_predicate.hpp +++ /dev/null @@ -1,43 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - - 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_X3_AND_PREDICATE_MARCH_23_2007_0617PM) -#define BOOST_SPIRIT_X3_AND_PREDICATE_MARCH_23_2007_0617PM - -#include - -namespace boost { namespace spirit { namespace x3 -{ - template - struct and_predicate : unary_parser> - { - typedef unary_parser> base_type; - - typedef unused_type attribute_type; - static bool const has_attribute = false; - - constexpr and_predicate(Subject const& subject) - : base_type(subject) {} - - template - bool parse(Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, Attribute& /*attr*/) const - { - Iterator i = first; - return this->subject.parse(i, last, context, rcontext, unused); - } - }; - - template - constexpr and_predicate::value_type> - operator&(Subject const& subject) - { - return { as_parser(subject) }; - } -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/operator/detail/alternative.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/operator/detail/alternative.hpp deleted file mode 100644 index e6f6bfb827c2..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/operator/detail/alternative.hpp +++ /dev/null @@ -1,251 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - - 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_X3_ALTERNATIVE_DETAIL_JAN_07_2013_1245PM) -#define BOOST_SPIRIT_X3_ALTERNATIVE_DETAIL_JAN_07_2013_1245PM - -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include - -#include -#include - -namespace boost { namespace spirit { namespace x3 -{ - template - struct alternative; -}}} - -namespace boost { namespace spirit { namespace x3 { namespace detail -{ - struct pass_variant_unused - { - typedef unused_type type; - - template - static unused_type - call(T&) - { - return unused_type(); - } - }; - - template - struct pass_variant_used - { - typedef Attribute& type; - - static Attribute& - call(Attribute& v) - { - return v; - } - }; - - template <> - struct pass_variant_used : pass_variant_unused {}; - - template - struct pass_parser_attribute - { - typedef typename - traits::attribute_of::type - attribute_type; - typedef typename - traits::variant_find_substitute::type - substitute_type; - - typedef typename - mpl::if_< - is_same - , Attribute& - , substitute_type - >::type - type; - - template - static Attribute_& - call(Attribute_& attribute, mpl::true_) - { - return attribute; - } - - template - static type - call(Attribute_&, mpl::false_) - { - return type(); - } - - template - static type - call(Attribute_& attribute) - { - return call(attribute, is_same::type>()); - } - }; - - // Pass non-variant attributes as-is - template - struct pass_non_variant_attribute - { - typedef Attribute& type; - - static Attribute& - call(Attribute& attribute) - { - return attribute; - } - }; - - // Unwrap single element sequences - template - struct pass_non_variant_attribute>::type> - { - typedef typename remove_reference< - typename fusion::result_of::front::type>::type - attr_type; - - typedef pass_parser_attribute pass; - typedef typename pass::type type; - - template - static type - call(Attribute_& attr) - { - return pass::call(fusion::front(attr)); - } - }; - - template - struct pass_parser_attribute::value)>::type> - : pass_non_variant_attribute - {}; - - template - struct pass_parser_attribute - : pass_variant_unused {}; - - template - struct pass_variant_attribute : - mpl::if_c::value - , pass_parser_attribute - , pass_variant_unused>::type - { - }; - - template - struct pass_variant_attribute, Attribute, Context> : - mpl::if_c, Context>::value - , pass_variant_used - , pass_variant_unused>::type - { - }; - - template - struct move_if - { - template - static void call(T1& /* attr_ */, T2& /* attr */) {} - }; - - template <> - struct move_if - { - template - static void call(T1& attr_, T2& attribute) - { - traits::move_to(attr_, attribute); - } - }; - - template - bool parse_alternative(Parser const& p, Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, Attribute& attribute) - { - using pass = detail::pass_variant_attribute; - using pseudo = traits::pseudo_attribute; - - typename pseudo::type attr_ = pseudo::call(first, last, pass::call(attribute)); - - if (p.parse(first, last, context, rcontext, attr_)) - { - move_if::value>::call(attr_, attribute); - return true; - } - return false; - } - - template - struct alternative_helper : unary_parser> - { - static bool const is_pass_through_unary = true; - - using unary_parser>::unary_parser; - - template - bool parse(Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, Attribute& attr) const - { - return detail::parse_alternative(this->subject, first, last, context, rcontext, attr); - } - }; - - template - struct parse_into_container_impl, Context, RContext> - { - typedef alternative parser_type; - - template - static bool call( - parser_type const& parser - , Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, Attribute& attribute, mpl::false_) - { - return detail::parse_into_container(parser.left, first, last, context, rcontext, attribute) - || detail::parse_into_container(parser.right, first, last, context, rcontext, attribute); - } - - template - static bool call( - parser_type const& parser - , Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, Attribute& attribute, mpl::true_) - { - return detail::parse_into_container(alternative_helper{parser.left}, first, last, context, rcontext, attribute) - || detail::parse_into_container(alternative_helper{parser.right}, first, last, context, rcontext, attribute); - } - - template - static bool call( - parser_type const& parser - , Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, Attribute& attribute) - { - return call(parser, first, last, context, rcontext, attribute, - typename traits::is_variant::type>::type{}); - } - }; - -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/operator/detail/sequence.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/operator/detail/sequence.hpp deleted file mode 100644 index f5322a733a25..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/operator/detail/sequence.hpp +++ /dev/null @@ -1,419 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - - 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_X3_SEQUENCE_DETAIL_JAN_06_2013_1015AM) -#define BOOST_SPIRIT_X3_SEQUENCE_DETAIL_JAN_06_2013_1015AM - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include - -#include -#include - -#include // for std::make_move_iterator - -namespace boost { namespace spirit { namespace x3 -{ - template - struct sequence; -}}} - -namespace boost { namespace spirit { namespace x3 { namespace detail -{ - template - struct sequence_size - { - static int const value = traits::has_attribute::value; - }; - - template - struct sequence_size_subject - : sequence_size {}; - - template - struct sequence_size::type> - : sequence_size_subject {}; - - template - struct sequence_size, Context> - { - static int const value = - sequence_size::value + - sequence_size::value; - }; - - struct pass_sequence_attribute_unused - { - typedef unused_type type; - - template - static unused_type - call(T&) - { - return unused_type(); - } - }; - - template - struct pass_sequence_attribute_size_one_view - { - typedef typename fusion::result_of::deref< - typename fusion::result_of::begin::type - >::type type; - - static type call(Attribute& attribute) - { - return fusion::deref(fusion::begin(attribute)); - } - }; - - template - struct pass_through_sequence_attribute - { - typedef Attribute& type; - - template - static Attribute_& - call(Attribute_& attribute) - { - return attribute; - } - }; - - template - struct pass_sequence_attribute : - mpl::if_< - traits::is_size_one_view - , pass_sequence_attribute_size_one_view - , pass_through_sequence_attribute>::type {}; - - template - struct pass_sequence_attribute, Attribute> - : pass_through_sequence_attribute {}; - - template - struct pass_sequence_attribute_subject : - pass_sequence_attribute {}; - - template - struct pass_sequence_attribute::type> - : pass_sequence_attribute_subject {}; - - template - struct partition_attribute - { - using attr_category = typename traits::attribute_category::type; - static_assert(is_same::value, - "The parser expects tuple-like attribute type"); - - static int const l_size = sequence_size::value; - static int const r_size = sequence_size::value; - - static int constexpr actual_size = fusion::result_of::size::value; - static int constexpr expected_size = l_size + r_size; - - // If you got an error here, then you are trying to pass - // a fusion sequence with the wrong number of elements - // as that expected by the (sequence) parser. - static_assert( - actual_size >= expected_size - , "Size of the passed attribute is less than expected." - ); - static_assert( - actual_size <= expected_size - , "Size of the passed attribute is bigger than expected." - ); - - typedef typename fusion::result_of::begin::type l_begin; - typedef typename fusion::result_of::advance_c::type l_end; - typedef typename fusion::result_of::end::type r_end; - typedef fusion::iterator_range l_part; - typedef fusion::iterator_range r_part; - typedef pass_sequence_attribute l_pass; - typedef pass_sequence_attribute r_pass; - - static l_part left(Attribute& s) - { - auto i = fusion::begin(s); - return l_part(i, fusion::advance_c(i)); - } - - static r_part right(Attribute& s) - { - return r_part( - fusion::advance_c(fusion::begin(s)) - , fusion::end(s)); - } - }; - - template - struct partition_attribute::value && - traits::has_attribute::value)>::type> - { - typedef unused_type l_part; - typedef Attribute& r_part; - typedef pass_sequence_attribute_unused l_pass; - typedef pass_sequence_attribute r_pass; - - static unused_type left(Attribute&) - { - return unused; - } - - static Attribute& right(Attribute& s) - { - return s; - } - }; - - template - struct partition_attribute::value && - !traits::has_attribute::value)>::type> - { - typedef Attribute& l_part; - typedef unused_type r_part; - typedef pass_sequence_attribute l_pass; - typedef pass_sequence_attribute_unused r_pass; - - static Attribute& left(Attribute& s) - { - return s; - } - - static unused_type right(Attribute&) - { - return unused; - } - }; - - template - struct partition_attribute::value && - !traits::has_attribute::value)>::type> - { - typedef unused_type l_part; - typedef unused_type r_part; - typedef pass_sequence_attribute_unused l_pass; - typedef pass_sequence_attribute_unused r_pass; - - static unused_type left(Attribute&) - { - return unused; - } - - static unused_type right(Attribute&) - { - return unused; - } - }; - - template - bool parse_sequence( - Parser const& parser, Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, Attribute& attr - , AttributeCategory) - { - using Left = typename Parser::left_type; - using Right = typename Parser::right_type; - using partition = partition_attribute; - using l_pass = typename partition::l_pass; - using r_pass = typename partition::r_pass; - - typename partition::l_part l_part = partition::left(attr); - typename partition::r_part r_part = partition::right(attr); - typename l_pass::type l_attr = l_pass::call(l_part); - typename r_pass::type r_attr = r_pass::call(r_part); - - Iterator save = first; - if (parser.left.parse(first, last, context, rcontext, l_attr) - && parser.right.parse(first, last, context, rcontext, r_attr)) - return true; - first = save; - return false; - } - - template - constexpr bool pass_sequence_container_attribute - = sequence_size::value > 1; - - template - typename enable_if_c, bool>::type - parse_sequence_container( - Parser const& parser - , Iterator& first, Iterator const& last, Context const& context - , RContext& rcontext, Attribute& attr) - { - return parser.parse(first, last, context, rcontext, attr); - } - - template - typename disable_if_c, bool>::type - parse_sequence_container( - Parser const& parser - , Iterator& first, Iterator const& last, Context const& context - , RContext& rcontext, Attribute& attr) - { - return parse_into_container(parser, first, last, context, rcontext, attr); - } - - template - bool parse_sequence( - Parser const& parser , Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, Attribute& attr - , traits::container_attribute) - { - Iterator save = first; - if (parse_sequence_container(parser.left, first, last, context, rcontext, attr) - && parse_sequence_container(parser.right, first, last, context, rcontext, attr)) - return true; - first = save; - return false; - } - - template - bool parse_sequence_assoc( - Parser const& parser , Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, Attribute& attr, mpl::false_ /*should_split*/) - { - return parse_into_container(parser, first, last, context, rcontext, attr); - } - - template - bool parse_sequence_assoc( - Parser const& parser , Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, Attribute& attr, mpl::true_ /*should_split*/) - { - Iterator save = first; - if (parser.left.parse( first, last, context, rcontext, attr) - && parser.right.parse(first, last, context, rcontext, attr)) - return true; - first = save; - return false; - } - - template - bool parse_sequence( - Parser const& parser, Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, Attribute& attr - , traits::associative_attribute) - { - // we can come here in 2 cases: - // - when sequence is key >> value and therefore must - // be parsed with tuple synthesized attribute and then - // that tuple is used to save into associative attribute provided here. - // Example: key >> value; - // - // - when either this->left or this->right provides full key-value - // pair (like in case 1) and another one provides nothing. - // Example: eps >> rule > - // - // first case must be parsed as whole, and second one should - // be parsed separately for left and right. - - typedef typename traits::attribute_of< - decltype(parser.left), Context>::type l_attr_type; - typedef typename traits::attribute_of< - decltype(parser.right), Context>::type r_attr_type; - - typedef typename - mpl::or_< - is_same - , is_same > - should_split; - - return parse_sequence_assoc(parser, first, last, context, rcontext, attr - , should_split()); - } - - template - struct parse_into_container_impl, Context, RContext> - { - typedef sequence parser_type; - - template - static bool call( - parser_type const& parser - , Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, Attribute& attr, mpl::false_) - { - // inform user what went wrong if we jumped here in attempt to - // parse incompatible sequence into fusion::map - static_assert(!is_same< typename traits::attribute_category::type, - traits::associative_attribute>::value, - "To parse directly into fusion::map sequence must produce tuple attribute " - "where type of first element is existing key in fusion::map and second element " - "is value to be stored under that key"); - - Attribute attr_{}; - if (!parse_sequence(parser - , first, last, context, rcontext, attr_, traits::container_attribute())) - { - return false; - } - traits::append(attr, std::make_move_iterator(traits::begin(attr_)), - std::make_move_iterator(traits::end(attr_))); - return true; - } - - template - static bool call( - parser_type const& parser - , Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, Attribute& attr, mpl::true_) - { - return parse_into_container_base_impl::call( - parser, first, last, context, rcontext, attr); - } - - template - static bool call( - parser_type const& parser - , Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, Attribute& attr) - { - typedef typename - traits::attribute_of::type - attribute_type; - - typedef typename - traits::container_value::type - value_type; - - return call(parser, first, last, context, rcontext, attr - , typename traits::is_substitute::type()); - } - }; - -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/operator/difference.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/operator/difference.hpp deleted file mode 100644 index 36de0a1d8464..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/operator/difference.hpp +++ /dev/null @@ -1,71 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - - 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_X3_DIFFERENCE_FEBRUARY_11_2007_1250PM) -#define BOOST_SPIRIT_X3_DIFFERENCE_FEBRUARY_11_2007_1250PM - -#include -#include -#include - -namespace boost { namespace spirit { namespace x3 -{ - template - struct difference : binary_parser> - { - typedef binary_parser> base_type; - static bool const handles_container = Left::handles_container; - - constexpr difference(Left const& left, Right const& right) - : base_type(left, right) {} - - template - bool parse(Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, Attribute& attr) const - { - // Try Right first - Iterator start = first; - if (this->right.parse(first, last, context, rcontext, unused)) - { - // Right succeeds, we fail. - first = start; - return false; - } - // Right fails, now try Left - return this->left.parse(first, last, context, rcontext, attr); - } - - template - constexpr difference - make(Left_ const& left, Right_ const& right) const - { - return { left, right }; - } - }; - - template - constexpr difference< - typename extension::as_parser::value_type - , typename extension::as_parser::value_type> - operator-(Left const& left, Right const& right) - { - return { as_parser(left), as_parser(right) }; - } -}}} - -namespace boost { namespace spirit { namespace x3 { namespace traits -{ - template - struct attribute_of, Context> - : attribute_of {}; - - template - struct has_attribute, Context> - : has_attribute {}; -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/operator/kleene.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/operator/kleene.hpp deleted file mode 100644 index aa2977001d19..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/operator/kleene.hpp +++ /dev/null @@ -1,55 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - 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_X3_KLEENE_JANUARY_07_2007_0818AM) -#define BOOST_SPIRIT_X3_KLEENE_JANUARY_07_2007_0818AM - -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace x3 -{ - template - struct kleene : unary_parser> - { - typedef unary_parser> base_type; - static bool const handles_container = true; - - constexpr kleene(Subject const& subject) - : base_type(subject) {} - - template - bool parse(Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, Attribute& attr) const - { - while (detail::parse_into_container( - this->subject, first, last, context, rcontext, attr)) - ; - return true; - } - }; - - template - constexpr kleene::value_type> - operator*(Subject const& subject) - { - return { as_parser(subject) }; - } -}}} - -namespace boost { namespace spirit { namespace x3 { namespace traits -{ - template - struct attribute_of, Context> - : build_container< - typename attribute_of::type> {}; -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/operator/list.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/operator/list.hpp deleted file mode 100644 index 6484e7108aa6..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/operator/list.hpp +++ /dev/null @@ -1,71 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - 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_X3_LIST_MARCH_24_2007_1031AM) -#define BOOST_SPIRIT_X3_LIST_MARCH_24_2007_1031AM - -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace x3 -{ - template - struct list : binary_parser> - { - typedef binary_parser> base_type; - static bool const handles_container = true; - - constexpr list(Left const& left, Right const& right) - : base_type(left, right) {} - - template - bool parse(Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, Attribute& attr) const - { - // in order to succeed we need to match at least one element - if (!detail::parse_into_container( - this->left, first, last, context, rcontext, attr)) - return false; - - Iterator iter = first; - while (this->right.parse(iter, last, context, rcontext, unused) - && detail::parse_into_container( - this->left, iter, last, context, rcontext, attr)) - { - first = iter; - } - - return true; - } - }; - - template - constexpr list< - typename extension::as_parser::value_type - , typename extension::as_parser::value_type> - operator%(Left const& left, Right const& right) - { - return { as_parser(left), as_parser(right) }; - } -}}} - -namespace boost { namespace spirit { namespace x3 { namespace traits -{ - template - struct attribute_of, Context> - : traits::build_container< - typename attribute_of::type> {}; - - template - struct has_attribute, Context> - : has_attribute {}; -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/operator/not_predicate.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/operator/not_predicate.hpp deleted file mode 100644 index 071ebd682e29..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/operator/not_predicate.hpp +++ /dev/null @@ -1,43 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - - 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_X3_NOT_PREDICATE_MARCH_23_2007_0618PM) -#define BOOST_SPIRIT_X3_NOT_PREDICATE_MARCH_23_2007_0618PM - -#include - -namespace boost { namespace spirit { namespace x3 -{ - template - struct not_predicate : unary_parser> - { - typedef unary_parser> base_type; - - typedef unused_type attribute_type; - static bool const has_attribute = false; - - constexpr not_predicate(Subject const& subject) - : base_type(subject) {} - - template - bool parse(Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, Attribute& /*attr*/) const - { - Iterator i = first; - return !this->subject.parse(i, last, context, rcontext, unused); - } - }; - - template - constexpr not_predicate::value_type> - operator!(Subject const& subject) - { - return { as_parser(subject) }; - } -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/operator/optional.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/operator/optional.hpp deleted file mode 100644 index 257fd78cfba5..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/operator/optional.hpp +++ /dev/null @@ -1,83 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - 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_X3_OPTIONAL_MARCH_23_2007_1117PM) -#define BOOST_SPIRIT_X3_OPTIONAL_MARCH_23_2007_1117PM - -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace x3 -{ - template - struct optional : proxy> - { - typedef proxy> base_type; - static bool const is_pass_through_unary = false; - static bool const handles_container = true; - - constexpr optional(Subject const& subject) - : base_type(subject) {} - - using base_type::parse_subject; - - // Attribute is a container - template - bool parse_subject(Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, Attribute& attr - , traits::container_attribute) const - { - detail::parse_into_container( - this->subject, first, last, context, rcontext, attr); - return true; - } - - // Attribute is an optional - template - bool parse_subject(Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, Attribute& attr - , traits::optional_attribute) const - { - typedef typename - x3::traits::optional_value::type - value_type; - - // create a local value - value_type val{}; - - if (this->subject.parse(first, last, context, rcontext, val)) - { - // assign the parsed value into our attribute - x3::traits::move_to(val, attr); - } - return true; - } - }; - - template - constexpr optional::value_type> - operator-(Subject const& subject) - { - return { as_parser(subject) }; - } -}}} - -namespace boost { namespace spirit { namespace x3 { namespace traits -{ - template - struct attribute_of, Context> - : build_optional< - typename attribute_of::type> {}; -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/operator/plus.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/operator/plus.hpp deleted file mode 100644 index 6227d6a6fa5c..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/operator/plus.hpp +++ /dev/null @@ -1,59 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - 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_X3_PLUS_MARCH_13_2007_0127PM) -#define BOOST_SPIRIT_X3_PLUS_MARCH_13_2007_0127PM - -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace x3 -{ - template - struct plus : unary_parser> - { - typedef unary_parser> base_type; - static bool const handles_container = true; - - constexpr plus(Subject const& subject) - : base_type(subject) {} - - template - bool parse(Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, Attribute& attr) const - { - if (!detail::parse_into_container( - this->subject, first, last, context, rcontext, attr)) - return false; - - while (detail::parse_into_container( - this->subject, first, last, context, rcontext, attr)) - ; - return true; - } - }; - - template - constexpr plus::value_type> - operator+(Subject const& subject) - { - return { as_parser(subject) }; - } -}}} - -namespace boost { namespace spirit { namespace x3 { namespace traits -{ - template - struct attribute_of, Context> - : build_container< - typename attribute_of::type> {}; -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/operator/sequence.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/operator/sequence.hpp deleted file mode 100644 index 9e6e1702fc9d..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/operator/sequence.hpp +++ /dev/null @@ -1,74 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - - 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_X3_SEQUENCE_JAN_06_2013_1015AM) -#define BOOST_SPIRIT_X3_SEQUENCE_JAN_06_2013_1015AM - -#include -#include -#include -#include - -#include - -namespace boost { namespace spirit { namespace x3 -{ - template - struct sequence : binary_parser> - { - typedef binary_parser> base_type; - - constexpr sequence(Left const& left, Right const& right) - : base_type(left, right) {} - - template - bool parse( - Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, unused_type) const - { - Iterator save = first; - if (this->left.parse(first, last, context, rcontext, unused) - && this->right.parse(first, last, context, rcontext, unused)) - return true; - first = save; - return false; - } - - template - bool parse( - Iterator& first, Iterator const& last - , Context const& context, RContext& rcontext, Attribute& attr) const - { - return detail::parse_sequence(*this, first, last, context, rcontext, attr - , typename traits::attribute_category::type()); - } - }; - - template - constexpr sequence< - typename extension::as_parser::value_type - , typename extension::as_parser::value_type> - operator>>(Left const& left, Right const& right) - { - return { as_parser(left), as_parser(right) }; - } - - template - constexpr auto operator>(Left const& left, Right const& right) - { - return left >> expect[right]; - } -}}} - -namespace boost { namespace spirit { namespace x3 { namespace traits -{ - template - struct attribute_of, Context> - : x3::detail::attribute_of_binary {}; -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/string.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/string.hpp deleted file mode 100644 index 425e73113425..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/string.hpp +++ /dev/null @@ -1,13 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - - 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_X3_STRING_FEBRUARY_03_2007_0355PM) -#define BOOST_SPIRIT_X3_STRING_FEBRUARY_03_2007_0355PM - -#include -#include - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/string/detail/string_parse.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/string/detail/string_parse.hpp deleted file mode 100644 index dd7de67692ff..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/string/detail/string_parse.hpp +++ /dev/null @@ -1,85 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - - 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_X3_STRING_PARSE_APR_18_2006_1125PM) -#define BOOST_SPIRIT_X3_STRING_PARSE_APR_18_2006_1125PM - -#include - -namespace boost { namespace spirit { namespace x3 { namespace detail -{ - template - inline bool string_parse( - Char const* str - , Iterator& first, Iterator const& last, Attribute& attr, CaseCompareFunc const& compare) - { - Iterator i = first; - Char ch = *str; - - for (; !!ch; ++i) - { - if (i == last || (compare(ch, *i) != 0)) - return false; - ch = *++str; - } - - x3::traits::move_to(first, i, attr); - first = i; - return true; - } - - template - inline bool string_parse( - String const& str - , Iterator& first, Iterator const& last, Attribute& attr, CaseCompareFunc const& compare) - { - Iterator i = first; - typename String::const_iterator stri = str.begin(); - typename String::const_iterator str_last = str.end(); - - for (; stri != str_last; ++stri, ++i) - if (i == last || (compare(*stri, *i) != 0)) - return false; - x3::traits::move_to(first, i, attr); - first = i; - return true; - } - - template - inline bool string_parse( - Char const* uc_i, Char const* lc_i - , Iterator& first, Iterator const& last, Attribute& attr) - { - Iterator i = first; - - for (; *uc_i && *lc_i; ++uc_i, ++lc_i, ++i) - if (i == last || ((*uc_i != *i) && (*lc_i != *i))) - return false; - x3::traits::move_to(first, i, attr); - first = i; - return true; - } - - template - inline bool string_parse( - String const& ucstr, String const& lcstr - , Iterator& first, Iterator const& last, Attribute& attr) - { - typename String::const_iterator uc_i = ucstr.begin(); - typename String::const_iterator uc_last = ucstr.end(); - typename String::const_iterator lc_i = lcstr.begin(); - Iterator i = first; - - for (; uc_i != uc_last; ++uc_i, ++lc_i, ++i) - if (i == last || ((*uc_i != *i) && (*lc_i != *i))) - return false; - x3::traits::move_to(first, i, attr); - first = i; - return true; - } -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/string/detail/tst.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/string/detail/tst.hpp deleted file mode 100644 index ea5569f2916c..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/string/detail/tst.hpp +++ /dev/null @@ -1,202 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - - 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_X3_TST_MARCH_09_2007_0905AM) -#define BOOST_SPIRIT_X3_TST_MARCH_09_2007_0905AM - -#include -#include - -#include - -namespace boost { namespace spirit { namespace x3 { namespace detail -{ - // This file contains low level TST routines, not for - // public consumption. - - template - struct tst_node - { - tst_node(Char id) - : id(id), data(0), lt(0), eq(0), gt(0) - { - } - - template - static void - destruct_node(tst_node* p, Alloc* alloc) - { - if (p) - { - if (p->data) - alloc->delete_data(p->data); - destruct_node(p->lt, alloc); - destruct_node(p->eq, alloc); - destruct_node(p->gt, alloc); - alloc->delete_node(p); - } - } - - template - static tst_node* - clone_node(tst_node* p, Alloc* alloc) - { - if (p) - { - tst_node* clone = alloc->new_node(p->id); - if (p->data) - clone->data = alloc->new_data(*p->data); - clone->lt = clone_node(p->lt, alloc); - clone->eq = clone_node(p->eq, alloc); - clone->gt = clone_node(p->gt, alloc); - return clone; - } - return 0; - } - - template - static T* - find(tst_node* start, Iterator& first, Iterator last, CaseCompare comp) - { - if (first == last) - return 0; - - Iterator i = first; - Iterator latest = first; - tst_node* p = start; - T* found = 0; - - while (p && i != last) - { - int32_t c = comp(*i,p->id); - if (c == 0) - { - if (p->data) - { - found = p->data; - latest = i; - } - p = p->eq; - i++; - } - else if (c < 0) - { - p = p->lt; - } - else - { - p = p->gt; - } - } - - if (found) - first = ++latest; // one past the last matching char - return found; - } - - template - static T* - add( - tst_node*& start - , Iterator first - , Iterator last - , typename boost::call_traits::param_type val - , Alloc* alloc) - { - if (first == last) - return 0; - - tst_node** pp = &start; - for (;;) - { - auto c = *first; - - if (*pp == 0) - *pp = alloc->new_node(c); - tst_node* p = *pp; - - if (c == p->id) - { - if (++first == last) - { - if (p->data == 0) - p->data = alloc->new_data(val); - return p->data; - } - pp = &p->eq; - } - else if (c < p->id) - { - pp = &p->lt; - } - else - { - pp = &p->gt; - } - } - } - - template - static void - remove(tst_node*& p, Iterator first, Iterator last, Alloc* alloc) - { - if (p == 0 || first == last) - return; - - auto c = *first; - - if (c == p->id) - { - if (++first == last) - { - if (p->data) - { - alloc->delete_data(p->data); - p->data = 0; - } - } - remove(p->eq, first, last, alloc); - } - else if (c < p->id) - { - remove(p->lt, first, last, alloc); - } - else - { - remove(p->gt, first, last, alloc); - } - - if (p->data == 0 && p->lt == 0 && p->eq == 0 && p->gt == 0) - { - alloc->delete_node(p); - p = 0; - } - } - - template - static void - for_each(tst_node* p, std::basic_string prefix, F f) - { - if (p) - { - for_each(p->lt, prefix, f); - std::basic_string s = prefix + p->id; - for_each(p->eq, s, f); - if (p->data) - f(s, *p->data); - for_each(p->gt, prefix, f); - } - } - - Char id; // the node's identity character - T* data; // optional data - tst_node* lt; // left pointer - tst_node* eq; // middle pointer - tst_node* gt; // right pointer - }; -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/string/literal_string.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/string/literal_string.hpp deleted file mode 100644 index 02ce76546a52..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/string/literal_string.hpp +++ /dev/null @@ -1,282 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - - 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_X3_LITERAL_STRING_APR_18_2006_1125PM) -#define BOOST_SPIRIT_X3_LITERAL_STRING_APR_18_2006_1125PM - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -namespace boost { namespace spirit { namespace x3 -{ - template > - struct literal_string : parser> - { - typedef typename Encoding::char_type char_type; - typedef Encoding encoding; - typedef Attribute attribute_type; - static bool const has_attribute = - !is_same::value; - static bool const handles_container = has_attribute; - - constexpr literal_string(typename add_reference< typename add_const::type >::type str) - : str(str) - {} - - template - bool parse(Iterator& first, Iterator const& last - , Context const& context, unused_type, Attribute_& attr) const - { - x3::skip_over(first, last, context); - return detail::string_parse(str, first, last, attr, get_case_compare(context)); - } - - String str; - }; - - namespace standard - { - constexpr literal_string - string(char const* s) - { - return { s }; - } - - inline literal_string, char_encoding::standard> - string(std::basic_string const& s) - { - return { s }; - } - - inline constexpr literal_string - lit(char const* s) - { - return { s }; - } - - template - literal_string, char_encoding::standard, unused_type> - lit(std::basic_string const& s) - { - return { s }; - } - } - -#ifndef BOOST_SPIRIT_NO_STANDARD_WIDE - namespace standard_wide - { - constexpr literal_string - string(wchar_t const* s) - { - return { s }; - } - - inline literal_string, char_encoding::standard_wide> - string(std::basic_string const& s) - { - return { s }; - } - - constexpr literal_string - lit(wchar_t const* s) - { - return { s }; - } - - inline literal_string, char_encoding::standard_wide, unused_type> - lit(std::basic_string const& s) - { - return { s }; - } - } -#endif - -#if defined(BOOST_SPIRIT_X3_UNICODE) - namespace unicode - { - constexpr literal_string - string(char32_t const* s) - { - return { s }; - } - - inline literal_string, char_encoding::unicode> - string(std::basic_string const& s) - { - return { s }; - } - - constexpr literal_string - lit(char32_t const* s) - { - return { s }; - } - - inline literal_string, char_encoding::unicode, unused_type> - lit(std::basic_string const& s) - { - return { s }; - } - } -#endif - - namespace ascii - { - constexpr literal_string - string(wchar_t const* s) - { - return { s }; - } - - inline literal_string, char_encoding::ascii> - string(std::basic_string const& s) - { - return { s }; - } - - constexpr literal_string - lit(char const* s) - { - return { s }; - } - - template - literal_string, char_encoding::ascii, unused_type> - lit(std::basic_string const& s) - { - return { s }; - } - } - - namespace iso8859_1 - { - constexpr literal_string - string(wchar_t const* s) - { - return { s }; - } - - inline literal_string, char_encoding::iso8859_1> - string(std::basic_string const& s) - { - return { s }; - } - - constexpr literal_string - lit(char const* s) - { - return { s }; - } - - template - literal_string, char_encoding::iso8859_1, unused_type> - lit(std::basic_string const& s) - { - return { s }; - } - } - - using standard::string; - using standard::lit; -#ifndef BOOST_SPIRIT_NO_STANDARD_WIDE - using standard_wide::string; - using standard_wide::lit; -#endif - - namespace extension - { - template - struct as_parser - { - typedef literal_string< - char const*, char_encoding::standard, unused_type> - type; - - typedef type value_type; - - static constexpr type call(char const* s) - { - return type(s); - } - }; - - template - struct as_parser : as_parser {}; - -#ifndef BOOST_SPIRIT_NO_STANDARD_WIDE - template - struct as_parser - { - typedef literal_string< - wchar_t const*, char_encoding::standard_wide, unused_type> - type; - - typedef type value_type; - - static constexpr type call(wchar_t const* s) - { - return type(s); - } - }; - - template - struct as_parser : as_parser {}; -#endif - - template <> - struct as_parser - { - typedef literal_string< - char const*, char_encoding::standard, unused_type> - type; - - typedef type value_type; - - static constexpr type call(char const* s) - { - return type(s); - } - }; - - template - struct as_parser< std::basic_string > - { - typedef literal_string< - Char const*, char_encoding::standard, unused_type> - type; - - typedef type value_type; - - static type call(std::basic_string const& s) - { - return type(s.c_str()); - } - }; - } - - template - struct get_info> - { - typedef std::string result_type; - std::string operator()(literal_string const& p) const - { - return '"' + to_utf8(p.str) + '"'; - } - }; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/string/symbols.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/string/symbols.hpp deleted file mode 100644 index 3d2cbf9f9f9f..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/string/symbols.hpp +++ /dev/null @@ -1,336 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - Copyright (c) 2013 Carl Barron - - 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_X3_SYMBOLS_MARCH_11_2007_1055AM) -#define BOOST_SPIRIT_X3_SYMBOLS_MARCH_11_2007_1055AM - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#include -#include // std::begin -#include // std::shared_ptr -#include - -#if defined(BOOST_MSVC) -# pragma warning(push) -# pragma warning(disable: 4355) // 'this' : used in base member initializer list warning -#endif - -namespace boost { namespace spirit { namespace x3 -{ - template < - typename Encoding - , typename T = unused_type - , typename Lookup = tst > - struct symbols_parser : parser> - { - typedef typename Encoding::char_type char_type; // the character type - typedef Encoding encoding; - typedef T value_type; // the value associated with each entry - typedef value_type attribute_type; - - static bool const has_attribute = - !std::is_same::value; - static bool const handles_container = - traits::is_container::value; - - symbols_parser(std::string const& name = "symbols") - : add{*this} - , remove{*this} - , lookup(std::make_shared()) - , name_(name) - { - } - - symbols_parser(symbols_parser const& syms) - : add{*this} - , remove{*this} - , lookup(syms.lookup) - , name_(syms.name_) - { - } - - template - symbols_parser(Symbols const& syms, std::string const& name = "symbols") - : symbols_parser(name) - { - for (auto& sym : syms) - add(sym); - } - - template - symbols_parser(Symbols const& syms, Data const& data - , std::string const& name = "symbols") - : symbols_parser(name) - { - using std::begin; - auto di = begin(data); - for (auto& sym : syms) - add(sym, *di++); - } - - symbols_parser(std::initializer_list> syms - , std::string const & name="symbols") - : symbols_parser(name) - { - for (auto& sym : syms) - add(sym.first, sym.second); - } - - symbols_parser(std::initializer_list syms - , std::string const &name="symbols") - : symbols_parser(name) - { - for (auto str : syms) - add(str); - } - - symbols_parser& - operator=(symbols_parser const& rhs) - { - name_ = rhs.name_; - lookup = rhs.lookup; - return *this; - } - - void clear() - { - lookup->clear(); - } - - struct adder; - struct remover; - - template - adder const& - operator=(Str const& str) - { - lookup->clear(); - return add(str); - } - - template - friend adder const& - operator+=(symbols_parser& sym, Str const& str) - { - return sym.add(str); - } - - template - friend remover const& - operator-=(symbols_parser& sym, Str const& str) - { - return sym.remove(str); - } - - template - void for_each(F f) const - { - lookup->for_each(f); - } - - template - value_type& at(Str const& str) - { - return *lookup->add(traits::get_string_begin(str) - , traits::get_string_end(str), T()); - } - - template - value_type* prefix_find(Iterator& first, Iterator const& last) - { - return lookup->find(first, last, case_compare()); - } - - template - value_type const* prefix_find(Iterator& first, Iterator const& last) const - { - return lookup->find(first, last, case_compare()); - } - - template - value_type* find(Str const& str) - { - return find_impl(traits::get_string_begin(str) - , traits::get_string_end(str)); - } - - template - value_type const* find(Str const& str) const - { - return find_impl(traits::get_string_begin(str) - , traits::get_string_end(str)); - } - - private: - - template - value_type* find_impl(Iterator begin, Iterator end) - { - value_type* r = lookup->find(begin, end, case_compare()); - return begin == end ? r : 0; - } - - template - value_type const* find_impl(Iterator begin, Iterator end) const - { - value_type const* r = lookup->find(begin, end, case_compare()); - return begin == end ? r : 0; - } - - public: - - template - bool parse(Iterator& first, Iterator const& last - , Context const& context, unused_type, Attribute& attr) const - { - x3::skip_over(first, last, context); - - if (value_type const* val_ptr - = lookup->find(first, last, get_case_compare(context))) - { - x3::traits::move_to(*val_ptr, attr); - return true; - } - return false; - } - - void name(std::string const &str) - { - name_ = str; - } - std::string const &name() const - { - return name_; - } - - struct adder - { - template - adder const& - operator()(Iterator first, Iterator last, T const& val) const - { - sym.lookup->add(first, last, val); - return *this; - } - - template - adder const& - operator()(Str const& s, T const& val = T()) const - { - sym.lookup->add(traits::get_string_begin(s) - , traits::get_string_end(s), val); - return *this; - } - - template - adder const& - operator,(Str const& s) const - { - sym.lookup->add(traits::get_string_begin(s) - , traits::get_string_end(s), T()); - return *this; - } - - symbols_parser& sym; - }; - - struct remover - { - template - remover const& - operator()(Iterator const& first, Iterator const& last) const - { - sym.lookup->remove(first, last); - return *this; - } - - template - remover const& - operator()(Str const& s) const - { - sym.lookup->remove(traits::get_string_begin(s) - , traits::get_string_end(s)); - return *this; - } - - template - remover const& - operator,(Str const& s) const - { - sym.lookup->remove(traits::get_string_begin(s) - , traits::get_string_end(s)); - return *this; - } - - symbols_parser& sym; - }; - - adder add; - remover remove; - std::shared_ptr lookup; - std::string name_; - }; - - template - struct get_info> - { - typedef std::string result_type; - result_type operator()(symbols_parser< Encoding, T - , Lookup - > const& symbols) const - { - return symbols.name(); - } - }; - - namespace standard - { - template - using symbols = symbols_parser; - } - - using standard::symbols; - -#ifndef BOOST_SPIRIT_NO_STANDARD_WIDE - namespace standard_wide - { - template - using symbols = symbols_parser; - } -#endif - - namespace ascii - { - template - using symbols = symbols_parser; - } - - namespace iso8859_1 - { - template - using symbols = symbols_parser; - } - -}}} - -#if defined(BOOST_MSVC) -# pragma warning(pop) -#endif - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/string/tst.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/string/tst.hpp deleted file mode 100644 index 8757cf3bdb2c..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/string/tst.hpp +++ /dev/null @@ -1,135 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - - 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_X3_TST_JUNE_03_2007_1031AM) -#define BOOST_SPIRIT_X3_TST_JUNE_03_2007_1031AM - -#include - -#include - -namespace boost { namespace spirit { namespace x3 -{ - struct tst_pass_through - { - template - Char operator()(Char ch) const - { - return ch; - } - }; - - template - struct tst - { - typedef Char char_type; // the character type - typedef T value_type; // the value associated with each entry - typedef detail::tst_node node; - - tst() - : root(0) - { - } - - ~tst() - { - clear(); - } - - tst(tst const& rhs) - : root(0) - { - copy(rhs); - } - - tst& operator=(tst const& rhs) - { - return assign(rhs); - } - - template - T* find(Iterator& first, Iterator last, CaseCompare caseCompare) const - { - return node::find(root, first, last, caseCompare); - } - - /*template - T* find(Iterator& first, Iterator last) const - { - return find(first, last, case_compare - T* add( - Iterator first - , Iterator last - , typename boost::call_traits::param_type val) - { - return node::add(root, first, last, val, this); - } - - template - void remove(Iterator first, Iterator last) - { - node::remove(root, first, last, this); - } - - void clear() - { - node::destruct_node(root, this); - root = 0; - } - - template - void for_each(F f) const - { - node::for_each(root, std::basic_string(), f); - } - - private: - - friend struct detail::tst_node; - - void copy(tst const& rhs) - { - root = node::clone_node(rhs.root, this); - } - - tst& assign(tst const& rhs) - { - if (this != &rhs) - { - clear(); - copy(rhs); - } - return *this; - } - - node* root; - - node* new_node(Char id) - { - return new node(id); - } - - T* new_data(typename boost::call_traits::param_type val) - { - return new T(val); - } - - void delete_node(node* p) - { - delete p; - } - - void delete_data(T* p) - { - delete p; - } - }; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/string/tst_map.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/string/tst_map.hpp deleted file mode 100644 index 11fb135449c1..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/string/tst_map.hpp +++ /dev/null @@ -1,212 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - - 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_X3_TST_MAP_JUNE_03_2007_1143AM) -#define BOOST_SPIRIT_X3_TST_MAP_JUNE_03_2007_1143AM - -#include -#include -#include - -namespace boost { namespace spirit { namespace x3 -{ - struct tst_pass_through; // declared in tst.hpp - - template - struct tst_map - { - typedef Char char_type; // the character type - typedef T value_type; // the value associated with each entry - typedef detail::tst_node node; - - tst_map() - { - } - - ~tst_map() - { - // Nothing to do here. - // The pools do the right thing for us - } - - tst_map(tst_map const& rhs) - { - copy(rhs); - } - - tst_map& operator=(tst_map const& rhs) - { - return assign(rhs); - } - - template - T* find(Iterator& first, Iterator last, Filter filter) const - { - if (first != last) - { - Iterator save = first; - typename map_type::const_iterator - i = map.find(filter(*first++)); - if (i == map.end()) - { - first = save; - return 0; - } - if (T* p = node::find(i->second.root, first, last, filter)) - { - return p; - } - return i->second.data; - } - return 0; - } - - template - T* find(Iterator& first, Iterator last) const - { - return find(first, last, tst_pass_through()); - } - - template - bool add( - Iterator first - , Iterator last - , typename boost::call_traits::param_type val) - { - if (first != last) - { - map_data x = {0, 0}; - std::pair - r = map.insert(std::pair(*first++, x)); - - if (first != last) - { - return node::add(r.first->second.root - , first, last, val, this) ? true : false; - } - else - { - if (r.first->second.data) - return false; - r.first->second.data = this->new_data(val); - } - return true; - } - return false; - } - - template - void remove(Iterator first, Iterator last) - { - if (first != last) - { - typename map_type::iterator i = map.find(*first++); - if (i != map.end()) - { - if (first != last) - { - node::remove(i->second.root, first, last, this); - } - else if (i->second.data) - { - this->delete_data(i->second.data); - i->second.data = 0; - } - if (i->second.data == 0 && i->second.root == 0) - { - map.erase(i); - } - } - } - } - - void clear() - { - for (typename map_type::value_type& x : map) - { - node::destruct_node(x.second.root, this); - if (x.second.data) - this->delete_data(x.second.data); - } - map.clear(); - } - - template - void for_each(F f) const - { - for (typename map_type::value_type const& x : map) - { - std::basic_string s(1, x.first); - node::for_each(x.second.root, s, f); - if (x.second.data) - f(s, *x.second.data); - } - } - - private: - - friend struct detail::tst_node; - - struct map_data - { - node* root; - T* data; - }; - - typedef std::unordered_map map_type; - - void copy(tst_map const& rhs) - { - for (typename map_type::value_type const& x : rhs.map) - { - map_data xx = {node::clone_node(x.second.root, this), 0}; - if (x.second.data) - xx.data = data_pool.construct(*x.second.data); - map[x.first] = xx; - } - } - - tst_map& assign(tst_map const& rhs) - { - if (this != &rhs) - { - for (typename map_type::value_type& x : map) - { - node::destruct_node(x.second.root, this); - } - map.clear(); - copy(rhs); - } - return *this; - } - - node* new_node(Char id) - { - return node_pool.construct(id); - } - - T* new_data(typename boost::call_traits::param_type val) - { - return data_pool.construct(val); - } - - void delete_node(node* p) - { - node_pool.destroy(p); - } - - void delete_data(T* p) - { - data_pool.destroy(p); - } - - map_type map; - object_pool node_pool; - object_pool data_pool; - }; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/support/ast/position_tagged.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/support/ast/position_tagged.hpp deleted file mode 100644 index fe2d4770a9e8..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/support/ast/position_tagged.hpp +++ /dev/null @@ -1,100 +0,0 @@ -/*============================================================================= - Copyright (c) 2014 Joel de Guzman - - 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_X3_POSITION_TAGGED_MAY_01_2014_0321PM) -#define BOOST_SPIRIT_X3_POSITION_TAGGED_MAY_01_2014_0321PM - -#include -#include -#include - -namespace boost { namespace spirit { namespace x3 -{ - struct position_tagged - { - // Use this to annotate an AST with the iterator position. - // These ids are used as a key to the position_cache (below) - // and marks the start and end of an AST node. - int id_first = -1; - int id_last = -1; - }; - - template - class position_cache - { - public: - - typedef typename Container::value_type iterator_type; - - position_cache( - iterator_type first - , iterator_type last) - : first_(first), last_(last) {} - - // This will catch all nodes inheriting from position_tagged - boost::iterator_range - position_of(position_tagged const& ast) const - { - return - boost::iterator_range( - positions.at(ast.id_first) // throws if out of range - , positions.at(ast.id_last) // throws if out of range - ); - } - - // This will catch all nodes except those inheriting from position_tagged - template - typename boost::enable_if_c< - (!is_base_of::value) - , boost::iterator_range - >::type - position_of(AST const& /* ast */) const - { - // returns an empty position - return boost::iterator_range(); - } - - // This will catch all nodes except those inheriting from position_tagged - template - void annotate(AST& /* ast */, iterator_type /* first */, iterator_type /* last */, mpl::false_) - { - // (no-op) no need for tags - } - - // This will catch all nodes inheriting from position_tagged - void annotate(position_tagged& ast, iterator_type first, iterator_type last, mpl::true_) - { - ast.id_first = int(positions.size()); - positions.push_back(first); - ast.id_last = int(positions.size()); - positions.push_back(last); - } - - template - void annotate(AST& ast, iterator_type first, iterator_type last) - { - annotate(ast, first, last, is_base_of()); - } - - Container const& - get_positions() const - { - return positions; - } - - iterator_type first() const { return first_; } - iterator_type last() const { return last_; } - - private: - - Container positions; - iterator_type first_; - iterator_type last_; - }; - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/support/ast/variant.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/support/ast/variant.hpp deleted file mode 100644 index f904e26ecc51..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/support/ast/variant.hpp +++ /dev/null @@ -1,265 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - - 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_X3_VARIANT_AUGUST_6_2011_0859AM) -#define BOOST_SPIRIT_X3_VARIANT_AUGUST_6_2011_0859AM - -#include -#include -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////////// -namespace boost { namespace spirit { namespace x3 -{ - template - class forward_ast - { - public: - - typedef T type; - - public: - - forward_ast() : p_(new T) {} - - forward_ast(forward_ast const& operand) - : p_(new T(operand.get())) {} - - forward_ast(forward_ast&& operand) BOOST_NOEXCEPT - : p_(operand.p_) - { - operand.p_ = 0; - } - - forward_ast(T const& operand) - : p_(new T(operand)) {} - - forward_ast(T&& operand) - : p_(new T(std::move(operand))) {} - - ~forward_ast() - { - boost::checked_delete(p_); - } - - forward_ast& operator=(forward_ast const& rhs) BOOST_NOEXCEPT_IF(std::is_nothrow_copy_assignable::value) - { - assign(rhs.get()); - return *this; - } - - void swap(forward_ast& operand) BOOST_NOEXCEPT - { - T* temp = operand.p_; - operand.p_ = p_; - p_ = temp; - } - - forward_ast& operator=(T const& rhs) BOOST_NOEXCEPT_IF(std::is_nothrow_copy_assignable::value) - { - assign(rhs); - return *this; - } - - forward_ast& operator=(forward_ast&& rhs) BOOST_NOEXCEPT - { - swap(rhs); - return *this; - } - - forward_ast& operator=(T&& rhs) BOOST_NOEXCEPT_IF(std::is_nothrow_move_assignable::value) - { - get() = std::move(rhs); - return *this; - } - - T& get() BOOST_NOEXCEPT { return *get_pointer(); } - const T& get() const BOOST_NOEXCEPT { return *get_pointer(); } - - T* get_pointer() BOOST_NOEXCEPT { return p_; } - const T* get_pointer() const BOOST_NOEXCEPT { return p_; } - - operator T const&() const BOOST_NOEXCEPT { return this->get(); } - operator T&() BOOST_NOEXCEPT { return this->get(); } - - private: - - void assign(const T& rhs) BOOST_NOEXCEPT_IF(std::is_nothrow_copy_assignable::value) - { - this->get() = rhs; - } - - T* p_; - }; - - // function template swap - // - // Swaps two forward_ast objects of the same type T. - // - template - inline void swap(forward_ast& lhs, forward_ast& rhs) BOOST_NOEXCEPT - { - lhs.swap(rhs); - } - - namespace detail - { - template - struct remove_forward : mpl::identity - {}; - - template - struct remove_forward> : mpl::identity - {}; - } - -#if defined(BOOST_MSVC) -# pragma warning(push) -# pragma warning(disable: 4521) // multiple copy constructors specified -#endif - template - struct variant - { - // tell spirit that this is an adapted variant - struct adapted_variant_tag; - - using variant_type = boost::variant; - using types = mpl::list::type...>; - using base_type = variant; // The current instantiation - - template - using non_self_t // used only for SFINAE checks below - = std::enable_if_t - > - ::value) - >; - - variant() BOOST_NOEXCEPT_IF(std::is_nothrow_default_constructible::value) : var() {} - - template > - explicit variant(T const& rhs) BOOST_NOEXCEPT_IF((std::is_nothrow_constructible::value)) - : var(rhs) {} - - template > - explicit variant(T&& rhs) BOOST_NOEXCEPT_IF((std::is_nothrow_constructible::value)) - : var(std::forward(rhs)) {} - - variant(variant const& rhs) BOOST_NOEXCEPT_IF(std::is_nothrow_copy_constructible::value) - : var(rhs.var) {} - - variant(variant& rhs) BOOST_NOEXCEPT_IF((std::is_nothrow_constructible::value)) - : var(rhs.var) {} - - variant(variant&& rhs) BOOST_NOEXCEPT_IF(std::is_nothrow_move_constructible::value) - : var(std::move(rhs.var)) {} - - variant& operator=(variant const& rhs) BOOST_NOEXCEPT_IF(std::is_nothrow_copy_assignable::value) - { - var = rhs.get(); - return *this; - } - - variant& operator=(variant&& rhs) BOOST_NOEXCEPT_IF(std::is_nothrow_move_assignable::value) - { - var = std::move(rhs.get()); - return *this; - } - - template > - variant& operator=(T const& rhs) BOOST_NOEXCEPT_IF((std::is_nothrow_assignable::value)) - { - var = rhs; - return *this; - } - - template > - variant& operator=(T&& rhs) BOOST_NOEXCEPT_IF((std::is_nothrow_assignable::value)) - { - var = std::forward(rhs); - return *this; - } - - template - typename F::result_type apply_visitor(F const& v) - { - return var.apply_visitor(v); - } - - template - typename F::result_type apply_visitor(F const& v) const - { - return var.apply_visitor(v); - } - - template - typename F::result_type apply_visitor(F& v) - { - return var.apply_visitor(v); - } - - template - typename F::result_type apply_visitor(F& v) const - { - return var.apply_visitor(v); - } - - variant_type const& get() const BOOST_NOEXCEPT - { - return var; - } - - variant_type& get() BOOST_NOEXCEPT - { - return var; - } - - void swap(variant& rhs) BOOST_NOEXCEPT - { - var.swap(rhs.var); - } - - variant_type var; - }; -#if defined(BOOST_MSVC) -# pragma warning(pop) -#endif -}}} - -namespace boost -{ - template - inline T const& - get(boost::spirit::x3::variant const& x) BOOST_NOEXCEPT - { - return boost::get(x.get()); - } - - template - inline T& - get(boost::spirit::x3::variant& x) BOOST_NOEXCEPT - { - return boost::get(x.get()); - } - - template - inline T const* - get(boost::spirit::x3::variant const* x) BOOST_NOEXCEPT - { - return boost::get(&x->get()); - } - - template - inline T* - get(boost::spirit::x3::variant* x) BOOST_NOEXCEPT - { - return boost::get(&x->get()); - } -} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/support/context.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/support/context.hpp deleted file mode 100644 index 9b24a3397c5a..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/support/context.hpp +++ /dev/null @@ -1,103 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - http://spirit.sourceforge.net/ - - 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_X3_CONTEXT_JAN_4_2012_1215PM) -#define BOOST_SPIRIT_X3_CONTEXT_JAN_4_2012_1215PM - -#include -#include - -namespace boost { namespace spirit { namespace x3 -{ - template - struct context - { - context(T& val, Next const& next) - : val(val), next(next) {} - - T& get(mpl::identity) const - { - return val; - } - - template - decltype(auto) get(ID_ id) const - { - return next.get(id); - } - - T& val; - Next const& next; - }; - - template - struct context - { - context(T& val) - : val(val) {} - - context(T& val, unused_type) - : val(val) {} - - T& get(mpl::identity) const - { - return val; - } - - template - unused_type get(ID_) const - { - return {}; - } - - T& val; - }; - - template - inline decltype(auto) get(Context const& context) - { - return context.get(mpl::identity()); - } - - template - inline context make_context(T& val, Next const& next) - { - return { val, next }; - } - - template - inline context make_context(T& val) - { - return { val }; - } - - namespace detail - { - template - inline Next const& - make_unique_context(T& /* val */, Next const& next, FoundVal&) - { - return next; - } - - template - inline context - make_unique_context(T& val, Next const& next, unused_type) - { - return { val, next }; - } - } - - template - inline auto - make_unique_context(T& val, Next const& next) - { - return detail::make_unique_context(val, next, x3::get(next)); - } -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/support/no_case.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/support/no_case.hpp deleted file mode 100644 index 48c06d6f345d..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/support/no_case.hpp +++ /dev/null @@ -1,103 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - - 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_X3_SUPPORT_NO_CASE_SEPT_24_2014_1125PM) -#define BOOST_SPIRIT_X3_SUPPORT_NO_CASE_SEPT_24_2014_1125PM - -#include -#include -#include - -namespace boost { namespace spirit { namespace x3 -{ - struct no_case_tag {}; - - template - struct case_compare - { - template - bool in_set(Char ch, CharSet const& set) - { - return set.test(ch); - } - - template - int32_t operator()(Char lc, Char rc) const - { - return lc - rc; - } - - template - CharClassTag get_char_class_tag(CharClassTag tag) const - { - return tag; - } - }; - - template - struct no_case_compare - { - template - bool in_set(Char ch_, CharSet const& set) - { - using char_type = typename Encoding::classify_type; - auto ch = char_type(ch_); - return set.test(ch) - || set.test(Encoding::islower(ch) - ? Encoding::toupper(ch) : Encoding::tolower(ch)); - } - - template - int32_t operator()(Char lc_, Char const rc_) const - { - using char_type = typename Encoding::classify_type; - auto lc = char_type(lc_); - auto rc = char_type(rc_); - return Encoding::islower(rc) - ? Encoding::tolower(lc) - rc : Encoding::toupper(lc) - rc; - } - - template - CharClassTag get_char_class_tag(CharClassTag tag) const - { - return tag; - } - - alpha_tag get_char_class_tag(lower_tag ) const - { - return {}; - } - - alpha_tag get_char_class_tag(upper_tag ) const - { - return {}; - } - - }; - - template - case_compare get_case_compare_impl(unused_type const&) - { - return {}; - } - - template - no_case_compare get_case_compare_impl(no_case_tag const&) - { - return {}; - } - - template - inline decltype(auto) get_case_compare(Context const& context) - { - return get_case_compare_impl(x3::get(context)); - } - - auto const no_case_compare_ = no_case_tag{}; - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/support/numeric_utils/detail/extract_int.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/support/numeric_utils/detail/extract_int.hpp deleted file mode 100644 index db5f89827a83..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/support/numeric_utils/detail/extract_int.hpp +++ /dev/null @@ -1,494 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - Copyright (c) 2001-2011 Hartmut Kaiser - Copyright (c) 2011 Jan Frederick Eick - Copyright (c) 2011 Christopher Jefferson - Copyright (c) 2006 Stephen Nutt - - 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_X3_DETAIL_EXTRACT_INT_APRIL_17_2006_0816AM) -#define BOOST_SPIRIT_X3_DETAIL_EXTRACT_INT_APRIL_17_2006_0816AM - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -#include - -#include -#include -#include - -#include -#include -#include - -#include // for std::iterator_traits - -#if !defined(SPIRIT_NUMERICS_LOOP_UNROLL) -# define SPIRIT_NUMERICS_LOOP_UNROLL 3 -#endif - -namespace boost { namespace spirit { namespace x3 { namespace detail -{ - /////////////////////////////////////////////////////////////////////////// - // - // The maximum radix digits that can be represented without - // overflow: - // - // template - // struct digits_traits::value; - // - /////////////////////////////////////////////////////////////////////////// - template - struct digits_traits; - - template - struct digits2_to_n; - -// lookup table for log2(x) : 2 <= x <= 36 -#define BOOST_SPIRIT_X3_LOG2 (#error)(#error) \ - (1000000)(1584960)(2000000)(2321920)(2584960)(2807350) \ - (3000000)(3169920)(3321920)(3459430)(3584960)(3700430) \ - (3807350)(3906890)(4000000)(4087460)(4169920)(4247920) \ - (4321920)(4392310)(4459430)(4523560)(4584960)(4643850) \ - (4700430)(4754880)(4807350)(4857980)(4906890)(4954190) \ - (5000000)(5044390)(5087460)(5129280)(5169925) \ - /***/ - -#define BOOST_PP_LOCAL_MACRO(Radix) \ - template struct digits2_to_n \ - { \ - BOOST_STATIC_CONSTANT(int, value = static_cast( \ - (Digits * 1000000) / \ - BOOST_PP_SEQ_ELEM(Radix, BOOST_SPIRIT_X3_LOG2))); \ - }; \ - /***/ - -#define BOOST_PP_LOCAL_LIMITS (2, 36) -#include BOOST_PP_LOCAL_ITERATE() - -#undef BOOST_SPIRIT_X3_LOG2 - - template - struct digits_traits : digits2_to_n::digits, Radix> - { - static_assert(std::numeric_limits::radix == 2, ""); - }; - - template - struct digits_traits - { - static int constexpr value = std::numeric_limits::digits10; - }; - - /////////////////////////////////////////////////////////////////////////// - // - // Traits class for radix specific number conversion - // - // Test the validity of a single character: - // - // template static bool is_valid(Char ch); - // - // Convert a digit from character representation to binary - // representation: - // - // template static int digit(Char ch); - // - /////////////////////////////////////////////////////////////////////////// - template - struct radix_traits - { - template - inline static bool is_valid(Char ch) - { - return (ch >= '0' && ch <= (Radix > 10 ? '9' : static_cast('0' + Radix -1))) - || (Radix > 10 && ch >= 'a' && ch <= static_cast('a' + Radix -10 -1)) - || (Radix > 10 && ch >= 'A' && ch <= static_cast('A' + Radix -10 -1)); - } - - template - inline static unsigned digit(Char ch) - { - return (Radix <= 10 || (ch >= '0' && ch <= '9')) - ? ch - '0' - : char_encoding::ascii::tolower(ch) - 'a' + 10; - } - }; - - /////////////////////////////////////////////////////////////////////////// - // positive_accumulator/negative_accumulator: Accumulator policies for - // extracting integers. Use positive_accumulator if number is positive. - // Use negative_accumulator if number is negative. - /////////////////////////////////////////////////////////////////////////// - template - struct positive_accumulator - { - template - inline static void add(T& n, Char ch, mpl::false_) // unchecked add - { - const int digit = radix_traits::digit(ch); - n = n * T(Radix) + T(digit); - } - - template - inline static bool add(T& n, Char ch, mpl::true_) // checked add - { - // Ensure n *= Radix will not overflow - T const max = (std::numeric_limits::max)(); - T const val = max / Radix; - if (n > val) - return false; - - T tmp = n * Radix; - - // Ensure n += digit will not overflow - const int digit = radix_traits::digit(ch); - if (tmp > max - digit) - return false; - - n = tmp + static_cast(digit); - return true; - } - }; - - template - struct negative_accumulator - { - template - inline static void add(T& n, Char ch, mpl::false_) // unchecked subtract - { - const int digit = radix_traits::digit(ch); - n = n * T(Radix) - T(digit); - } - - template - inline static bool add(T& n, Char ch, mpl::true_) // checked subtract - { - // Ensure n *= Radix will not underflow - T const min = (std::numeric_limits::min)(); - T const val = min / T(Radix); - if (n < val) - return false; - - T tmp = n * Radix; - - // Ensure n -= digit will not underflow - int const digit = radix_traits::digit(ch); - if (tmp < min + digit) - return false; - - n = tmp - static_cast(digit); - return true; - } - }; - - /////////////////////////////////////////////////////////////////////////// - // Common code for extract_int::parse specializations - /////////////////////////////////////////////////////////////////////////// - template - struct int_extractor - { - template - inline static bool - call(Char ch, std::size_t count, T& n, mpl::true_) - { - std::size_t constexpr - overflow_free = digits_traits::value - 1; - - if (count < overflow_free) - { - Accumulator::add(n, ch, mpl::false_()); - } - else - { - if (!Accumulator::add(n, ch, mpl::true_())) - return false; // over/underflow! - } - return true; - } - - template - inline static bool - call(Char ch, std::size_t /*count*/, T& n, mpl::false_) - { - // no need to check for overflow - Accumulator::add(n, ch, mpl::false_()); - return true; - } - - template - inline static bool - call(Char /*ch*/, std::size_t /*count*/, unused_type, mpl::false_) - { - return true; - } - - template - inline static bool - call(Char ch, std::size_t count, T& n) - { - return call(ch, count, n - , mpl::bool_< - ( (MaxDigits < 0) - || (MaxDigits > digits_traits::value) - ) - && traits::check_overflow::value - >() - ); - } - }; - - /////////////////////////////////////////////////////////////////////////// - // End of loop checking: check if the number of digits - // being parsed exceeds MaxDigits. Note: if MaxDigits == -1 - // we don't do any checking. - /////////////////////////////////////////////////////////////////////////// - template - struct check_max_digits - { - inline static bool - call(std::size_t count) - { - return count < MaxDigits; // bounded - } - }; - - template <> - struct check_max_digits<-1> - { - inline static bool - call(std::size_t /*count*/) - { - return true; // unbounded - } - }; - - /////////////////////////////////////////////////////////////////////////// - // extract_int: main code for extracting integers - /////////////////////////////////////////////////////////////////////////// -#define SPIRIT_NUMERIC_INNER_LOOP(z, x, data) \ - if (!check_max_digits::call(count + leading_zeros) \ - || it == last) \ - break; \ - ch = *it; \ - if (!radix_check::is_valid(ch) || !extractor::call(ch, count, val)) \ - break; \ - ++it; \ - ++count; \ - /**/ - - template < - typename T, unsigned Radix, unsigned MinDigits, int MaxDigits - , typename Accumulator = positive_accumulator - , bool Accumulate = false - > - struct extract_int - { -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -# pragma warning(push) -# pragma warning(disable: 4127) // conditional expression is constant -# pragma warning(disable: 4459) // declaration hides global declaration -#endif - template - inline static bool - parse_main( - Iterator& first - , Iterator const& last - , Attribute& attr) - { - typedef radix_traits radix_check; - typedef int_extractor extractor; - typedef typename - std::iterator_traits::value_type - char_type; - - Iterator it = first; - std::size_t leading_zeros = 0; - if (!Accumulate) - { - // skip leading zeros - while (it != last && *it == '0' && leading_zeros < MaxDigits) - { - ++it; - ++leading_zeros; - } - } - - typedef typename - traits::attribute_type::type - attribute_type; - - attribute_type val = Accumulate ? attr : attribute_type(0); - std::size_t count = 0; - char_type ch; - - while (true) - { - BOOST_PP_REPEAT( - SPIRIT_NUMERICS_LOOP_UNROLL - , SPIRIT_NUMERIC_INNER_LOOP, _) - } - - if (count + leading_zeros >= MinDigits) - { - traits::move_to(val, attr); - first = it; - return true; - } - return false; - } -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -# pragma warning(pop) -#endif - - template - inline static bool - parse( - Iterator& first - , Iterator const& last - , unused_type) - { - T n = 0; // must calculate value to detect over/underflow - return parse_main(first, last, n); - } - - template - inline static bool - parse( - Iterator& first - , Iterator const& last - , Attribute& attr) - { - return parse_main(first, last, attr); - } - }; -#undef SPIRIT_NUMERIC_INNER_LOOP - - /////////////////////////////////////////////////////////////////////////// - // extract_int: main code for extracting integers - // common case where MinDigits == 1 and MaxDigits = -1 - /////////////////////////////////////////////////////////////////////////// -#define SPIRIT_NUMERIC_INNER_LOOP(z, x, data) \ - if (it == last) \ - break; \ - ch = *it; \ - if (!radix_check::is_valid(ch)) \ - break; \ - if (!extractor::call(ch, count, val)) \ - return false; \ - ++it; \ - ++count; \ - /**/ - - template - struct extract_int - { -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -# pragma warning(push) -# pragma warning(disable: 4127) // conditional expression is constant -# pragma warning(disable: 4459) // declaration hides global declaration -#endif - template - inline static bool - parse_main( - Iterator& first - , Iterator const& last - , Attribute& attr) - { - typedef radix_traits radix_check; - typedef int_extractor extractor; - typedef typename - std::iterator_traits::value_type - char_type; - - Iterator it = first; - std::size_t count = 0; - if (!Accumulate) - { - // skip leading zeros - while (it != last && *it == '0') - { - ++it; - ++count; - } - - if (it == last) - { - if (count == 0) // must have at least one digit - return false; - attr = 0; - first = it; - return true; - } - } - - typedef typename - traits::attribute_type::type - attribute_type; - - attribute_type val = Accumulate ? attr : attribute_type(0); - char_type ch = *it; - - if (!radix_check::is_valid(ch) || !extractor::call(ch, 0, val)) - { - if (count == 0) // must have at least one digit - return false; - traits::move_to(val, attr); - first = it; - return true; - } - - count = 0; - ++it; - while (true) - { - BOOST_PP_REPEAT( - SPIRIT_NUMERICS_LOOP_UNROLL - , SPIRIT_NUMERIC_INNER_LOOP, _) - } - - traits::move_to(val, attr); - first = it; - return true; - } -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -# pragma warning(pop) -#endif - - template - inline static bool - parse( - Iterator& first - , Iterator const& last - , unused_type) - { - T n = 0; // must calculate value to detect over/underflow - return parse_main(first, last, n); - } - - template - inline static bool - parse( - Iterator& first - , Iterator const& last - , Attribute& attr) - { - return parse_main(first, last, attr); - } - }; - -#undef SPIRIT_NUMERIC_INNER_LOOP -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/support/numeric_utils/extract_int.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/support/numeric_utils/extract_int.hpp deleted file mode 100644 index 6e59d42bd18f..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/support/numeric_utils/extract_int.hpp +++ /dev/null @@ -1,142 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - Copyright (c) 2011 Jan Frederick Eick - - 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_X3_EXTRACT_INT_APRIL_17_2006_0830AM) -#define BOOST_SPIRIT_X3_EXTRACT_INT_APRIL_17_2006_0830AM - -#include -#include -#include - -namespace boost { namespace spirit { namespace x3 -{ - /////////////////////////////////////////////////////////////////////////// - // Extract the prefix sign (- or +), return true if a '-' was found - /////////////////////////////////////////////////////////////////////////// - template - inline bool - extract_sign(Iterator& first, Iterator const& last) - { - (void)last; // silence unused warnings - BOOST_ASSERT(first != last); // precondition - - // Extract the sign - bool neg = *first == '-'; - if (neg || (*first == '+')) - { - ++first; - return neg; - } - return false; - } - - /////////////////////////////////////////////////////////////////////////// - // Low level unsigned integer parser - /////////////////////////////////////////////////////////////////////////// - template - struct extract_uint - { - // check template parameter 'Radix' for validity - static_assert( - (Radix >= 2 && Radix <= 36), - "Error Unsupported Radix"); - - template - inline static bool call(Iterator& first, Iterator const& last, T& attr) - { - if (first == last) - return false; - - typedef detail::extract_int< - T - , Radix - , MinDigits - , MaxDigits - , detail::positive_accumulator - , Accumulate> - extract_type; - - Iterator save = first; - if (!extract_type::parse(first, last, attr)) - { - first = save; - return false; - } - return true; - } - - template - inline static bool call(Iterator& first, Iterator const& last, Attribute& attr_) - { - // this case is called when Attribute is not T - T attr; - if (call(first, last, attr)) - { - traits::move_to(attr, attr_); - return true; - } - return false; - } - }; - - /////////////////////////////////////////////////////////////////////////// - // Low level signed integer parser - /////////////////////////////////////////////////////////////////////////// - template - struct extract_int - { - // check template parameter 'Radix' for validity - static_assert( - (Radix == 2 || Radix == 8 || Radix == 10 || Radix == 16), - "Error Unsupported Radix"); - - template - inline static bool call(Iterator& first, Iterator const& last, T& attr) - { - if (first == last) - return false; - - typedef detail::extract_int< - T, Radix, MinDigits, MaxDigits> - extract_pos_type; - - typedef detail::extract_int< - T, Radix, MinDigits, MaxDigits, detail::negative_accumulator > - extract_neg_type; - - Iterator save = first; - bool hit = extract_sign(first, last); - if (hit) - hit = extract_neg_type::parse(first, last, attr); - else - hit = extract_pos_type::parse(first, last, attr); - - if (!hit) - { - first = save; - return false; - } - return true; - } - - template - inline static bool call(Iterator& first, Iterator const& last, Attribute& attr_) - { - // this case is called when Attribute is not T - T attr; - if (call(first, last, attr)) - { - traits::move_to(attr, attr_); - return true; - } - return false; - } - }; -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/support/numeric_utils/extract_real.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/support/numeric_utils/extract_real.hpp deleted file mode 100644 index 4ce8ea277171..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/support/numeric_utils/extract_real.hpp +++ /dev/null @@ -1,262 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - Copyright (c) 2001-2011 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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_X3_EXTRACT_REAL_APRIL_18_2006_0901AM) -#define BOOST_SPIRIT_X3_EXTRACT_REAL_APRIL_18_2006_0901AM - -#include -#include -#include -#include -#include -#include -#include - -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -# pragma warning(push) -# pragma warning(disable: 4100) // 'p': unreferenced formal parameter -# pragma warning(disable: 4127) // conditional expression is constant -#endif - -namespace boost { namespace spirit { namespace x3 { namespace extension -{ - using x3::traits::pow10; - - template - inline bool - scale(int exp, T& n) - { - constexpr auto max_exp = std::numeric_limits::max_exponent10; - constexpr auto min_exp = std::numeric_limits::min_exponent10; - - if (exp >= 0) - { - // return false if exp exceeds the max_exp - // do this check only for primitive types! - if (is_floating_point() && exp > max_exp) - return false; - n *= pow10(exp); - } - else - { - if (exp < min_exp) - { - n /= pow10(-min_exp); - - // return false if exp still exceeds the min_exp - // do this check only for primitive types! - exp += -min_exp; - if (is_floating_point() && exp < min_exp) - return false; - - n /= pow10(-exp); - } - else - { - n /= pow10(-exp); - } - } - return true; - } - - inline bool - scale(int /*exp*/, unused_type /*n*/) - { - // no-op for unused_type - return true; - } - - template - inline bool - scale(int exp, int frac, T& n) - { - return scale(exp - frac, n); - } - - inline bool - scale(int /*exp*/, int /*frac*/, unused_type /*n*/) - { - // no-op for unused_type - return true; - } - - inline float - negate(bool neg, float n) - { - return neg ? (std::copysignf)(n, -1.f) : n; - } - - inline double - negate(bool neg, double n) - { - return neg ? (std::copysign)(n, -1.) : n; - } - - inline long double - negate(bool neg, long double n) - { - return neg ? (std::copysignl)(n, -1.) : n; - } - - template - inline T - negate(bool neg, T const& n) - { - return neg ? -n : n; - } - - inline unused_type - negate(bool /*neg*/, unused_type n) - { - // no-op for unused_type - return n; - } -}}}} - -namespace boost { namespace spirit { namespace x3 -{ - template - struct extract_real - { - template - static bool - parse(Iterator& first, Iterator const& last, Attribute& attr, - RealPolicies const& p) - { - if (first == last) - return false; - Iterator save = first; - - // Start by parsing the sign. neg will be true if - // we got a "-" sign, false otherwise. - bool neg = p.parse_sign(first, last); - - // Now attempt to parse an integer - T n = 0; - bool got_a_number = p.parse_n(first, last, n); - - // If we did not get a number it might be a NaN, Inf or a leading - // dot. - if (!got_a_number) - { - // Check whether the number to parse is a NaN or Inf - if (p.parse_nan(first, last, n) || - p.parse_inf(first, last, n)) - { - // If we got a negative sign, negate the number - traits::move_to(extension::negate(neg, n), attr); - return true; // got a NaN or Inf, return early - } - - // If we did not get a number and our policies do not - // allow a leading dot, fail and return early (no-match) - if (!p.allow_leading_dot) - { - first = save; - return false; - } - } - - bool e_hit = false; - Iterator e_pos; - int frac_digits = 0; - - // Try to parse the dot ('.' decimal point) - if (p.parse_dot(first, last)) - { - // We got the decimal point. Now we will try to parse - // the fraction if it is there. If not, it defaults - // to zero (0) only if we already got a number. - Iterator savef = first; - if (p.parse_frac_n(first, last, n)) - { - // Optimization note: don't compute frac_digits if T is - // an unused_type. This should be optimized away by the compiler. - if (!is_same::value) - frac_digits = - static_cast(std::distance(savef, first)); - BOOST_ASSERT(frac_digits >= 0); - } - else if (!got_a_number || !p.allow_trailing_dot) - { - // We did not get a fraction. If we still haven't got a - // number and our policies do not allow a trailing dot, - // return no-match. - first = save; - return false; - } - - // Now, let's see if we can parse the exponent prefix - e_pos = first; - e_hit = p.parse_exp(first, last); - } - else - { - // No dot and no number! Return no-match. - if (!got_a_number) - { - first = save; - return false; - } - - // If we must expect a dot and we didn't see an exponent - // prefix, return no-match. - e_pos = first; - e_hit = p.parse_exp(first, last); - if (p.expect_dot && !e_hit) - { - first = save; - return false; - } - } - - if (e_hit) - { - // We got the exponent prefix. Now we will try to parse the - // actual exponent. It is an error if it is not there. - int exp = 0; - if (p.parse_exp_n(first, last, exp)) - { - // Got the exponent value. Scale the number by - // exp-frac_digits. - if (!extension::scale(exp, frac_digits, n)) - return false; - } - else - { - // If there is no number, disregard the exponent altogether. - // by resetting 'first' prior to the exponent prefix (e|E) - first = e_pos; - - // Scale the number by -frac_digits. - if (!extension::scale(-frac_digits, n)) - return false; - } - } - else if (frac_digits) - { - // No exponent found. Scale the number by -frac_digits. - if (!extension::scale(-frac_digits, n)) - return false; - } - - // If we got a negative sign, negate the number - traits::move_to(extension::negate(neg, n), attr); - - // Success!!! - return true; - } - }; - -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -# pragma warning(pop) -#endif - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/support/numeric_utils/pow10.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/support/numeric_utils/pow10.hpp deleted file mode 100644 index eb40dd28a022..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/support/numeric_utils/pow10.hpp +++ /dev/null @@ -1,113 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - Copyright (c) 2001-2011 Hartmut Kaiser - http://spirit.sourceforge.net/ - - 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_X3_POW10_DECEMBER_26_2008_1118AM) -#define BOOST_SPIRIT_X3_POW10_DECEMBER_26_2008_1118AM - -#include -#include -#include -#include -#include - -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -# pragma warning(push) -# pragma warning(disable: 4244) // conversion from 'double' to 'float', possible loss of data -#endif - -namespace boost { namespace spirit { namespace x3 { namespace traits -{ - namespace detail - { - template - struct pow10_helper - { - static T call(unsigned dim) - { - using namespace std; // allow for ADL to find the correct overload - return pow(T(10), T(dim)); - } - }; - - template <> - struct pow10_helper - { - static unused_type call(unused_type) - { - return unused; - } - }; - -#if (DBL_MAX_10_EXP == 308) // for IEEE-754 - template <> - struct pow10_helper - { - static double call(unsigned dim) - { - static double const exponents[] = - { - 1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, - 1e10, 1e11, 1e12, 1e13, 1e14, 1e15, 1e16, 1e17, 1e18, 1e19, - 1e20, 1e21, 1e22, 1e23, 1e24, 1e25, 1e26, 1e27, 1e28, 1e29, - 1e30, 1e31, 1e32, 1e33, 1e34, 1e35, 1e36, 1e37, 1e38, 1e39, - 1e40, 1e41, 1e42, 1e43, 1e44, 1e45, 1e46, 1e47, 1e48, 1e49, - 1e50, 1e51, 1e52, 1e53, 1e54, 1e55, 1e56, 1e57, 1e58, 1e59, - 1e60, 1e61, 1e62, 1e63, 1e64, 1e65, 1e66, 1e67, 1e68, 1e69, - 1e70, 1e71, 1e72, 1e73, 1e74, 1e75, 1e76, 1e77, 1e78, 1e79, - 1e80, 1e81, 1e82, 1e83, 1e84, 1e85, 1e86, 1e87, 1e88, 1e89, - 1e90, 1e91, 1e92, 1e93, 1e94, 1e95, 1e96, 1e97, 1e98, 1e99, - 1e100, 1e101, 1e102, 1e103, 1e104, 1e105, 1e106, 1e107, 1e108, 1e109, - 1e110, 1e111, 1e112, 1e113, 1e114, 1e115, 1e116, 1e117, 1e118, 1e119, - 1e120, 1e121, 1e122, 1e123, 1e124, 1e125, 1e126, 1e127, 1e128, 1e129, - 1e130, 1e131, 1e132, 1e133, 1e134, 1e135, 1e136, 1e137, 1e138, 1e139, - 1e140, 1e141, 1e142, 1e143, 1e144, 1e145, 1e146, 1e147, 1e148, 1e149, - 1e150, 1e151, 1e152, 1e153, 1e154, 1e155, 1e156, 1e157, 1e158, 1e159, - 1e160, 1e161, 1e162, 1e163, 1e164, 1e165, 1e166, 1e167, 1e168, 1e169, - 1e170, 1e171, 1e172, 1e173, 1e174, 1e175, 1e176, 1e177, 1e178, 1e179, - 1e180, 1e181, 1e182, 1e183, 1e184, 1e185, 1e186, 1e187, 1e188, 1e189, - 1e190, 1e191, 1e192, 1e193, 1e194, 1e195, 1e196, 1e197, 1e198, 1e199, - 1e200, 1e201, 1e202, 1e203, 1e204, 1e205, 1e206, 1e207, 1e208, 1e209, - 1e210, 1e211, 1e212, 1e213, 1e214, 1e215, 1e216, 1e217, 1e218, 1e219, - 1e220, 1e221, 1e222, 1e223, 1e224, 1e225, 1e226, 1e227, 1e228, 1e229, - 1e230, 1e231, 1e232, 1e233, 1e234, 1e235, 1e236, 1e237, 1e238, 1e239, - 1e240, 1e241, 1e242, 1e243, 1e244, 1e245, 1e246, 1e247, 1e248, 1e249, - 1e250, 1e251, 1e252, 1e253, 1e254, 1e255, 1e256, 1e257, 1e258, 1e259, - 1e260, 1e261, 1e262, 1e263, 1e264, 1e265, 1e266, 1e267, 1e268, 1e269, - 1e270, 1e271, 1e272, 1e273, 1e274, 1e275, 1e276, 1e277, 1e278, 1e279, - 1e280, 1e281, 1e282, 1e283, 1e284, 1e285, 1e286, 1e287, 1e288, 1e289, - 1e290, 1e291, 1e292, 1e293, 1e294, 1e295, 1e296, 1e297, 1e298, 1e299, - 1e300, 1e301, 1e302, 1e303, 1e304, 1e305, 1e306, 1e307, 1e308, - }; - BOOST_ASSERT(dim < sizeof(exponents)/sizeof(double)); - return exponents[dim]; - } - }; - - template <> - struct pow10_helper - { - static float call(unsigned dim) - { - return pow10_helper::call(dim); - } - }; -#endif // for IEEE-754 - } - - template - inline T pow10(unsigned dim) - { - return detail::pow10_helper::call(dim); - } -}}}} - -#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) -# pragma warning(pop) -#endif - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/support/subcontext.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/support/subcontext.hpp deleted file mode 100644 index 0ec40ec7c1aa..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/support/subcontext.hpp +++ /dev/null @@ -1,78 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - Copyright (c) 2013 Agustin Berge - http://spirit.sourceforge.net/ - - 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_X3_SUBCONTEXT_APR_15_2013_0840AM) -#define BOOST_SPIRIT_X3_SUBCONTEXT_APR_15_2013_0840AM - -#include -#include - -namespace boost { namespace spirit { namespace x3 -{ - template - struct subcontext; - - template <> - struct subcontext<> - { - template - subcontext(Context const& /*context*/) - {} - - template - unused_type - get(ID_) const - { - return unused; - } - }; - - template - struct subcontext - : context - { - typedef context< - typename T::first_type, typename T::second_type - > context_type; - - template - subcontext(Context const& context) - : context_type(x3::get(context)) - {} - - using context_type::get; - }; - - template - struct subcontext - : subcontext - , context< - typename T::first_type, typename T::second_type - , subcontext - > - { - typedef subcontext base_type; - typedef context< - typename T::first_type, typename T::second_type - , base_type - > context_type; - - template - subcontext(Context const& context) - : base_type(context) - , context_type( - x3::get(context) - , *static_cast(this)) - {} - - using context_type::get; - }; - -}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/support/traits/attribute_category.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/support/traits/attribute_category.hpp deleted file mode 100644 index 62e61713abba..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/support/traits/attribute_category.hpp +++ /dev/null @@ -1,95 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - http://spirit.sourceforge.net/ - - 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_X3_ATTRIBUTE_CATEGORY_JAN_4_2012_1150AM) -#define BOOST_SPIRIT_X3_ATTRIBUTE_CATEGORY_JAN_4_2012_1150AM - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace boost { namespace spirit { namespace x3 -{ - struct unused_type; -}}} - -namespace boost { namespace spirit { namespace x3 { namespace traits -{ - struct unused_attribute {}; - struct plain_attribute {}; - struct container_attribute {}; - struct tuple_attribute {}; - struct associative_attribute {}; - struct variant_attribute {}; - struct optional_attribute {}; - struct range_attribute {}; - - template - struct attribute_category - : mpl::identity {}; - - template <> - struct attribute_category - : mpl::identity {}; - - template <> - struct attribute_category - : mpl::identity {}; - - template - struct attribute_category< T - , typename enable_if< - typename mpl::eval_if< - fusion::traits::is_sequence - , fusion::traits::is_associative - , mpl::false_ - >::type >::type > - : mpl::identity {}; - - template - struct attribute_category< T - , typename enable_if< - mpl::and_< - fusion::traits::is_sequence - , mpl::not_ > - > >::type > - : mpl::identity {}; - - template - struct attribute_category>::type> - : mpl::identity {}; - - template - struct attribute_category>::type> - : mpl::identity {}; - - template - struct attribute_category>::type> - : mpl::identity {}; - - template - struct attribute_category< T - , typename enable_if< - mpl::and_< - traits::is_container - , mpl::not_ > - , mpl::not_ > - > >::type > - : mpl::identity {}; - -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/support/traits/attribute_of.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/support/traits/attribute_of.hpp deleted file mode 100644 index 1a6d760035c3..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/support/traits/attribute_of.hpp +++ /dev/null @@ -1,54 +0,0 @@ -/*============================================================================= - Copyright (c) 2001-2014 Joel de Guzman - Copyright (c) 2013 Agustin Berge - http://spirit.sourceforge.net/ - - 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_X3_ATTRIBUTE_OF_JAN_7_2012_0914AM) -#define BOOST_SPIRIT_X3_ATTRIBUTE_OF_JAN_7_2012_0914AM - -#include -#include -#include - -namespace boost { namespace spirit { namespace x3 { namespace traits -{ - /////////////////////////////////////////////////////////////////////////// - // Get the attribute type of a component. By default, this gets the - // Component's attribute_type typedef or instantiates a nested attribute - // metafunction. Components may specialize this if such an attribute_type - // is not readily available (e.g. expensive to compute at compile time). - /////////////////////////////////////////////////////////////////////////// - template - struct attribute_of; - - namespace detail - { - template - struct default_attribute_of; - - template - struct default_attribute_of::type> - : mpl::identity {}; - - template - struct default_attribute_of::type>::type> - : Component::template attribute {}; - - template - struct default_attribute_of::type> - : attribute_of{}; - } - - template - struct attribute_of : detail::default_attribute_of {}; -}}}} - -#endif diff --git a/framework/contrib/boost/include/boost/spirit/home/x3/support/traits/attribute_of_binary.hpp b/framework/contrib/boost/include/boost/spirit/home/x3/support/traits/attribute_of_binary.hpp deleted file mode 100644 index 2cbada00bb97..000000000000 --- a/framework/contrib/boost/include/boost/spirit/home/x3/support/traits/attribute_of_binary.hpp +++ /dev/null @@ -1,62 +0,0 @@ -/*============================================================================= - Copyright (c) 2020 Nikita Kniazev - - 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) -=============================================================================*/ -#ifndef BOOST_SPIRIT_X3_SUPPORT_TRAITS_ATTRIBUTE_OF_BINARY -#define BOOST_SPIRIT_X3_SUPPORT_TRAITS_ATTRIBUTE_OF_BINARY - -#include -#include -#include - -namespace boost { namespace spirit { namespace x3 { namespace detail -{ - template - struct type_sequence - { - using type = type_sequence; - - static const int size = sizeof...(T); - - template - using append = type_sequence; - - template - using prepend = type_sequence; - - template - using extend = typename U::template prepend; - - template

const &); - - BOOST_SPIRIT_CLASSIC_NAMESPACE_END - } -} -//============================================================================== -// Implementation -//============================================================================== -#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// RP_REGISTER_TEMPLATE -// -// Boost.Typeof registration from within BOOST_SPIRIT__NAMESPACE -# define BOOST_SPIRIT_RP_REGISTER_TEMPLATE(name,params) \ - BOOST_SPIRIT_RP_EMIT(NS_CLOSE,BOOST_SPIRIT__NAMESPACE,-) \ - BOOST_TYPEOF_REGISTER_TEMPLATE( \ - BOOST_SPIRIT_RP_EMIT(NS_QUALIFY,BOOST_SPIRIT__NAMESPACE,-) name, \ - params) \ - BOOST_SPIRIT_RP_EMIT(NS_OPEN,BOOST_SPIRIT__NAMESPACE,-) -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// RP_REGISTER_TYPE -// -// Boost.Typeof registration from within BOOST_SPIRIT__NAMESPACE -# define BOOST_SPIRIT_RP_REGISTER_TYPE(name) \ - BOOST_SPIRIT_RP_EMIT(NS_CLOSE,BOOST_SPIRIT__NAMESPACE,-) \ - BOOST_TYPEOF_REGISTER_TYPE( \ - BOOST_SPIRIT_RP_EMIT(NS_QUALIFY,BOOST_SPIRIT__NAMESPACE,-) name ) \ - BOOST_SPIRIT_RP_EMIT(NS_OPEN,BOOST_SPIRIT__NAMESPACE,-) -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// RP_AP_IMPL -// -// The action placeholder definition -# define BOOST_SPIRIT_RP_AP_IMPL(name,ns) \ - namespace __action_placeholder \ - { \ - struct name \ - { \ - template \ - ns :: action_chain< name, ns :: replace, Action> \ - operator=(Action const & __a) const \ - { return ns :: action_chain< name, ns :: replace, Action>(__a); } \ - \ - template \ - ns :: action_chain< name, ns :: append, Action> \ - operator+=(Action const & __a) const \ - { return ns :: action_chain< name, ns :: append, Action> (__a); } \ - }; \ - } \ - __action_placeholder:: name const name = __action_placeholder:: name (); -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// RP_IMPL_I -// -// Does some precalculation so RP_IMPL_II can look cleaner -# define BOOST_SPIRIT_RP_IMPL_I(name,pars,acts,mbrs,expr) \ - BOOST_SPIRIT_RP_IMPL_II(name, name ## _t , \ - pars, BOOST_SPIRIT_RP_ARRAY_SIZE(pars), \ - acts, BOOST_SPIRIT_RP_ARRAY_SIZE(acts), \ - mbrs, BOOST_SPIRIT_RP_ARRAY_SIZE(mbrs), expr) -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// RP_IMPL_II -# define BOOST_SPIRIT_RP_IMPL_II(name,name_t,pars,np,acts,na,mbrs,nm,x) \ - BOOST_PP_IIF(BOOST_PP_OR(np,na),BOOST_SPIRIT_RP_IMPL_III, \ - BOOST_SPIRIT_RP_OPAQUE_IMPL_II) \ - (name,name_t,pars,np,acts,na,mbrs,nm,x) -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// RP_IMPL_III -// -// The rule parser definition -# define BOOST_SPIRIT_RP_IMPL_III(name,name_t,pars,np,acts,na,mbrs,nm,x) \ - \ - template< BOOST_SPIRIT_RP_TPL_PARAMS(pars,acts,typename __,1) > \ - class name_t \ - : public ::BOOST_SPIRIT_CLASSIC_NS::parser< name_t \ - < BOOST_SPIRIT_RP_TPL_PARAMS(pars,acts,__,0) > > \ - { \ - class __rule \ - { \ - BOOST_SPIRIT_RP_EMIT(PM_STATIC,pars,__T) \ - BOOST_SPIRIT_RP_EMIT(AP_STATIC,acts,-) \ - BOOST_SPIRIT_RP_EMIT(MV_STATIC,mbrs,BOOST_PP_IDENTITY(typename)) \ - public: \ - BOOST_TYPEOF_NESTED_TYPEDEF_TPL(__expr, \ - ::BOOST_SPIRIT_CLASSIC_NS::type_of::depend_on_type<__Dummy>(x) ) \ - }; \ - \ - public: \ - \ - typedef name_t self_t; \ - typedef typename __rule::__expr::type::parser_category_t \ - parser_category_t; \ - \ - BOOST_PP_EXPR_IIF(BOOST_PP_NOR(np,na),typedef self_t const & embed_t;) \ - \ - protected: \ - \ - BOOST_SPIRIT_RP_EMIT(MV_NONSTATIC,mbrs,BOOST_PP_IDENTITY(typename)) \ - BOOST_SPIRIT_RP_IF(na,SPIRIT_RP_AP_EXTRA_MBRS,2)(np,na) \ - \ - typename __rule::__expr::type::embed_t __parser; \ - \ - public: \ - \ - explicit name_t ( BOOST_SPIRIT_RP_CTOR(PARAMS,pars,np,acts) ) \ - : BOOST_SPIRIT_RP_EMIT(MV_CTOR_INIT_LIST,mbrs,-) \ - BOOST_PP_COMMA_IF(nm) \ - BOOST_SPIRIT_RP_IF(na,SPIRIT_RP_CTOR_COMMA,4)(INIT_LIST,pars,np,acts)\ - __parser(x) \ - { } \ - \ - name_t( name_t const & that) \ - : BOOST_SPIRIT_RP_EMIT(MV_CTOR_COPY_INIT_LIST,mbrs,that) \ - BOOST_PP_COMMA_IF(nm) \ - BOOST_SPIRIT_RP_IF(na,SPIRIT_RP_CTOR_COMMA,4) \ - (COPY_INIT_LIST,pars,np,acts) \ - __parser(that.__parser) \ - { } \ - \ - template struct result \ - { \ - typedef typename ::BOOST_SPIRIT_CLASSIC_NS::parser_result< \ - typename __rule::__expr::type, Scanner>::type type; \ - }; \ - \ - template \ - typename ::BOOST_SPIRIT_CLASSIC_NS::parser_result::type \ - parse(Scanner const & s) const { return __parser.parse(s); } \ - \ - BOOST_SPIRIT_RP_IF(na,SPIRIT_RP_AP_HANDLER,5) \ - (name_t,np,acts,na,::BOOST_SPIRIT_CLASSIC_NS::type_of) \ - }; \ - \ - BOOST_PP_IF(np,BOOST_SPIRIT_RP_GEN_FUNC,BOOST_SPIRIT_RP_GLOB_VAR) \ - (name,name_t,np,na) \ - BOOST_SPIRIT_RP_REGISTER_TEMPLATE \ - (name_t,BOOST_PP_INC(BOOST_PP_ADD(np,na))) -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// RP_OPAQUE_IMPL_I -// -# define BOOST_SPIRIT_RP_OPAQUE_IMPL_I(name,pars,mbrs,expr) \ - BOOST_SPIRIT_RP_OPAQUE_IMPL_II(name, name ## _t, \ - pars,BOOST_SPIRIT_RP_ARRAY_SIZE(pars),-,-,\ - mbrs,BOOST_SPIRIT_RP_ARRAY_SIZE(mbrs),expr) -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// RP_OPAQUE_IMPL_II -// -# define BOOST_SPIRIT_RP_OPAQUE_IMPL_II(name,name_t,pars,np,_1,_2,mbrs,nm,x) \ - class name_t; \ - \ - BOOST_SPIRIT_RP_REGISTER_TYPE(name_t) \ - \ - class name_t \ - : public ::BOOST_SPIRIT_CLASSIC_NS::parser< name_t > \ - { \ - class __rule \ - { \ - BOOST_SPIRIT_RP_EMIT(PM_OPAQUE_STATIC,pars,-) \ - BOOST_SPIRIT_RP_EMIT(MV_STATIC,mbrs,BOOST_PP_EMPTY) \ - public: \ - BOOST_TYPEOF_NESTED_TYPEDEF(__expr,x) \ - }; \ - \ - public: \ - \ - typedef name_t self_t; \ - typedef __rule::__expr::type::parser_category_t parser_category_t; \ - BOOST_PP_EXPR_IIF(BOOST_PP_NOT(np),typedef self_t const & embed_t;) \ - \ - protected: \ - \ - BOOST_SPIRIT_RP_EMIT(MV_NONSTATIC,mbrs,BOOST_PP_EMPTY) \ - \ - __rule::__expr::type::embed_t __parser; \ - \ - public: \ - \ - explicit name_t (BOOST_SPIRIT_RP_EMIT(PM_OPAQUE_CTOR_PARAMS,pars,-)) \ - : BOOST_SPIRIT_RP_EMIT(MV_CTOR_INIT_LIST,mbrs,-) \ - BOOST_PP_COMMA_IF(nm) __parser(x) \ - { } \ - \ - name_t(name_t const & that) \ - : BOOST_SPIRIT_RP_EMIT(MV_CTOR_COPY_INIT_LIST,mbrs,that) \ - BOOST_PP_COMMA_IF(nm) __parser(that.__parser) \ - { } \ - \ - template struct result \ - { \ - typedef typename ::BOOST_SPIRIT_CLASSIC_NS::parser_result< \ - __rule::__expr::type, Scanner>::type type; \ - }; \ - \ - template \ - typename ::BOOST_SPIRIT_CLASSIC_NS::parser_result::type \ - parse(Scanner const & s) const { return __parser.parse(s); } \ - }; \ - \ - BOOST_PP_IF(np,BOOST_SPIRIT_RP_GEN_OPAQUE,BOOST_SPIRIT_RP_GLOB_OPAQUE) \ - (name,name_t,np,pars) -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// RP_AP_HANDLER -// -// Part of the rule parser definition for handling action placeholders -# define BOOST_SPIRIT_RP_AP_HANDLER(name_t,np,acts,na,ns) \ - private: \ - template struct __rebound_1st \ - { \ - typedef name_t < void BOOST_PP_ENUM_TRAILING_PARAMS(np,__T) , \ - typename ns ::action_concatenator<__A0,A>::type \ - BOOST_PP_COMMA_IF(BOOST_PP_DEC(na)) \ - BOOST_PP_ENUM_SHIFTED_PARAMS(na,__A) \ - > type; \ - }; \ - \ - template struct __rebound \ - { \ - typedef name_t < \ - void BOOST_PP_ENUM_TRAILING_PARAMS(np,__T) \ - BOOST_SPIRIT_RP_EMIT(AP_REBOUND_TPL_ARGS,acts,X) \ - > type; \ - }; \ - public: \ - template \ - typename __rebound_1st::type const operator[](A const & a) const \ - { \ - return typename __rebound_1st::type ( \ - BOOST_PP_ENUM_PARAMS(np,__p) BOOST_PP_COMMA_IF(np) \ - ns ::concatenate_actions(__a0,a) \ - BOOST_PP_COMMA_IF(BOOST_PP_DEC(na)) \ - BOOST_PP_ENUM_SHIFTED_PARAMS(na,__a) ); \ - } \ - template \ - typename __rebound< ns ::action_chain >::type const \ - operator[]( ns ::action_chain const & x) const \ - { \ - return typename __rebound< ns ::action_chain >::type ( \ - BOOST_PP_ENUM_PARAMS(np,__p) BOOST_PP_COMMA_IF(np) \ - BOOST_SPIRIT_RP_EMIT(AP_REBOUND_ARGS,acts,x) ); \ - } \ - template \ - typename __rebound< ns ::action_chains >::type const \ - operator[]( ns ::action_chains const & x) const \ - { \ - return typename __rebound< ns ::action_chains >::type ( \ - BOOST_PP_ENUM_PARAMS(np,__p) BOOST_PP_COMMA_IF(np) \ - BOOST_SPIRIT_RP_EMIT(AP_REBOUND_ARGS,acts,x) ); \ - } -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// RP_AP_EXTRA_MBRS -// -// Extra members we need for rebinding if there are action placeholders -# define BOOST_SPIRIT_RP_AP_EXTRA_MBRS(np,na) \ - private: \ - BOOST_PP_REPEAT(np,BOOST_SPIRIT_RP_PM_MBRS,-) \ - BOOST_PP_REPEAT(na,BOOST_SPIRIT_RP_AP_MBRS,-) -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// RP_PM_MBRS -// -// Member variables to remember parameters if there are action placeholder -# define BOOST_SPIRIT_RP_PM_MBRS(z,i,d) __T ## i __p ## i ; -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// RP_AP_MBRS -// -// Member variables to remember action placeholder substitutes -# define BOOST_SPIRIT_RP_AP_MBRS(z,i,d) __A ## i __a ## i ; -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// RP_CTOR -// -// Expands to a fragment of a constructor (parameters or init-list) -# define BOOST_SPIRIT_RP_CTOR(what,pars,np,acts) \ - BOOST_SPIRIT_RP_EMIT(PM_CTOR_ ## what,pars,__T) \ - BOOST_SPIRIT_RP_EMIT(AP_CTOR_ ## what,acts,np) -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// RP_CTOR_COMMA -// -// RP_CTOR with a trailing comma -# define BOOST_SPIRIT_RP_CTOR_COMMA(what,pars,np,acts) \ - BOOST_SPIRIT_RP_CTOR(what,pars,np,acts) , -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// RP_TPL_PARAMS -// -// Expands to the template parameters or arguments of the rule parser template -# define BOOST_SPIRIT_RP_TPL_PARAMS(pars,acts,prefix,defaults) \ - prefix ## Dummy \ - BOOST_SPIRIT_RP_EMIT(PM_TEMPLATE_PARAMS,pars,prefix ## T) \ - BOOST_SPIRIT_RP_EMIT(AP_TEMPLATE_PARAMS,acts,(prefix ## A,defaults)) -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// RP_GEN_FUNC -// -// Generator function -# define BOOST_SPIRIT_RP_GEN_FUNC(name,name_t,np,na) \ - template< BOOST_PP_ENUM_PARAMS(np,typename T) > \ - inline name_t < void BOOST_PP_ENUM_TRAILING_PARAMS(np,T) > \ - name( BOOST_PP_ENUM_BINARY_PARAMS(np,T, const & p) ) \ - { return name_t < void BOOST_PP_ENUM_TRAILING_PARAMS(np,T) > \ - (BOOST_PP_ENUM_PARAMS(np,p) BOOST_PP_ENUM_TRAILING_PARAMS(na, \ - ::BOOST_SPIRIT_CLASSIC_NS::type_of::nop_functor() BOOST_PP_INTERCEPT) ); \ - } -// RP_GEN_OPAQUE -// -// non-templated version for opaque rule parsers. -# define BOOST_SPIRIT_RP_GEN_OPAQUE(name,name_t,np,pars) \ - inline name_t name( BOOST_SPIRIT_RP_EMIT(PM_OPAQUE_GEN_PARAMS,pars,p)) \ - { return name_t (BOOST_PP_ENUM_PARAMS(np,p)); } -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// RP_GLOB_VAR -// -// Global variable -- used instead of the generator function if there are no -// parameters -# define BOOST_SPIRIT_RP_GLOB_VAR(name,name_t,np,na) \ - static name_t const name = name_t (BOOST_PP_ENUM_PARAMS(na, \ - ::BOOST_SPIRIT_CLASSIC_NS::type_of::nop_functor() BOOST_PP_INTERCEPT) ); - -// RP_GLOB_OPAQUE -// -// non-templated version for opaque rule parsers. -# define BOOST_SPIRIT_RP_GLOB_OPAQUE(name,name_t,np,pars) \ - static name_t const name = name_t () ; -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// PP_EMIT operations (fragment emittion based on array input) - -// - - Namespace handling - -// NS_OPEN -# define BOOST_SPIRIT_RP__NS_OPEN(r,data,i,elem) \ - namespace BOOST_SPIRIT_RP_OPTIONAL(elem) { - -// NS_QUALIFY -# define BOOST_SPIRIT_RP__NS_QUALIFY(r,data,i,elem) \ - BOOST_SPIRIT_RP_OPTIONAL(elem ::) - -// NS_CLOSE -# define BOOST_SPIRIT_RP__NS_CLOSE(r,data,i,elem) } - -// - - Parameter handling - -// PM_STATIC -# define BOOST_SPIRIT_RP__PM_STATIC(r,data,i,elem) \ - static typename ::boost::call_traits< data ## i >::reference elem ; - -// PM_CTOR_PARAMS -# define BOOST_SPIRIT_RP__PM_CTOR_PARAMS(r,data,i,elem) \ - BOOST_PP_COMMA_IF(i) \ - typename ::boost::call_traits< data ## i >::param_type elem - -// PM_CTOR_ARGS -# define BOOST_SPIRIT_RP__PM_CTOR_ARGS(r,data,i,elem) \ - BOOST_PP_COMMA_IF(i) elem - -// PM_CTOR_INIT_LIST -# define BOOST_SPIRIT_RP__PM_CTOR_INIT_LIST(r,data,i,elem) \ - BOOST_PP_COMMA_IF(i) __p ## i ( elem ) - -// PM_CTOR_COPY_INIT_LIST -# define BOOST_SPIRIT_RP__PM_CTOR_COPY_INIT_LIST(r,data,i,elem) \ - BOOST_PP_COMMA_IF(i) __p ## i ( that. __p ## i ) - - -// PM_TEMPLATE_PARAMS -# define BOOST_SPIRIT_RP__PM_TEMPLATE_PARAMS(r,data,i,elem) , data ## i - -// - strictly typed parameters of the opaque rule_parser - -// PM_OPAQUE_STATIC -# define BOOST_SPIRIT_RP__PM_OPAQUE_STATIC(r,data,i,elem) \ - static ::boost::call_traits< \ - BOOST_SPIRIT_RP_TYPE(BOOST_PP_TUPLE_ELEM(2,0,elem)) \ - >::reference BOOST_PP_TUPLE_ELEM(2,1,elem) ; - -// PM_OPAQUE_CTOR_PARAMS -# define BOOST_SPIRIT_RP__PM_OPAQUE_CTOR_PARAMS(r,data,i,elem) \ - BOOST_PP_COMMA_IF(i) ::boost::call_traits< \ - BOOST_SPIRIT_RP_TYPE(BOOST_PP_TUPLE_ELEM(2,0,elem)) \ - >::param_type BOOST_PP_TUPLE_ELEM(2,1,elem) - -// PM_OPAQUE_GEN_PARAMS -# define BOOST_SPIRIT_RP__PM_OPAQUE_GEN_PARAMS(r,data,i,elem) \ - BOOST_PP_COMMA_IF(i) ::boost::call_traits< \ - BOOST_SPIRIT_RP_TYPE(BOOST_PP_TUPLE_ELEM(2,0,elem)) \ - >::param_type data ## i - -// - - Member variable handling - -// MV_NONSTATIC -# define BOOST_SPIRIT_RP__MV_NONSTATIC(r,data,i,elem) \ - data() BOOST_SPIRIT_RP_TYPE(BOOST_PP_TUPLE_ELEM(3,0,elem)) \ - BOOST_PP_TUPLE_ELEM(3,1,elem) ; - -// MV_STATIC -# define BOOST_SPIRIT_RP__MV_STATIC(r,data,i,elem) \ - static data() ::boost::call_traits< \ - data() BOOST_SPIRIT_RP_TYPE(BOOST_PP_TUPLE_ELEM(3,0,elem)) \ - >::reference BOOST_PP_TUPLE_ELEM(3,1,elem) ; - -// MV_CTOR_INIT_LIST -# define BOOST_SPIRIT_RP__MV_CTOR_INIT_LIST(r,data,i,elem) \ - BOOST_PP_COMMA_IF(i) \ - BOOST_PP_TUPLE_ELEM(3,1,elem) BOOST_PP_TUPLE_ELEM(3,2,elem) - -// MV_CTOR_COPY_INIT_LIST -# define BOOST_SPIRIT_RP__MV_CTOR_COPY_INIT_LIST(r,data,i,elem) \ - BOOST_PP_COMMA_IF(i) \ - BOOST_PP_TUPLE_ELEM(3,1,elem) (data . BOOST_PP_TUPLE_ELEM(3,1,elem)) - -// - - Action placeholder handling - -// AP_STATIC -# define BOOST_SPIRIT_RP__AP_STATIC(r,data,i,elem) static __A ## i & elem ; - -// AP_CTOR_PARAMS -# define BOOST_SPIRIT_RP__AP_CTOR_PARAMS(r,data,i,elem) \ - BOOST_SPIRIT_RP_COMMA_IF_OR(data,i) \ - typename ::boost::call_traits< __A ## i >::param_type elem - -// AP_CTOR_ARGS -# define BOOST_SPIRIT_RP__AP_CTOR_ARGS(r,data,i,elem) \ - BOOST_SPIRIT_RP_COMMA_IF_OR(data,i) elem - -// AP_CTOR_INIT_LIST -# define BOOST_SPIRIT_RP__AP_CTOR_INIT_LIST(r,data,i,elem) \ - BOOST_SPIRIT_RP_COMMA_IF_OR(data,i) __a ## i ( elem ) - -// AP_CTOR_COPY_INIT_LIST -# define BOOST_SPIRIT_RP__AP_CTOR_COPY_INIT_LIST(r,data,i,elem) \ - BOOST_SPIRIT_RP_COMMA_IF_OR(data,i) __a ## i ( that. __a ## i ) - -// AP_TEMPLATE_PARAMS -# define BOOST_SPIRIT_RP__AP_TEMPLATE_PARAMS(r,data,i,elem) \ - , BOOST_PP_CAT(BOOST_PP_TUPLE_ELEM(2,0,data),i) \ - BOOST_PP_EXPR_IIF(BOOST_PP_TUPLE_ELEM(2,1,data), \ - = ::BOOST_SPIRIT_CLASSIC_NS::type_of::nop_functor) - -// AP_REBOUND_ARGS -# define BOOST_SPIRIT_RP__AP_REBOUND_ARGS(r,data,i,elem) \ - BOOST_PP_COMMA_IF(i) \ - ::BOOST_SPIRIT_CLASSIC_NS::type_of::get_placeholdee< __action_placeholder:: elem > \ - ( __a ## i , data ) - -// AP_REBOUND_TPL_ARGS -# define BOOST_SPIRIT_RP__AP_REBOUND_TPL_ARGS(r,data,i,elem) \ - , typename ::BOOST_SPIRIT_CLASSIC_NS::type_of::placeholdee< \ - __action_placeholder:: elem , __A ## i, data >::type - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// PP_EMIT -// -// Performs one of the operations in the above section on an optional array. -// -# define BOOST_SPIRIT_RP_EMIT(op, array, data) \ - BOOST_SPIRIT_RP_ARRAY_FOR_EACH_I(BOOST_SPIRIT_RP__ ## op,data,array) -// --- --- - - --- - - --- - - - - --- - - - - - - - - - - - - - - - - - - - - - -// RP_ARRAY_FOR_EACH_I -// -// Iterates an optional array. That is you can pass e.g.'-' or 'none' to denote -// emptiness. -# define BOOST_SPIRIT_RP_ARRAY_FOR_EACH_I(macro,data,optional_array) \ - BOOST_PP_IIF(BOOST_PP_IS_BINARY(optional_array), \ - BOOST_SPIRIT_RP_ARRAY_FOR_EACH_I_IMPL, \ - BOOST_PP_TUPLE_EAT(3))(macro,data,optional_array) - -// RP_ARRAY_FOR_EACH_I_IMPL -# define BOOST_SPIRIT_RP_ARRAY_FOR_EACH_I_IMPL(macro,data,array) \ - BOOST_SPIRIT_RP_IF(BOOST_PP_ARRAY_SIZE(array),PP_SEQ_FOR_EACH_I,3) \ - (macro,data, BOOST_SPIRIT_RP_IF(BOOST_PP_ARRAY_SIZE(array), \ - PP_TUPLE_TO_SEQ,2) array) -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// RP_ARRAY_SIZE -// -// Expands to the size of an "optional array". -// -// Examples: -// -// BOOST_SPIRIT_RP_ARRAY_SIZE( (2,(a,b)) ) // 2 -// BOOST_SPIRIT_RP_ARRAY_SIZE( (0,()) ) // 0 -// BOOST_SPIRIT_RP_ARRAY_SIZE( none ) // 0 -// BOOST_SPIRIT_RP_ARRAY_SIZE( - ) // 0 -// -# define BOOST_SPIRIT_RP_ARRAY_SIZE(optional_array) \ - BOOST_PP_IIF(BOOST_PP_IS_BINARY(optional_array), \ - BOOST_PP_ARRAY_SIZE, 0 BOOST_PP_TUPLE_EAT(1))(optional_array) -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// RP_OPTIONAL -// -// Expands to nothing if the argument is parenthesized. -// -// Examples: -// -// BOOST_SPIRIT_RP_OPTIONAL( foobar ) // foobar -// BOOST_SPIRIT_RP_OPTIONAL( (none) ) // evaluates to nothing -// -# define BOOST_SPIRIT_RP_OPTIONAL(elem) \ - BOOST_PP_EXPR_IIF(BOOST_PP_COMPL(BOOST_PP_IS_UNARY(elem)),elem) -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// RP_COMMA_IF_OR -// -// Expands to nothing if both arguments are zero, otherwise expands to a comma. -// -# define BOOST_SPIRIT_RP_COMMA_IF_OR(a,b) \ - BOOST_PP_IIF(BOOST_PP_OR(a,b),BOOST_PP_COMMA,BOOST_PP_EMPTY)() -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// RP_IF -// -// BOOST_SPIRIT_RP_IF(cond,name,arity) -// -// is equivalent to: -// -// BOOST_PP_IF(cond,BOOST_name,BOOST_PP_TUPLE_EAT(arity)) -// -# define BOOST_SPIRIT_RP_IF(cond,name,arity) \ - BOOST_PP_IF(cond,BOOST_ ## name,BOOST_PP_TUPLE_EAT(arity)) - -//------------------------------------------------------------------------------ -// Wrapper and gernator function to embed a parser by reference -//------------------------------------------------------------------------------ - -namespace boost { namespace spirit { - -BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN - - // Wrapper to embed a parser by reference - - template class parser_reference - : public parser< parser_reference