lestes::lang::cplus::sem::ss_object_declaration Class Reference

A variable is an object in the terms of the norm. More...

#include <ss_declaration.g.hh>

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

lestes::lang::cplus::sem::ss_declaration_with_access_specifier lestes::lang::cplus::sem::ss_declaration 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_bitfield_declaration lestes::lang::cplus::sem::ss_parameter_declaration List of all members.

Public Member Functions

ptr< ss_declaration_timeinitialized_since_get () const
 The method initialized_since_get returns the value of the field ss_object_declaration::initialized_since.
void initialized_since_set (const ptr< ss_declaration_time > &)
 The method initialized_since_set sets the field ss_object_declaration::initialized_since to the given value.
ptr< or_or_functionalinitializer_get () const
 The method initializer_get returns the value of the field ss_object_declaration::initializer.
void initializer_set (const ptr< or_or_functional > &)
 The method initializer_set sets the field ss_object_declaration::initializer to the given value.
virtual void accept_ss_declaration_visitor (ptr< ss_declaration_visitor > v)
virtual ulint accept_ss_decl2ulint_base (ptr< ss_decl2ulint_base > v)
virtual lstring accept_ss_decl2lstring_base (ptr< ss_decl2lstring_base > 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_object_declarationcreate (ptr< ::lestes::std::source_location > a__ss_base_with_location__location, ptr< ss_declaration_time > a__ss_declaration__visible_since, ptr< ss_declaration_time > a__ss_declaration__decl_time, ptr< ss_decl_name > a__ss_declaration__name, ptr< ss_decl_seq > a__ss_declaration__contained_in, ptr< ss_type > a__ss_declaration__type, ptr< ss_linkage > a__ss_declaration__linkage, ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier, ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class, ptr< ss_declaration_time > a__ss_object_declaration__initialized_since, ptr< or_or_functional > a__ss_object_declaration__initializer)
 First generated factory method for class ss_object_declaration.
static ptr< ss_object_declarationcreate (ptr< ::lestes::std::source_location > a__ss_base_with_location__location, ptr< ss_declaration_time > a__ss_declaration__visible_since, ptr< ss_declaration_time > a__ss_declaration__decl_time, ptr< ss_decl_name > a__ss_declaration__name, ptr< ss_decl_seq > a__ss_declaration__contained_in, ptr< ss_type > a__ss_declaration__type, ptr< ss_linkage > a__ss_declaration__linkage, ptr< ss_declaration_time > a__ss_object_declaration__initialized_since, ptr< or_or_functional > a__ss_object_declaration__initializer)
 Second generated factory method for class ss_object_declaration.

Protected Member Functions

 ss_object_declaration (ptr< ::lestes::std::source_location > a__ss_base_with_location__location, ptr< ss_declaration_time > a__ss_declaration__visible_since, ptr< ss_declaration_time > a__ss_declaration__decl_time, ptr< ss_decl_name > a__ss_declaration__name, ptr< ss_decl_seq > a__ss_declaration__contained_in, ptr< ss_type > a__ss_declaration__type, ptr< ss_linkage > a__ss_declaration__linkage, ss_access_specifier::type a__ss_declaration_with_access_specifier__access_specifier, ss_storage_class::type a__ss_declaration_with_access_specifier__storage_class, ptr< ss_declaration_time > a__ss_object_declaration__initialized_since, ptr< or_or_functional > a__ss_object_declaration__initializer)
 Generated constructor for class ss_object_declaration.
virtual void gc_mark ()
 Marking routine for class ss_object_declaration.

Private Attributes

srp< ss_declaration_timeinitialized_since
 The time at which the initializer appears.
srp< or_or_functionalinitializer
 TODO: this field might go to ss_parameter_declaration.

Static Private Attributes

static ptr< reflection_listreflection = reflection

Detailed Description

A variable is an object in the terms of the norm.

Definition at line 273 of file ss_declaration.g.hh.


Constructor & Destructor Documentation

lestes::lang::cplus::sem::ss_object_declaration::ss_object_declaration ( ptr< ::lestes::std::source_location a__ss_base_with_location__location,
ptr< ss_declaration_time a__ss_declaration__visible_since,
ptr< ss_declaration_time a__ss_declaration__decl_time,
ptr< ss_decl_name a__ss_declaration__name,
ptr< ss_decl_seq a__ss_declaration__contained_in,
ptr< ss_type a__ss_declaration__type,
ptr< ss_linkage a__ss_declaration__linkage,
ss_access_specifier::type  a__ss_declaration_with_access_specifier__access_specifier,
ss_storage_class::type  a__ss_declaration_with_access_specifier__storage_class,
ptr< ss_declaration_time a__ss_object_declaration__initialized_since,
ptr< or_or_functional a__ss_object_declaration__initializer 
) [protected]

Generated constructor for class ss_object_declaration.

Generated constructor for class ss_object_declaration.

Author:
lsg

Definition at line 508 of file ss_declaration.g.cc.

Referenced by create().

00519         : ss_declaration_with_access_specifier(a__ss_base_with_location__location,
00520                 a__ss_declaration__visible_since,
00521                 a__ss_declaration__decl_time,
00522                 a__ss_declaration__name,
00523                 a__ss_declaration__contained_in,
00524                 a__ss_declaration__type,
00525                 a__ss_declaration__linkage,
00526                 a__ss_declaration_with_access_specifier__access_specifier,
00527                 a__ss_declaration_with_access_specifier__storage_class), initialized_since(checked(a__ss_object_declaration__initialized_since)), initializer(a__ss_object_declaration__initializer)
00528 {}


Member Function Documentation

ptr< ss_declaration_time > lestes::lang::cplus::sem::ss_object_declaration::initialized_since_get (  )  const

The method initialized_since_get returns the value of the field ss_object_declaration::initialized_since.

Returns:
The value of ss_object_declaration::initialized_since.
Author:
lsg

Definition at line 411 of file ss_declaration.g.cc.

References initialized_since.

00412 {
00413         return initialized_since;
00414 }

void lestes::lang::cplus::sem::ss_object_declaration::initialized_since_set ( const ptr< ss_declaration_time > &  x  ) 

The method initialized_since_set sets the field ss_object_declaration::initialized_since to the given value.

Parameters:
[in] x The new value to set ss_object_declaration::initialized_since to.
Author:
lsg

Definition at line 420 of file ss_declaration.g.cc.

References initialized_since.

00421 {
00422         ss_object_declaration::initialized_since = x;
00423 }

ptr< or_or_functional > lestes::lang::cplus::sem::ss_object_declaration::initializer_get (  )  const

The method initializer_get returns the value of the field ss_object_declaration::initializer.

Returns:
The value of ss_object_declaration::initializer.
Author:
lsg

Definition at line 429 of file ss_declaration.g.cc.

References initializer.

00430 {
00431         return initializer;
00432 }

void lestes::lang::cplus::sem::ss_object_declaration::initializer_set ( const ptr< or_or_functional > &  x  ) 

The method initializer_set sets the field ss_object_declaration::initializer to the given value.

Parameters:
[in] x The new value to set ss_object_declaration::initializer to.
Author:
lsg

Definition at line 438 of file ss_declaration.g.cc.

References initializer.

00439 {
00440         ss_object_declaration::initializer = x;
00441 }

void lestes::lang::cplus::sem::ss_object_declaration::accept_ss_declaration_visitor ( ptr< ss_declaration_visitor v  )  [virtual]

Implements lestes::lang::cplus::sem::ss_declaration_with_access_specifier.

Reimplemented in lestes::lang::cplus::sem::ss_bitfield_declaration, and lestes::lang::cplus::sem::ss_parameter_declaration.

Definition at line 443 of file ss_declaration.g.cc.

00444 {
00445         return v->visit_ss_object_declaration( this );
00446 }

ulint lestes::lang::cplus::sem::ss_object_declaration::accept_ss_decl2ulint_base ( ptr< ss_decl2ulint_base v  )  [virtual]

Implements lestes::lang::cplus::sem::ss_declaration_with_access_specifier.

Reimplemented in lestes::lang::cplus::sem::ss_bitfield_declaration, and lestes::lang::cplus::sem::ss_parameter_declaration.

Definition at line 448 of file ss_declaration.g.cc.

00449 {
00450         return v->visit_ss_object_declaration( this );
00451 }

lstring lestes::lang::cplus::sem::ss_object_declaration::accept_ss_decl2lstring_base ( ptr< ss_decl2lstring_base v  )  [virtual]

Implements lestes::lang::cplus::sem::ss_declaration_with_access_specifier.

Reimplemented in lestes::lang::cplus::sem::ss_bitfield_declaration, and lestes::lang::cplus::sem::ss_parameter_declaration.

Definition at line 453 of file ss_declaration.g.cc.

00454 {
00455         return v->visit_ss_object_declaration( this );
00456 }

ptr< ss_object_declaration > lestes::lang::cplus::sem::ss_object_declaration::create ( ptr< ::lestes::std::source_location a__ss_base_with_location__location,
ptr< ss_declaration_time a__ss_declaration__visible_since,
ptr< ss_declaration_time a__ss_declaration__decl_time,
ptr< ss_decl_name a__ss_declaration__name,
ptr< ss_decl_seq a__ss_declaration__contained_in,
ptr< ss_type a__ss_declaration__type,
ptr< ss_linkage a__ss_declaration__linkage,
ss_access_specifier::type  a__ss_declaration_with_access_specifier__access_specifier,
ss_storage_class::type  a__ss_declaration_with_access_specifier__storage_class,
ptr< ss_declaration_time a__ss_object_declaration__initialized_since,
ptr< or_or_functional a__ss_object_declaration__initializer 
) [static]

First generated factory method for class ss_object_declaration.

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

Author:
lsg

Definition at line 462 of file ss_declaration.g.cc.

References ss_object_declaration().

00473 {
00474         return ptr< ss_object_declaration > ( new ss_object_declaration(a__ss_base_with_location__location,
00475                 a__ss_declaration__visible_since,
00476                 a__ss_declaration__decl_time,
00477                 a__ss_declaration__name,
00478                 a__ss_declaration__contained_in,
00479                 a__ss_declaration__type,
00480                 a__ss_declaration__linkage,
00481                 a__ss_declaration_with_access_specifier__access_specifier,
00482                 a__ss_declaration_with_access_specifier__storage_class,
00483                 a__ss_object_declaration__initialized_since,
00484                 a__ss_object_declaration__initializer) );
00485 }

ptr< ss_object_declaration > lestes::lang::cplus::sem::ss_object_declaration::create ( ptr< ::lestes::std::source_location a__ss_base_with_location__location,
ptr< ss_declaration_time a__ss_declaration__visible_since,
ptr< ss_declaration_time a__ss_declaration__decl_time,
ptr< ss_decl_name a__ss_declaration__name,
ptr< ss_decl_seq a__ss_declaration__contained_in,
ptr< ss_type a__ss_declaration__type,
ptr< ss_linkage a__ss_declaration__linkage,
ptr< ss_declaration_time a__ss_object_declaration__initialized_since,
ptr< or_or_functional a__ss_object_declaration__initializer 
) [static]

Second generated factory method for class ss_object_declaration.

This factory method for class ss_object_declaration uses initializers.

Author:
lsg

Definition at line 491 of file ss_declaration.g.cc.

References lestes::lang::cplus::sem::ss_access_specifier::ACCESS_PUBLIC, ss_object_declaration(), and lestes::lang::cplus::sem::ss_storage_class::ST_NONE.

00500 {
00501         return ptr< ss_object_declaration > ( new ss_object_declaration(a__ss_base_with_location__location, a__ss_declaration__visible_since, a__ss_declaration__decl_time, a__ss_declaration__name, a__ss_declaration__contained_in, a__ss_declaration__type, a__ss_declaration__linkage, ss_access_specifier::ACCESS_PUBLIC, ss_storage_class::ST_NONE, a__ss_object_declaration__initialized_since, a__ss_object_declaration__initializer) );
00502 }

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

for purposes of dumping

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

Reimplemented in lestes::lang::cplus::sem::ss_bitfield_declaration, and lestes::lang::cplus::sem::ss_parameter_declaration.

Definition at line 530 of file ss_declaration.g.cc.

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

Referenced by lestes::lang::cplus::sem::ss_parameter_declaration::reflection_get(), and lestes::lang::cplus::sem::ss_bitfield_declaration::reflection_get().

00531 {
00532         if (!reflection) {
00533                 typedef class_reflection::field_metadata md;
00534                 typedef class_reflection::field_metadata_list mdlist;
00535                 ptr<mdlist> mdl = mdlist::create();
00536                 mdl->push_back( md::create( "initialized_since", "ss_declaration_time" ) );
00537                 mdl->push_back( md::create( "initializer", "or_or_functional" ) );
00538                 reflection = reflection_list::create( ss_declaration_with_access_specifier::reflection_get() );
00539                 reflection->push_back( class_reflection::create( "ss_object_declaration", mdl ) );
00540         }
00541         return reflection;
00542 }

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

for purposes of dumping

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

Reimplemented in lestes::lang::cplus::sem::ss_bitfield_declaration, and lestes::lang::cplus::sem::ss_parameter_declaration.

Definition at line 544 of file ss_declaration.g.cc.

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

Referenced by lestes::lang::cplus::sem::ss_parameter_declaration::field_values_get(), and lestes::lang::cplus::sem::ss_bitfield_declaration::field_values_get().

00545 {
00546         ptr < field_list_list > result = ss_declaration_with_access_specifier::field_values_get();
00547         result->push_back( value_list::create() );
00548         result->back()->push_back( this->initialized_since );
00549         result->push_back( value_list::create() );
00550         result->back()->push_back( this->initializer );
00551         return result;
00552 }

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

Marking routine for class ss_object_declaration.

Marking routine is used for garbage collection.

Author:
lsg

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

Reimplemented in lestes::lang::cplus::sem::ss_bitfield_declaration, and lestes::lang::cplus::sem::ss_parameter_declaration.

Definition at line 559 of file ss_declaration.g.cc.

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

Referenced by lestes::lang::cplus::sem::ss_parameter_declaration::gc_mark(), and lestes::lang::cplus::sem::ss_bitfield_declaration::gc_mark().


Member Data Documentation

srp< ss_declaration_time > lestes::lang::cplus::sem::ss_object_declaration::initialized_since [private]

The time at which the initializer appears.

The time is used in determining whether a function has a default argument at the time of the call:

						void foo(int, int = 3); // declaration_time == 1;
						foo(3);	// declaration_time == 2;
						void foo(int = 2, int); // declaration_time == 3;
					
Here the first argument will have its initialized_since equal to 3 so that it can be determined that at time 2 the expression foo(); would be invalid.

Definition at line 357 of file ss_declaration.g.hh.

Referenced by initialized_since_get(), and initialized_since_set().

srp< or_or_functional > lestes::lang::cplus::sem::ss_object_declaration::initializer [private]

TODO: this field might go to ss_parameter_declaration.

Ratio: for parameter: we see it clearly when creating declaration contrary: static const int; inside class (we need reference to decl-stmt).

Definition at line 365 of file ss_declaration.g.hh.

Referenced by initializer_get(), and initializer_set().

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

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

Reimplemented in lestes::lang::cplus::sem::ss_bitfield_declaration, and lestes::lang::cplus::sem::ss_parameter_declaration.

Definition at line 366 of file ss_declaration.g.hh.

Referenced by reflection_get().


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