00001
00002
00003 #ifndef lestes__lang__cplus__sem__sa_context_g_hh__included
00004 #define lestes__lang__cplus__sem__sa_context_g_hh__included
00005
00006 #include <lestes/common.hh>
00007 #include <lestes/std/list.hh>
00008 #include <lestes/std/stack.hh>
00009 #include <lestes/lang/cplus/sem/ss_enums.g.hh>
00010
00011 #include <lestes/std/objectize_macros.hh>
00012 package(lestes);
00013 package(lang);
00014 package(cplus);
00015 package(sem);
00016 class as_name;
00017 end_package(sem);
00018 end_package(cplus);
00019 end_package(lang);
00020 end_package(lestes);
00021
00022 package(lestes);
00023 package(lang);
00024 package(cplus);
00025 package(sem);
00026 class ss_decl_seq;
00027 end_package(sem);
00028 end_package(cplus);
00029 end_package(lang);
00030 end_package(lestes);
00031
00032 package(lestes);
00033 package(lang);
00034 package(cplus);
00035 package(sem);
00036 class as_access_specifier;
00037 end_package(sem);
00038 end_package(cplus);
00039 end_package(lang);
00040 end_package(lestes);
00041
00042 package(lestes);
00043 package(lang);
00044 package(cplus);
00045 package(sem);
00046 class as_declaration_specifier_seq;
00047 end_package(sem);
00048 end_package(cplus);
00049 end_package(lang);
00050 end_package(lestes);
00051
00052 package(lestes);
00053 package(lang);
00054 package(cplus);
00055 package(sem);
00056 class sa_declaration_specifiers;
00057 end_package(sem);
00058 end_package(cplus);
00059 end_package(lang);
00060 end_package(lestes);
00061
00062 package(lestes);
00063 package(lang);
00064 package(cplus);
00065 package(sem);
00066
00067
00068 class sa_statements;
00069 class sa_context_stack_marker;
00070 class sa_context_manager;
00071 class sa_context_manager_concrete;
00072 class sa_context;
00073 class sa_as_context;
00074 class sa_ss_context;
00075 class sa_sa_context;
00076
00077
00078 class sa_context_stack_marker : public ::lestes::std::object {
00079 public:
00080
00081 ptr< sa_context > context_get() const;
00082
00083
00084 void context_set(const ptr< sa_context > &);
00085
00086
00087
00088 static ptr< sa_context_stack_marker > create (
00089 ptr< sa_context > a__sa_context_stack_marker__context);
00090
00091
00092
00093
00094 virtual ptr<reflection_list> reflection_get() const;
00095
00096 virtual ptr<field_list_list> field_values_get() const;
00097
00098 protected:
00099
00100 sa_context_stack_marker (
00101 ptr< sa_context > a__sa_context_stack_marker__context);
00102
00103
00104 virtual void gc_mark();
00105
00106 private:
00107 srp< sa_context > context;
00108 static ptr<reflection_list> reflection;
00109
00110 };
00111
00112
00113
00114
00115
00116
00117 class sa_context_manager : public ::lestes::std::object {
00118 public:
00119 virtual ptr< sa_context > current() abstract;
00120
00121 virtual void push(ptr< sa_context > context) abstract;
00122
00123 virtual void pop() abstract;
00124
00125 static ptr< sa_context_manager > instance();
00126
00127
00128
00129
00130 virtual ptr<reflection_list> reflection_get() const;
00131
00132 virtual ptr<field_list_list> field_values_get() const;
00133
00134 protected:
00135
00136 sa_context_manager (
00137 );
00138
00139
00140 virtual void gc_mark();
00141
00142 private:
00143 static ptr< sa_context_manager > singleton;
00144 static ptr<reflection_list> reflection;
00145
00146 };
00147
00148
00149 class sa_context_manager_concrete : public sa_context_manager {
00150 public:
00151 static ptr< sa_context_manager_concrete > instance();
00152
00153 virtual ptr< sa_context > current();
00154
00155 virtual void push(ptr< sa_context > context);
00156
00157 virtual void pop();
00158
00159
00160
00161 static ptr< sa_context_manager_concrete > create (
00162 ptr< ::lestes::std::stack< srp< sa_context > > > a__sa_context_manager_concrete__contexts);
00163
00164
00165
00166
00167 virtual ptr<reflection_list> reflection_get() const;
00168
00169 virtual ptr<field_list_list> field_values_get() const;
00170
00171 protected:
00172
00173 sa_context_manager_concrete (
00174 ptr< ::lestes::std::stack< srp< sa_context > > > a__sa_context_manager_concrete__contexts);
00175
00176
00177 virtual void gc_mark();
00178
00179 private:
00180 srp< ::lestes::std::stack< srp< sa_context > > > contexts;
00181 static ptr< sa_context_manager_concrete > singleton;
00182 static ptr<reflection_list> reflection;
00183
00184 };
00185
00186
00187
00188
00189
00190
00191 class sa_context : public ::lestes::std::object {
00192 public:
00193
00194 ptr< sa_as_context > as_get() const;
00195
00196
00197 void as_set(const ptr< sa_as_context > &);
00198
00199
00200 ptr< sa_ss_context > ss_get() const;
00201
00202
00203 void ss_set(const ptr< sa_ss_context > &);
00204
00205
00206 ptr< sa_sa_context > sa_get() const;
00207
00208
00209 void sa_set(const ptr< sa_sa_context > &);
00210
00211
00212
00213 static ptr< sa_context > create (
00214 ptr< sa_as_context > a__sa_context__as,
00215 ptr< sa_ss_context > a__sa_context__ss,
00216 ptr< sa_sa_context > a__sa_context__sa);
00217
00218
00219
00220
00221 virtual ptr<reflection_list> reflection_get() const;
00222
00223 virtual ptr<field_list_list> field_values_get() const;
00224
00225 protected:
00226
00227 sa_context (
00228 ptr< sa_as_context > a__sa_context__as,
00229 ptr< sa_ss_context > a__sa_context__ss,
00230 ptr< sa_sa_context > a__sa_context__sa);
00231
00232
00233 virtual void gc_mark();
00234
00235 private:
00236
00237
00238
00239
00240 srp< sa_as_context > as;
00241
00242
00243
00244
00245 srp< sa_ss_context > ss;
00246
00247
00248
00249
00250 srp< sa_sa_context > sa;
00251 static ptr<reflection_list> reflection;
00252
00253 };
00254
00255
00256
00257
00258
00259
00260 class sa_as_context : public ::lestes::std::object {
00261 public:
00262
00263 ptr< ::lestes::lang::cplus::sem::as_name > scope_get() const;
00264
00265
00266 void scope_set(const ptr< ::lestes::lang::cplus::sem::as_name > &);
00267
00268
00269 ptr< ::lestes::lang::cplus::sem::as_access_specifier > access_specifier_get() const;
00270
00271
00272 void access_specifier_set(const ptr< ::lestes::lang::cplus::sem::as_access_specifier > &);
00273
00274
00275 ptr< ::lestes::lang::cplus::sem::as_declaration_specifier_seq > declaration_specifier_seq_get() const;
00276
00277
00278 void declaration_specifier_seq_set(const ptr< ::lestes::lang::cplus::sem::as_declaration_specifier_seq > &);
00279
00280
00281
00282 static ptr< sa_as_context > create (
00283 ptr< ::lestes::lang::cplus::sem::as_name > a__sa_as_context__scope,
00284 ptr< ::lestes::lang::cplus::sem::as_access_specifier > a__sa_as_context__access_specifier,
00285 ptr< ::lestes::lang::cplus::sem::as_declaration_specifier_seq > a__sa_as_context__declaration_specifier_seq);
00286
00287
00288 static ptr< sa_as_context > create (
00289 ptr< ::lestes::lang::cplus::sem::as_name > a__sa_as_context__scope,
00290 ptr< ::lestes::lang::cplus::sem::as_access_specifier > a__sa_as_context__access_specifier);
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 sa_as_context (
00302 ptr< ::lestes::lang::cplus::sem::as_name > a__sa_as_context__scope,
00303 ptr< ::lestes::lang::cplus::sem::as_access_specifier > a__sa_as_context__access_specifier,
00304 ptr< ::lestes::lang::cplus::sem::as_declaration_specifier_seq > a__sa_as_context__declaration_specifier_seq);
00305
00306
00307 virtual void gc_mark();
00308
00309 private:
00310
00311 srp< ::lestes::lang::cplus::sem::as_name > scope;
00312
00313 srp< ::lestes::lang::cplus::sem::as_access_specifier > access_specifier;
00314
00315 srp< ::lestes::lang::cplus::sem::as_declaration_specifier_seq > declaration_specifier_seq;
00316 static ptr<reflection_list> reflection;
00317
00318 };
00319
00320
00321
00322
00323
00324
00325 class sa_ss_context : public ::lestes::std::object {
00326 public:
00327
00328 ptr< ::lestes::lang::cplus::sem::ss_decl_seq > scope_get() const;
00329
00330
00331 void scope_set(const ptr< ::lestes::lang::cplus::sem::ss_decl_seq > &);
00332
00333
00334 ss_access_specifier::type access_specifier_get() const;
00335
00336
00337 void access_specifier_set(ss_access_specifier::type);
00338
00339
00340
00341 static ptr< sa_ss_context > create (
00342 ptr< ::lestes::lang::cplus::sem::ss_decl_seq > a__sa_ss_context__scope,
00343 ss_access_specifier::type a__sa_ss_context__access_specifier);
00344
00345
00346
00347
00348 virtual ptr<reflection_list> reflection_get() const;
00349
00350 virtual ptr<field_list_list> field_values_get() const;
00351
00352 protected:
00353
00354 sa_ss_context (
00355 ptr< ::lestes::lang::cplus::sem::ss_decl_seq > a__sa_ss_context__scope,
00356 ss_access_specifier::type a__sa_ss_context__access_specifier);
00357
00358
00359 virtual void gc_mark();
00360
00361 private:
00362
00363 srp< ::lestes::lang::cplus::sem::ss_decl_seq > scope;
00364
00365 ss_access_specifier::type access_specifier;
00366 static ptr<reflection_list> reflection;
00367
00368 };
00369
00370
00371
00372
00373
00374
00375 class sa_sa_context : public ::lestes::std::object {
00376 public:
00377
00378 ptr< ::lestes::lang::cplus::sem::sa_declaration_specifiers > declaration_specifiers_get() const;
00379
00380
00381 void declaration_specifiers_set(const ptr< ::lestes::lang::cplus::sem::sa_declaration_specifiers > &);
00382
00383
00384
00385 static ptr< sa_sa_context > create (
00386 ptr< ::lestes::lang::cplus::sem::sa_declaration_specifiers > a__sa_sa_context__declaration_specifiers);
00387
00388
00389 static ptr< sa_sa_context > create (
00390 );
00391
00392
00393
00394
00395 virtual ptr<reflection_list> reflection_get() const;
00396
00397 virtual ptr<field_list_list> field_values_get() const;
00398
00399 protected:
00400
00401 sa_sa_context (
00402 ptr< ::lestes::lang::cplus::sem::sa_declaration_specifiers > a__sa_sa_context__declaration_specifiers);
00403
00404
00405 virtual void gc_mark();
00406
00407 private:
00408
00409
00410
00411
00412 srp< ::lestes::lang::cplus::sem::sa_declaration_specifiers > declaration_specifiers;
00413 static ptr<reflection_list> reflection;
00414
00415 };
00416
00417
00418 end_package(sem);
00419 end_package(cplus);
00420 end_package(lang);
00421 end_package(lestes);
00422
00423 #endif // lestes__lang__cplus__sem__sa_context_g_hh__included