lestes::lang::cplus::sem::ss_pseudoreference Class Reference

Class for pseudo-referenced types. More...

#include <ss_type.g.hh>

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

lestes::lang::cplus::sem::ss_referential lestes::lang::cplus::sem::ss_type lestes::intercode::ss_base lestes::intercode::intercode lestes::std::object lestes::std::mem::keystone List of all members.

Public Member Functions

virtual ptr< ::lestes::std::list<
srp< or_ics_functional > > > 
accept_or_ics_base (ptr< or_ics_base > v)
virtual or_cv_enum accept_or_ics_base_cv (ptr< or_ics_base_cv > v)
virtual ptr< ::lestes::md::types::tm_data_type_baseaccept_ss_type2tm_type_gen_base (ptr< ss_type2tm_type_gen_base > v)
virtual void accept_ss_type_visitor (ptr< ss_type_visitor > v)
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_typeinstance (ptr< ss_type > type)
 get the instance representing reference to the argument type
static ptr< ss_pseudoreferencecreate (ptr< ss_type > a__ss_referential__what)
 First generated factory method for class ss_pseudoreference.

Protected Member Functions

 ss_pseudoreference (ptr< ss_type > a__ss_referential__what)
 Generated constructor for class ss_pseudoreference.
virtual void gc_mark ()
 Marking routine for class ss_pseudoreference.

Static Private Attributes

static ptr< ::lestes::std::map<
srp< ss_type >, srp< ss_type > > > 
the_instances = ::lestes::std::map< srp< ss_type >, srp< ss_type > > ::create()
 holder for the class instances
static ptr< reflection_listreflection = reflection

Detailed Description

Class for pseudo-referenced types.

Represents usual variable.

Definition at line 457 of file ss_type.g.hh.


Constructor & Destructor Documentation

lestes::lang::cplus::sem::ss_pseudoreference::ss_pseudoreference ( ptr< ss_type a__ss_referential__what  )  [protected]

Generated constructor for class ss_pseudoreference.

Generated constructor for class ss_pseudoreference.

Author:
lsg

Definition at line 560 of file ss_type.g.cc.

Referenced by create().

00561         : ss_referential(a__ss_referential__what)
00562 {}


Member Function Documentation

ptr< ss_type > lestes::lang::cplus::sem::ss_pseudoreference::instance ( ptr< ss_type x  )  [static]

get the instance representing reference to the argument type

Returns type representing pseudoreference to a given type.

Precondition:
x != NULL
Parameters:
x The type to make pseudoreference to.
Returns:
The to the given type.

Definition at line 263 of file ss_type.cc.

References lestes::intercode::intercode::create(), lestes::lang::cplus::sem::ss_type2info::create(), lassert, lestes::lang::cplus::sem::ss_type2info::SS_PSEUDOREFERENCE, lestes::lang::cplus::sem::ss_type2info::SS_REFERENCE, and the_instances.

Referenced by lestes::lang::cplus::sem::or_builtin_operator_declaration_creator::add_ref_ptr(), lestes::lang::cplus::sem::or_builtin_operator_declaration_creator::add_ref_ptr_const(), lestes::lang::cplus::sem::or_builtin_operator_declaration_creator::add_vq_ptr_ref_vq_ptr_ref(), lestes::lang::cplus::sem::or_builtin_operator_declaration_creator::add_vq_ptr_ref_vq_ptr_ref_int(), lestes::lang::cplus::sem::or_builtin_operator_declaration_creator::add_vq_ptr_ref_vq_ptr_ref_ptr(), lestes::lang::cplus::sem::or_builtin_operator_declaration_creator::add_vq_ref_vq_ref(), lestes::lang::cplus::sem::or_builtin_operator_declaration_creator::add_vq_ref_vq_ref_nonref(), lestes::lang::cplus::sem::or_builtin_operator_declaration_creator::add_vq_ref_vq_ref_nonref_REF(), lestes::lang::cplus::sem::or_builtin_operator_expression_creator::construct_op_crement(), and lestes::lang::cplus::sem::or_or_functional_decl::operator()().

