lestes::md::symbols::symbol_register Class Reference

Register of global symbols. More...

#include <symbol_register.g.hh>

Inheritance diagram for lestes::md::symbols::symbol_register:

lestes::md::symbols::symbol_register_base lestes::std::object lestes::std::mem::keystone List of all members.

Public Member Functions

ptr< ::lestes::std::set< srp<
::lestes::lang::cplus::sem::ss_declaration > > > 
externals_get () const
 The method externals_get returns the value of the field symbol_register::externals.
void externals_set (const ptr< ::lestes::std::set< srp< ::lestes::lang::cplus::sem::ss_declaration > > > &)
 The method externals_set sets the field symbol_register::externals to the given value.
ptr< ::lestes::std::set< srp<
::lestes::lang::cplus::sem::ss_declaration > > > 
globals_get () const
 The method globals_get returns the value of the field symbol_register::globals.
void globals_set (const ptr< ::lestes::std::set< srp< ::lestes::lang::cplus::sem::ss_declaration > > > &)
 The method globals_set sets the field symbol_register::globals to the given value.
ptr< ::lestes::std::set< srp<
::lestes::lang::cplus::sem::ss_declaration > > > 
internals_get () const
 The method internals_get returns the value of the field symbol_register::internals.
void internals_set (const ptr< ::lestes::std::set< srp< ::lestes::lang::cplus::sem::ss_declaration > > > &)
 The method internals_set sets the field symbol_register::internals to the given value.
void register_external (ptr< ::lestes::lang::cplus::sem::ss_declaration > symbol)
 Registers an external symbol.
void register_global (ptr< ::lestes::lang::cplus::sem::ss_declaration > symbol)
 Registers a global symbol.
void register_internal (ptr< ::lestes::lang::cplus::sem::ss_declaration > symbol)
 Registers an internal symbol.
virtual void register_symbol (ptr< ::lestes::lang::cplus::sem::ss_declaration > symbol)
 Registers a symbol.
void emit_global_declarations (::std::ostream &output)
 Emits global delarations for registered symbols.
virtual ptr< reflection_listreflection_get () const
 for purposes of dumping
virtual ptr< field_list_listfield_values_get () const
 for purposes of dumping

Static Public Member Functions

static ptr< symbol_registersingleton_instance_get ()
 The method singleton_instance_get returns the value of the field symbol_register::singleton_instance.
static void singleton_instance_set (const ptr< symbol_register > &)
 The method singleton_instance_set sets the field symbol_register::singleton_instance to the given value.
static ptr< symbol_registerinstance ()
static ptr< symbol_registercreate (ptr< ::lestes::std::set< srp< ::lestes::lang::cplus::sem::ss_declaration > > > a__symbol_register__externals, ptr< ::lestes::std::set< srp< ::lestes::lang::cplus::sem::ss_declaration > > > a__symbol_register__globals, ptr< ::lestes::std::set< srp< ::lestes::lang::cplus::sem::ss_declaration > > > a__symbol_register__internals)
 First generated factory method for class symbol_register.
static ptr< symbol_registercreate ()
 Second generated factory method for class symbol_register.

Protected Member Functions

 symbol_register (ptr< ::lestes::std::set< srp< ::lestes::lang::cplus::sem::ss_declaration > > > a__symbol_register__externals, ptr< ::lestes::std::set< srp< ::lestes::lang::cplus::sem::ss_declaration > > > a__symbol_register__globals, ptr< ::lestes::std::set< srp< ::lestes::lang::cplus::sem::ss_declaration > > > a__symbol_register__internals)
 Generated constructor for class symbol_register.
virtual void gc_mark ()
 Marking routine for class symbol_register.

Private Attributes

srp< ::lestes::std::set< srp<
::lestes::lang::cplus::sem::ss_declaration > > > 
externals
 Registered external symbols.
srp< ::lestes::std::set< srp<
::lestes::lang::cplus::sem::ss_declaration > > > 
globals
 Registered global symbols.
srp< ::lestes::std::set< srp<
::lestes::lang::cplus::sem::ss_declaration > > > 
internals
 Registered internal symbols.

Static Private Attributes

static ptr< symbol_registersingleton_instance = NULL
static ptr< reflection_listreflection = reflection

