lestes::lang::cplus::sem::ss_decl2mangled_name Class Reference

Visitor that returns string representation of ss_declaration as defined by GNU GCC mangling rules. More...

#include <ss_decl2lstring_base.g.hh>

Inheritance diagram for lestes::lang::cplus::sem::ss_decl2mangled_name:

lestes::lang::cplus::sem::ss_declaration_visitor lestes::std::visitor_base lestes::std::object lestes::std::mem::keystone List of all members.

Public Member Functions

ulint level_get () const
 The method level_get returns the value of the field ss_decl2mangled_name::level.
void level_set (ulint)
 The method level_set sets the field ss_decl2mangled_name::level to the given value.
lstring result_get () const
 The method result_get returns the value of the field ss_decl2mangled_name::result.
void result_set (lstring)
 The method result_set sets the field ss_decl2mangled_name::result to the given value.
ptr< ::lestes::std::map< lstring,
lstring > > 
substitutions_get () const
 The method substitutions_get returns the value of the field ss_decl2mangled_name::substitutions.
void substitutions_set (const ptr< ::lestes::std::map< lstring, lstring > > &)
 The method substitutions_set sets the field ss_decl2mangled_name::substitutions to the given value.
lstring get_substitution (lstring mangled_name)
 Gets substitution for a mangled string.
void init ()
virtual void visit_ss_namespace_definition (ptr< ::lestes::lang::cplus::sem::ss_namespace_definition >)
virtual void visit_ss_object_declaration (ptr< ::lestes::lang::cplus::sem::ss_object_declaration >)
virtual void visit_ss_bitfield_declaration (ptr< ::lestes::lang::cplus::sem::ss_bitfield_declaration >)
virtual void visit_ss_parameter_declaration (ptr< ::lestes::lang::cplus::sem::ss_parameter_declaration >)
virtual void visit_ss_fake_declaration (ptr< ::lestes::lang::cplus::sem::ss_fake_declaration >)
virtual void visit_ss_injected_class_declaration (ptr< ::lestes::lang::cplus::sem::ss_injected_class_declaration >)
virtual void visit_ss_enum_definition (ptr< ::lestes::lang::cplus::sem::ss_enum_definition >)
virtual void visit_ss_typedef_definition (ptr< ::lestes::lang::cplus::sem::ss_typedef_definition >)
virtual void visit_ss_enumerator_declaration (ptr< ::lestes::lang::cplus::sem::ss_enumerator_declaration >)
virtual void visit_ss_structure_declaration (ptr< ::lestes::lang::cplus::sem::ss_structure_declaration >)
virtual void visit_ss_function_declaration (ptr< ::lestes::lang::cplus::sem::ss_function_declaration >)
virtual void visit_ss_method_declaration (ptr< ::lestes::lang::cplus::sem::ss_method_declaration >)
virtual void visit_ss_using_declaration (ptr< ::lestes::lang::cplus::sem::ss_using_declaration >)
virtual void visit_ss_compound_stmt_declaration (ptr< ::lestes::lang::cplus::sem::ss_compound_stmt_declaration >)
virtual void visit_ss_builtin_operator_declaration (ptr< ::lestes::lang::cplus::sem::ss_builtin_operator_declaration >)
lstring process (const ptr< ::lestes::lang::cplus::sem::ss_declaration > &)
 "visit-return" method
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< ss_decl2mangled_namesingleton_instance_get ()
 The method singleton_instance_get returns the value of the field ss_decl2mangled_name::singleton_instance.
static void singleton_instance_set (const ptr< ss_decl2mangled_name > &)
 The method singleton_instance_set sets the field ss_decl2mangled_name::singleton_instance to the given value.
static ptr< ss_decl2mangled_nameinstance ()
static ptr< ss_decl2mangled_namecreate (ulint a__ss_decl2mangled_name__level, lstring a__ss_decl2mangled_name__result, ptr< ::lestes::std::map< lstring, lstring > > a__ss_decl2mangled_name__substitutions)
 First generated factory method for class ss_decl2mangled_name.
static ptr< ss_decl2mangled_namecreate ()
 Second generated factory method for class ss_decl2mangled_name.

