lestes::lang::cplus::sem::ss_class Class Reference

Class for struct-class types. More...

#include <ss_type.g.hh>

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

lestes::lang::cplus::sem::ss_struct_base 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

ptr< ::lestes::std::list<
srp< ss_base_specifier > > > 
bases_get () const
 The method bases_get returns the value of the field ss_class::bases.
void bases_set (const ptr< ::lestes::std::list< srp< ss_base_specifier > > > &)
 The method bases_set sets the field ss_class::bases to the given value.
ptr< ::lestes::std::set< srp<
ss_class > > > 
descendants_get () const
 The method descendants_get returns the value of the field ss_class::descendants.
void descendants_set (const ptr< ::lestes::std::set< srp< ss_class > > > &)
 The method descendants_set sets the field ss_class::descendants to the given value.
bool is_ancestor (ptr< ss_class > descendant)
 Check whether is this class ancestor of parameter.
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_classcreate (ptr< ss_decl_seq > a__ss_struct_base__members, ptr< ss_declaration > a__ss_struct_base__decl, bool a__ss_struct_base__POD, ptr< ss_declaration_time > a__ss_struct_base__completion_time, ptr< ::lestes::std::list< srp< ss_base_specifier > > > a__ss_class__bases, ptr< ::lestes::std::set< srp< ss_class > > > a__ss_class__descendants)
 First generated factory method for class ss_class.
static ptr< ss_classcreate (ptr< ss_decl_seq > a__ss_struct_base__members, ptr< ss_declaration > a__ss_struct_base__decl, bool a__ss_struct_base__POD, ptr< ss_declaration_time > a__ss_struct_base__completion_time, ptr< ::lestes::std::list< srp< ss_base_specifier > > > a__ss_class__bases)
 Second generated factory method for class ss_class.

Protected Member Functions

 ss_class (ptr< ss_decl_seq > a__ss_struct_base__members, ptr< ss_declaration > a__ss_struct_base__decl, bool a__ss_struct_base__POD, ptr< ss_declaration_time > a__ss_struct_base__completion_time, ptr< ::lestes::std::list< srp< ss_base_specifier > > > a__ss_class__bases, ptr< ::lestes::std::set< srp< ss_class > > > a__ss_class__descendants)
 Generated constructor for class ss_class.
virtual void gc_mark ()
 Marking routine for class ss_class.

Private Attributes

srp< ::lestes::std::list<
srp< ss_base_specifier > > > 
bases
srp< ::lestes::std::set< srp<
ss_class > > > 
descendants
 Direct descendant classes of current class.

Static Private Attributes

static ptr< reflection_listreflection = reflection

Detailed Description

Class for struct-class types.

Distinction of struct-class: default visibility is resolved before. TODO struct x class POD status

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


Constructor & Destructor Documentation

lestes::lang::cplus::sem::ss_class::ss_class ( ptr< ss_decl_seq a__ss_struct_base__members,
ptr< ss_declaration a__ss_struct_base__decl,
bool  a__ss_struct_base__POD,
ptr< ss_declaration_time a__ss_struct_base__completion_time,
ptr< ::lestes::std::list< srp< ss_base_specifier > > >  a__ss_class__bases,
ptr< ::lestes::std::set< srp< ss_class > > >  a__ss_class__descendants 
) [protected]

Generated constructor for class ss_class.

Generated constructor for class ss_class.

Author:
lsg

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

Referenced by create().

01483         : ss_struct_base(a__ss_struct_base__members,
01484                 a__ss_struct_base__decl,
01485                 a__ss_struct_base__POD,
01486                 a__ss_struct_base__completion_time), bases(checked(a__ss_class__bases)), descendants(checked(a__ss_class__descendants))
01487 {}


Member Function Documentation

ptr<::lestes::std::list< srp< ss_base_specifier > > > lestes::lang::cplus::sem::ss_class::bases_get (  )  const

The method bases_get returns the value of the field ss_class::bases.

Returns:
The value of ss_class::bases.
Author:
lsg

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

References bases.

01390 {
01391         return bases;
01392 }

void lestes::lang::cplus::sem::ss_class::bases_set ( const ptr< ::lestes::std::list< srp< ss_base_specifier > > > &  x  ) 

The method bases_set sets the field ss_class::bases to the given value.

Parameters:
[in] x The new value to set ss_class::bases to.
Author:
lsg

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

References bases.

01399 {
01400         ss_class::bases = x;
01401 }

ptr<::lestes::std::set< srp< ss_class > > > lestes::lang::cplus::sem::ss_class::descendants_get (  )  const

The method descendants_get returns the value of the field ss_class::descendants.

Returns:
The value of ss_class::descendants.
Author:
lsg

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

References descendants.

01408 {
01409         return descendants;
01410 }

void lestes::lang::cplus::sem::ss_class::descendants_set ( const ptr< ::lestes::std::set< srp< ss_class > > > &  x  ) 

The method descendants_set sets the field ss_class::descendants to the given value.

Parameters:
[in] x The new value to set ss_class::descendants to.
Author:
lsg

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

References descendants.

01417 {
01418         ss_class::descendants = x;
01419 }

bool lestes::lang::cplus::sem::ss_class::is_ancestor ( ptr< ss_class descendant  ) 

Check whether is this class ancestor of parameter.

Used in overload resolution.

Definition at line 290 of file ss_type.cc.

