lestes::lang::cplus::sem::ss_statement Class Reference

Base class for statements. More...

#include <ss_statement.g.hh>

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

lestes::intercode::ss_base_with_location lestes::intercode::ss_base lestes::intercode::intercode lestes::std::object lestes::std::mem::keystone lestes::lang::cplus::sem::ss_break lestes::lang::cplus::sem::ss_breakable_stmt lestes::lang::cplus::sem::ss_catch lestes::lang::cplus::sem::ss_compound_stmt lestes::lang::cplus::sem::ss_continue lestes::lang::cplus::sem::ss_decl_stmt lestes::lang::cplus::sem::ss_expr_stmt lestes::lang::cplus::sem::ss_goto lestes::lang::cplus::sem::ss_if_stmt lestes::lang::cplus::sem::ss_return lestes::lang::cplus::sem::ss_try List of all members.

Public Member Functions

ptr< ::lestes::std::list<
srp< ss_label > > > 
labels_get () const
 The method labels_get returns the value of the field ss_statement::labels.
ptr< ss_compound_stmtparent_get () const
 The method parent_get returns the value of the field ss_statement::parent.
ptr< ss_sppsp_get () const
 The method psp_get returns the value of the field ss_statement::psp.
void psp_set (const ptr< ss_sp > &)
 The method psp_set sets the field ss_statement::psp to the given value.
ptr< ss_spnsp_get () const
 The method nsp_get returns the value of the field ss_statement::nsp.
void nsp_set (const ptr< ss_sp > &)
 The method nsp_set sets the field ss_statement::nsp to the given value.
ptr< ::lestes::std::list<
srp< ss_sp > > > 
sequence_points_get () const
 The method sequence_points_get returns the value of the field ss_statement::sequence_points.
void parent_set_once_hack (ptr< ss_compound_stmt >)
 Sets the parent field, can only be called from ss_compound_stmt::instance.
virtual void accept_ss_statement_visitor (ptr< ss_statement_visitor > v) override
virtual ptr< reflection_listreflection_get () const
 for purposes of dumping
virtual ptr< field_list_listfield_values_get () const
 for purposes of dumping

Protected Member Functions

 ss_statement (ptr< ::lestes::std::source_location > a__ss_base_with_location__location, ptr< ::lestes::std::list< srp< ss_label > > > a__ss_statement__labels, ptr< ss_compound_stmt > a__ss_statement__parent, ptr< ss_sp > a__ss_statement__psp, ptr< ss_sp > a__ss_statement__nsp, ptr< ::lestes::std::list< srp< ss_sp > > > a__ss_statement__sequence_points)
 Generated constructor for class ss_statement.
virtual void gc_mark ()
 Marking routine for class ss_statement.

Private Attributes

srp< ::lestes::std::list<
srp< ss_label > > > 
labels
 List of labels prefixing the current statement.
srp< ss_compound_stmtparent
srp< ss_sppsp
srp< ss_spnsp
srp< ::lestes::std::list<
srp< ss_sp > > > 
sequence_points
 List of all sequence points in this statement.

Static Private Attributes

static bool parent_set_ward = false
static ptr< reflection_listreflection = reflection

Detailed Description

Base class for statements.

Definition at line 58 of file ss_statement.g.hh.


Constructor & Destructor Documentation

lestes::lang::cplus::sem::ss_statement::ss_statement ( ptr< ::lestes::std::source_location a__ss_base_with_location__location,
ptr< ::lestes::std::list< srp< ss_label > > >  a__ss_statement__labels,
ptr< ss_compound_stmt a__ss_statement__parent,
ptr< ss_sp a__ss_statement__psp,
ptr< ss_sp a__ss_statement__nsp,
ptr< ::lestes::std::list< srp< ss_sp > > >  a__ss_statement__sequence_points 
) [protected]

Generated constructor for class ss_statement.

Generated constructor for class ss_statement.

Author:
lsg

Definition at line 97 of file ss_statement.g.cc.

00103         : ss_base_with_location(a__ss_base_with_location__location), labels(checked(a__ss_statement__labels)), parent(check__ss_statement__parent(a__ss_statement__parent)), psp(checked(a__ss_statement__psp)), nsp(checked(a__ss_statement__nsp)), sequence_points(checked(a__ss_statement__sequence_points))
00104 {}


Member Function Documentation

ptr<::lestes::std::list< srp< ss_label > > > lestes::lang::cplus::sem::ss_statement::labels_get (  )  const

The method labels_get returns the value of the field ss_statement::labels.

Returns:
The value of ss_statement::labels.
Author:
lsg

Definition at line 34 of file ss_statement.g.cc.

References labels.

00035 {
00036         return labels;
00037 }