Protected Member Functions

 ss_decl2mangled_name (ulint a__ss_decl2mangled_name__level, lstring a__ss_decl2mangled_name__result, ptr< ::lestes::std::map< lstring, lstring > > a__ss_decl2mangled_name__substitutions)
 Generated constructor for class ss_decl2mangled_name.
virtual void gc_mark ()
 Marking routine for class ss_decl2mangled_name.

Private Attributes

ulint level
lstring result
srp< ::lestes::std::map< lstring,
lstring > > 
substitutions

Static Private Attributes

static ptr< ss_decl2mangled_namesingleton_instance = singleton_instance
static ptr< reflection_listreflection = reflection

Detailed Description

Visitor that returns string representation of ss_declaration as defined by GNU GCC mangling rules.

Definition at line 27 of file ss_decl2lstring_base.g.hh.


Constructor & Destructor Documentation

lestes::lang::cplus::sem::ss_decl2mangled_name::ss_decl2mangled_name ( ulint  a__ss_decl2mangled_name__level,
lstring  a__ss_decl2mangled_name__result,
ptr< ::lestes::std::map< lstring, lstring > >  a__ss_decl2mangled_name__substitutions 
) [protected]

Generated constructor for class ss_decl2mangled_name.

Generated constructor for class ss_decl2mangled_name.

Author:
lsg

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

Referenced by create().

00126         : ss_declaration_visitor(), level(a__ss_decl2mangled_name__level), result(a__ss_decl2mangled_name__result), substitutions(checked(a__ss_decl2mangled_name__substitutions))
00127 {}


Member Function Documentation

ptr< ss_decl2mangled_name > lestes::lang::cplus::sem::ss_decl2mangled_name::singleton_instance_get (  )  [static]

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

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

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

References singleton_instance.

00030 {
00031         return singleton_instance;
00032 }

void lestes::lang::cplus::sem::ss_decl2mangled_name::singleton_instance_set ( const ptr< ss_decl2mangled_name > &  x  )  [static]

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

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

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

References singleton_instance.

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

ulint lestes::lang::cplus::sem::ss_decl2mangled_name::level_get (  )  const

The method level_get returns the value of the field ss_decl2mangled_name::level.

Returns:
The value of ss_decl2mangled_name::level.
Author:
lsg

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

References level.

00048 {
00049         return level;
00050 }

void lestes::lang::cplus::sem::ss_decl2mangled_name::level_set ( ulint  x  ) 

The method level_set sets the field ss_decl2mangled_name::level to the given value.

Parameters:
[in] x The new value to set ss_decl2mangled_name::level to.
Author:
lsg

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

References level.

Referenced by init().

00057 {
00058         ss_decl2mangled_name::level = x;
00059 }

lstring lestes::lang::cplus::sem::ss_decl2mangled_name::result_get (  )  const

The method result_get returns the value of the field ss_decl2mangled_name::result.

Returns:
The value of ss_decl2mangled_name::result.
Author:
lsg

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

References result.

Referenced by process().

00066 {
00067         return result;
00068 }

void lestes::lang::cplus::sem::ss_decl2mangled_name::result_set ( lstring  x  ) 

The method result_set sets the field ss_decl2mangled_name::result to the given value.

Parameters:
[in] x The new value to set ss_decl2mangled_name::result to.
Author:
lsg

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

References result.

Referenced by visit_ss_bitfield_declaration(), visit_ss_builtin_operator_declaration(), visit_ss_compound_stmt_declaration(), visit_ss_enum_definition(), visit_ss_enumerator_declaration(), visit_ss_fake_declaration(), visit_ss_function_declaration(), visit_ss_injected_class_declaration(), visit_ss_method_declaration(), visit_ss_namespace_definition(), visit_ss_object_declaration(), visit_ss_parameter_declaration(), visit_ss_structure_declaration(), visit_ss_typedef_definition(), and visit_ss_using_declaration().

00075 {
00076         ss_decl2mangled_name::result = x;
00077 }

ptr<::lestes::std::map< lstring, lstring > > lestes::lang::cplus::sem::ss_decl2mangled_name::substitutions_get (  )  const

The method substitutions_get returns the value of the field ss_decl2mangled_name::substitutions.

Returns:
The value of ss_decl2mangled_name::substitutions.
Author:
lsg

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

References substitutions.

00084 {
00085         return substitutions;
00086 }

void lestes::lang::cplus::sem::ss_decl2mangled_name::substitutions_set ( const ptr< ::lestes::std::map< lstring, lstring > > &  x  ) 

