lestes::lang::cplus::sem::ss_decl_seq Class Reference

Class for declaration sequence. More...

#include <ss_misc.g.hh>

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

lestes::intercode::ss_base_with_location 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_declaration > > > 
contents_get () const
 The method contents_get returns the value of the field ss_decl_seq::contents.
ptr< ss_decl_seqparent_get () const
 The method parent_get returns the value of the field ss_decl_seq::parent.
ptr< ss_compound_stmtcompound_stmt_get () const
 The method compound_stmt_get returns the value of the field ss_decl_seq::compound_stmt.
void compound_stmt_set (const ptr< ss_compound_stmt > &)
 The method compound_stmt_set sets the field ss_decl_seq::compound_stmt to the given value.
ptr< ::lestes::std::list<
srp< ss_using_directive > > > 
using_directives_get () const
 The method using_directives_get returns the value of the field ss_decl_seq::using_directives.
ptr< ss_declarationdeclared_by_get () const
 The method declared_by_get returns the value of the field ss_decl_seq::declared_by.
void declared_by_set (const ptr< ss_declaration > &)
 The method declared_by_set sets the field ss_decl_seq::declared_by to the given value.
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_decl_seqroot_instance ()
 Returns pointer to the instance of root (grandparent) ss_decl_seq.
static ptr< ss_decl_seqcreate (ptr< ::lestes::std::source_location > a__ss_base_with_location__location, ptr< ::lestes::std::list< srp< ss_declaration > > > a__ss_decl_seq__contents, ptr< ss_decl_seq > a__ss_decl_seq__parent, ptr< ss_compound_stmt > a__ss_decl_seq__compound_stmt, ptr< ::lestes::std::list< srp< ss_using_directive > > > a__ss_decl_seq__using_directives, ptr< ss_declaration > a__ss_decl_seq__declared_by)
 First generated factory method for class ss_decl_seq.
static ptr< ss_decl_seqcreate (ptr< ::lestes::std::source_location > a__ss_base_with_location__location, ptr< ::lestes::std::list< srp< ss_declaration > > > a__ss_decl_seq__contents, ptr< ss_decl_seq > a__ss_decl_seq__parent, ptr< ss_compound_stmt > a__ss_decl_seq__compound_stmt, ptr< ss_declaration > a__ss_decl_seq__declared_by)
 Second generated factory method for class ss_decl_seq.

Protected Member Functions

 ss_decl_seq (ptr< ::lestes::std::source_location > a__ss_base_with_location__location, ptr< ::lestes::std::list< srp< ss_declaration > > > a__ss_decl_seq__contents, ptr< ss_decl_seq > a__ss_decl_seq__parent, ptr< ss_compound_stmt > a__ss_decl_seq__compound_stmt, ptr< ::lestes::std::list< srp< ss_using_directive > > > a__ss_decl_seq__using_directives, ptr< ss_declaration > a__ss_decl_seq__declared_by)
 Generated constructor for class ss_decl_seq.
virtual void gc_mark ()
 Marking routine for class ss_decl_seq.

Private Attributes

srp< ::lestes::std::list<
srp< ss_declaration > > > 
contents
 Contained declarations.
srp< ss_decl_seqparent
 Lexically enclosing ss_decl_seq.
srp< ss_compound_stmtcompound_stmt
 Compound statement containing declaration statements for declarations declared in this declaration sequence.
srp< ::lestes::std::list<
srp< ss_using_directive > > > 
using_directives
 Namespaces which are 'included' by using directive.
srp< ss_declarationdeclared_by
 Pointer back to the declaration that caused that this declaration sequence exists.

Static Private Attributes

static ptr< ss_decl_seqthe_root_instance = the_root_instance
static bool parent_set_ward = false
static ptr< reflection_listreflection = reflection

Detailed Description

Class for declaration sequence.

Used as scope

Definition at line 126 of file ss_misc.g.hh.


Constructor & Destructor Documentation

lestes::lang::cplus::sem::ss_decl_seq::ss_decl_seq ( ptr< ::lestes::std::source_location a__ss_base_with_location__location,
ptr< ::lestes::std::list< srp< ss_declaration > > >  a__ss_decl_seq__contents,
ptr< ss_decl_seq a__ss_decl_seq__parent,
ptr< ss_compound_stmt a__ss_decl_seq__compound_stmt,
ptr< ::lestes::std::list< srp< ss_using_directive > > >  a__ss_decl_seq__using_directives,
ptr< ss_declaration a__ss_decl_seq__declared_by 
) [protected]

