comparison DEPENDENCIES/generic/include/boost/phoenix/scope/this.hpp @ 101:c530137014c0

Update Boost headers (1.58.0)
author Chris Cannam
date Mon, 07 Sep 2015 11:12:49 +0100
parents 2665513ce2d3
children
comparison
equal deleted inserted replaced
100:793467b5e61c 101:c530137014c0
60 struct result; 60 struct result;
61 61
62 template <typename This, typename A0, typename Context> 62 template <typename This, typename A0, typename Context>
63 struct result<This(A0, Context)> 63 struct result<This(A0, Context)>
64 { 64 {
65 typedef 65 typedef
66 typename proto::detail::uncvref< 66 typename proto::detail::uncvref<
67 typename result_of::env< 67 typename result_of::env<
68 Context 68 Context
69 >::type 69 >::type
70 >::type 70 >::type
71 outer_env_type; 71 outer_env_type;
72
73 typedef
74 typename remove_pointer<
75 typename remove_reference<
76 typename fusion::result_of::at_c<
77 outer_env_type
78 , 0
79 >::type
80 >::type
81 >::type
82 actor_type;
83
84 typedef
85 typename result_of::eval<
86 A0 const &
87 , Context const &
88 >::type
89 a0_type;
90 72
91 typedef 73 typedef
92 vector2<actor_type const *, a0_type> 74 typename remove_pointer<
93 inner_env_type; 75 typename remove_reference<
76 typename fusion::result_of::at_c<
77 outer_env_type
78 , 0
79 >::type
80 >::type
81 >::type
82 actor_type;
94 83
95 typedef 84 typedef
96 scoped_environment< 85 typename result_of::eval<
97 inner_env_type 86 A0 const &
98 , outer_env_type 87 , Context const &
99 , vector0<> 88 >::type
100 , detail::map_local_index_to_tuple<> 89 a0_type;
101 > 90
102 env_type; 91 typedef
103 92 vector2<actor_type const *, a0_type>
104 typedef 93 inner_env_type;
105 typename result_of::eval< 94
106 actor_type const & 95 typedef
107 , typename result_of::context< 96 scoped_environment<
108 inner_env_type 97 inner_env_type
109 , typename result_of::actions< 98 , outer_env_type
110 Context 99 , vector0<>
111 >::type 100 , detail::map_local_index_to_tuple<>
112 >::type 101 >
113 >::type 102 env_type;
114 type; 103
104 typedef
105 typename result_of::eval<
106 actor_type const &
107 , typename result_of::context<
108 inner_env_type
109 , typename result_of::actions<
110 Context
111 >::type
112 >::type
113 >::type
114 type;
115 }; 115 };
116 116
117 template <typename A0, typename Context> 117 template <typename A0, typename Context>
118 typename result<this_eval(A0 const&, Context const &)>::type 118 typename result<this_eval(A0 const&, Context const &)>::type
119 operator()(A0 const & a0, Context const & ctx) const 119 operator()(A0 const & a0, Context const & ctx) const
120 { 120 {
121 121
122 //std::cout << typeid(checker).name() << "\n"; 122 //std::cout << typeid(checker).name() << "\n";
123 //std::cout << typeid(checker).name() << "\n"; 123 //std::cout << typeid(checker).name() << "\n";
124 typedef 124 typedef
125 typename proto::detail::uncvref< 125 typename proto::detail::uncvref<
126 typename result_of::env< 126 typename result_of::env<
127 Context 127 Context
128 >::type 128 >::type
129 >::type 129 >::type
130 outer_env_type; 130 outer_env_type;
131
132 typedef
133 typename remove_pointer<
134 typename remove_reference<
135 typename fusion::result_of::at_c<
136 outer_env_type
137 , 0
138 >::type
139 >::type
140 >::type
141 actor_type;
142
143 typedef
144 typename result_of::eval<
145 A0 const &
146 , Context const &
147 >::type
148 a0_type;
149 131
150 typedef 132 typedef
151 vector2<actor_type const *, a0_type> 133 typename remove_pointer<
152 inner_env_type; 134 typename remove_reference<
135 typename fusion::result_of::at_c<
136 outer_env_type
137 , 0
138 >::type
139 >::type
140 >::type
141 actor_type;
153 142
154 typedef 143 typedef
155 scoped_environment< 144 typename result_of::eval<
156 inner_env_type 145 A0 const &
157 , outer_env_type 146 , Context const &
158 , vector0<> 147 >::type
159 , detail::map_local_index_to_tuple<> 148 a0_type;
160 >
161 env_type;
162 149
163 inner_env_type inner_env = {fusion::at_c<0>(phoenix::env(ctx)), phoenix::eval(a0, ctx)}; 150 typedef
164 vector0<> locals; 151 vector2<actor_type const *, a0_type>
165 env_type env(inner_env, phoenix::env(ctx), locals); 152 inner_env_type;
166 153
167 return phoenix::eval(*fusion::at_c<0>(phoenix::env(ctx)), phoenix::context(inner_env, phoenix::actions(ctx))); 154 typedef
155 scoped_environment<
156 inner_env_type
157 , outer_env_type
158 , vector0<>
159 , detail::map_local_index_to_tuple<>
160 >
161 env_type;
162
163 inner_env_type inner_env = {fusion::at_c<0>(phoenix::env(ctx)), phoenix::eval(a0, ctx)};
164 vector0<> locals;
165 env_type env(inner_env, phoenix::env(ctx), locals);
166
167 return phoenix::eval(*fusion::at_c<0>(phoenix::env(ctx)), phoenix::context(inner_env, phoenix::actions(ctx)));
168 //return (*fusion::at_c<0>(phoenix::env(ctx)))(eval(a0, ctx)); 168 //return (*fusion::at_c<0>(phoenix::env(ctx)))(eval(a0, ctx));
169 } 169 }
170 }; 170 };
171 171
172 template <typename Dummy> 172 template <typename Dummy>
173 struct default_actions::when<rule::this_, Dummy> 173 struct default_actions::when<rule::this_, Dummy>
174 : call<this_eval> 174 : call<this_eval>
175 {}; 175 {};
176 176
177 template <typename Dummy> 177 template <typename Dummy>
178 struct is_nullary::when<rule::this_, Dummy> 178 struct is_nullary::when<rule::this_, Dummy>
179 : proto::make<mpl::false_()> 179 : proto::make<mpl::false_()>
180 {}; 180 {};
181 181
182 template <typename A0> 182 template <typename A0>
183 typename expression::this_<A0>::type const 183 typename expression::this_<A0>::type const
184 this_(A0 const & a0) 184 this_(A0 const & a0)
185 { 185 {
186 return expression::this_<A0>::make(a0); 186 return expression::this_<A0>::make(a0);
187 } 187 }
188 188
189 }} 189 }}
190 190
191 #endif 191 #endif