The method substitutions_set sets the field ss_decl2mangled_name::substitutions to the given value.

Parameters:
[in] x The new value to set ss_decl2mangled_name::substitutions to.
Author:
lsg

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

References substitutions.

00093 {
00094         ss_decl2mangled_name::substitutions = x;
00095 }

lstring lestes::lang::cplus::sem::ss_decl2mangled_name::get_substitution ( lstring  mangled_name  ) 

Gets substitution for a mangled string.

If a substitution for mangled name exists then function returns it. Else function creates new substitution, adds it to substitutions map and returns original mangled name.

Parameters:
mangled_name The mangled name.
Returns:
The substitution.

Definition at line 79 of file ss_decl2lstring_base.cc.

References lassert, and substitutions.

Referenced by visit_ss_function_declaration().

00079                                                                    {
00080         map<lstring,lstring>::iterator existing_subst = substitutions->find(mangled_name);
00081                                 
00082         if ( existing_subst==substitutions->end()) {
00083                 //Add new substitution.
00084                 ::std::ostringstream oss_subst;
00085                 oss_subst << "S";
00086                                         
00087                 if ( substitutions->size() >0 ) {
00088                         oss_subst << substitutions->size()-1;
00089                 }
00090                                          
00091                 oss_subst << "_";
00092                                         
00093                 (*substitutions)[mangled_name] = oss_subst.str(); 
00094                                         
00095                 return mangled_name;
00096         } else {
00097                 return existing_subst->second;
00098         }
00099         
00100         lassert(false);
00101         return lstring();
00102 }

ptr< ss_decl2mangled_name > lestes::lang::cplus::sem::ss_decl2mangled_name::instance (  )  [static]

Definition at line 54 of file ss_decl2lstring_base.cc.

References create(), and singleton_instance.

00054                                                           {
00055         if ( !singleton_instance ) {
00056                 singleton_instance = ss_decl2mangled_name::create();
00057         }
00058         
00059         singleton_instance->init();
00060                 
00061         return singleton_instance;
00062 }

void lestes::lang::cplus::sem::ss_decl2mangled_name::init (  ) 

Definition at line 64 of file ss_decl2lstring_base.cc.

References level_set(), and substitutions.

00064                                 {
00065     level_set(0);
00066         substitutions->clear();
00067 }

void lestes::lang::cplus::sem::ss_decl2mangled_name::visit_ss_namespace_definition ( ptr< ::lestes::lang::cplus::sem::ss_namespace_definition  )  [virtual]

Implements lestes::lang::cplus::sem::ss_declaration_visitor.

Definition at line 104 of file ss_decl2lstring_base.cc.

References lestes::lang::cplus::sem::ss_decl_name2mangled_name::instance(), lassert, level, process(), result_set(), and lestes::lang::cplus::sem::ss_decl_seq::root_instance().

00104                                                                                                               {
00105         lassert(decl);
00106         
00107         level++;        
00108         
00109         ::std::ostringstream oss;
00110         
00111         if ( decl->contained_in_get() != ss_decl_seq::root_instance() ){
00112                 //Is nested -> prepend encoded namespaces
00113                 oss <<  process(decl->contained_in_get()->parent_get()->declared_by_get());
00114         }
00115         
00116         //Get mangled namespace's name.
00117         lstring name = decl->name_get()->accept_ss_decl_name2lstring_base(ss_decl_name2mangled_name::instance());
00118         
00119         //Create mangled symbol.
00120         oss << name.length() << name;
00121         
00122         return result_set(oss.str());
00123 }

void lestes::lang::cplus::sem::ss_decl2mangled_name::visit_ss_object_declaration ( ptr< ::lestes::lang::cplus::sem::ss_object_declaration  )  [virtual]

Implements lestes::lang::cplus::sem::ss_declaration_visitor.

Definition at line 125 of file ss_decl2lstring_base.cc.

References lestes::lang::cplus::sem::ss_decl_name2mangled_name::instance(), lassert, level, process(), result_set(), and lestes::lang::cplus::sem::ss_decl_seq::root_instance().