Generated constructor for class ss_decl_seq.

Generated constructor for class ss_decl_seq.

Author:
lsg

Definition at line 191 of file ss_misc.g.cc.

Referenced by create(), and root_instance().

00197         : ss_base_with_location(a__ss_base_with_location__location), contents(checked(a__ss_decl_seq__contents)), parent(check__ss_decl_seq__parent(a__ss_decl_seq__parent)), compound_stmt(a__ss_decl_seq__compound_stmt), using_directives(checked(a__ss_decl_seq__using_directives)), declared_by(a__ss_decl_seq__declared_by)
00198 {}


Member Function Documentation

ptr<::lestes::std::list< srp< ss_declaration > > > lestes::lang::cplus::sem::ss_decl_seq::contents_get (  )  const

The method contents_get returns the value of the field ss_decl_seq::contents.

Returns:
The value of ss_decl_seq::contents.
Author:
lsg

Definition at line 96 of file ss_misc.g.cc.

References contents.

00097 {
00098         return contents;
00099 }

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

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

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

Definition at line 105 of file ss_misc.g.cc.

References parent.

00106 {
00107         return parent;
00108 }

ptr< ss_compound_stmt > lestes::lang::cplus::sem::ss_decl_seq::compound_stmt_get (  )  const

The method compound_stmt_get returns the value of the field ss_decl_seq::compound_stmt.

Returns:
The value of ss_decl_seq::compound_stmt.
Author:
lsg

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

References compound_stmt.

00115 {
00116         return compound_stmt;
00117 }

void lestes::lang::cplus::sem::ss_decl_seq::compound_stmt_set ( const ptr< ss_compound_stmt > &  x  ) 

The method compound_stmt_set sets the field ss_decl_seq::compound_stmt to the given value.

Parameters:
[in] x The new value to set ss_decl_seq::compound_stmt to.
Author:
lsg

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

References compound_stmt.

00124 {
00125         ss_decl_seq::compound_stmt = x;
00126 }

ptr<::lestes::std::list< srp< ss_using_directive > > > lestes::lang::cplus::sem::ss_decl_seq::using_directives_get (  )  const

The method using_directives_get returns the value of the field ss_decl_seq::using_directives.

Returns:
The value of ss_decl_seq::using_directives.
Author:
lsg

Definition at line 132 of file ss_misc.g.cc.

References using_directives.

00133 {
00134         return using_directives;
00135 }

ptr< ss_declaration > lestes::lang::cplus::sem::ss_decl_seq::declared_by_get (  )  const

The method declared_by_get returns the value of the field ss_decl_seq::declared_by.

Returns:
The value of ss_decl_seq::declared_by.
Author:
lsg

Definition at line 141 of file ss_misc.g.cc.

References declared_by.

00142 {
00143         return declared_by;
00144 }

void lestes::lang::cplus::sem::ss_decl_seq::declared_by_set ( const ptr< ss_declaration > &  x  ) 

The method declared_by_set sets the field ss_decl_seq::declared_by to the given value.

Parameters:
[in] x The new value to set ss_decl_seq::declared_by to.
Author:
lsg

Definition at line 150 of file ss_misc.g.cc.

References declared_by.

00151 {
00152         ss_decl_seq::declared_by = x;
00153 }

ptr< ss_decl_seq > lestes::lang::cplus::sem::ss_decl_seq::root_instance (  )  [static]

Returns pointer to the instance of root (grandparent) ss_decl_seq.

When called for the first time, constructs the grandparent of all instances of ss_decl_seq. This means that you can simply recognize it, just compare your ptr to the return value of this method.

Note that the instance is its own parent. Also note that when creating it, root ss_compound_stmt must be created too. This is achieved by calling ss_compound_stmt::root_instance(), which might in turn call us back. The code is prepared for this. You can choose which of the two methods you call first.

Returns:
Pointer to the instance of root ss_decl_seq.

Definition at line 76 of file ss_misc.cc.

References lestes::lang::cplus::sem::ss_linkage::create(), lestes::lang::cplus::sem::ss_declaration_time::create(), lestes::intercode::intercode::create(), lestes::lang::cplus::sem::ss_declaration_time::infinity(), lestes::lang::cplus::sem::ss_void::instance(), lestes::lang::cplus::sem::ss_linkage::LINKAGE_NO, loc, lestes::lang::cplus::sem::ss_compound_stmt::root_instance(), ss_decl_seq(), and the_root_instance.

