PageRenderTime 68ms CodeModel.GetById 33ms app.highlight 6ms RepoModel.GetById 1ms app.codeStats 25ms

/Src/Dependencies/Boost/boost/spirit/home/classic/actor/ref_const_ref_const_ref_a.hpp

http://hadesmem.googlecode.com/
C++ Header | 87 lines | 45 code | 11 blank | 31 comment | 0 complexity | c3489572447a9c6519713175f4f3bf47 MD5 | raw file
 1/*=============================================================================
 2    Copyright (c) 2003 Jonathan de Halleux (dehalleux@pelikhan.com)
 3    http://spirit.sourceforge.net/
 4
 5  Distributed under the Boost Software License, Version 1.0. (See accompanying
 6  file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 7=============================================================================*/
 8#ifndef BOOST_SPIRIT_ACTOR_REF_CONST_REF_CONST_REF_ACTOR_HPP
 9#define BOOST_SPIRIT_ACTOR_REF_CONST_REF_CONST_REF_ACTOR_HPP
10
11#include <boost/spirit/home/classic/namespace.hpp>
12
13namespace boost { namespace spirit {
14
15BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN
16
17    ///////////////////////////////////////////////////////////////////////////
18    //  Summary:
19    //  A semantic action policy holder. This holder stores a reference to ref
20    //  , a const reference to value1_ref and a const reference to value2_ref.
21    //  Typically, value1_ref is a key and value2_ref is value for associative
22    //  container operations.
23    //  act methods are feed with ref, value1_ref, value2_ref. The parse result
24    //  is not used by this holder.
25    //
26    //  (This doc uses convention available in actors.hpp)
27    //
28    //  Constructor:
29    //      ...(
30    //          T& ref_,
31    //          Value1T const& value1_ref_,
32    //          Value2T const& value2_ref_ );
33    //      where ref_, value1_ref and value2_ref_ are stored in the holder.
34    //
35    //  Action calls:
36    //      act(ref, value1_ref, value2_ref);
37    //
38    //  () operators: both
39    //
40    ///////////////////////////////////////////////////////////////////////////
41    template<
42        typename T,
43        typename Value1T,
44        typename Value2T,
45        typename ActionT
46    >
47    class ref_const_ref_const_ref_actor : public ActionT
48    {
49    private:
50        T& ref;
51        Value1T const& value1_ref;
52        Value2T const& value2_ref;
53    public:
54        ref_const_ref_const_ref_actor(
55            T& ref_,
56            Value1T const& value1_ref_,
57            Value2T const& value2_ref_
58            )
59        :
60            ref(ref_),
61            value1_ref(value1_ref_),
62            value2_ref(value2_ref_)
63        {}
64
65
66        template<typename T2>
67        void operator()(T2 const& /*val*/) const
68        {
69            this->act(ref,value1_ref,value2_ref); // defined in ActionT
70        }
71
72
73        template<typename IteratorT>
74            void operator()(
75            IteratorT const& /*first*/,
76            IteratorT const& /*last*/
77            ) const
78        {
79            this->act(ref,value1_ref,value2_ref); // defined in ActionT
80        }
81    };
82
83BOOST_SPIRIT_CLASSIC_NAMESPACE_END
84
85}}
86
87#endif