00125                                                                                                           {
00126         lassert(decl);
00127         
00128         level++;        
00129         
00130         int my_level = level;
00131         
00132         ::std::ostringstream oss;
00133 
00134         //Get mangled name.     
00135         lstring name = decl->name_get()->accept_ss_decl_name2lstring_base(ss_decl_name2mangled_name::instance());
00136 
00137         //mangle namespace
00138         lstring enclosing = lstring();
00139         if ( decl->contained_in_get() != ss_decl_seq::root_instance()) {
00140                 ::std::ostringstream oss1;
00141                 //Is nested? -> encode namespaces
00142                 oss1 << process(decl->contained_in_get()->declared_by_get());
00143                 oss1 << name.length();
00144                 
00145                 enclosing = oss1.str();
00146         }
00147         
00148         if ( my_level==1 ) {
00149                 //This is top level object.
00150                 if ( !enclosing.empty() ) {
00151                         oss << "_ZN" << enclosing << name.length() << name << "E";
00152                 } else {
00153                         oss << name;
00154                 }
00155         } else {
00156                 //This is enclosing object declaration for another one. 
00157                 if ( !enclosing.empty() ) {
00158                         oss << enclosing << name.length() << name;
00159                 } else {
00160                         oss << name.length() << name;
00161                 }
00162         }
00163         
00164         return result_set(oss.str());
00165 }

void lestes::lang::cplus::sem::ss_decl2mangled_name::visit_ss_bitfield_declaration ( ptr< ::lestes::lang::cplus::sem::ss_bitfield_declaration  )  [virtual]

Implements lestes::lang::cplus::sem::ss_declaration_visitor.

Definition at line 167 of file ss_decl2lstring_base.cc.

References lassert, level, and result_set().

00167                                                                                                               {
00168         lassert(decl);
00169         
00170         level++;        
00171         
00172         //A bitfield can be declared in class/struct only. It can't be static. -> No mangling needed.
00173         lassert(false);
00174         return result_set(lstring());
00175 }

void lestes::lang::cplus::sem::ss_decl2mangled_name::visit_ss_parameter_declaration ( ptr< ::lestes::lang::cplus::sem::ss_parameter_declaration  )  [virtual]

Implements lestes::lang::cplus::sem::ss_declaration_visitor.

Definition at line 177 of file ss_decl2lstring_base.cc.

References lestes::lang::cplus::sem::ss_type2mangled_id::instance(), lassert, level, process(), and result_set().

00177                                                                                                                 {
00178         lassert(decl);
00179         
00180         level++;        
00181         
00182         return result_set(ss_type2mangled_id::instance()->process(decl->type_get()));
00183 }

void lestes::lang::cplus::sem::ss_decl2mangled_name::visit_ss_fake_declaration ( ptr< ::lestes::lang::cplus::sem::ss_fake_declaration  )  [virtual]

Implements lestes::lang::cplus::sem::ss_declaration_visitor.

Definition at line 340 of file ss_decl2lstring_base.cc.

References lassert, level, and result_set().

00340                                                                                                      {
00341         lassert(decl);
00342         
00343         level++;        
00344         
00345         lassert(false);
00346         //TODO
00347         return result_set(lstring());
00348 }

void lestes::lang::cplus::sem::ss_decl2mangled_name::visit_ss_injected_class_declaration ( ptr< ::lestes::lang::cplus::sem::ss_injected_class_declaration  )  [virtual]

Implements lestes::lang::cplus::sem::ss_declaration_visitor.

Definition at line 350 of file ss_decl2lstring_base.cc.

References lassert, level, and result_set().

00350                                                                                                                          {
00351         lassert(decl);
00352         
00353         level++;        
00354         
00355         lassert(false);
00356         //TODO
00357         return result_set(lstring());
00358 }

void lestes::lang::cplus::sem::ss_decl2mangled_name::visit_ss_enum_definition ( ptr< ::lestes::lang::cplus::sem::ss_enum_definition  )  [virtual]

Implements lestes::lang::cplus::sem::ss_declaration_visitor.

Definition at line 195 of file ss_decl2lstring_base.cc.

References lassert, level, and result_set().

00195                                                                                                     {
00196         lassert(decl);
00197         
00198         level++;        
00199         
00200         //TODO
00201         lassert(false);
00202         return result_set(lstring());
00203 }

void lestes::lang::cplus::sem::ss_decl2mangled_name::visit_ss_typedef_definition ( ptr< ::lestes::lang::cplus::sem::ss_typedef_definition  )  [virtual]