Referenced by lestes::lang::cplus::sem::as_class_key_to_ss_struct_base::class_or_struct(), lestes::lang::cplus::sem::or_builtin_operator_declaration_creator::construct_builtin_op(), lestes::lang::cplus::sem::sa_context_manager_concrete::instance(), lestes::lang::cplus::sem::or_builtin_operator_declaration_creator::instance(), lestes::lang::cplus::sem::ss_function_declaration::is_entry_point(), main(), lestes::lang::cplus::sem::lu_lookup::main(), lestes::lang::cplus::sem::ss_compound_stmt::root_instance(), lestes::lang::cplus::syn::dump_at_lassert::run(), lestes::lang::cplus::sem::ss_decl2mangled_name::visit_ss_function_declaration(), lestes::lang::cplus::sem::ss_decl2mangled_name::visit_ss_namespace_definition(), and lestes::lang::cplus::sem::ss_decl2mangled_name::visit_ss_object_declaration().

00077 {
00078         if (!the_root_instance) {
00079                 /* FIXME: non-null location needed */
00080                 ptr < source_location > loc = source_location::create(file_info::create("",NULL),1,1);
00081                 the_root_instance = new ss_decl_seq(loc,
00082                                 list< srp<ss_declaration> >::create(),
00083                                 NULL, NULL, list< srp<ss_using_directive> >::create(), NULL );
00084                 /* there is no setter for the parent field... */
00085                 the_root_instance->parent = the_root_instance;
00086                 /* FIXME: non-null location needed _twice_ */
00087                 /* FIXME: non-null ss_declaration_time needed */
00088                 /* FIXME: non-null ss_linkage needed */
00089                 ptr<ss_declaration> gl_decl = ss_namespace_definition::create(
00090                                 loc, ss_declaration_time::infinity(), ss_declaration_time::create(0),
00091                                 ss_dummy_name::create(loc), the_root_instance,
00092                                 ss_void::instance(), ss_linkage::create("C++", ss_linkage::LINKAGE_NO),
00093                                 the_root_instance );
00094                 the_root_instance->declared_by_set( gl_decl );
00095                 the_root_instance->contents_get()->push_back( gl_decl );
00096                 /* calls this method again; luckily, we have the_root_instance already set up ;-) */
00097                 the_root_instance->compound_stmt = ss_compound_stmt::root_instance();
00098         }
00099         return the_root_instance;
00100 }

ptr< ss_decl_seq > lestes::lang::cplus::sem::ss_decl_seq::create ( ptr< ::lestes::std::source_location a__ss_base_with_location__location,
ptr< ::lestes::std::list< srp< ss_declaration > > >  a__ss_decl_seq__contents,
ptr< ss_decl_seq a__ss_decl_seq__parent,
ptr< ss_compound_stmt a__ss_decl_seq__compound_stmt,
ptr< ::lestes::std::list< srp< ss_using_directive > > >  a__ss_decl_seq__using_directives,
ptr< ss_declaration a__ss_decl_seq__declared_by 
) [static]

First generated factory method for class ss_decl_seq.

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

Author:
lsg

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

References ss_decl_seq().

00165 {
00166         return ptr< ss_decl_seq > ( new ss_decl_seq(a__ss_base_with_location__location,
00167                 a__ss_decl_seq__contents,
00168                 a__ss_decl_seq__parent,
00169                 a__ss_decl_seq__compound_stmt,
00170                 a__ss_decl_seq__using_directives,
00171                 a__ss_decl_seq__declared_by) );
00172 }

ptr< ss_decl_seq > lestes::lang::cplus::sem::ss_decl_seq::create ( ptr< ::lestes::std::source_location a__ss_base_with_location__location,
ptr< ::lestes::std::list< srp< ss_declaration > > >  a__ss_decl_seq__contents,
ptr< ss_decl_seq a__ss_decl_seq__parent,
ptr< ss_compound_stmt a__ss_decl_seq__compound_stmt,
ptr< ss_declaration a__ss_decl_seq__declared_by 
) [static]

Second generated factory method for class ss_decl_seq.

This factory method for class ss_decl_seq uses initializers.

Author:
lsg

Definition at line 178 of file ss_misc.g.cc.

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

00183 {
00184         return ptr< ss_decl_seq > ( new ss_decl_seq(a__ss_base_with_location__location, a__ss_decl_seq__contents, a__ss_decl_seq__parent, a__ss_decl_seq__compound_stmt, ::lestes::std::list< srp< ss_using_directive > > ::create(), a__ss_decl_seq__declared_by) );
00185 }

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

for purposes of dumping

Reimplemented from lestes::intercode::ss_base_with_location.

