lestes::lang::cplus::sem::ss_declaration_time Class Reference

Declaration time. More...

#include <ss_misc.g.hh>

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

lestes::std::object lestes::std::mem::keystone List of all members.

Public Member Functions

bool is_before (ptr< ss_declaration_time > other)
 Tells whether this time is before the one passed as argument.
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_declaration_timeinfinity ()
 return an ss_declaration_time instance representing infinity
static ptr< ss_declaration_timecreate (ulint a__ss_declaration_time__time)
 First generated factory method for class ss_declaration_time.

Protected Member Functions

 ss_declaration_time (ulint a__ss_declaration_time__time)
 Generated constructor for class ss_declaration_time.
virtual void gc_mark ()
 Marking routine for class ss_declaration_time.

Private Attributes

ulint time
 The internal representation of the time of declaration.

Static Private Attributes

static ptr< ss_declaration_timeinfinity_instance = infinity_instance
static ptr< reflection_listreflection = reflection

Detailed Description

Declaration time.

It is created from token's sequence number stored in a source_location instance.

For the user, ss_declaration_time is a black box that only knows whether it "is before" another one. See the 'is_before' method.

Todo:
about creating this class
Instances of this class are meant to be used as time tags. At least declarations and expressions are tagged this way.

One of the uses is in the name lookup code. Declaration time is used to filter out declarations that were not visible at specified time (because they were introduced into a scope later).

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


Constructor & Destructor Documentation

lestes::lang::cplus::sem::ss_declaration_time::ss_declaration_time ( ulint  a__ss_declaration_time__time  )  [protected]

Generated constructor for class ss_declaration_time.

Generated constructor for class ss_declaration_time.

Author:
lsg

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

Referenced by create().

00051         : object(), time(a__ss_declaration_time__time)
00052 {}


Member Function Documentation

bool lestes::lang::cplus::sem::ss_declaration_time::is_before ( ptr< ss_declaration_time other  ) 

Tells whether this time is before the one passed as argument.

Tells whether this declaration time is before other declaration time.

Precondition:
other != NULL
Parameters:
other The declaration time to compare to.
Returns:
true If this declaration is earlier.

Definition at line 47 of file ss_misc.cc.

References lassert, and time.

00048 {
00049         lassert( other );
00050         return time < other->time;
00051 }

ptr< ss_declaration_time > lestes::lang::cplus::sem::ss_declaration_time::infinity (  )  [static]

return an ss_declaration_time instance representing infinity

The infinity value shall be larger than any regular value.

Definition at line 56 of file ss_misc.cc.

References create(), and infinity_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_class_declaration::insert_class_forward_into_scope(), lestes::lang::cplus::sem::or_builtin_operator_declaration_creator::instance(), and lestes::lang::cplus::sem::ss_decl_seq::root_instance().

00057 {
00058         if (!infinity_instance)
00059                 infinity_instance = ss_declaration_time::create(static_cast < ulint > (-1));
00060         return infinity_instance;
00061 }

ptr< ss_declaration_time > lestes::lang::cplus::sem::ss_declaration_time::create ( ulint  a__ss_declaration_time__time  )  [static]

First generated factory method for class ss_declaration_time.

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

Author:
lsg

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

References ss_declaration_time().

Referenced by lestes::lang::cplus::sem::or_builtin_operator_declaration_creator::construct_builtin_op(), infinity(), lestes::lang::cplus::sem::sa_class_declaration::insert_class_forward_into_scope(), lestes::lang::cplus::sem::or_builtin_operator_declaration_creator::instance(), lestes::lang::cplus::sem::sa_usings::process_declaration(), lestes::lang::cplus::sem::sa_namespace_definition::process_named(), and lestes::lang::cplus::sem::ss_decl_seq::root_instance().

00042 {
00043         return ptr< ss_declaration_time > ( new ss_declaration_time(a__ss_declaration_time__time) );
00044 }

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

for purposes of dumping

Reimplemented from lestes::std::object.

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

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

00055 {
00056         if (!reflection) {
00057                 typedef class_reflection::field_metadata md;
00058                 typedef class_reflection::field_metadata_list mdlist;
00059                 ptr<mdlist> mdl = mdlist::create();
00060                 mdl->push_back( md::create( "time", "ulint" ) );
00061                 mdl->push_back( md::create( "infinity_instance", "ss_declaration_time" ) );
00062                 reflection = reflection_list::create( ::lestes::std::object::reflection_get() );
00063                 reflection->push_back( class_reflection::create( "ss_declaration_time", mdl ) );
00064         }
00065         return reflection;
00066 }

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

for purposes of dumping

Reimplemented from lestes::std::object.

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

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

00069 {
00070         ptr < field_list_list > result = ::lestes::std::object::field_values_get();
00071         result->push_back( value_list::create() );
00072         result->back()->push_back( objectize< ulint > ::create( this->time ) );
00073         result->push_back( value_list::create() );
00074         result->back()->push_back( this->infinity_instance );
00075         return result;
00076 }

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

Marking routine for class ss_declaration_time.

Marking routine is used for garbage collection.

Author:
lsg

Reimplemented from lestes::std::mem::keystone.

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

References lestes::std::mem::keystone::gc_mark().

00084 {
00085 	::lestes::std::object::gc_mark();
00086 }


Member Data Documentation

ulint lestes::lang::cplus::sem::ss_declaration_time::time [private]

The internal representation of the time of declaration.

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

Referenced by is_before().

ptr< ss_declaration_time > lestes::lang::cplus::sem::ss_declaration_time::infinity_instance = infinity_instance [static, private]

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

Referenced by infinity().

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

Reimplemented from lestes::std::object.

Definition at line 117 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