00001
00002
00003 #ifndef lestes__lang__cplus__sem__or_or_g_hh__included
00004 #define lestes__lang__cplus__sem__or_or_g_hh__included
00005
00006 #include <lestes/common.hh>
00007 #include <lestes/std/list.hh>
00008 #include <lestes/std/set.hh>
00009 #include <lestes/lang/cplus/sem/ss_declaration_visitor.v.g.hh>
00010 #include <lestes/lang/cplus/sem/ss_decl_name_visitor.v.g.hh>
00011 #include <lestes/lang/cplus/sem/ss_expression.g.hh>
00012 #include <lestes/lang/cplus/sem/or_visitor.v.g.hh>
00013
00014 #include <lestes/std/objectize_macros.hh>
00015 package(lestes);
00016 package(std);
00017 class object;
00018 end_package(std);
00019 end_package(lestes);
00020
00021 package(lestes);
00022 package(std);
00023 class source_location;
00024 end_package(std);
00025 end_package(lestes);
00026
00027 package(lestes);
00028 package(lang);
00029 package(cplus);
00030 package(sem);
00031
00032
00033 class ss_declaration;
00034 class ss_expression;
00035 class ss_type;
00036 class ss_builtin_operator_declaration;
00037 class ss_function_declaration;
00038 class ss_sp;
00039 class ss_declaration_time;
00040 class ss_literal_info;
00041 class cpp_token;
00042 class or_or_functional;
00043 class or_or_functional_visitor;
00044 class or_or_functional_concrete;
00045 class or_or_functional_comma;
00046 class or_or_functional_addrof;
00047 class or_or_functional_literal;
00048 class or_or_functional_func_decl_set;
00049 class or_or_functional_decl;
00050 class or_or_functional_ambiguous;
00051 class or_or_functional_noviable;
00052 class or_or_functional_this;
00053 class or_declaration_helper;
00054 class or_builtin_operator_expression_creator;
00055 class or_funcall_creator;
00056 class or_funcall_creator_context;
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067 class or_or_functional : public ::lestes::std::object {
00068 public:
00069
00070 ptr< ss_type > type_get() const;
00071
00072
00073 void type_set(const ptr< ss_type > &);
00074
00075
00076
00077
00078
00079 virtual ptr< ss_expression > operator()(ptr< ss_sp > psp, ptr< ss_sp > nsp, ptr< ::lestes::std::source_location > location, ptr< ::lestes::std::list< srp< ss_sp > > > sp_list) abstract;
00080
00081 virtual void accept_or_or_functional_visitor( ptr< or_or_functional_visitor > v ) abstract;
00082
00083
00084
00085 virtual ptr<reflection_list> reflection_get() const;
00086
00087 virtual ptr<field_list_list> field_values_get() const;
00088
00089 protected:
00090
00091 or_or_functional (
00092 ptr< ss_type > a__or_or_functional__type);
00093
00094
00095 virtual void gc_mark();
00096
00097 private:
00098 srp< ss_type > type;
00099 static ptr<reflection_list> reflection;
00100
00101 };
00102
00103
00104
00105 class or_or_functional_concrete : public or_or_functional {
00106 public:
00107
00108 ptr< ::lestes::std::list< srp< or_or_functional > > > args_get() const;
00109
00110
00111 void args_set(const ptr< ::lestes::std::list< srp< or_or_functional > > > & );
00112
00113
00114 ptr< ss_declaration > declaration_get() const;
00115
00116
00117 void declaration_set(const ptr< ss_declaration > &);
00118
00119 virtual ptr< ss_expression > operator()(ptr< ss_sp > psp, ptr< ss_sp > nsp, ptr< ::lestes::std::source_location > location, ptr< ::lestes::std::list< srp< ss_sp > > > sp_list);
00120
00121 virtual void accept_or_or_functional_visitor( ptr< or_or_functional_visitor > v );
00122
00123
00124 static ptr< or_or_functional_concrete > create (
00125 ptr< ss_type > a__or_or_functional__type,
00126 ptr< ::lestes::std::list< srp< or_or_functional > > > a__or_or_functional_concrete__args,
00127 ptr< ss_declaration > a__or_or_functional_concrete__declaration);
00128
00129
00130
00131
00132 virtual ptr<reflection_list> reflection_get() const;
00133
00134 virtual ptr<field_list_list> field_values_get() const;
00135
00136 protected:
00137
00138 or_or_functional_concrete (
00139 ptr< ss_type > a__or_or_functional__type,
00140 ptr< ::lestes::std::list< srp< or_or_functional > > > a__or_or_functional_concrete__args,
00141 ptr< ss_declaration > a__or_or_functional_concrete__declaration);
00142
00143
00144 virtual void gc_mark();
00145
00146 private:
00147 srp< ::lestes::std::list< srp< or_or_functional > > > args;
00148 srp< ss_declaration > declaration;
00149 static ptr<reflection_list> reflection;
00150
00151 };
00152
00153
00154
00155 class or_or_functional_comma : public or_or_functional {
00156 public:
00157
00158 ptr< ::lestes::std::list< srp< or_or_functional > > > args_get() const;
00159
00160
00161 void args_set(const ptr< ::lestes::std::list< srp< or_or_functional > > > & );
00162
00163 virtual ptr< ss_expression > operator()(ptr< ss_sp > psp, ptr< ss_sp > nsp, ptr< ::lestes::std::source_location > location, ptr< ::lestes::std::list< srp< ss_sp > > > sp_list);
00164
00165 virtual void accept_or_or_functional_visitor( ptr< or_or_functional_visitor > v );
00166
00167
00168 static ptr< or_or_functional_comma > create (
00169 ptr< ss_type > a__or_or_functional__type,
00170 ptr< ::lestes::std::list< srp< or_or_functional > > > a__or_or_functional_comma__args);
00171
00172
00173
00174
00175 virtual ptr<reflection_list> reflection_get() const;
00176
00177 virtual ptr<field_list_list> field_values_get() const;
00178
00179 protected:
00180
00181 or_or_functional_comma (
00182 ptr< ss_type > a__or_or_functional__type,
00183 ptr< ::lestes::std::list< srp< or_or_functional > > > a__or_or_functional_comma__args);
00184
00185
00186 virtual void gc_mark();
00187
00188 private:
00189 srp< ::lestes::std::list< srp< or_or_functional > > > args;
00190 static ptr<reflection_list> reflection;
00191
00192 };
00193
00194
00195
00196 class or_or_functional_addrof : public or_or_functional {
00197 public:
00198
00199 ptr< ::lestes::std::list< srp< or_or_functional > > > args_get() const;
00200
00201
00202 void args_set(const ptr< ::lestes::std::list< srp< or_or_functional > > > & );
00203
00204 virtual ptr< ss_expression > operator()(ptr< ss_sp > psp, ptr< ss_sp > nsp, ptr< ::lestes::std::source_location > location, ptr< ::lestes::std::list< srp< ss_sp > > > sp_list);
00205
00206 virtual void accept_or_or_functional_visitor( ptr< or_or_functional_visitor > v );
00207
00208
00209 static ptr< or_or_functional_addrof > create (
00210 ptr< ss_type > a__or_or_functional__type,
00211 ptr< ::lestes::std::list< srp< or_or_functional > > > a__or_or_functional_addrof__args);
00212
00213
00214
00215
00216 virtual ptr<reflection_list> reflection_get() const;
00217
00218 virtual ptr<field_list_list> field_values_get() const;
00219
00220 protected:
00221
00222 or_or_functional_addrof (
00223 ptr< ss_type > a__or_or_functional__type,
00224 ptr< ::lestes::std::list< srp< or_or_functional > > > a__or_or_functional_addrof__args);
00225
00226
00227 virtual void gc_mark();
00228
00229 private:
00230 srp< ::lestes::std::list< srp< or_or_functional > > > args;
00231 static ptr<reflection_list> reflection;
00232
00233 };
00234
00235
00236
00237 class or_or_functional_literal : public or_or_functional {
00238 public:
00239
00240 ptr< ss_literal_info > literal_get() const;
00241
00242
00243 void literal_set(const ptr< ss_literal_info > &);
00244
00245 virtual ptr< ss_expression > operator()(ptr< ss_sp > psp, ptr< ss_sp > nsp, ptr< ::lestes::std::source_location > location, ptr< ::lestes::std::list< srp< ss_sp > > > sp_list);
00246
00247 virtual void accept_or_or_functional_visitor( ptr< or_or_functional_visitor > v );
00248
00249
00250 static ptr< or_or_functional_literal > create (
00251 ptr< ss_type > a__or_or_functional__type,
00252 ptr< ss_literal_info > a__or_or_functional_literal__literal);
00253
00254
00255
00256
00257 virtual ptr<reflection_list> reflection_get() const;
00258
00259 virtual ptr<field_list_list> field_values_get() const;
00260
00261 protected:
00262
00263 or_or_functional_literal (
00264 ptr< ss_type > a__or_or_functional__type,
00265 ptr< ss_literal_info > a__or_or_functional_literal__literal);
00266
00267
00268 virtual void gc_mark();
00269
00270 private:
00271 srp< ss_literal_info > literal;
00272 static ptr<reflection_list> reflection;
00273
00274 };
00275
00276
00277
00278 class or_or_functional_func_decl_set : public or_or_functional {
00279 public:
00280
00281 ptr< ::lestes::std::set< srp< ss_declaration > > > declarations_get() const;
00282
00283
00284 void declarations_set(const ptr< ::lestes::std::set< srp< ss_declaration > > > & );
00285
00286 virtual ptr< ss_expression > operator()(ptr< ss_sp > psp, ptr< ss_sp > nsp, ptr< ::lestes::std::source_location > location, ptr< ::lestes::std::list< srp< ss_sp > > > sp_list);
00287
00288 virtual void accept_or_or_functional_visitor( ptr< or_or_functional_visitor > v );
00289
00290
00291 static ptr< or_or_functional_func_decl_set > create (
00292 ptr< ss_type > a__or_or_functional__type,
00293 ptr< ::lestes::std::set< srp< ss_declaration > > > a__or_or_functional_func_decl_set__declarations);
00294
00295
00296
00297
00298 virtual ptr<reflection_list> reflection_get() const;
00299
00300 virtual ptr<field_list_list> field_values_get() const;
00301
00302 protected:
00303
00304 or_or_functional_func_decl_set (
00305 ptr< ss_type > a__or_or_functional__type,
00306 ptr< ::lestes::std::set< srp< ss_declaration > > > a__or_or_functional_func_decl_set__declarations);
00307
00308
00309 virtual void gc_mark();
00310
00311 private:
00312 srp< ::lestes::std::set< srp< ss_declaration > > > declarations;
00313 static ptr<reflection_list> reflection;
00314
00315 };
00316
00317
00318
00319 class or_or_functional_decl : public or_or_functional {
00320 public:
00321
00322 ptr< ss_declaration > declaration_get() const;
00323
00324
00325 void declaration_set(const ptr< ss_declaration > &);
00326
00327 virtual ptr< ss_expression > operator()(ptr< ss_sp > psp, ptr< ss_sp > nsp, ptr< ::lestes::std::source_location > location, ptr< ::lestes::std::list< srp< ss_sp > > > sp_list);
00328
00329 virtual void accept_or_or_functional_visitor( ptr< or_or_functional_visitor > v );
00330
00331
00332 static ptr< or_or_functional_decl > create (
00333 ptr< ss_type > a__or_or_functional__type,
00334 ptr< ss_declaration > a__or_or_functional_decl__declaration);
00335
00336
00337
00338
00339 virtual ptr<reflection_list> reflection_get() const;
00340
00341 virtual ptr<field_list_list> field_values_get() const;
00342
00343 protected:
00344
00345 or_or_functional_decl (
00346 ptr< ss_type > a__or_or_functional__type,
00347 ptr< ss_declaration > a__or_or_functional_decl__declaration);
00348
00349
00350 virtual void gc_mark();
00351
00352 private:
00353 srp< ss_declaration > declaration;
00354 static ptr<reflection_list> reflection;
00355
00356 };
00357
00358
00359
00360 class or_or_functional_ambiguous : public or_or_functional {
00361 public:
00362
00363 ptr< ::lestes::std::set< srp< ss_function_declaration > > > viables_get() const;
00364
00365
00366 void viables_set(const ptr< ::lestes::std::set< srp< ss_function_declaration > > > & );
00367
00368 virtual ptr< ss_expression > operator()(ptr< ss_sp > psp, ptr< ss_sp > nsp, ptr< ::lestes::std::source_location > location, ptr< ::lestes::std::list< srp< ss_sp > > > sp_list);
00369
00370 virtual void accept_or_or_functional_visitor( ptr< or_or_functional_visitor > v );
00371
00372
00373 static ptr< or_or_functional_ambiguous > create (
00374 ptr< ss_type > a__or_or_functional__type,
00375 ptr< ::lestes::std::set< srp< ss_function_declaration > > > a__or_or_functional_ambiguous__viables);
00376
00377
00378
00379
00380 virtual ptr<reflection_list> reflection_get() const;
00381
00382 virtual ptr<field_list_list> field_values_get() const;
00383
00384 protected:
00385
00386 or_or_functional_ambiguous (
00387 ptr< ss_type > a__or_or_functional__type,
00388 ptr< ::lestes::std::set< srp< ss_function_declaration > > > a__or_or_functional_ambiguous__viables);
00389
00390
00391 virtual void gc_mark();
00392
00393 private:
00394 srp< ::lestes::std::set< srp< ss_function_declaration > > > viables;
00395 static ptr<reflection_list> reflection;
00396
00397 };
00398
00399
00400
00401 class or_or_functional_noviable : public or_or_functional {
00402 public:
00403 virtual ptr< ss_expression > operator()(ptr< ss_sp > psp, ptr< ss_sp > nsp, ptr< ::lestes::std::source_location > location, ptr< ::lestes::std::list< srp< ss_sp > > > sp_list);
00404
00405 virtual void accept_or_or_functional_visitor( ptr< or_or_functional_visitor > v );
00406
00407
00408 static ptr< or_or_functional_noviable > create (
00409 ptr< ss_type > a__or_or_functional__type);
00410
00411
00412
00413
00414 virtual ptr<reflection_list> reflection_get() const;
00415
00416 virtual ptr<field_list_list> field_values_get() const;
00417
00418 protected:
00419
00420 or_or_functional_noviable (
00421 ptr< ss_type > a__or_or_functional__type);
00422
00423
00424 virtual void gc_mark();
00425
00426 private:
00427 static ptr<reflection_list> reflection;
00428
00429 };
00430
00431
00432
00433 class or_or_functional_this : public or_or_functional {
00434 public:
00435 virtual ptr< ss_expression > operator()(ptr< ss_sp > psp, ptr< ss_sp > nsp, ptr< ::lestes::std::source_location > location, ptr< ::lestes::std::list< srp< ss_sp > > > sp_list);
00436
00437 virtual void accept_or_or_functional_visitor( ptr< or_or_functional_visitor > v );
00438
00439
00440 static ptr< or_or_functional_this > create (
00441 ptr< ss_type > a__or_or_functional__type);
00442
00443
00444
00445
00446 virtual ptr<reflection_list> reflection_get() const;
00447
00448 virtual ptr<field_list_list> field_values_get() const;
00449
00450 protected:
00451
00452 or_or_functional_this (
00453 ptr< ss_type > a__or_or_functional__type);
00454
00455
00456 virtual void gc_mark();
00457
00458 private:
00459 static ptr<reflection_list> reflection;
00460
00461 };
00462
00463
00464
00465 class or_declaration_helper : public ss_declaration_visitor {
00466 public:
00467
00468 ptr< ss_declaration > declaration_get() const;
00469
00470
00471 void declaration_set(const ptr< ss_declaration > &);
00472
00473
00474 ptr< ss_sp > psp_get() const;
00475
00476
00477 void psp_set(const ptr< ss_sp > &);
00478
00479
00480 ptr< ss_sp > nsp_get() const;
00481
00482
00483 void nsp_set(const ptr< ss_sp > &);
00484
00485
00486 ptr< ::lestes::std::list< srp< or_or_functional > > > arguments_get() const;
00487
00488
00489 void arguments_set(const ptr< ::lestes::std::list< srp< or_or_functional > > > & );
00490
00491
00492 ptr< ::lestes::std::source_location > location_get() const;
00493
00494
00495 void location_set(const ptr< ::lestes::std::source_location > &);
00496
00497
00498 ptr< ::lestes::std::list< srp< ss_sp > > > sp_list_get() const;
00499
00500
00501 void sp_list_set(const ptr< ::lestes::std::list< srp< ss_sp > > > & );
00502
00503
00504 ptr< ss_expression > result_get() const;
00505
00506
00507 void result_set(const ptr< ss_expression > &);
00508
00509 virtual void visit_ss_namespace_definition(ptr< ::lestes::lang::cplus::sem::ss_namespace_definition > );
00510
00511 virtual void visit_ss_object_declaration(ptr< ::lestes::lang::cplus::sem::ss_object_declaration > );
00512
00513 virtual void visit_ss_bitfield_declaration(ptr< ::lestes::lang::cplus::sem::ss_bitfield_declaration > );
00514
00515 virtual void visit_ss_parameter_declaration(ptr< ::lestes::lang::cplus::sem::ss_parameter_declaration > );
00516
00517 virtual void visit_ss_fake_declaration(ptr< ::lestes::lang::cplus::sem::ss_fake_declaration > );
00518
00519 virtual void visit_ss_injected_class_declaration(ptr< ::lestes::lang::cplus::sem::ss_injected_class_declaration > );
00520
00521 virtual void visit_ss_enum_definition(ptr< ::lestes::lang::cplus::sem::ss_enum_definition > );
00522
00523 virtual void visit_ss_typedef_definition(ptr< ::lestes::lang::cplus::sem::ss_typedef_definition > );
00524
00525 virtual void visit_ss_enumerator_declaration(ptr< ::lestes::lang::cplus::sem::ss_enumerator_declaration > );
00526
00527 virtual void visit_ss_structure_declaration(ptr< ::lestes::lang::cplus::sem::ss_structure_declaration > );
00528
00529 virtual void visit_ss_function_declaration(ptr< ::lestes::lang::cplus::sem::ss_function_declaration > );
00530
00531 virtual void visit_ss_method_declaration(ptr< ::lestes::lang::cplus::sem::ss_method_declaration > );
00532
00533 virtual void visit_ss_using_declaration(ptr< ::lestes::lang::cplus::sem::ss_using_declaration > );
00534
00535 virtual void visit_ss_compound_stmt_declaration(ptr< ::lestes::lang::cplus::sem::ss_compound_stmt_declaration > );
00536
00537 virtual void visit_ss_builtin_operator_declaration(ptr< ::lestes::lang::cplus::sem::ss_builtin_operator_declaration > );
00538
00539
00540
00541 static ptr< or_declaration_helper > create (
00542 ptr< ss_declaration > a__or_declaration_helper__declaration,
00543 ptr< ss_sp > a__or_declaration_helper__psp,
00544 ptr< ss_sp > a__or_declaration_helper__nsp,
00545 ptr< ::lestes::std::list< srp< or_or_functional > > > a__or_declaration_helper__arguments,
00546 ptr< ::lestes::std::source_location > a__or_declaration_helper__location,
00547 ptr< ::lestes::std::list< srp< ss_sp > > > a__or_declaration_helper__sp_list,
00548 ptr< ss_expression > a__or_declaration_helper__result);
00549
00550
00551 static ptr< or_declaration_helper > create (
00552 ptr< ss_declaration > a__or_declaration_helper__declaration,
00553 ptr< ss_sp > a__or_declaration_helper__psp,
00554 ptr< ss_sp > a__or_declaration_helper__nsp,
00555 ptr< ::lestes::std::list< srp< or_or_functional > > > a__or_declaration_helper__arguments,
00556 ptr< ::lestes::std::source_location > a__or_declaration_helper__location,
00557 ptr< ::lestes::std::list< srp< ss_sp > > > a__or_declaration_helper__sp_list);
00558
00559
00560
00561
00562 virtual ptr<reflection_list> reflection_get() const;
00563
00564 virtual ptr<field_list_list> field_values_get() const;
00565
00566 protected:
00567
00568 or_declaration_helper (
00569 ptr< ss_declaration > a__or_declaration_helper__declaration,
00570 ptr< ss_sp > a__or_declaration_helper__psp,
00571 ptr< ss_sp > a__or_declaration_helper__nsp,
00572 ptr< ::lestes::std::list< srp< or_or_functional > > > a__or_declaration_helper__arguments,
00573 ptr< ::lestes::std::source_location > a__or_declaration_helper__location,
00574 ptr< ::lestes::std::list< srp< ss_sp > > > a__or_declaration_helper__sp_list,
00575 ptr< ss_expression > a__or_declaration_helper__result);
00576
00577
00578 virtual void gc_mark();
00579
00580 private:
00581 srp< ss_declaration > declaration;
00582 srp< ss_sp > psp;
00583 srp< ss_sp > nsp;
00584 srp< ::lestes::std::list< srp< or_or_functional > > > arguments;
00585 srp< ::lestes::std::source_location > location;
00586 srp< ::lestes::std::list< srp< ss_sp > > > sp_list;
00587 srp< ss_expression > result;
00588 static ptr<reflection_list> reflection;
00589
00590 };
00591
00592
00593
00594 class or_builtin_operator_expression_creator : public ss_decl_name_visitor {
00595 public:
00596
00597 ptr< ss_builtin_operator_declaration > declaration_get() const;
00598
00599
00600 void declaration_set(const ptr< ss_builtin_operator_declaration > &);
00601
00602
00603 ptr< ss_sp > psp_get() const;
00604
00605
00606 void psp_set(const ptr< ss_sp > &);
00607
00608
00609 ptr< ss_sp > nsp_get() const;
00610
00611
00612 void nsp_set(const ptr< ss_sp > &);
00613
00614
00615 ptr< ::lestes::std::list< srp< or_or_functional > > > arguments_get() const;
00616
00617
00618 void arguments_set(const ptr< ::lestes::std::list< srp< or_or_functional > > > & );
00619
00620
00621 ptr< ::lestes::std::source_location > location_get() const;
00622
00623
00624 void location_set(const ptr< ::lestes::std::source_location > &);
00625
00626
00627 ptr< ::lestes::std::list< srp< ss_sp > > > sp_list_get() const;
00628
00629
00630 void sp_list_set(const ptr< ::lestes::std::list< srp< ss_sp > > > & );
00631
00632
00633 ptr< ss_expression > result_get() const;
00634
00635
00636 void result_set(const ptr< ss_expression > &);
00637
00638 template <typename SS> void construct_bin_op_nosideeff();
00639
00640 template <typename SS> void construct_bin_op_nosideeff_arith();
00641
00642 template <typename SS> void construct_bin_op_nosideeff_newsp();
00643
00644 template <typename SS> void construct_un_op_nosideeff();
00645
00646 template <typename SS> void construct_op_crement();
00647
00648 template <typename SS> void construct_op_equal_sideeff();
00649
00650 virtual void visit_ss_ordinary_name(ptr< ::lestes::lang::cplus::sem::ss_ordinary_name > );
00651
00652 virtual void visit_ss_conversion_name(ptr< ::lestes::lang::cplus::sem::ss_conversion_name > );
00653
00654 virtual void visit_ss_dummy_name(ptr< ::lestes::lang::cplus::sem::ss_dummy_name > );
00655
00656 virtual void visit_ss_operator_new(ptr< ::lestes::lang::cplus::sem::ss_operator_new > );
00657
00658 virtual void visit_ss_operator_delete(ptr< ::lestes::lang::cplus::sem::ss_operator_delete > );
00659
00660 virtual void visit_ss_operator_new_array(ptr< ::lestes::lang::cplus::sem::ss_operator_new_array > );
00661
00662 virtual void visit_ss_operator_delete_array(ptr< ::lestes::lang::cplus::sem::ss_operator_delete_array > );
00663
00664 virtual void visit_ss_operator_add(ptr< ::lestes::lang::cplus::sem::ss_operator_add > );
00665
00666 virtual void visit_ss_operator_sub(ptr< ::lestes::lang::cplus::sem::ss_operator_sub > );
00667
00668 virtual void visit_ss_operator_mul(ptr< ::lestes::lang::cplus::sem::ss_operator_mul > );
00669
00670 virtual void visit_ss_operator_div(ptr< ::lestes::lang::cplus::sem::ss_operator_div > );
00671
00672 virtual void visit_ss_operator_mod(ptr< ::lestes::lang::cplus::sem::ss_operator_mod > );
00673
00674 virtual void visit_ss_operator_bxor(ptr< ::lestes::lang::cplus::sem::ss_operator_bxor > );
00675
00676 virtual void visit_ss_operator_band(ptr< ::lestes::lang::cplus::sem::ss_operator_band > );
00677
00678 virtual void visit_ss_operator_bor(ptr< ::lestes::lang::cplus::sem::ss_operator_bor > );
00679
00680 virtual void visit_ss_operator_bnot(ptr< ::lestes::lang::cplus::sem::ss_operator_bnot > );
00681
00682 virtual void visit_ss_operator_lnot(ptr< ::lestes::lang::cplus::sem::ss_operator_lnot > );
00683
00684 virtual void visit_ss_operator_assign(ptr< ::lestes::lang::cplus::sem::ss_operator_assign > );
00685
00686 virtual void visit_ss_operator_assign_add(ptr< ::lestes::lang::cplus::sem::ss_operator_assign_add > );
00687
00688 virtual void visit_ss_operator_assign_sub(ptr< ::lestes::lang::cplus::sem::ss_operator_assign_sub > );
00689
00690 virtual void visit_ss_operator_assign_mul(ptr< ::lestes::lang::cplus::sem::ss_operator_assign_mul > );
00691
00692 virtual void visit_ss_operator_assign_div(ptr< ::lestes::lang::cplus::sem::ss_operator_assign_div > );
00693
00694 virtual void visit_ss_operator_assign_mod(ptr< ::lestes::lang::cplus::sem::ss_operator_assign_mod > );
00695
00696 virtual void visit_ss_operator_assign_bxor(ptr< ::lestes::lang::cplus::sem::ss_operator_assign_bxor > );
00697
00698 virtual void visit_ss_operator_assign_band(ptr< ::lestes::lang::cplus::sem::ss_operator_assign_band > );
00699
00700 virtual void visit_ss_operator_assign_bor(ptr< ::lestes::lang::cplus::sem::ss_operator_assign_bor > );
00701
00702 virtual void visit_ss_operator_assign_shl(ptr< ::lestes::lang::cplus::sem::ss_operator_assign_shl > );
00703
00704 virtual void visit_ss_operator_assign_shr(ptr< ::lestes::lang::cplus::sem::ss_operator_assign_shr > );
00705
00706 virtual void visit_ss_operator_shr(ptr< ::lestes::lang::cplus::sem::ss_operator_shr > );
00707
00708 virtual void visit_ss_operator_shl(ptr< ::lestes::lang::cplus::sem::ss_operator_shl > );
00709
00710 virtual void visit_ss_operator_sbl(ptr< ::lestes::lang::cplus::sem::ss_operator_sbl > );
00711
00712 virtual void visit_ss_operator_sbg(ptr< ::lestes::lang::cplus::sem::ss_operator_sbg > );
00713
00714 virtual void visit_ss_operator_sbng(ptr< ::lestes::lang::cplus::sem::ss_operator_sbng > );
00715
00716 virtual void visit_ss_operator_sbnl(ptr< ::lestes::lang::cplus::sem::ss_operator_sbnl > );
00717
00718 virtual void visit_ss_operator_sbe(ptr< ::lestes::lang::cplus::sem::ss_operator_sbe > );
00719
00720 virtual void visit_ss_operator_sbne(ptr< ::lestes::lang::cplus::sem::ss_operator_sbne > );
00721
00722 virtual void visit_ss_operator_land(ptr< ::lestes::lang::cplus::sem::ss_operator_land > );
00723
00724 virtual void visit_ss_operator_lor(ptr< ::lestes::lang::cplus::sem::ss_operator_lor > );
00725
00726 virtual void visit_ss_operator_inc(ptr< ::lestes::lang::cplus::sem::ss_operator_inc > );
00727
00728 virtual void visit_ss_operator_dec(ptr< ::lestes::lang::cplus::sem::ss_operator_dec > );
00729
00730 virtual void visit_ss_operator_comma(ptr< ::lestes::lang::cplus::sem::ss_operator_comma > );
00731
00732 virtual void visit_ss_operator_access(ptr< ::lestes::lang::cplus::sem::ss_operator_access > );
00733
00734 virtual void visit_ss_operator_access_member(ptr< ::lestes::lang::cplus::sem::ss_operator_access_member > );
00735
00736 virtual void visit_ss_operator_function_call(ptr< ::lestes::lang::cplus::sem::ss_operator_function_call > );
00737
00738 virtual void visit_ss_operator_array(ptr< ::lestes::lang::cplus::sem::ss_operator_array > );
00739
00740 virtual void visit_ss_operator_ternary(ptr< ::lestes::lang::cplus::sem::ss_operator_ternary > );
00741
00742
00743
00744 static ptr< or_builtin_operator_expression_creator > create (
00745 ptr< ss_builtin_operator_declaration > a__or_builtin_operator_expression_creator__declaration,
00746 ptr< ss_sp > a__or_builtin_operator_expression_creator__psp,
00747 ptr< ss_sp > a__or_builtin_operator_expression_creator__nsp,
00748 ptr< ::lestes::std::list< srp< or_or_functional > > > a__or_builtin_operator_expression_creator__arguments,
00749 ptr< ::lestes::std::source_location > a__or_builtin_operator_expression_creator__location,
00750 ptr< ::lestes::std::list< srp< ss_sp > > > a__or_builtin_operator_expression_creator__sp_list,
00751 ptr< ss_expression > a__or_builtin_operator_expression_creator__result);
00752
00753
00754 static ptr< or_builtin_operator_expression_creator > create (
00755 ptr< ss_builtin_operator_declaration > a__or_builtin_operator_expression_creator__declaration,
00756 ptr< ss_sp > a__or_builtin_operator_expression_creator__psp,
00757 ptr< ss_sp > a__or_builtin_operator_expression_creator__nsp,
00758 ptr< ::lestes::std::list< srp< or_or_functional > > > a__or_builtin_operator_expression_creator__arguments,
00759 ptr< ::lestes::std::source_location > a__or_builtin_operator_expression_creator__location,
00760 ptr< ::lestes::std::list< srp< ss_sp > > > a__or_builtin_operator_expression_creator__sp_list);
00761
00762
00763
00764
00765 virtual ptr<reflection_list> reflection_get() const;
00766
00767 virtual ptr<field_list_list> field_values_get() const;
00768
00769 protected:
00770
00771 or_builtin_operator_expression_creator (
00772 ptr< ss_builtin_operator_declaration > a__or_builtin_operator_expression_creator__declaration,
00773 ptr< ss_sp > a__or_builtin_operator_expression_creator__psp,
00774 ptr< ss_sp > a__or_builtin_operator_expression_creator__nsp,
00775 ptr< ::lestes::std::list< srp< or_or_functional > > > a__or_builtin_operator_expression_creator__arguments,
00776 ptr< ::lestes::std::source_location > a__or_builtin_operator_expression_creator__location,
00777 ptr< ::lestes::std::list< srp< ss_sp > > > a__or_builtin_operator_expression_creator__sp_list,
00778 ptr< ss_expression > a__or_builtin_operator_expression_creator__result);
00779
00780
00781 virtual void gc_mark();
00782
00783 private:
00784 srp< ss_builtin_operator_declaration > declaration;
00785 srp< ss_sp > psp;
00786 srp< ss_sp > nsp;
00787 srp< ::lestes::std::list< srp< or_or_functional > > > arguments;
00788 srp< ::lestes::std::source_location > location;
00789 srp< ::lestes::std::list< srp< ss_sp > > > sp_list;
00790 srp< ss_expression > result;
00791 static ptr<reflection_list> reflection;
00792
00793 };
00794
00795
00796
00797 class or_funcall_creator : public ss_declaration_visitor {
00798 public:
00799
00800 ptr< ss_function_declaration > declaration_get() const;
00801
00802
00803 void declaration_set(const ptr< ss_function_declaration > &);
00804
00805
00806 ptr< ss_sp > psp_get() const;
00807
00808
00809 void psp_set(const ptr< ss_sp > &);
00810
00811
00812 ptr< ss_sp > nsp_get() const;
00813
00814
00815 void nsp_set(const ptr< ss_sp > &);
00816
00817
00818 ptr< ::lestes::std::list< srp< or_or_functional > > > arguments_get() const;
00819
00820
00821 void arguments_set(const ptr< ::lestes::std::list< srp< or_or_functional > > > & );
00822
00823
00824 ptr< ::lestes::std::source_location > location_get() const;
00825
00826
00827 void location_set(const ptr< ::lestes::std::source_location > &);
00828
00829
00830 ptr< ::lestes::std::list< srp< ss_sp > > > sp_list_get() const;
00831
00832
00833 void sp_list_set(const ptr< ::lestes::std::list< srp< ss_sp > > > & );
00834
00835
00836 ptr< ss_expression > result_get() const;
00837
00838
00839 void result_set(const ptr< ss_expression > &);
00840
00841 template <typename SS> void construct_bin_op_nosideeff();
00842
00843 template <typename SS> void construct_un_op_nosideeff();
00844
00845 template <typename SS> void construct_op_equal_sideeff();
00846
00847 virtual void visit_ss_namespace_definition(ptr< ::lestes::lang::cplus::sem::ss_namespace_definition > );
00848
00849 virtual void visit_ss_object_declaration(ptr< ::lestes::lang::cplus::sem::ss_object_declaration > );
00850
00851 virtual void visit_ss_bitfield_declaration(ptr< ::lestes::lang::cplus::sem::ss_bitfield_declaration > );
00852
00853 virtual void visit_ss_parameter_declaration(ptr< ::lestes::lang::cplus::sem::ss_parameter_declaration > );
00854
00855 virtual void visit_ss_fake_declaration(ptr< ::lestes::lang::cplus::sem::ss_fake_declaration > );
00856
00857 virtual void visit_ss_injected_class_declaration(ptr< ::lestes::lang::cplus::sem::ss_injected_class_declaration > );
00858
00859 virtual void visit_ss_enum_definition(ptr< ::lestes::lang::cplus::sem::ss_enum_definition > );
00860
00861 virtual void visit_ss_typedef_definition(ptr< ::lestes::lang::cplus::sem::ss_typedef_definition > );
00862
00863 virtual void visit_ss_enumerator_declaration(ptr< ::lestes::lang::cplus::sem::ss_enumerator_declaration > );
00864
00865 virtual void visit_ss_structure_declaration(ptr< ::lestes::lang::cplus::sem::ss_structure_declaration > );
00866
00867 virtual void visit_ss_function_declaration(ptr< ::lestes::lang::cplus::sem::ss_function_declaration > );
00868
00869 virtual void visit_ss_method_declaration(ptr< ::lestes::lang::cplus::sem::ss_method_declaration > );
00870
00871 virtual void visit_ss_using_declaration(ptr< ::lestes::lang::cplus::sem::ss_using_declaration > );
00872
00873 virtual void visit_ss_compound_stmt_declaration(ptr< ::lestes::lang::cplus::sem::ss_compound_stmt_declaration > );
00874
00875 virtual void visit_ss_builtin_operator_declaration(ptr< ::lestes::lang::cplus::sem::ss_builtin_operator_declaration > );
00876
00877
00878
00879 static ptr< or_funcall_creator > create (
00880 ptr< ss_function_declaration > a__or_funcall_creator__declaration,
00881 ptr< ss_sp > a__or_funcall_creator__psp,
00882 ptr< ss_sp > a__or_funcall_creator__nsp,
00883 ptr< ::lestes::std::list< srp< or_or_functional > > > a__or_funcall_creator__arguments,
00884 ptr< ::lestes::std::source_location > a__or_funcall_creator__location,
00885 ptr< ::lestes::std::list< srp< ss_sp > > > a__or_funcall_creator__sp_list,
00886 ptr< ss_expression > a__or_funcall_creator__result);
00887
00888
00889 static ptr< or_funcall_creator > create (
00890 ptr< ss_function_declaration > a__or_funcall_creator__declaration,
00891 ptr< ss_sp > a__or_funcall_creator__psp,
00892 ptr< ss_sp > a__or_funcall_creator__nsp,
00893 ptr< ::lestes::std::list< srp< or_or_functional > > > a__or_funcall_creator__arguments,
00894 ptr< ::lestes::std::source_location > a__or_funcall_creator__location,
00895 ptr< ::lestes::std::list< srp< ss_sp > > > a__or_funcall_creator__sp_list);
00896
00897
00898
00899
00900 virtual ptr<reflection_list> reflection_get() const;
00901
00902 virtual ptr<field_list_list> field_values_get() const;
00903
00904 protected:
00905
00906 or_funcall_creator (
00907 ptr< ss_function_declaration > a__or_funcall_creator__declaration,
00908 ptr< ss_sp > a__or_funcall_creator__psp,
00909 ptr< ss_sp > a__or_funcall_creator__nsp,
00910 ptr< ::lestes::std::list< srp< or_or_functional > > > a__or_funcall_creator__arguments,
00911 ptr< ::lestes::std::source_location > a__or_funcall_creator__location,
00912 ptr< ::lestes::std::list< srp< ss_sp > > > a__or_funcall_creator__sp_list,
00913 ptr< ss_expression > a__or_funcall_creator__result);
00914
00915
00916 virtual void gc_mark();
00917
00918 private:
00919 srp< ss_function_declaration > declaration;
00920 srp< ss_sp > psp;
00921 srp< ss_sp > nsp;
00922 srp< ::lestes::std::list< srp< or_or_functional > > > arguments;
00923 srp< ::lestes::std::source_location > location;
00924 srp< ::lestes::std::list< srp< ss_sp > > > sp_list;
00925 srp< ss_expression > result;
00926 static ptr<reflection_list> reflection;
00927
00928 };
00929
00930
00931
00932 class or_funcall_creator_context : public ::lestes::std::object {
00933 public:
00934
00935 ptr< ss_function_declaration > declaration_get() const;
00936
00937
00938 void declaration_set(const ptr< ss_function_declaration > &);
00939
00940
00941 ptr< ss_expression > object_expression_get() const;
00942
00943
00944 void object_expression_set(const ptr< ss_expression > &);
00945
00946
00947
00948 static ptr< or_funcall_creator_context > create (
00949 ptr< ss_function_declaration > a__or_funcall_creator_context__declaration,
00950 ptr< ss_expression > a__or_funcall_creator_context__object_expression);
00951
00952
00953
00954
00955 virtual ptr<reflection_list> reflection_get() const;
00956
00957 virtual ptr<field_list_list> field_values_get() const;
00958
00959 protected:
00960
00961 or_funcall_creator_context (
00962 ptr< ss_function_declaration > a__or_funcall_creator_context__declaration,
00963 ptr< ss_expression > a__or_funcall_creator_context__object_expression);
00964
00965
00966 virtual void gc_mark();
00967
00968 private:
00969 srp< ss_function_declaration > declaration;
00970 srp< ss_expression > object_expression;
00971 static ptr<reflection_list> reflection;
00972
00973 };
00974
00975
00976
00977
00978
00979 end_package(sem);
00980 end_package(cplus);
00981 end_package(lang);
00982 end_package(lestes);
00983
00984 #endif // lestes__lang__cplus__sem__or_or_g_hh__included