ptr< ss_compound_stmt > lestes::lang::cplus::sem::ss_statement::parent_get (  )  const

The method parent_get returns the value of the field ss_statement::parent.

Returns:
The value of ss_statement::parent.
Author:
lsg

Definition at line 43 of file ss_statement.g.cc.

References parent.

00044 {
00045         return parent;
00046 }

ptr< ss_sp > lestes::lang::cplus::sem::ss_statement::psp_get (  )  const

The method psp_get returns the value of the field ss_statement::psp.

Returns:
The value of ss_statement::psp.
Author:
lsg

Definition at line 52 of file ss_statement.g.cc.

References psp.

00053 {
00054         return psp;
00055 }

void lestes::lang::cplus::sem::ss_statement::psp_set ( const ptr< ss_sp > &  x  ) 

The method psp_set sets the field ss_statement::psp to the given value.

Parameters:
[in] x The new value to set ss_statement::psp to.
Author:
lsg

Definition at line 61 of file ss_statement.g.cc.

References psp.

00062 {
00063         ss_statement::psp = x;
00064 }

ptr< ss_sp > lestes::lang::cplus::sem::ss_statement::nsp_get (  )  const

The method nsp_get returns the value of the field ss_statement::nsp.

Returns:
The value of ss_statement::nsp.
Author:
lsg

Definition at line 70 of file ss_statement.g.cc.

References nsp.

00071 {
00072         return nsp;
00073 }

void lestes::lang::cplus::sem::ss_statement::nsp_set ( const ptr< ss_sp > &  x  ) 

The method nsp_set sets the field ss_statement::nsp to the given value.

Parameters:
[in] x The new value to set ss_statement::nsp to.
Author:
lsg

Definition at line 79 of file ss_statement.g.cc.

References nsp.

00080 {
00081         ss_statement::nsp = x;
00082 }

ptr<::lestes::std::list< srp< ss_sp > > > lestes::lang::cplus::sem::ss_statement::sequence_points_get (  )  const

The method sequence_points_get returns the value of the field ss_statement::sequence_points.

Returns:
The value of ss_statement::sequence_points.
Author:
lsg

Definition at line 88 of file ss_statement.g.cc.

References sequence_points.

00089 {
00090         return sequence_points;
00091 }

void lestes::lang::cplus::sem::ss_statement::parent_set_once_hack ( ptr< ss_compound_stmt a_parent  ) 

Sets the parent field, can only be called from ss_compound_stmt::instance.

As we currently do not have protected setters, a setter for the parent field is not provided. However, when constructing the "global" ss_compound_stmt, which is derived from ss_statement, the parent field has to be set to point to the instance itself, which is impossible to achieve using the factory method.

Therefore, this hack is provided. It exists solely for the purpose above. Normal code MUST NOT call it, or it will explode :)

Definition at line 53 of file ss_statement.cc.

References lestes::lang::cplus::sem::hack_used, lassert2, and parent.

00054 {
00055         lassert2( !hack_used, "This method is not meant to be called twice." );
00056         hack_used = true;
00057         parent = a_parent;
00058 }

virtual void lestes::lang::cplus::sem::ss_statement::accept_ss_statement_visitor ( ptr< ss_statement_visitor v  )  [pure virtual]

Implemented in lestes::lang::cplus::sem::ss_compound_stmt, lestes::lang::cplus::sem::ss_decl_stmt, lestes::lang::cplus::sem::ss_try, lestes::lang::cplus::sem::ss_break, lestes::lang::cplus::sem::ss_return, lestes::lang::cplus::sem::ss_goto, lestes::lang::cplus::sem::ss_expr_stmt, lestes::lang::cplus::sem::ss_continue, lestes::lang::cplus::sem::ss_if_stmt, lestes::lang::cplus::sem::ss_catch, lestes::lang::cplus::sem::ss_breakable_stmt, lestes::lang::cplus::sem::ss_switch_stmt, lestes::lang::cplus::sem::ss_iteration_stmt, lestes::lang::cplus::sem::ss_do, lestes::lang::cplus::sem::ss_while, and lestes::lang::cplus::sem::ss_for.

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

for purposes of dumping

Reimplemented from lestes::intercode::ss_base_with_location.

Reimplemented in lestes::lang::cplus::sem::ss_compound_stmt, lestes::lang::cplus::sem::ss_decl_stmt, lestes::lang::cplus::sem::ss_try, lestes::lang::cplus::sem::ss_break, lestes::lang::cplus::sem::ss_return, lestes::lang::cplus::sem::ss_goto, lestes::lang::cplus::sem::ss_expr_stmt, lestes::lang::cplus::sem::ss_continue, lestes::lang::cplus::sem::ss_if_stmt, lestes::lang::cplus::sem::ss_catch, lestes::lang::cplus::sem::ss_breakable_stmt, lestes::lang::cplus::sem::ss_switch_stmt, lestes::lang::cplus::sem::ss_iteration_stmt, lestes::lang::cplus::sem::ss_do, lestes::lang::cplus::sem::ss_while, and lestes::lang::cplus::sem::ss_for.

