| /*============================================================================= |
| 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 <boost/spirit/home/classic/namespace.hpp> |
| #include <boost/spirit/home/classic/actor/ref_const_ref_value_actor.hpp> |
| #include <boost/spirit/home/classic/actor/ref_const_ref_const_ref_a.hpp> |
| |
| 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<T,ValueT,assign_key_action> |
| assign_key_a(T& ref_, ValueT const& value_) |
| { |
| return ref_const_ref_value_actor<T,ValueT,assign_key_action>( |
| 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 |