Detailed Description

Register of global symbols.

Holds list of global symbols (functions, variables) defined within translation unit. Global asm symbol declarations are generated from it during asm code generation phase.

Definition at line 41 of file symbol_register.g.hh.


Constructor & Destructor Documentation

lestes::md::symbols::symbol_register::symbol_register ( ptr< ::lestes::std::set< srp< ::lestes::lang::cplus::sem::ss_declaration > > >  a__symbol_register__externals,
ptr< ::lestes::std::set< srp< ::lestes::lang::cplus::sem::ss_declaration > > >  a__symbol_register__globals,
ptr< ::lestes::std::set< srp< ::lestes::lang::cplus::sem::ss_declaration > > >  a__symbol_register__internals 
) [protected]

Generated constructor for class symbol_register.

Generated constructor for class symbol_register.

Author:
lsg

Definition at line 123 of file symbol_register.g.cc.

Referenced by create().

00126         : symbol_register_base(), externals(checked(a__symbol_register__externals)), globals(checked(a__symbol_register__globals)), internals(checked(a__symbol_register__internals))
00127 {}


Member Function Documentation

ptr< symbol_register > lestes::md::symbols::symbol_register::singleton_instance_get (  )  [static]

The method singleton_instance_get returns the value of the field symbol_register::singleton_instance.

Returns:
The value of symbol_register::singleton_instance.
Author:
lsg

Definition at line 29 of file symbol_register.g.cc.

References singleton_instance.

Referenced by instance().

00030 {
00031         return singleton_instance;
00032 }

void lestes::md::symbols::symbol_register::singleton_instance_set ( const ptr< symbol_register > &  x  )  [static]

The method singleton_instance_set sets the field symbol_register::singleton_instance to the given value.

Parameters:
[in] x The new value to set symbol_register::singleton_instance to.
Author:
lsg

Definition at line 38 of file symbol_register.g.cc.

References singleton_instance.

Referenced by instance().

00039 {
00040         symbol_register::singleton_instance = x;
00041 }

ptr<::lestes::std::set< srp<::lestes::lang::cplus::sem::ss_declaration > > > lestes::md::symbols::symbol_register::externals_get (  )  const

The method externals_get returns the value of the field symbol_register::externals.

Returns:
The value of symbol_register::externals.
Author:
lsg

Definition at line 47 of file symbol_register.g.cc.

References externals.

00048 {
00049         return externals;
00050 }

void lestes::md::symbols::symbol_register::externals_set ( const ptr< ::lestes::std::set< srp< ::lestes::lang::cplus::sem::ss_declaration > > > &  x  ) 

The method externals_set sets the field symbol_register::externals to the given value.

Parameters:
[in] x The new value to set symbol_register::externals to.
Author:
lsg

Definition at line 56 of file symbol_register.g.cc.

References externals.

00057 {
00058         symbol_register::externals = x;
00059 }

ptr<::lestes::std::set< srp<::lestes::lang::cplus::sem::ss_declaration > > > lestes::md::symbols::symbol_register::globals_get (  )  const

The method globals_get returns the value of the field symbol_register::globals.

Returns:
The value of symbol_register::globals.
Author:
lsg

Definition at line 65 of file symbol_register.g.cc.

References globals.

00066 {
00067         return globals;
00068 }

void lestes::md::symbols::symbol_register::globals_set ( const ptr< ::lestes::std::set< srp< ::lestes::lang::cplus::sem::ss_declaration > > > &  x  ) 

The method globals_set sets the field symbol_register::globals to the given value.

Parameters:
[in] x The new value to set symbol_register::globals to.
Author:
lsg

Definition at line 74 of file symbol_register.g.cc.

References globals.

00075 {
00076         symbol_register::globals = x;
00077 }

ptr<::lestes::std::set< srp<::lestes::lang::cplus::sem::ss_declaration > > > lestes::md::symbols::symbol_register::internals_get (  )  const

The method internals_get returns the value of the field symbol_register::internals.

Returns:
The value of symbol_register::internals.
Author:
lsg

Definition at line 83 of file symbol_register.g.cc.

References internals.

00084 {
00085         return internals;
00086 }