Implements lestes::lang::cplus::sem::ss_declaration_visitor.

Definition at line 205 of file ss_decl2lstring_base.cc.

References lassert, level, and result_set().

00205                                                                                                           {
00206         lassert(decl);
00207         
00208         level++;        
00209         
00210         //TODO
00211         lassert(false);
00212         return result_set(lstring());
00213 }

void lestes::lang::cplus::sem::ss_decl2mangled_name::visit_ss_enumerator_declaration ( ptr< ::lestes::lang::cplus::sem::ss_enumerator_declaration  )  [virtual]

Implements lestes::lang::cplus::sem::ss_declaration_visitor.

Definition at line 289 of file ss_decl2lstring_base.cc.

References lassert, level, and result_set().

00289                                                                                                                   {
00290         lassert(decl);
00291         
00292         level++;        
00293         
00294         //TODO
00295         lassert(false);
00296         return result_set(lstring());
00297 }

void lestes::lang::cplus::sem::ss_decl2mangled_name::visit_ss_structure_declaration ( ptr< ::lestes::lang::cplus::sem::ss_structure_declaration  )  [virtual]

Implements lestes::lang::cplus::sem::ss_declaration_visitor.

Definition at line 185 of file ss_decl2lstring_base.cc.

References lassert, level, and result_set().

00185                                                                                                                 {
00186         lassert(decl);
00187         
00188         level++;        
00189         
00190         //TODO
00191         lassert(false);
00192         return result_set(lstring());
00193 }

void lestes::lang::cplus::sem::ss_decl2mangled_name::visit_ss_function_declaration ( ptr< ::lestes::lang::cplus::sem::ss_function_declaration  )  [virtual]

Implements lestes::lang::cplus::sem::ss_declaration_visitor.

Definition at line 215 of file ss_decl2lstring_base.cc.

References get_substitution(), lestes::lang::cplus::sem::ss_decl_name2mangled_name::instance(), lassert, level, process(), result_set(), and lestes::lang::cplus::sem::ss_decl_seq::root_instance().

00215                                                                                                               {
00216         lassert(decl);
00217         
00218         level++;        
00219 
00220         int my_level = level;
00221                 
00222         ::std::ostringstream oss;
00223                 
00224         if ( decl->is_entry_point() ) {         
00225                 return result_set(tm_asm::ent_main_name_get());
00226         } else {        
00227         
00228                 
00229                 lstring enclosing = lstring();
00230         
00231                 //mangle namespace
00232                 if ( decl->contained_in_get() != ss_decl_seq::root_instance()) {
00233                         ::std::ostringstream oss1;
00234                         //Is nested? -> encode namespaces
00235                         oss1 << process(decl->contained_in_get()->declared_by_get());
00236                 
00237                         enclosing = oss1.str();
00238                 }
00239         
00240                 lstring name = decl->name_get()->accept_ss_decl_name2lstring_base(ss_decl_name2mangled_name::instance());
00241                 
00242                 ::std::ostringstream oss2;
00243                 //mangle parameters
00244                 if ( !decl->parameters_get() ) {
00245                         //No parameters.
00246                         oss2 << "v";
00247                 } else {
00248                         //Encode parameters
00249                         ptr<decl_list_type> params = decl->parameters_get()->contents_get();
00250                         lassert(params);
00251                         
00252                         decl_list_type::iterator it;
00253                         for(it=params->begin(); it!=params->end(); ++it) {
00254                                 lstring mangled_parameter = process(*it);
00255                                 
00256                                 if ( mangled_parameter.length()>1 ) {
00257                                         //Substitute builtin datatypes only.
00258                                         oss2 << get_substitution(mangled_parameter);
00259                                 } else {
00260                                         oss2 << mangled_parameter;
00261                                 }
00262                         }
00263                 }
00264                 
00265                 lstring parameters = oss2.str();
00266                 
00267                 if ( my_level==1 ) {
00268                         //This is top level declaration.
00269                         if ( !enclosing.empty() ) {
00270                                 oss << "_ZN" << enclosing << name.length() << name << "E" << parameters;
00271                         } else {
00272                                 oss << "_Z" << name.length() << name << parameters;
00273                         }
00274                 } else {
00275                         //This is enclosing function declaration for another declaration.
00276                         if ( !enclosing.empty() ) {
00277                                 oss << enclosing << name.length() << name << parameters;
00278                         } else {
00279                                 oss << name.length() << name << parameters;
00280                         }
00281                 }
00282 
00283                 return result_set(oss.str());
00284         }
00285         lassert(false);
00286         return result_set(NULL);
00287 }