00291 {
00292         typedef ::lestes::std::list< srp< ss_class > > classlist;
00293         ptr< classlist > lst = classlist::create();
00294         ::lestes::std::list< srp< ss_class > >::iterator it_cl;
00295         ::lestes::std::list< srp< ss_base_specifier > >::iterator it;
00296 
00297         /* push 1st level of bases into list */
00298         for(it = descendant->bases_get()->begin(); it!= descendant->bases_get()->end(); it++) {
00299                 lst->push_back((*it)->base_class_get());
00300                 /* have we found ourselves? */
00301                 if ((*it)->base_class_get() == this) 
00302                         return true;
00303         }
00304                 
00305         /* for every class in the list, push into list all bases */
00306         for(it_cl = lst->begin(); it_cl != lst->end(); it_cl++){
00307                 for(it = (*it_cl)->bases_get()->begin(); it != (*it_cl)->bases_get()->end(); it_cl++) {
00308                         lst->push_back((*it)->base_class_get());
00309                         /* have we found ourselves? */
00310                         if ((*it)->base_class_get() == this)
00311                                 return true;
00312                 }
00313         }
00314         return false;
00315         
00316 }

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

Implements lestes::lang::cplus::sem::ss_struct_base.

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

01422 {
01423         return v->visit_ss_class( this );
01424 }

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

Implements lestes::lang::cplus::sem::ss_struct_base.

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

01427 {
01428         return v->visit_ss_class( this );
01429 }

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

Implements lestes::lang::cplus::sem::ss_struct_base.

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

01432 {
01433         return v->visit_ss_class( this );
01434 }

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

Implements lestes::lang::cplus::sem::ss_struct_base.

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

01437 {
01438         return v->visit_ss_class( this );
01439 }

ptr< ss_class > lestes::lang::cplus::sem::ss_class::create ( ptr< ss_decl_seq a__ss_struct_base__members,
ptr< ss_declaration a__ss_struct_base__decl,
bool  a__ss_struct_base__POD,
ptr< ss_declaration_time a__ss_struct_base__completion_time,
ptr< ::lestes::std::list< srp< ss_base_specifier > > >  a__ss_class__bases,
ptr< ::lestes::std::set< srp< ss_class > > >  a__ss_class__descendants 
) [static]

First generated factory method for class ss_class.

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

Author:
lsg

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

References ss_class().

01451 {
01452         return ptr< ss_class > ( new ss_class(a__ss_struct_base__members,
01453                 a__ss_struct_base__decl,
01454                 a__ss_struct_base__POD,
01455                 a__ss_struct_base__completion_time,
01456                 a__ss_class__bases,
01457                 a__ss_class__descendants) );
01458 }

ptr< ss_class > lestes::lang::cplus::sem::ss_class::create ( ptr< ss_decl_seq a__ss_struct_base__members,
ptr< ss_declaration a__ss_struct_base__decl,
bool  a__ss_struct_base__POD,
ptr< ss_declaration_time a__ss_struct_base__completion_time,
ptr< ::lestes::std::list< srp< ss_base_specifier > > >  a__ss_class__bases 
) [static]

Second generated factory method for class ss_class.

This factory method for class ss_class uses initializers.

Author:
lsg

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

References lestes::intercode::intercode::create(), and ss_class().

01469 {
01470         return ptr< ss_class > ( new ss_class(a__ss_struct_base__members, a__ss_struct_base__decl, a__ss_struct_base__POD, a__ss_struct_base__completion_time, a__ss_class__bases, ::lestes::std::set< srp< ss_class > > ::create()) );
01471 }

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

for purposes of dumping

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

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

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

01490 {
01491         if (!reflection) {
01492                 typedef class_reflection::field_metadata md;
01493                 typedef class_reflection::field_metadata_list mdlist;
01494                 ptr<mdlist> mdl = mdlist::create();
01495                 mdl->push_back( md::create( "bases", "list&lt; srp&lt; ss_base_specifier &gt; &gt;" ) );
01496                 mdl->push_back( md::create( "descendants", "set&lt; srp&lt; ss_class &gt; &gt;" ) );
01497                 reflection = reflection_list::create( ss_struct_base::reflection_get() );
01498                 reflection->push_back( class_reflection::create( "ss_class", mdl ) );
01499         }
01500         return reflection;
01501 }

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

for purposes of dumping

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

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

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

01504 {
01505         ptr < field_list_list > result = ss_struct_base::field_values_get();
01506         result->push_back( value_list::create() );
01507         result->back()->push_back( this->bases );
01508         result->push_back( value_list::create() );
01509         result->back()->push_back( this->descendants );
01510         return result;
01511 }

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

Marking routine for class ss_class.

Marking routine is used for garbage collection.

Author:
lsg

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

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

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

01519 {
01520         ss_struct_base::gc_mark();
01521 }


Member Data Documentation

srp< ::lestes::std::list< srp< ss_base_specifier > > > lestes::lang::cplus::sem::ss_class::bases [private]

Bases of the class are in the list, because ABI-structure-layout has to now order.

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

Referenced by bases_get(), and bases_set().

srp< ::lestes::std::set< srp< ss_class > > > lestes::lang::cplus::sem::ss_class::descendants [private]

Direct descendant classes of current class.

Rationale: Overload resolution needs to know descendants. (Conversions of member pointers into member pointer of derived class.[4.11/2])

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

Referenced by descendants_get(), and descendants_set().

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

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

Definition at line 971 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:31 2007 for lestes by doxygen 1.5.1-20070107