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

Public Member Functions | |
| void | process_declaration (ptr< ::lestes::lang::cplus::sem::as_using_declaration > declaration) |
| void | process_directive (ptr< ::lestes::lang::cplus::sem::as_using_directive > directive) |
| virtual ptr< reflection_list > | reflection_get () const |
| for purposes of dumping | |
| virtual ptr< field_list_list > | field_values_get () const |
| for purposes of dumping | |
Static Public Member Functions | |
| static ptr< sa_usings > | instance () |
| Generated instance() method for singleton class sa_usings. | |
Protected Member Functions | |
| sa_usings () | |
| Generated constructor for class sa_usings. | |
| virtual void | gc_mark () |
| Marking routine for class sa_usings. | |
Static Private Attributes | |
| static ptr< reflection_list > | reflection = reflection |
| static ptr< sa_usings > | the_instance = the_instance |
FIXME Detailed documentation for overload functionals
Definition at line 84 of file sa_usings.g.hh.
| lestes::lang::cplus::sem::sa_usings::sa_usings | ( | ) | [protected] |
Generated constructor for class sa_usings.
Generated constructor for class sa_usings.
Definition at line 40 of file sa_usings.g.cc.
Referenced by instance().
00041 : object() 00042 {}
| void lestes::lang::cplus::sem::sa_usings::process_declaration | ( | ptr< ::lestes::lang::cplus::sem::as_using_declaration > | ud | ) |
Definition at line 78 of file sa_usings.cc.
References lestes::lang::cplus::sem::ss_linkage::create(), lestes::intercode::intercode::create(), lestes::lang::cplus::sem::ss_declaration_time::create(), lestes::msg::eolog, lestes::lang::cplus::syn::manager::in_disambiguation(), lestes::lang::cplus::sem::sa_context_manager::instance(), lestes::lang::cplus::sem::ss_using_target::instance(), lestes::lang::cplus::sem::li_by_name_in_single_scope::instance(), lestes::lang::cplus::sem::sa_scope_of_as_name::instance(), lestes::lang::cplus::sem::as_id_to_ss_decl_name::instance(), lassert, lassert3, lestes::lang::cplus::sem::ss_linkage::LINKAGE_EXTERNAL, and lestes::lang::cplus::sem::ss_storage_class::ST_NONE.
00079 { 00080 lassert(!syn::manager::in_disambiguation()); 00081 00082 ptr < source_location > location = ud->location_get(); 00083 ptr < ss_declaration_time > dt = ss_declaration_time::create(location->order_get()); 00084 00085 ptr < as_name > name = ud->name_get(); 00086 lassert(name->was_qualified_get()); 00087 00088 ptr < ss_decl_name > decl_name = as_id_to_ss_decl_name::instance()->process(name->identifier_get()); 00089 // FIXME: get scope from qualification 00090 ptr < ss_decl_seq > containing = sa_scope_of_as_name::instance()->extract(name); 00091 00092 // FIXME: lookup in scope 00093 ptr < declaration_set_type > target_declarations = li_by_name_in_single_scope::instance()->process_preserve_usings(decl_name, containing); 00094 00095 if ( target_declarations->empty() ) { 00096 lassert3(false, "declaration of used name not found",location); 00097 } 00098 00099 for (declaration_set_type::iterator it = target_declarations->begin() ; it != target_declarations->end() ; ++it) { 00100 ptr < ss_declaration > target_decl = *it; 00101 00102 // FIXME: a check shall be done whether the fund declaration 00103 // does not clash with an existing declaration in the current 00104 // scope. 00105 00106 // FIXME: lookup in scope 00107 ptr < ss_declaration > real_decl = ss_using_target::instance()->process(target_decl); 00108 00109 // FIXME: foreach looked up: 00110 sa_class_declaration_logger << "using\n" << msg::eolog; 00111 ptr < ss_using_declaration > using_decl = ss_using_declaration::create( 00112 location, // location 00113 dt, // visible 00114 dt, // decl time 00115 decl_name, //name 00116 sa_context_manager::instance()->current()->ss_get()->scope_get(), // contained in 00117 real_decl->type_get(), // type 00118 // FIXME: correct? 00119 ss_linkage::create("C++", ss_linkage::LINKAGE_EXTERNAL), // linkage 00120 //real_decl->linkage_get(), // linkage 00121 // FIXME: correct? 00122 sa_context_manager::instance()->current()->ss_get()->access_specifier_get(), // access specifier 00123 //real_decl->access_specifier_get(), // access specifier 00124 ss_storage_class::ST_NONE, // storage class 00125 target_decl, // using's target declaration 00126 real_decl // real declaration 00127 ); 00128 // add to decl_seq: 00129 sa_context_manager::instance()->current()->ss_get()->scope_get()->contents_get()->push_back(using_decl); 00130 } 00131 }
| void lestes::lang::cplus::sem::sa_usings::process_directive | ( | ptr< ::lestes::lang::cplus::sem::as_using_directive > | ud | ) |
Definition at line 136 of file sa_usings.cc.
References lestes::lang::cplus::syn::manager::in_disambiguation(), lassert2, and lassert3.
00137 { 00138 lassert2(!syn::manager::in_disambiguation(), "invariant"); 00139 lassert3(false,"using directives not implemented", ud->location_get()); 00140 }
| ptr< sa_usings > lestes::lang::cplus::sem::sa_usings::instance | ( | void | ) | [static] |
Generated instance() method for singleton class sa_usings.
Generated instance() method for singleton class sa_usings.
Definition at line 31 of file sa_usings.g.cc.
References sa_usings(), and the_instance.
00032 { 00033 return the_instance ? the_instance : the_instance = new sa_usings(); 00034 }
| ptr< object::reflection_list > lestes::lang::cplus::sem::sa_usings::reflection_get | ( | ) | const [virtual] |
for purposes of dumping
Reimplemented from lestes::std::object.
Definition at line 44 of file sa_usings.g.cc.
References lestes::std::list< T >::create(), reflection, and lestes::std::object::reflection_get().
00045 { 00046 if (!reflection) { 00047 typedef class_reflection::field_metadata md; 00048 typedef class_reflection::field_metadata_list mdlist; 00049 ptr<mdlist> mdl = mdlist::create(); 00050 reflection = reflection_list::create( ::lestes::std::object::reflection_get() ); 00051 reflection->push_back( class_reflection::create( "sa_usings", mdl ) ); 00052 } 00053 return reflection; 00054 }
| ptr< object::field_list_list > lestes::lang::cplus::sem::sa_usings::field_values_get | ( | ) | const [virtual] |
for purposes of dumping
Reimplemented from lestes::std::object.
Definition at line 56 of file sa_usings.g.cc.
References lestes::std::object::field_values_get().
00057 { 00058 ptr < field_list_list > result = ::lestes::std::object::field_values_get(); 00059 return result; 00060 }
| void lestes::lang::cplus::sem::sa_usings::gc_mark | ( | void | ) | [protected, virtual] |
Marking routine for class sa_usings.
Marking routine is used for garbage collection.
Reimplemented from lestes::std::mem::keystone.
Definition at line 67 of file sa_usings.g.cc.
References lestes::std::mem::keystone::gc_mark().
00068 { 00069 ::lestes::std::object::gc_mark(); 00070 }
ptr< object::reflection_list > lestes::lang::cplus::sem::sa_usings::reflection = reflection [static, private] |
Reimplemented from lestes::std::object.
Definition at line 110 of file sa_usings.g.hh.
Referenced by reflection_get().
ptr< sa_usings > lestes::lang::cplus::sem::sa_usings::the_instance = the_instance [static, private] |
Static field sa_usings::the_instance.
Definition at line 111 of file sa_usings.g.hh.
Referenced by instance().
1.5.1-20070107