00264 {
00265         the_instances->dump_barrier_set(true); // XXX: needed just once :-I
00266 
00267         lassert(x);
00268 
00269         ptr<ss_type2info> ssti = ss_type2info::create();
00270 
00271         switch (ssti->process(x)) {
00272         case ss_type2info::SS_REFERENCE:
00273         case ss_type2info::SS_PSEUDOREFERENCE:
00274                 return x;
00275         default:
00276                 break;
00277         }
00278 
00279         srp<ss_type> &result = (*the_instances)[x];
00280 
00281         if (result)
00282                 return result;
00283 
00284         return result = ss_pseudoreference::create(x);
00285 }

ptr<::lestes::std::list< srp< or_ics_functional > > > lestes::lang::cplus::sem::ss_pseudoreference::accept_or_ics_base ( ptr< or_ics_base v  )  [virtual]

Implements lestes::lang::cplus::sem::ss_referential.

Definition at line 527 of file ss_type.g.cc.

00528 {
00529         return v->visit_ss_pseudoreference( this );
00530 }

or_cv_enum lestes::lang::cplus::sem::ss_pseudoreference::accept_or_ics_base_cv ( ptr< or_ics_base_cv v  )  [virtual]

Implements lestes::lang::cplus::sem::ss_referential.

Definition at line 532 of file ss_type.g.cc.

00533 {
00534         return v->visit_ss_pseudoreference( this );
00535 }

ptr<::lestes::md::types::tm_data_type_base > lestes::lang::cplus::sem::ss_pseudoreference::accept_ss_type2tm_type_gen_base ( ptr< ss_type2tm_type_gen_base v  )  [virtual]

Implements lestes::lang::cplus::sem::ss_referential.

Definition at line 537 of file ss_type.g.cc.

00538 {
00539         return v->visit_ss_pseudoreference( this );
00540 }

void lestes::lang::cplus::sem::ss_pseudoreference::accept_ss_type_visitor ( ptr< ss_type_visitor v  )  [virtual]

Implements lestes::lang::cplus::sem::ss_referential.

Definition at line 542 of file ss_type.g.cc.

00543 {
00544         return v->visit_ss_pseudoreference( this );
00545 }

ptr< ss_pseudoreference > lestes::lang::cplus::sem::ss_pseudoreference::create ( ptr< ss_type a__ss_referential__what  )  [static]

First generated factory method for class ss_pseudoreference.

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

Author:
lsg

Definition at line 551 of file ss_type.g.cc.

References ss_pseudoreference().

00552 {
00553         return ptr< ss_pseudoreference > ( new ss_pseudoreference(a__ss_referential__what) );
00554 }

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

for purposes of dumping

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

Definition at line 564 of file ss_type.g.cc.

References lestes::std::list< T >::create(), reflection, and lestes::lang::cplus::sem::ss_referential::reflection_get().

00565 {
00566         if (!reflection) {
00567                 typedef class_reflection::field_metadata md;
00568                 typedef class_reflection::field_metadata_list mdlist;
00569                 ptr<mdlist> mdl = mdlist::create();
00570                 mdl->push_back( md::create( "the_instances", "map&lt; srp&lt; ss_type &gt;, srp&lt; ss_type &gt; &gt;" ) );
00571                 reflection = reflection_list::create( ss_referential::reflection_get() );
00572                 reflection->push_back( class_reflection::create( "ss_pseudoreference", mdl ) );
00573         }
00574         return reflection;
00575 }

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

for purposes of dumping

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

Definition at line 577 of file ss_type.g.cc.

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

00578 {
00579         ptr < field_list_list > result = ss_referential::field_values_get();
00580         result->push_back( value_list::create() );
00581         result->back()->push_back( this->the_instances );
00582         return result;
00583 }

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

Marking routine for class ss_pseudoreference.

Marking routine is used for garbage collection.

Author:
lsg

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

Definition at line 590 of file ss_type.g.cc.

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

00591 {
00592         ss_referential::gc_mark();
00593 }


Member Data Documentation

ptr<::lestes::std::map< srp< ss_type >, srp< ss_type > > > lestes::lang::cplus::sem::ss_pseudoreference::the_instances = ::lestes::std::map< srp< ss_type >, srp< ss_type > > ::create() [static, private]

holder for the class instances

Definition at line 488 of file ss_type.g.hh.

Referenced by instance().

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

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

Definition at line 489 of file ss_type.g.hh.

Referenced by reflection_get().


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