void lestes::lang::cplus::sem::ss_decl2mangled_name::visit_ss_method_declaration ( ptr< ::lestes::lang::cplus::sem::ss_method_declaration  )  [virtual]

Implements lestes::lang::cplus::sem::ss_declaration_visitor.

Definition at line 330 of file ss_decl2lstring_base.cc.

References lassert, level, and result_set().

00330                                                                                                           {
00331         lassert(decl);
00332         
00333         level++;        
00334         
00335         lassert(false);
00336         //TODO
00337         return result_set(lstring());
00338 }

void lestes::lang::cplus::sem::ss_decl2mangled_name::visit_ss_using_declaration ( ptr< ::lestes::lang::cplus::sem::ss_using_declaration  )  [virtual]

Implements lestes::lang::cplus::sem::ss_declaration_visitor.

Definition at line 299 of file ss_decl2lstring_base.cc.

References lassert, level, and result_set().

00299                                                                                                         {
00300         lassert(decl);
00301         
00302         level++;        
00303         
00304         //TODO
00305         lassert(false);
00306         return result_set(lstring());
00307 }

void lestes::lang::cplus::sem::ss_decl2mangled_name::visit_ss_compound_stmt_declaration ( ptr< ::lestes::lang::cplus::sem::ss_compound_stmt_declaration  )  [virtual]

Implements lestes::lang::cplus::sem::ss_declaration_visitor.

Definition at line 320 of file ss_decl2lstring_base.cc.

References lassert, level, and result_set().

00320                                                                                                                         {
00321         lassert(decl);
00322         
00323         level++;        
00324         
00325         lassert(false);
00326         //TODO
00327         return result_set(lstring());
00328 }

void lestes::lang::cplus::sem::ss_decl2mangled_name::visit_ss_builtin_operator_declaration ( ptr< ::lestes::lang::cplus::sem::ss_builtin_operator_declaration  )  [virtual]

Implements lestes::lang::cplus::sem::ss_declaration_visitor.

Definition at line 309 of file ss_decl2lstring_base.cc.

References lassert, level, and result_set().

00309                                                                                                                               {
00310         lassert(decl);
00311         
00312         level++;        
00313         
00314         //TODO
00315         lassert(false);
00316         return result_set(lstring());
00317 }

ptr< ss_decl2mangled_name > lestes::lang::cplus::sem::ss_decl2mangled_name::create ( ulint  a__ss_decl2mangled_name__level,
lstring  a__ss_decl2mangled_name__result,
ptr< ::lestes::std::map< lstring, lstring > >  a__ss_decl2mangled_name__substitutions 
) [static]

First generated factory method for class ss_decl2mangled_name.

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

Author:
lsg

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

References ss_decl2mangled_name().

00104 {
00105         return ptr< ss_decl2mangled_name > ( new ss_decl2mangled_name(a__ss_decl2mangled_name__level,
00106                 a__ss_decl2mangled_name__result,
00107                 a__ss_decl2mangled_name__substitutions) );
00108 }

ptr< ss_decl2mangled_name > lestes::lang::cplus::sem::ss_decl2mangled_name::create ( void   )  [static]

Second generated factory method for class ss_decl2mangled_name.

This factory method for class ss_decl2mangled_name uses initializers.

Author:
lsg

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

References ss_decl2mangled_name().

Referenced by instance().

00115 {
00116         return ptr< ss_decl2mangled_name > ( new ss_decl2mangled_name(0, "", ::lestes::std::map< lstring, lstring > ::create()) );
00117 }

lstring lestes::lang::cplus::sem::ss_decl2mangled_name::process ( const ptr< ::lestes::lang::cplus::sem::ss_declaration > &   ) 

"visit-return" method

Definition at line 159 of file ss_decl2lstring_base.g.cc.

References lassert2, and result_get().

Referenced by visit_ss_function_declaration(), visit_ss_namespace_definition(), visit_ss_object_declaration(), and visit_ss_parameter_declaration().