Definition at line 200 of file ss_misc.g.cc.

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

00201 {
00202         if (!reflection) {
00203                 typedef class_reflection::field_metadata md;
00204                 typedef class_reflection::field_metadata_list mdlist;
00205                 ptr<mdlist> mdl = mdlist::create();
00206                 mdl->push_back( md::create( "contents", "list&lt; srp&lt; ss_declaration &gt; &gt;" ) );
00207                 mdl->push_back( md::create( "parent", "ss_decl_seq" ) );
00208                 mdl->push_back( md::create( "compound_stmt", "ss_compound_stmt" ) );
00209                 mdl->push_back( md::create( "using_directives", "list&lt; srp&lt; ss_using_directive &gt; &gt;" ) );
00210                 mdl->push_back( md::create( "declared_by", "ss_declaration" ) );
00211                 mdl->push_back( md::create( "the_root_instance", "ss_decl_seq" ) );
00212                 mdl->push_back( md::create( "parent_set_ward", "bool" ) );
00213                 reflection = reflection_list::create( ::lestes::intercode::ss_base_with_location::reflection_get() );
00214                 reflection->push_back( class_reflection::create( "ss_decl_seq", mdl ) );
00215         }
00216         return reflection;
00217 }

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

for purposes of dumping

Reimplemented from lestes::intercode::ss_base_with_location.

Definition at line 219 of file ss_misc.g.cc.

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

00220 {
00221         ptr < field_list_list > result = ::lestes::intercode::ss_base_with_location::field_values_get();
00222         result->push_back( value_list::create() );
00223         result->back()->push_back( this->contents );
00224         result->push_back( value_list::create() );
00225         result->back()->push_back( this->parent );
00226         result->push_back( value_list::create() );
00227         result->back()->push_back( this->compound_stmt );
00228         result->push_back( value_list::create() );
00229         result->back()->push_back( this->using_directives );
00230         result->push_back( value_list::create() );
00231         result->back()->push_back( this->declared_by );
00232         result->push_back( value_list::create() );
00233         result->back()->push_back( this->the_root_instance );
00234         result->push_back( value_list::create() );
00235         result->back()->push_back( objectize< bool > ::create( this->parent_set_ward ) );
00236         return result;
00237 }

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

Marking routine for class ss_decl_seq.

Marking routine is used for garbage collection.

Author:
lsg

Reimplemented from lestes::intercode::ss_base_with_location.

Definition at line 244 of file ss_misc.g.cc.

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


Member Data Documentation

srp< ::lestes::std::list< srp< ss_declaration > > > lestes::lang::cplus::sem::ss_decl_seq::contents [private]

Contained declarations.

Definition at line 192 of file ss_misc.g.hh.

Referenced by contents_get().

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

Lexically enclosing ss_decl_seq.

Definition at line 194 of file ss_misc.g.hh.

Referenced by parent_get().

srp< ss_compound_stmt > lestes::lang::cplus::sem::ss_decl_seq::compound_stmt [private]

Compound statement containing declaration statements for declarations declared in this declaration sequence.

The value is unchecked only to allow creating ss_decl_seq before the ss_compound_stmt pointed to.

Definition at line 202 of file ss_misc.g.hh.

Referenced by compound_stmt_get(), and compound_stmt_set().

srp< ::lestes::std::list< srp< ss_using_directive > > > lestes::lang::cplus::sem::ss_decl_seq::using_directives [private]

Namespaces which are 'included' by using directive.

Using directives are allowed in namespace and block scope [7.3.4]. They are a property of ss_decl_seq, as it would be clumsy to have them in both ss_namespace_definition and ss_compound_statement.

Definition at line 211 of file ss_misc.g.hh.

Referenced by using_directives_get().

srp< ss_declaration > lestes::lang::cplus::sem::ss_decl_seq::declared_by [private]

Pointer back to the declaration that caused that this declaration sequence exists.

The value is unchecked only to allow creating ss_decl_seq before the ss_declaration pointed to.

Definition at line 219 of file ss_misc.g.hh.

Referenced by declared_by_get(), and declared_by_set().

ptr< ss_decl_seq > lestes::lang::cplus::sem::ss_decl_seq::the_root_instance = the_root_instance [static, private]

Definition at line 220 of file ss_misc.g.hh.

Referenced by root_instance().

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

Definition at line 221 of file ss_misc.g.hh.

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

Reimplemented from lestes::intercode::ss_base_with_location.

Definition at line 222 of file ss_misc.g.hh.

Referenced by reflection_get().


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