00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef lestes__lang__cplus__sem__ss_expr_funcall_g_hh__included
00013 #define lestes__lang__cplus__sem__ss_expr_funcall_g_hh__included
00014
00015 #include <lestes/common.hh>
00016 #include <lestes/lang/cplus/sem/ss_expression.g.hh>
00017
00018 #include <lestes/std/objectize_macros.hh>
00019 package(lestes);
00020 package(lang);
00021 package(cplus);
00022 package(sem);
00023
00024
00025 class ss_function_declaration;
00026 class ss_expression;
00027 class ss_funcall_abstr;
00028 class ss_pfuncall;
00029 class ss_funcall;
00030 class ss_ifuncall;
00031 class ss_mfuncall;
00032 class ss_vfuncall;
00033
00034
00035
00036 class ss_funcall_abstr : public ss_expression {
00037 public:
00038
00039 ptr< ::lestes::std::list< srp< ss_expression > > > args_get() const;
00040
00041
00042 void args_set(const ptr< ::lestes::std::list< srp< ss_expression > > > & );
00043
00044 virtual void accept_ss_expression_visitor( ptr< ss_expression_visitor > v ) abstract;
00045
00046
00047
00048 virtual ptr<reflection_list> reflection_get() const;
00049
00050 virtual ptr<field_list_list> field_values_get() const;
00051
00052 protected:
00053
00054 ss_funcall_abstr (
00055 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00056 ptr< ss_type > a__ss_expression__type,
00057 ptr< ss_sp > a__ss_expression__psp,
00058 ptr< ss_sp > a__ss_expression__nsp,
00059 ptr< ::lestes::std::list< srp< ss_expression > > > a__ss_funcall_abstr__args);
00060
00061
00062 virtual void gc_mark();
00063
00064 private:
00065 srp< ::lestes::std::list< srp< ss_expression > > > args;
00066 static ptr<reflection_list> reflection;
00067
00068 };
00069
00070
00071
00072 class ss_pfuncall : public ss_funcall_abstr {
00073 public:
00074
00075 ptr< ss_expression > fun_ptr_get() const;
00076
00077
00078 void fun_ptr_set(const ptr< ss_expression > &);
00079
00080
00081 ptr< ss_expression > object_get() const;
00082
00083
00084 void object_set(const ptr< ss_expression > &);
00085
00086 virtual void accept_ss_expression_visitor( ptr< ss_expression_visitor > v );
00087
00088
00089 static ptr< ss_pfuncall > create (
00090 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00091 ptr< ss_type > a__ss_expression__type,
00092 ptr< ss_sp > a__ss_expression__psp,
00093 ptr< ss_sp > a__ss_expression__nsp,
00094 ptr< ::lestes::std::list< srp< ss_expression > > > a__ss_funcall_abstr__args,
00095 ptr< ss_expression > a__ss_pfuncall__fun_ptr,
00096 ptr< ss_expression > a__ss_pfuncall__object);
00097
00098
00099
00100
00101 virtual ptr<reflection_list> reflection_get() const;
00102
00103 virtual ptr<field_list_list> field_values_get() const;
00104
00105 protected:
00106
00107 ss_pfuncall (
00108 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00109 ptr< ss_type > a__ss_expression__type,
00110 ptr< ss_sp > a__ss_expression__psp,
00111 ptr< ss_sp > a__ss_expression__nsp,
00112 ptr< ::lestes::std::list< srp< ss_expression > > > a__ss_funcall_abstr__args,
00113 ptr< ss_expression > a__ss_pfuncall__fun_ptr,
00114 ptr< ss_expression > a__ss_pfuncall__object);
00115
00116
00117 virtual void gc_mark();
00118
00119 private:
00120 srp< ss_expression > fun_ptr;
00121 srp< ss_expression > object;
00122 static ptr<reflection_list> reflection;
00123
00124 };
00125
00126
00127
00128 class ss_funcall : public ss_funcall_abstr {
00129 public:
00130
00131 ptr< ss_function_declaration > function_get() const;
00132
00133
00134 void function_set(const ptr< ss_function_declaration > &);
00135
00136 virtual void accept_ss_expression_visitor( ptr< ss_expression_visitor > v );
00137
00138
00139 static ptr< ss_funcall > create (
00140 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00141 ptr< ss_type > a__ss_expression__type,
00142 ptr< ss_sp > a__ss_expression__psp,
00143 ptr< ss_sp > a__ss_expression__nsp,
00144 ptr< ::lestes::std::list< srp< ss_expression > > > a__ss_funcall_abstr__args,
00145 ptr< ss_function_declaration > a__ss_funcall__function);
00146
00147
00148
00149
00150 virtual ptr<reflection_list> reflection_get() const;
00151
00152 virtual ptr<field_list_list> field_values_get() const;
00153
00154 protected:
00155
00156 ss_funcall (
00157 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00158 ptr< ss_type > a__ss_expression__type,
00159 ptr< ss_sp > a__ss_expression__psp,
00160 ptr< ss_sp > a__ss_expression__nsp,
00161 ptr< ::lestes::std::list< srp< ss_expression > > > a__ss_funcall_abstr__args,
00162 ptr< ss_function_declaration > a__ss_funcall__function);
00163
00164
00165 virtual void gc_mark();
00166
00167 private:
00168 srp< ss_function_declaration > function;
00169 static ptr<reflection_list> reflection;
00170
00171 };
00172
00173
00174
00175 class ss_ifuncall : public ss_funcall_abstr {
00176 public:
00177
00178 ptr< ss_expression > fun_ptr_get() const;
00179
00180
00181 void fun_ptr_set(const ptr< ss_expression > &);
00182
00183 virtual void accept_ss_expression_visitor( ptr< ss_expression_visitor > v );
00184
00185
00186 static ptr< ss_ifuncall > create (
00187 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00188 ptr< ss_type > a__ss_expression__type,
00189 ptr< ss_sp > a__ss_expression__psp,
00190 ptr< ss_sp > a__ss_expression__nsp,
00191 ptr< ::lestes::std::list< srp< ss_expression > > > a__ss_funcall_abstr__args,
00192 ptr< ss_expression > a__ss_ifuncall__fun_ptr);
00193
00194
00195
00196
00197 virtual ptr<reflection_list> reflection_get() const;
00198
00199 virtual ptr<field_list_list> field_values_get() const;
00200
00201 protected:
00202
00203 ss_ifuncall (
00204 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00205 ptr< ss_type > a__ss_expression__type,
00206 ptr< ss_sp > a__ss_expression__psp,
00207 ptr< ss_sp > a__ss_expression__nsp,
00208 ptr< ::lestes::std::list< srp< ss_expression > > > a__ss_funcall_abstr__args,
00209 ptr< ss_expression > a__ss_ifuncall__fun_ptr);
00210
00211
00212 virtual void gc_mark();
00213
00214 private:
00215 srp< ss_expression > fun_ptr;
00216 static ptr<reflection_list> reflection;
00217
00218 };
00219
00220
00221
00222 class ss_mfuncall : public ss_funcall_abstr {
00223 public:
00224
00225 ptr< ss_function_declaration > function_get() const;
00226
00227
00228 void function_set(const ptr< ss_function_declaration > &);
00229
00230
00231 ptr< ss_expression > object_get() const;
00232
00233
00234 void object_set(const ptr< ss_expression > &);
00235
00236 virtual void accept_ss_expression_visitor( ptr< ss_expression_visitor > v );
00237
00238
00239 static ptr< ss_mfuncall > create (
00240 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00241 ptr< ss_type > a__ss_expression__type,
00242 ptr< ss_sp > a__ss_expression__psp,
00243 ptr< ss_sp > a__ss_expression__nsp,
00244 ptr< ::lestes::std::list< srp< ss_expression > > > a__ss_funcall_abstr__args,
00245 ptr< ss_function_declaration > a__ss_mfuncall__function,
00246 ptr< ss_expression > a__ss_mfuncall__object);
00247
00248
00249
00250
00251 virtual ptr<reflection_list> reflection_get() const;
00252
00253 virtual ptr<field_list_list> field_values_get() const;
00254
00255 protected:
00256
00257 ss_mfuncall (
00258 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00259 ptr< ss_type > a__ss_expression__type,
00260 ptr< ss_sp > a__ss_expression__psp,
00261 ptr< ss_sp > a__ss_expression__nsp,
00262 ptr< ::lestes::std::list< srp< ss_expression > > > a__ss_funcall_abstr__args,
00263 ptr< ss_function_declaration > a__ss_mfuncall__function,
00264 ptr< ss_expression > a__ss_mfuncall__object);
00265
00266
00267 virtual void gc_mark();
00268
00269 private:
00270 srp< ss_function_declaration > function;
00271 srp< ss_expression > object;
00272 static ptr<reflection_list> reflection;
00273
00274 };
00275
00276
00277
00278 class ss_vfuncall : public ss_funcall_abstr {
00279 public:
00280
00281 ptr< ss_function_declaration > function_get() const;
00282
00283
00284 void function_set(const ptr< ss_function_declaration > &);
00285
00286
00287 ptr< ss_expression > object_ptr_get() const;
00288
00289
00290 void object_ptr_set(const ptr< ss_expression > &);
00291
00292 virtual void accept_ss_expression_visitor( ptr< ss_expression_visitor > v );
00293
00294
00295 static ptr< ss_vfuncall > create (
00296 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00297 ptr< ss_type > a__ss_expression__type,
00298 ptr< ss_sp > a__ss_expression__psp,
00299 ptr< ss_sp > a__ss_expression__nsp,
00300 ptr< ::lestes::std::list< srp< ss_expression > > > a__ss_funcall_abstr__args,
00301 ptr< ss_function_declaration > a__ss_vfuncall__function,
00302 ptr< ss_expression > a__ss_vfuncall__object_ptr);
00303
00304
00305
00306
00307 virtual ptr<reflection_list> reflection_get() const;
00308
00309 virtual ptr<field_list_list> field_values_get() const;
00310
00311 protected:
00312
00313 ss_vfuncall (
00314 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00315 ptr< ss_type > a__ss_expression__type,
00316 ptr< ss_sp > a__ss_expression__psp,
00317 ptr< ss_sp > a__ss_expression__nsp,
00318 ptr< ::lestes::std::list< srp< ss_expression > > > a__ss_funcall_abstr__args,
00319 ptr< ss_function_declaration > a__ss_vfuncall__function,
00320 ptr< ss_expression > a__ss_vfuncall__object_ptr);
00321
00322
00323 virtual void gc_mark();
00324
00325 private:
00326 srp< ss_function_declaration > function;
00327
00328 srp< ss_expression > object_ptr;
00329 static ptr<reflection_list> reflection;
00330
00331 };
00332
00333
00334 end_package(sem);
00335 end_package(cplus);
00336 end_package(lang);
00337 end_package(lestes);
00338
00339 #endif // lestes__lang__cplus__sem__ss_expr_funcall_g_hh__included