Definition at line 106 of file ss_statement.g.cc.

References lestes::std::list< T >::create(), reflection, and lestes::intercode::ss_base_with_location::reflection_get().

Referenced by lestes::lang::cplus::sem::ss_breakable_stmt::reflection_get(), lestes::lang::cplus::sem::ss_catch::reflection_get(), lestes::lang::cplus::sem::ss_if_stmt::reflection_get(), lestes::lang::cplus::sem::ss_continue::reflection_get(), lestes::lang::cplus::sem::ss_expr_stmt::reflection_get(), lestes::lang::cplus::sem::ss_goto::reflection_get(), lestes::lang::cplus::sem::ss_return::reflection_get(), lestes::lang::cplus::sem::ss_break::reflection_get(), lestes::lang::cplus::sem::ss_try::reflection_get(), lestes::lang::cplus::sem::ss_decl_stmt::reflection_get(), and lestes::lang::cplus::sem::ss_compound_stmt::reflection_get().

00107 {
00108         if (!reflection) {
00109                 typedef class_reflection::field_metadata md;
00110                 typedef class_reflection::field_metadata_list mdlist;
00111                 ptr<mdlist> mdl = mdlist::create();
00112                 mdl->push_back( md::create( "labels", "list&lt; srp&lt; ss_label &gt; &gt;" ) );
00113                 mdl->push_back( md::create( "parent", "ss_compound_stmt" ) );
00114                 mdl->push_back( md::create( "psp", "ss_sp" ) );
00115                 mdl->push_back( md::create( "nsp", "ss_sp" ) );
00116                 mdl->push_back( md::create( "sequence_points", "list&lt; srp&lt; ss_sp &gt; &gt;" ) );
00117                 mdl->push_back( md::create( "parent_set_ward", "bool" ) );
00118                 reflection = reflection_list::create( ::lestes::intercode::ss_base_with_location::reflection_get() );
00119                 reflection->push_back( class_reflection::create( "ss_statement", mdl ) );
00120         }
00121         return reflection;
00122 }

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

for purposes of dumping

Reimplemented from lestes::intercode::ss_base_with_location.

Reimplemented in lestes::lang::cplus::sem::ss_compound_stmt, lestes::lang::cplus::sem::ss_decl_stmt, lestes::lang::cplus::sem::ss_try, lestes::lang::cplus::sem::ss_break, lestes::lang::cplus::sem::ss_return, lestes::lang::cplus::sem::ss_goto, lestes::lang::cplus::sem::ss_expr_stmt, lestes::lang::cplus::sem::ss_continue, lestes::lang::cplus::sem::ss_if_stmt, lestes::lang::cplus::sem::ss_catch, lestes::lang::cplus::sem::ss_breakable_stmt, lestes::lang::cplus::sem::ss_switch_stmt, lestes::lang::cplus::sem::ss_iteration_stmt, lestes::lang::cplus::sem::ss_do, lestes::lang::cplus::sem::ss_while, and lestes::lang::cplus::sem::ss_for.

Definition at line 124 of file ss_statement.g.cc.

References lestes::std::list< T >::create(), and lestes::intercode::ss_base_with_location::field_values_get().

Referenced by lestes::lang::cplus::sem::ss_breakable_stmt::field_values_get(), lestes::lang::cplus::sem::ss_catch::field_values_get(), lestes::lang::cplus::sem::ss_if_stmt::field_values_get(), lestes::lang::cplus::sem::ss_continue::field_values_get(), lestes::lang::cplus::sem::ss_expr_stmt::field_values_get(), lestes::lang::cplus::sem::ss_goto::field_values_get(), lestes::lang::cplus::sem::ss_return::field_values_get(), lestes::lang::cplus::sem::ss_break::field_values_get(), lestes::lang::cplus::sem::ss_try::field_values_get(), lestes::lang::cplus::sem::ss_decl_stmt::field_values_get(), and lestes::lang::cplus::sem::ss_compound_stmt::field_values_get().

00125 {
00126         ptr < field_list_list > result = ::lestes::intercode::ss_base_with_location::field_values_get();
00127         result->push_back( value_list::create() );
00128         result->back()->push_back( this->labels );
00129         result->push_back( value_list::create() );
00130         result->back()->push_back( this->parent );
00131         result->push_back( value_list::create() );
00132         result->back()->push_back( this->psp );
00133         result->push_back( value_list::create() );
00134         result->back()->push_back( this->nsp );
00135         result->push_back( value_list::create() );
00136         result->back()->push_back( this->sequence_points );
00137         result->push_back( value_list::create() );
00138         result->back()->push_back( objectize< bool > ::create( this->parent_set_ward ) );
00139         return result;
00140 }

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