void lestes::md::symbols::symbol_register::internals_set ( const ptr< ::lestes::std::set< srp< ::lestes::lang::cplus::sem::ss_declaration > > > &  x  ) 

The method internals_set sets the field symbol_register::internals to the given value.

Parameters:
[in] x The new value to set symbol_register::internals to.
Author:
lsg

Definition at line 92 of file symbol_register.g.cc.

References internals.

00093 {
00094         symbol_register::internals = x;
00095 }

ptr< symbol_register > lestes::md::symbols::symbol_register::instance (  )  [static]

Definition at line 26 of file symbol_register.cc.

References create(), singleton_instance_get(), and singleton_instance_set().

00026                                                {
00027         if ( !singleton_instance_get() ) {
00028                 singleton_instance_set(symbol_register::create());
00029         }
00030         return singleton_instance_get();
00031 }

void lestes::md::symbols::symbol_register::register_external ( ptr< ::lestes::lang::cplus::sem::ss_declaration symbol  ) 

Registers an external symbol.

void lestes::md::symbols::symbol_register::register_global ( ptr< ::lestes::lang::cplus::sem::ss_declaration symbol  ) 

Registers a global symbol.

void lestes::md::symbols::symbol_register::register_internal ( ptr< ::lestes::lang::cplus::sem::ss_declaration symbol  ) 

Registers an internal symbol.

virtual void lestes::md::symbols::symbol_register::register_symbol ( ptr< ::lestes::lang::cplus::sem::ss_declaration symbol  )  [virtual]

Registers a symbol.

Implements lestes::md::symbols::symbol_register_base.

void lestes::md::symbols::symbol_register::emit_global_declarations ( ::std::ostream &  output  ) 

Emits global delarations for registered symbols.

Parameters:
output Output.

Definition at line 104 of file symbol_register.cc.

References externals, globals, lestes::md::symbols::name_mangler::instance(), internals, and lestes::md::string_replace().

00104                                                                  {
00105         decl_set_type::iterator it;
00106         
00107         for(it=externals->begin(); it!=externals->end(); it++) {
00108                 output << string_replace(tm_asm::ent_extern_symbol_decl_get(),"$name",name_mangler::instance()->mangle(*it));
00109         }
00110         
00111         for(it=globals->begin(); it!=globals->end(); it++) {
00112                 output << string_replace(tm_asm::ent_global_symbol_decl_get(),"$name",name_mangler::instance()->mangle(*it));
00113         }
00114         
00115         for(it=internals->begin(); it!=internals->end(); it++) {
00116                 output << string_replace(tm_asm::ent_internal_symbol_decl_get(),"$name",name_mangler::instance()->mangle(*it));
00117         }
00118 }

ptr< symbol_register > lestes::md::symbols::symbol_register::create ( ptr< ::lestes::std::set< srp< ::lestes::lang::cplus::sem::ss_declaration > > >  a__symbol_register__externals,
ptr< ::lestes::std::set< srp< ::lestes::lang::cplus::sem::ss_declaration > > >  a__symbol_register__globals,
ptr< ::lestes::std::set< srp< ::lestes::lang::cplus::sem::ss_declaration > > >  a__symbol_register__internals 
) [static]

First generated factory method for class symbol_register.

This factory method for class symbol_register takes values of all fields as arguments.

Author:
lsg

Definition at line 101 of file symbol_register.g.cc.

References symbol_register().

00104 {
00105         return ptr< symbol_register > ( new symbol_register(a__symbol_register__externals,
00106                 a__symbol_register__globals,
00107                 a__symbol_register__internals) );
00108 }

ptr< symbol_register > lestes::md::symbols::symbol_register::create ( void   )  [static]

Second generated factory method for class symbol_register.

This factory method for class symbol_register uses initializers.

Author:
lsg

Definition at line 114 of file symbol_register.g.cc.

References symbol_register().

Referenced by instance().

00115 {
00116         return ptr< symbol_register > ( new symbol_register(::lestes::std::set< srp< ::lestes::lang::cplus::sem::ss_declaration > > ::create(), ::lestes::std::set< srp< ::lestes::lang::cplus::sem::ss_declaration > > ::create(), ::lestes::std::set< srp< ::lestes::lang::cplus::sem::ss_declaration > > ::create()) );
00117 }