00160 {
00161         lassert2( o, "Cannot visit NULL object." );
00162         o->accept_ss_declaration_visitor( ptr< ss_declaration_visitor >(this) );
00163         return result_get();
00164 }

ptr< object::reflection_list > lestes::lang::cplus::sem::ss_decl2mangled_name::reflection_get (  )  const [virtual]

for purposes of dumping

Reimplemented from lestes::lang::cplus::sem::ss_declaration_visitor.

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

References lestes::std::list< T >::create(), reflection, and lestes::lang::cplus::sem::ss_declaration_visitor::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", "ss_decl2mangled_name" ) );
00136                 mdl->push_back( md::create( "level", "ulint" ) );
00137                 mdl->push_back( md::create( "result", "lstring" ) );
00138                 mdl->push_back( md::create( "substitutions", "map&lt; lstring, lstring &gt;" ) );
00139                 reflection = reflection_list::create( ss_declaration_visitor::reflection_get() );
00140                 reflection->push_back( class_reflection::create( "ss_decl2mangled_name", mdl ) );
00141         }
00142         return reflection;
00143 }

ptr< object::field_list_list > lestes::lang::cplus::sem::ss_decl2mangled_name::field_values_get (  )  const [virtual]

for purposes of dumping

Reimplemented from lestes::lang::cplus::sem::ss_declaration_visitor.

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

References lestes::std::list< T >::create(), lestes::lang::cplus::sem::ss_declaration_visitor::field_values_get(), and result.

00146 {
00147         ptr < field_list_list > result = ss_declaration_visitor::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( objectize< ulint > ::create( this->level ) );
00152         result->push_back( value_list::create() );
00153         result->back()->push_back( objectize< lstring > ::create( this->result ) );
00154         result->push_back( value_list::create() );
00155         result->back()->push_back( this->substitutions );
00156         return result;
00157 }

void lestes::lang::cplus::sem::ss_decl2mangled_name::gc_mark ( void   )  [protected, virtual]

Marking routine for class ss_decl2mangled_name.

Marking routine is used for garbage collection.

Author:
lsg

Reimplemented from lestes::lang::cplus::sem::ss_declaration_visitor.

Definition at line 171 of file ss_decl2lstring_base.g.cc.

References lestes::lang::cplus::sem::ss_declaration_visitor::gc_mark().

00172 {
00173         ss_declaration_visitor::gc_mark();
00174 }


Member Data Documentation

ptr< ss_decl2mangled_name > lestes::lang::cplus::sem::ss_decl2mangled_name::singleton_instance = singleton_instance [static, private]

Definition at line 121 of file ss_decl2lstring_base.g.hh.

Referenced by instance(), singleton_instance_get(), and singleton_instance_set().

ulint lestes::lang::cplus::sem::ss_decl2mangled_name::level [private]

Definition at line 122 of file ss_decl2lstring_base.g.hh.

Referenced by level_get(), level_set(), visit_ss_bitfield_declaration(), visit_ss_builtin_operator_declaration(), visit_ss_compound_stmt_declaration(), visit_ss_enum_definition(), visit_ss_enumerator_declaration(), visit_ss_fake_declaration(), visit_ss_function_declaration(), visit_ss_injected_class_declaration(), visit_ss_method_declaration(), visit_ss_namespace_definition(), visit_ss_object_declaration(), visit_ss_parameter_declaration(), visit_ss_structure_declaration(), visit_ss_typedef_definition(), and visit_ss_using_declaration().

lstring lestes::lang::cplus::sem::ss_decl2mangled_name::result [private]

Definition at line 123 of file ss_decl2lstring_base.g.hh.

Referenced by field_values_get(), result_get(), and result_set().

srp< ::lestes::std::map< lstring, lstring > > lestes::lang::cplus::sem::ss_decl2mangled_name::substitutions [private]

Definition at line 124 of file ss_decl2lstring_base.g.hh.

Referenced by get_substitution(), init(), substitutions_get(), and substitutions_set().

ptr< object::reflection_list > lestes::lang::cplus::sem::ss_decl2mangled_name::reflection = reflection [static, private]

Reimplemented from lestes::lang::cplus::sem::ss_declaration_visitor.

Definition at line 125 of file ss_decl2lstring_base.g.hh.

Referenced by reflection_get().


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