Marking routine for class ss_statement.

Marking routine is used for garbage collection.

Author:
lsg

Reimplemented from lestes::intercode::ss_base_with_location.

Reimplemented in lestes::lang::cplus::sem::ss_compound_stmt, lestes::lang::cplus::sem::ss_decl_stmt, lestes::lang::cplus::sem::ss_try, lestes::lang::cplus::sem::ss_break, lestes::lang::cplus::sem::ss_return, lestes::lang::cplus::sem::ss_goto, lestes::lang::cplus::sem::ss_expr_stmt, lestes::lang::cplus::sem::ss_continue, lestes::lang::cplus::sem::ss_if_stmt, lestes::lang::cplus::sem::ss_catch, lestes::lang::cplus::sem::ss_breakable_stmt, lestes::lang::cplus::sem::ss_switch_stmt, lestes::lang::cplus::sem::ss_iteration_stmt, lestes::lang::cplus::sem::ss_do, lestes::lang::cplus::sem::ss_while, and lestes::lang::cplus::sem::ss_for.

Definition at line 147 of file ss_statement.g.cc.

References lestes::intercode::ss_base_with_location::gc_mark().

Referenced by lestes::lang::cplus::sem::ss_breakable_stmt::gc_mark(), lestes::lang::cplus::sem::ss_catch::gc_mark(), lestes::lang::cplus::sem::ss_if_stmt::gc_mark(), lestes::lang::cplus::sem::ss_continue::gc_mark(), lestes::lang::cplus::sem::ss_expr_stmt::gc_mark(), lestes::lang::cplus::sem::ss_goto::gc_mark(), lestes::lang::cplus::sem::ss_return::gc_mark(), lestes::lang::cplus::sem::ss_break::gc_mark(), lestes::lang::cplus::sem::ss_try::gc_mark(), lestes::lang::cplus::sem::ss_decl_stmt::gc_mark(), and lestes::lang::cplus::sem::ss_compound_stmt::gc_mark().


Member Data Documentation

srp< ::lestes::std::list< srp< ss_label > > > lestes::lang::cplus::sem::ss_statement::labels [private]

List of labels prefixing the current statement.

Definition at line 107 of file ss_statement.g.hh.

Referenced by labels_get().

srp< ss_compound_stmt > lestes::lang::cplus::sem::ss_statement::parent [private]

Definition at line 108 of file ss_statement.g.hh.

Referenced by parent_get(), and parent_set_once_hack().

srp< ss_sp > lestes::lang::cplus::sem::ss_statement::psp [private]

Definition at line 109 of file ss_statement.g.hh.

Referenced by psp_get(), psp_set(), and lestes::lang::cplus::sem::ss_compound_stmt::root_instance().

srp< ss_sp > lestes::lang::cplus::sem::ss_statement::nsp [private]

Definition at line 110 of file ss_statement.g.hh.

Referenced by nsp_get(), nsp_set(), and lestes::lang::cplus::sem::ss_compound_stmt::root_instance().

srp< ::lestes::std::list< srp< ss_sp > > > lestes::lang::cplus::sem::ss_statement::sequence_points [private]

List of all sequence points in this statement.

Note: This also includes previous and next sequnce point(psp,nsp).

It might be necessary to allow setter/alter after two-pass analysis of expressions is implemented.

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

Referenced by sequence_points_get().

bool lestes::lang::cplus::sem::ss_statement::parent_set_ward = false [static, private]

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

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

Reimplemented from lestes::intercode::ss_base_with_location.

Reimplemented in lestes::lang::cplus::sem::ss_compound_stmt, lestes::lang::cplus::sem::ss_decl_stmt, lestes::lang::cplus::sem::ss_try, lestes::lang::cplus::sem::ss_break, lestes::lang::cplus::sem::ss_return, lestes::lang::cplus::sem::ss_goto, lestes::lang::cplus::sem::ss_expr_stmt, lestes::lang::cplus::sem::ss_continue, lestes::lang::cplus::sem::ss_if_stmt, lestes::lang::cplus::sem::ss_catch, lestes::lang::cplus::sem::ss_breakable_stmt, lestes::lang::cplus::sem::ss_switch_stmt, lestes::lang::cplus::sem::ss_iteration_stmt, lestes::lang::cplus::sem::ss_do, lestes::lang::cplus::sem::ss_while, and lestes::lang::cplus::sem::ss_for.

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

Referenced by reflection_get().


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