Mercurial > hg > vamp-build-and-test
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 |