00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef lestes__lang__cplus__sem__ss_expr_unary_op_g_hh__included
00013 #define lestes__lang__cplus__sem__ss_expr_unary_op_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_se;
00026 class ss_expression;
00027 class ss_type;
00028 class ss_unary_expr;
00029 class ss_dereference;
00030 class ss_conversion;
00031 class ss_array_to_pointer;
00032 class ss_bind_reference;
00033 class ss_bind_to_temporary;
00034 class ss_get;
00035 class ss_vol_get;
00036 class ss_gat;
00037 class ss_neg;
00038 class ss_lnot;
00039 class ss_bnot;
00040 class ss_address_of;
00041
00042
00043
00044 class ss_unary_expr : public ss_expression {
00045 public:
00046
00047 ptr< ss_expression > expr_get() const;
00048
00049
00050 void expr_set(const ptr< ss_expression > &);
00051
00052 virtual void accept_ss_expression_visitor( ptr< ss_expression_visitor > v ) abstract;
00053
00054
00055
00056 virtual ptr<reflection_list> reflection_get() const;
00057
00058 virtual ptr<field_list_list> field_values_get() const;
00059
00060 protected:
00061
00062 ss_unary_expr (
00063 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00064 ptr< ss_type > a__ss_expression__type,
00065 ptr< ss_sp > a__ss_expression__psp,
00066 ptr< ss_sp > a__ss_expression__nsp,
00067 ptr< ss_expression > a__ss_unary_expr__expr);
00068
00069
00070 virtual void gc_mark();
00071
00072 private:
00073 srp< ss_expression > expr;
00074 static ptr<reflection_list> reflection;
00075
00076 };
00077
00078
00079
00080 class ss_dereference : public ss_unary_expr {
00081 public:
00082
00083 virtual bool is_lvalue();
00084
00085 virtual void accept_ss_expression_visitor( ptr< ss_expression_visitor > v );
00086
00087
00088 static ptr< ss_dereference > create (
00089 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00090 ptr< ss_type > a__ss_expression__type,
00091 ptr< ss_sp > a__ss_expression__psp,
00092 ptr< ss_sp > a__ss_expression__nsp,
00093 ptr< ss_expression > a__ss_unary_expr__expr);
00094
00095
00096
00097
00098 virtual ptr<reflection_list> reflection_get() const;
00099
00100 virtual ptr<field_list_list> field_values_get() const;
00101
00102 protected:
00103
00104 ss_dereference (
00105 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00106 ptr< ss_type > a__ss_expression__type,
00107 ptr< ss_sp > a__ss_expression__psp,
00108 ptr< ss_sp > a__ss_expression__nsp,
00109 ptr< ss_expression > a__ss_unary_expr__expr);
00110
00111
00112 virtual void gc_mark();
00113
00114 private:
00115 static ptr<reflection_list> reflection;
00116
00117 };
00118
00119
00120
00121 class ss_conversion : public ss_unary_expr {
00122 public:
00123
00124 ptr< ss_type > src_type_get() const;
00125
00126
00127 void src_type_set(const ptr< ss_type > &);
00128
00129 virtual void accept_ss_expression_visitor( ptr< ss_expression_visitor > v );
00130
00131
00132 static ptr< ss_conversion > create (
00133 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00134 ptr< ss_type > a__ss_expression__type,
00135 ptr< ss_sp > a__ss_expression__psp,
00136 ptr< ss_sp > a__ss_expression__nsp,
00137 ptr< ss_expression > a__ss_unary_expr__expr,
00138 ptr< ss_type > a__ss_conversion__src_type);
00139
00140
00141
00142
00143 virtual ptr<reflection_list> reflection_get() const;
00144
00145 virtual ptr<field_list_list> field_values_get() const;
00146
00147 protected:
00148
00149 ss_conversion (
00150 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00151 ptr< ss_type > a__ss_expression__type,
00152 ptr< ss_sp > a__ss_expression__psp,
00153 ptr< ss_sp > a__ss_expression__nsp,
00154 ptr< ss_expression > a__ss_unary_expr__expr,
00155 ptr< ss_type > a__ss_conversion__src_type);
00156
00157
00158 virtual void gc_mark();
00159
00160 private:
00161 srp< ss_type > src_type;
00162 static ptr<reflection_list> reflection;
00163
00164 };
00165
00166
00167
00168
00169
00170
00171 class ss_array_to_pointer : public ss_unary_expr {
00172 public:
00173
00174 ptr< ss_type > src_type_get() const;
00175
00176
00177 void src_type_set(const ptr< ss_type > &);
00178
00179 virtual void accept_ss_expression_visitor( ptr< ss_expression_visitor > v );
00180
00181
00182 static ptr< ss_array_to_pointer > create (
00183 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00184 ptr< ss_type > a__ss_expression__type,
00185 ptr< ss_sp > a__ss_expression__psp,
00186 ptr< ss_sp > a__ss_expression__nsp,
00187 ptr< ss_expression > a__ss_unary_expr__expr,
00188 ptr< ss_type > a__ss_array_to_pointer__src_type);
00189
00190
00191
00192
00193 virtual ptr<reflection_list> reflection_get() const;
00194
00195 virtual ptr<field_list_list> field_values_get() const;
00196
00197 protected:
00198
00199 ss_array_to_pointer (
00200 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00201 ptr< ss_type > a__ss_expression__type,
00202 ptr< ss_sp > a__ss_expression__psp,
00203 ptr< ss_sp > a__ss_expression__nsp,
00204 ptr< ss_expression > a__ss_unary_expr__expr,
00205 ptr< ss_type > a__ss_array_to_pointer__src_type);
00206
00207
00208 virtual void gc_mark();
00209
00210 private:
00211 srp< ss_type > src_type;
00212 static ptr<reflection_list> reflection;
00213
00214 };
00215
00216
00217
00218
00219
00220
00221
00222 class ss_bind_reference : public ss_unary_expr {
00223 public:
00224
00225 ptr< ss_type > src_type_get() const;
00226
00227
00228 void src_type_set(const ptr< ss_type > &);
00229
00230 virtual void accept_ss_expression_visitor( ptr< ss_expression_visitor > v );
00231
00232
00233 static ptr< ss_bind_reference > create (
00234 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00235 ptr< ss_type > a__ss_expression__type,
00236 ptr< ss_sp > a__ss_expression__psp,
00237 ptr< ss_sp > a__ss_expression__nsp,
00238 ptr< ss_expression > a__ss_unary_expr__expr,
00239 ptr< ss_type > a__ss_bind_reference__src_type);
00240
00241
00242
00243
00244 virtual ptr<reflection_list> reflection_get() const;
00245
00246 virtual ptr<field_list_list> field_values_get() const;
00247
00248 protected:
00249
00250 ss_bind_reference (
00251 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00252 ptr< ss_type > a__ss_expression__type,
00253 ptr< ss_sp > a__ss_expression__psp,
00254 ptr< ss_sp > a__ss_expression__nsp,
00255 ptr< ss_expression > a__ss_unary_expr__expr,
00256 ptr< ss_type > a__ss_bind_reference__src_type);
00257
00258
00259 virtual void gc_mark();
00260
00261 private:
00262 srp< ss_type > src_type;
00263 static ptr<reflection_list> reflection;
00264
00265 };
00266
00267
00268
00269
00270
00271
00272
00273 class ss_bind_to_temporary : public ss_unary_expr {
00274 public:
00275
00276 ptr< ss_type > src_type_get() const;
00277
00278
00279 void src_type_set(const ptr< ss_type > &);
00280
00281 virtual void accept_ss_expression_visitor( ptr< ss_expression_visitor > v );
00282
00283
00284 static ptr< ss_bind_to_temporary > create (
00285 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00286 ptr< ss_type > a__ss_expression__type,
00287 ptr< ss_sp > a__ss_expression__psp,
00288 ptr< ss_sp > a__ss_expression__nsp,
00289 ptr< ss_expression > a__ss_unary_expr__expr,
00290 ptr< ss_type > a__ss_bind_to_temporary__src_type);
00291
00292
00293
00294
00295 virtual ptr<reflection_list> reflection_get() const;
00296
00297 virtual ptr<field_list_list> field_values_get() const;
00298
00299 protected:
00300
00301 ss_bind_to_temporary (
00302 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00303 ptr< ss_type > a__ss_expression__type,
00304 ptr< ss_sp > a__ss_expression__psp,
00305 ptr< ss_sp > a__ss_expression__nsp,
00306 ptr< ss_expression > a__ss_unary_expr__expr,
00307 ptr< ss_type > a__ss_bind_to_temporary__src_type);
00308
00309
00310 virtual void gc_mark();
00311
00312 private:
00313 srp< ss_type > src_type;
00314 static ptr<reflection_list> reflection;
00315
00316 };
00317
00318
00319
00320 class ss_get : public ss_unary_expr {
00321 public:
00322 virtual void accept_ss_expression_visitor( ptr< ss_expression_visitor > v );
00323
00324
00325 static ptr< ss_get > create (
00326 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00327 ptr< ss_type > a__ss_expression__type,
00328 ptr< ss_sp > a__ss_expression__psp,
00329 ptr< ss_sp > a__ss_expression__nsp,
00330 ptr< ss_expression > a__ss_unary_expr__expr);
00331
00332
00333
00334
00335 virtual ptr<reflection_list> reflection_get() const;
00336
00337 virtual ptr<field_list_list> field_values_get() const;
00338
00339 protected:
00340
00341 ss_get (
00342 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00343 ptr< ss_type > a__ss_expression__type,
00344 ptr< ss_sp > a__ss_expression__psp,
00345 ptr< ss_sp > a__ss_expression__nsp,
00346 ptr< ss_expression > a__ss_unary_expr__expr);
00347
00348
00349 virtual void gc_mark();
00350
00351 private:
00352 static ptr<reflection_list> reflection;
00353
00354 };
00355
00356
00357
00358 class ss_vol_get : public ss_get {
00359 public:
00360 virtual void accept_ss_expression_visitor( ptr< ss_expression_visitor > v );
00361
00362
00363 static ptr< ss_vol_get > create (
00364 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00365 ptr< ss_type > a__ss_expression__type,
00366 ptr< ss_sp > a__ss_expression__psp,
00367 ptr< ss_sp > a__ss_expression__nsp,
00368 ptr< ss_expression > a__ss_unary_expr__expr);
00369
00370
00371
00372
00373 virtual ptr<reflection_list> reflection_get() const;
00374
00375 virtual ptr<field_list_list> field_values_get() const;
00376
00377 protected:
00378
00379 ss_vol_get (
00380 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00381 ptr< ss_type > a__ss_expression__type,
00382 ptr< ss_sp > a__ss_expression__psp,
00383 ptr< ss_sp > a__ss_expression__nsp,
00384 ptr< ss_expression > a__ss_unary_expr__expr);
00385
00386
00387 virtual void gc_mark();
00388
00389 private:
00390 static ptr<reflection_list> reflection;
00391
00392 };
00393
00394
00395
00396 class ss_gat : public ss_unary_expr {
00397 public:
00398 virtual void accept_ss_expression_visitor( ptr< ss_expression_visitor > v );
00399
00400
00401 static ptr< ss_gat > create (
00402 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00403 ptr< ss_type > a__ss_expression__type,
00404 ptr< ss_sp > a__ss_expression__psp,
00405 ptr< ss_sp > a__ss_expression__nsp,
00406 ptr< ss_expression > a__ss_unary_expr__expr);
00407
00408
00409
00410
00411 virtual ptr<reflection_list> reflection_get() const;
00412
00413 virtual ptr<field_list_list> field_values_get() const;
00414
00415 protected:
00416
00417 ss_gat (
00418 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00419 ptr< ss_type > a__ss_expression__type,
00420 ptr< ss_sp > a__ss_expression__psp,
00421 ptr< ss_sp > a__ss_expression__nsp,
00422 ptr< ss_expression > a__ss_unary_expr__expr);
00423
00424
00425 virtual void gc_mark();
00426
00427 private:
00428 static ptr<reflection_list> reflection;
00429
00430 };
00431
00432
00433
00434 class ss_neg : public ss_unary_expr {
00435 public:
00436 virtual void accept_ss_expression_visitor( ptr< ss_expression_visitor > v );
00437
00438
00439 static ptr< ss_neg > create (
00440 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00441 ptr< ss_type > a__ss_expression__type,
00442 ptr< ss_sp > a__ss_expression__psp,
00443 ptr< ss_sp > a__ss_expression__nsp,
00444 ptr< ss_expression > a__ss_unary_expr__expr);
00445
00446
00447
00448
00449 virtual ptr<reflection_list> reflection_get() const;
00450
00451 virtual ptr<field_list_list> field_values_get() const;
00452
00453 protected:
00454
00455 ss_neg (
00456 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00457 ptr< ss_type > a__ss_expression__type,
00458 ptr< ss_sp > a__ss_expression__psp,
00459 ptr< ss_sp > a__ss_expression__nsp,
00460 ptr< ss_expression > a__ss_unary_expr__expr);
00461
00462
00463 virtual void gc_mark();
00464
00465 private:
00466 static ptr<reflection_list> reflection;
00467
00468 };
00469
00470
00471
00472 class ss_lnot : public ss_unary_expr {
00473 public:
00474 virtual void accept_ss_expression_visitor( ptr< ss_expression_visitor > v );
00475
00476
00477 static ptr< ss_lnot > create (
00478 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00479 ptr< ss_type > a__ss_expression__type,
00480 ptr< ss_sp > a__ss_expression__psp,
00481 ptr< ss_sp > a__ss_expression__nsp,
00482 ptr< ss_expression > a__ss_unary_expr__expr);
00483
00484
00485
00486
00487 virtual ptr<reflection_list> reflection_get() const;
00488
00489 virtual ptr<field_list_list> field_values_get() const;
00490
00491 protected:
00492
00493 ss_lnot (
00494 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00495 ptr< ss_type > a__ss_expression__type,
00496 ptr< ss_sp > a__ss_expression__psp,
00497 ptr< ss_sp > a__ss_expression__nsp,
00498 ptr< ss_expression > a__ss_unary_expr__expr);
00499
00500
00501 virtual void gc_mark();
00502
00503 private:
00504 static ptr<reflection_list> reflection;
00505
00506 };
00507
00508
00509
00510 class ss_bnot : public ss_unary_expr {
00511 public:
00512 virtual void accept_ss_expression_visitor( ptr< ss_expression_visitor > v );
00513
00514
00515 static ptr< ss_bnot > create (
00516 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00517 ptr< ss_type > a__ss_expression__type,
00518 ptr< ss_sp > a__ss_expression__psp,
00519 ptr< ss_sp > a__ss_expression__nsp,
00520 ptr< ss_expression > a__ss_unary_expr__expr);
00521
00522
00523
00524
00525 virtual ptr<reflection_list> reflection_get() const;
00526
00527 virtual ptr<field_list_list> field_values_get() const;
00528
00529 protected:
00530
00531 ss_bnot (
00532 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00533 ptr< ss_type > a__ss_expression__type,
00534 ptr< ss_sp > a__ss_expression__psp,
00535 ptr< ss_sp > a__ss_expression__nsp,
00536 ptr< ss_expression > a__ss_unary_expr__expr);
00537
00538
00539 virtual void gc_mark();
00540
00541 private:
00542 static ptr<reflection_list> reflection;
00543
00544 };
00545
00546
00547
00548
00549
00550
00551
00552
00553
00554 class ss_address_of : public ss_unary_expr {
00555 public:
00556
00557 virtual bool is_lvalue();
00558
00559 virtual void accept_ss_expression_visitor( ptr< ss_expression_visitor > v );
00560
00561
00562 static ptr< ss_address_of > create (
00563 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00564 ptr< ss_type > a__ss_expression__type,
00565 ptr< ss_sp > a__ss_expression__psp,
00566 ptr< ss_sp > a__ss_expression__nsp,
00567 ptr< ss_expression > a__ss_unary_expr__expr);
00568
00569
00570
00571
00572 virtual ptr<reflection_list> reflection_get() const;
00573
00574 virtual ptr<field_list_list> field_values_get() const;
00575
00576 protected:
00577
00578 ss_address_of (
00579 ptr< ::lestes::std::source_location > a__ss_base_with_location__location,
00580 ptr< ss_type > a__ss_expression__type,
00581 ptr< ss_sp > a__ss_expression__psp,
00582 ptr< ss_sp > a__ss_expression__nsp,
00583 ptr< ss_expression > a__ss_unary_expr__expr);
00584
00585
00586 virtual void gc_mark();
00587
00588 private:
00589 static ptr<reflection_list> reflection;
00590
00591 };
00592
00593
00594 end_package(sem);
00595 end_package(cplus);
00596 end_package(lang);
00597 end_package(lestes);
00598
00599 #endif // lestes__lang__cplus__sem__ss_expr_unary_op_g_hh__included