lestes::lang::cplus::sem::sa_param_declaration_empty Class Reference

Empty parameter declaration checker. More...

#include <sa_param_declaration_empty.g.hh>

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

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

Public Member Functions

bool process (ptr< as_param_declaration > decl)
 Checks empty parameter declaration.
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< sa_param_declaration_emptycreate ()
 First generated factory method for class sa_param_declaration_empty.

Protected Member Functions

 sa_param_declaration_empty ()
 Generated constructor for class sa_param_declaration_empty.
virtual void gc_mark ()
 Marking routine for class sa_param_declaration_empty.

Static Private Attributes

static ptr< reflection_listreflection = reflection

Detailed Description

Empty parameter declaration checker.

Tests whether a parameter declaration is a special case of bare (void) representing empty parameter list. It should be run only in case there is exactly one parameter declaration in the parameter declaration list, in other cases this kind of declaration is disallowed.

Definition at line 36 of file sa_param_declaration_empty.g.hh.


Constructor & Destructor Documentation

lestes::lang::cplus::sem::sa_param_declaration_empty::sa_param_declaration_empty (  )  [protected]

Generated constructor for class sa_param_declaration_empty.

Generated constructor for class sa_param_declaration_empty.

Author:
lsg

Definition at line 42 of file sa_param_declaration_empty.g.cc.

Referenced by create().

00043         : object()
00044 {}


Member Function Documentation

bool lestes::lang::cplus::sem::sa_param_declaration_empty::process ( ptr< as_param_declaration decl  ) 

Checks empty parameter declaration.

Tests whether a parameter declaration contains only void declaration specifier and nothing else, no declarator specifiers and no name, so that it can be considered as a (void) parameter, designating empty paramter list. Does not report any error, only checks the conditions. Errors are reported in the parameter declaration itself.

Precondition:
decl != NULL
Parameters:
decl The parameter declaration to test.
Returns:
true If the declaration designates empty parameter list.

Definition at line 57 of file sa_param_declaration_empty.cc.

References lestes::lang::cplus::sem::as_declaration_specifier2is_void::create(), lestes::msg::eolog, and lassert.

00058 {
00059         typedef list< srp<as_declaration_specifier> > as_declaration_specifier_list;
00060 
00061         sa_param_declaration_empty_logger << "sa_param_declaration::process()\n" << msg::eolog;
00062 
00063         lassert(decl);
00064 
00065         bool correct = false;
00066         
00067         do {
00068                 sa_param_declaration_empty_logger << "checking declaration specifiers\n" << msg::eolog;
00069                 
00070                 // analyse the declaration specifiers
00071                 ptr<as_declaration_specifier_list> adsl = decl->declaration_specifiers_get();
00072                 // TODO pt BUGBUG must test the actual type, perhaps typedefed!!!!
00073 
00074                 // must be only specifier
00075                 if (adsl->size() != 1) break;
00076 
00077                 sa_param_declaration_empty_logger << "has single specifier\n" << msg::eolog;
00078                 
00079                 // must be void
00080                 if (!as_declaration_specifier2is_void::create()->process(adsl->front())) break;
00081                 
00082                 sa_param_declaration_empty_logger << "the specifier is void\n" << msg::eolog;
00083                 
00084                 sa_param_declaration_empty_logger << "checking the declarator\n" << msg::eolog;
00085 
00086                 // analyse declarator
00087                 ptr<as_declarator> asd = decl->declarator_get();
00088                 // must have no ops
00089                 if (asd->declarator_ops_get()->size() != 0) break;
00090                 
00091                 sa_param_declaration_empty_logger << "has no declarator ops\n" << msg::eolog;
00092                 
00093                 // must have no name
00094                 if (asd->name_get()) break;
00095 
00096                 sa_param_declaration_empty_logger << "has no name\n" << msg::eolog;
00097                 
00098                 // all checks passed
00099                 correct = true;
00100 
00101                 sa_param_declaration_empty_logger << "all checks passed\n" << msg::eolog;
00102         } while (false);
00103 
00104         sa_param_declaration_empty_logger << "sa_param_declaration::process() end\n" << msg::eolog;
00105 
00106         return correct;
00107 }

ptr< sa_param_declaration_empty > lestes::lang::cplus::sem::sa_param_declaration_empty::create ( void   )  [static]

First generated factory method for class sa_param_declaration_empty.

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

Author:
lsg

Definition at line 33 of file sa_param_declaration_empty.g.cc.

References sa_param_declaration_empty().

00034 {
00035         return ptr< sa_param_declaration_empty > ( new sa_param_declaration_empty() );
00036 }

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

for purposes of dumping

Reimplemented from lestes::std::object.

Definition at line 46 of file sa_param_declaration_empty.g.cc.

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

00047 {
00048         if (!reflection) {
00049                 typedef class_reflection::field_metadata md;
00050                 typedef class_reflection::field_metadata_list mdlist;
00051                 ptr<mdlist> mdl = mdlist::create();
00052                 reflection = reflection_list::create( ::lestes::std::object::reflection_get() );
00053                 reflection->push_back( class_reflection::create( "sa_param_declaration_empty", mdl ) );
00054         }
00055         return reflection;
00056 }

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

for purposes of dumping

Reimplemented from lestes::std::object.

Definition at line 58 of file sa_param_declaration_empty.g.cc.

References lestes::std::object::field_values_get().

00059 {
00060         ptr < field_list_list > result = ::lestes::std::object::field_values_get();
00061         return result;
00062 }

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

Marking routine for class sa_param_declaration_empty.

Marking routine is used for garbage collection.

Author:
lsg

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

Definition at line 69 of file sa_param_declaration_empty.g.cc.

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

00070 {
00071 	::lestes::std::object::gc_mark();
00072 }


Member Data Documentation

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

Reimplemented from lestes::std::object.

Definition at line 62 of file sa_param_declaration_empty.g.hh.

Referenced by reflection_get().


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