#include <sa_class_declaration.g.hh>
Inheritance diagram for lestes::lang::cplus::sem::sa_class_declaration:

FIXME Detailed documentation for overload functionals
Definition at line 85 of file sa_class_declaration.g.hh.
| lestes::lang::cplus::sem::sa_class_declaration::sa_class_declaration | ( | ) | [protected] |
Generated constructor for class sa_class_declaration.
Generated constructor for class sa_class_declaration.
Definition at line 34 of file sa_class_declaration.g.cc.
Referenced by create().
00035 : object() 00036 {}
| void lestes::lang::cplus::sem::sa_class_declaration::process | ( | ptr< ::lestes::lang::cplus::sem::as_class_specifier > | cs | ) |
| void lestes::lang::cplus::sem::sa_class_declaration::process_end | ( | ptr< ::lestes::std::source_location > | location | ) |
| void lestes::lang::cplus::sem::sa_class_declaration::process_undeclared | ( | ptr< ::lestes::lang::cplus::sem::as_class_specifier > | cs | ) |
| void lestes::lang::cplus::sem::sa_class_declaration::process_declared | ( | ptr< ::lestes::lang::cplus::sem::as_class_specifier > | cs, | |
| ptr< ::lestes::lang::cplus::sem::ss_structure_declaration > | dn | |||
| ) |
| void lestes::lang::cplus::sem::sa_class_declaration::process_forward_declaration | ( | ptr< ::lestes::lang::cplus::sem::as_class_specifier > | cs | ) |
| ptr<::lestes::lang::cplus::sem::ss_structure_declaration > lestes::lang::cplus::sem::sa_class_declaration::insert_class_forward_into_scope | ( | ptr< ::lestes::lang::cplus::sem::as_class_specifier > | cs, | |
| bool | visibly, | |||
| ptr< ::lestes::lang::cplus::sem::ss_decl_seq > | parent_scope | |||
| ) |
Definition at line 258 of file sa_class_declaration.cc.
References lestes::lang::cplus::sem::ss_access_specifier::ACCESS_PUBLIC, lestes::lang::cplus::sem::ss_linkage::create(), lestes::lang::cplus::sem::ss_declaration_time::create(), lestes::intercode::intercode::create(), create(), lestes::lang::cplus::sem::as_class_key_to_ss_struct_base::create(), lestes::lang::cplus::syn::manager::in_disambiguation(), lestes::lang::cplus::sem::ss_declaration_time::infinity(), lestes::lang::cplus::sem::sa_context_manager::instance(), lestes::lang::cplus::sem::sa_decl_seq_compound_pair_creator::instance(), lestes::lang::cplus::sem::as_id_to_ss_decl_name::instance(), lassert, lestes::lang::cplus::sem::ss_linkage::LINKAGE_EXTERNAL, and lestes::lang::cplus::sem::ss_storage_class::ST_NONE.
00259 { 00260 lassert(!syn::manager::in_disambiguation()); 00261 00262 if (syn::manager::in_disambiguation()) 00263 return NULL; 00264 /* location */ 00265 ptr < source_location > location = cs->location_get(); 00266 00267 sa_class_logger << "sa_class_declaration:: name\n" << msg::eolog; 00268 ptr < ss_decl_name > decl_name = as_id_to_ss_decl_name::instance()->process(cs->name_get()->identifier_get());; 00269 lassert(decl_name); 00270 00271 sa_class_declaration_logger << "declseq & compound\n" << msg::eolog; 00272 ptr < ::lestes::std::pair < srp < ss_decl_seq >, srp < ss_compound_stmt > > > p = 00273 sa_decl_seq_compound_pair_creator::instance()->process(location, 00274 parent_scope, 00275 parent_scope->compound_stmt_get() 00276 ); 00277 lassert(p); 00278 00279 ptr < ss_decl_seq > decl_seq = p->first; 00280 ptr < ss_compound_stmt > stmt = p->second; 00281 lassert(decl_seq && stmt); 00282 00283 sa_class_declaration_logger << "type\n" << msg::eolog; 00284 ptr < ss_struct_base > type = 00285 as_class_key_to_ss_struct_base::create( 00286 decl_seq, 00287 ::lestes::std::list < srp < ss_base_specifier > >::create() 00288 )->process(cs->key_get()); 00289 00290 sa_class_declaration_logger << "proper\n" << msg::eolog; 00291 ptr < ss_structure_declaration > class_decl = ss_structure_declaration::create( 00292 location, // location 00293 visibly 00294 ? ss_declaration_time::create(location->order_get()) 00295 : ss_declaration_time::infinity(), // visible 00296 ss_declaration_time::create(location->order_get()), // decl time 00297 decl_name, //name 00298 parent_scope, // contained in 00299 type, // type 00300 // FIXME: determine linkage according to parent scope 00301 ss_linkage::create("C++",ss_linkage::LINKAGE_EXTERNAL), // linkage 00302 sa_context_manager::instance()->current()->ss_get()->access_specifier_get(), // access specifier 00303 ss_storage_class::ST_NONE, // storage class 00304 ::lestes::std::set< srp< ss_struct_base > >::create(), // friends 00305 decl_seq 00306 ); 00307 00308 sa_class_declaration_logger << "injected\n" << msg::eolog; 00309 ptr < ss_injected_class_declaration > class_decl_alias = ss_injected_class_declaration::create( 00310 location, // location 00311 ss_declaration_time::create(location->order_get()), // visible 00312 ss_declaration_time::create(location->order_get()), // decl time 00313 decl_name, //name 00314 decl_seq, // contained in 00315 type, // type 00316 // FIXME: correct? 00317 class_decl->linkage_get(), // linkage 00318 ss_access_specifier::ACCESS_PUBLIC, // access specifier 00319 ss_storage_class::ST_NONE, // storage class 00320 class_decl // real class 00321 ); 00322 00323 sa_class_declaration_logger << "fixup circular structures\n" << msg::eolog; 00324 /* fill right values */ 00325 type->decl_set(class_decl); 00326 decl_seq->declared_by_set(class_decl); 00327 decl_seq->contents_get()->push_back(class_decl_alias); 00328 parent_scope->contents_get()->push_back(class_decl); 00329 00330 return class_decl; 00331 00332 }
| void lestes::lang::cplus::sem::sa_class_declaration::new_context | ( | ptr< ::lestes::std::source_location > | location, | |
| ss_access_specifier::type | access_specifier, | |||
| ptr< ::lestes::lang::cplus::sem::ss_decl_seq > | scope, | |||
| ptr< ::lestes::lang::cplus::sem::as_name > | name | |||
| ) |
| ptr< sa_class_declaration > lestes::lang::cplus::sem::sa_class_declaration::create | ( | void | ) | [static] |
First generated factory method for class sa_class_declaration.
This factory method for class sa_class_declaration takes values of all fields as arguments.
Definition at line 25 of file sa_class_declaration.g.cc.
References sa_class_declaration().
Referenced by insert_class_forward_into_scope().
00026 { 00027 return ptr< sa_class_declaration > ( new sa_class_declaration() ); 00028 }
| ptr< object::reflection_list > lestes::lang::cplus::sem::sa_class_declaration::reflection_get | ( | ) | const [virtual] |
for purposes of dumping
Reimplemented from lestes::std::object.
Definition at line 38 of file sa_class_declaration.g.cc.
References lestes::std::list< T >::create(), reflection, and lestes::std::object::reflection_get().
00039 { 00040 if (!reflection) { 00041 typedef class_reflection::field_metadata md; 00042 typedef class_reflection::field_metadata_list mdlist; 00043 ptr<mdlist> mdl = mdlist::create(); 00044 reflection = reflection_list::create( ::lestes::std::object::reflection_get() ); 00045 reflection->push_back( class_reflection::create( "sa_class_declaration", mdl ) ); 00046 } 00047 return reflection; 00048 }
| ptr< object::field_list_list > lestes::lang::cplus::sem::sa_class_declaration::field_values_get | ( | ) | const [virtual] |
for purposes of dumping
Reimplemented from lestes::std::object.
Definition at line 50 of file sa_class_declaration.g.cc.
References lestes::std::object::field_values_get().
00051 { 00052 ptr < field_list_list > result = ::lestes::std::object::field_values_get(); 00053 return result; 00054 }
| void lestes::lang::cplus::sem::sa_class_declaration::gc_mark | ( | void | ) | [protected, virtual] |
Marking routine for class sa_class_declaration.
Marking routine is used for garbage collection.
Reimplemented from lestes::std::mem::keystone.
Definition at line 61 of file sa_class_declaration.g.cc.
References lestes::std::mem::keystone::gc_mark().
00062 { 00063 ::lestes::std::object::gc_mark(); 00064 }
ptr< object::reflection_list > lestes::lang::cplus::sem::sa_class_declaration::reflection = reflection [static, private] |
Reimplemented from lestes::std::object.
Definition at line 122 of file sa_class_declaration.g.hh.
Referenced by reflection_get().
1.5.1-20070107