ptr< object::reflection_list > lestes::md::symbols::symbol_register::reflection_get (  )  const [virtual]

for purposes of dumping

Reimplemented from lestes::md::symbols::symbol_register_base.

Definition at line 129 of file symbol_register.g.cc.

References lestes::std::list< T >::create(), reflection, and lestes::md::symbols::symbol_register_base::reflection_get().

00130 {
00131         if (!reflection) {
00132                 typedef class_reflection::field_metadata md;
00133                 typedef class_reflection::field_metadata_list mdlist;
00134                 ptr<mdlist> mdl = mdlist::create();
00135                 mdl->push_back( md::create( "singleton_instance", "symbol_register" ) );
00136                 mdl->push_back( md::create( "externals", "set&lt; srp&lt; ::lestes::lang::cplus::sem::ss_declaration &gt; &gt;" ) );
00137                 mdl->push_back( md::create( "globals", "set&lt; srp&lt; ::lestes::lang::cplus::sem::ss_declaration &gt; &gt;" ) );
00138                 mdl->push_back( md::create( "internals", "set&lt; srp&lt; ::lestes::lang::cplus::sem::ss_declaration &gt; &gt;" ) );
00139                 reflection = reflection_list::create( symbol_register_base::reflection_get() );
00140                 reflection->push_back( class_reflection::create( "symbol_register", mdl ) );
00141         }
00142         return reflection;
00143 }

ptr< object::field_list_list > lestes::md::symbols::symbol_register::field_values_get (  )  const [virtual]

for purposes of dumping

Reimplemented from lestes::md::symbols::symbol_register_base.

Definition at line 145 of file symbol_register.g.cc.

References lestes::std::list< T >::create(), and lestes::md::symbols::symbol_register_base::field_values_get().

00146 {
00147         ptr < field_list_list > result = symbol_register_base::field_values_get();
00148         result->push_back( value_list::create() );
00149         result->back()->push_back( this->singleton_instance );
00150         result->push_back( value_list::create() );
00151         result->back()->push_back( this->externals );
00152         result->push_back( value_list::create() );
00153         result->back()->push_back( this->globals );
00154         result->push_back( value_list::create() );
00155         result->back()->push_back( this->internals );
00156         return result;
00157 }

void lestes::md::symbols::symbol_register::gc_mark ( void   )  [protected, virtual]

Marking routine for class symbol_register.

Marking routine is used for garbage collection.

Author:
lsg

Reimplemented from lestes::md::symbols::symbol_register_base.

Definition at line 164 of file symbol_register.g.cc.

References lestes::md::symbols::symbol_register_base::gc_mark().

00165 {
00166         symbol_register_base::gc_mark();
00167 }


Member Data Documentation

ptr< symbol_register > lestes::md::symbols::symbol_register::singleton_instance = NULL [static, private]

Definition at line 113 of file symbol_register.g.hh.

Referenced by singleton_instance_get(), and singleton_instance_set().

srp< ::lestes::std::set< srp< ::lestes::lang::cplus::sem::ss_declaration > > > lestes::md::symbols::symbol_register::externals [private]

Registered external symbols.

Definition at line 115 of file symbol_register.g.hh.

Referenced by emit_global_declarations(), externals_get(), and externals_set().

srp< ::lestes::std::set< srp< ::lestes::lang::cplus::sem::ss_declaration > > > lestes::md::symbols::symbol_register::globals [private]

Registered global symbols.

Definition at line 117 of file symbol_register.g.hh.

Referenced by emit_global_declarations(), globals_get(), and globals_set().

srp< ::lestes::std::set< srp< ::lestes::lang::cplus::sem::ss_declaration > > > lestes::md::symbols::symbol_register::internals [private]

Registered internal symbols.

Definition at line 119 of file symbol_register.g.hh.

Referenced by emit_global_declarations(), internals_get(), and internals_set().

ptr< object::reflection_list > lestes::md::symbols::symbol_register::reflection = reflection [static, private]

Reimplemented from lestes::md::symbols::symbol_register_base.

Definition at line 120 of file symbol_register.g.hh.

Referenced by reflection_get().


The documentation for this class was generated from the following files:
Generated on Mon Feb 12 18:25:50 2007 for lestes by doxygen 1.5.1-20070107