Puma Reference Manual Puma::InstantiationSemantic Class Reference



Puma::InstantiationSemantic Class Reference

#include <InstantiationSemantic.h>

Inheritance diagram for Puma::InstantiationSemantic:
Inheritance graph

List of all members.

Public Member Functions

 InstantiationSemantic (InstantiationSyntax &, InstantiationBuilder &)
void parse_delayed (bool(CCSyntax::*rule)(), CTree *tree)
CTree * non_type_param_without_init ()
CTree * introduce_function ()
CTree * introduce_class ()
CTree * introduce_object (CTree *=0)
bool is_class_name ()
bool is_enum_name ()
bool is_typedef_name ()
bool is_template_name ()
bool is_class_template_name ()
bool is_namespace_name ()
bool is_this_specialization ()
bool is_this_instance ()
void set_this_instance ()
- Public Member Functions inherited from Puma::CCSemantic
 CCSemantic (CCSyntax &, CCBuilder &)
void init (CSemDatabase &, Unit &)
 Initialize the semantic analysis.
void init (CSemDatabase &, Unit &, CStructure *, bool, bool, CCInstantiation *)
CCInstantiation * Instantiation () const
virtual CTree * access_spec ()
virtual CTree * typedef_name ()
virtual CTree * class_name ()
virtual CTree * enum_name ()
virtual CTree * condition ()
virtual CTree * colon_colon ()
virtual CTree * decl_spec_seq1 ()
virtual CTree * nested_name_spec ()
virtual CTree * nested_name_spec1 ()
virtual CTree * valid_id_expr ()
virtual CTree * postfix_expr1 ()
virtual CTree * postfix_expr2 ()
virtual CTree * pseudo_dtor_name ()
virtual CTree * simple_type_spec ()
virtual CTree * direct_new_declarator ()
virtual CTree * class_spec_err ()
virtual CTree * member_decl1 ()
virtual CTree * member_declarator_err ()
virtual void declarator_id (bool)
virtual CTree * finish_init_declarator ()
virtual CTree * obj_decl (CTree *)
virtual bool implicit_int ()
virtual CTree * init_declarator ()
virtual CTree * const_expr ()
virtual CTree * enumerator_def ()
virtual CTree * pure_spec ()
virtual CTree * const_init ()
virtual CTree * template_param ()
virtual CTree * class_spec ()
virtual CTree * ctor_init ()
virtual CTree * handler ()
virtual CTree * exception_spec ()
virtual CTree * introduce_orig_ns ()
virtual CTree * introduce_ns_extension ()
virtual CTree * introduce_unnamed_ns ()
virtual CTree * introduce_ns_alias ()
virtual CTree * namespace_def ()
virtual CTree * original_ns_name ()
virtual CTree * namespace_alias ()
virtual CTree * using_directive ()
virtual CTree * using_decl ()
virtual CTree * access_decl (CTree *=0)
virtual CTree * introduce_type_param ()
virtual CTree * introduce_non_type_param ()
virtual CTree * introduce_template_instance ()
virtual CTree * template_param_list ()
virtual CTree * template_decl ()
virtual CTree * template_name (bool class_only=false)
virtual CTree * template_key ()
virtual CTree * explicit_instantiation ()
virtual CTree * explicit_specialization ()
virtual CTree * introduce_enum ()
virtual CTree * introduce_enumerator ()
virtual CTree * introduce_named_type ()
virtual CTree * introduce_parameter ()
virtual CTree * introduce_member ()
virtual CTree * introduce_tag ()
virtual CTree * introduce_exception ()
void enter_param_decl_clause ()
 Enter a function parameter declaration clause.
void enter_template_param_list (Syntax::State)
void enter_base_spec ()
void enter_class_def ()
void enter_template_decl ()
void enter_member_access (MemberAccessOperator)
void enter_postfix_expr ()
void enter_exception_spec ()
void enter_template_arg_list (Syntax::State)
void enter_conv_type_id ()
void enter_entity_name (bool v=true)
void enter_nested_name ()
bool enter_expr ()
void enter_extern_decl (bool block_decl)
void leave_param_decl_clause ()
 Leave a function parameter declaration clause.
void leave_template_param_list ()
void leave_base_spec ()
void leave_class_def (bool reject=false)
void leave_member_access ()
void leave_postfix_expr ()
void leave_exception_spec ()
void leave_template_arg_list ()
void leave_conv_type_id ()
void leave_entity_name ()
void leave_nested_name ()
bool leave_expr ()
void leave_extern_decl ()
bool in_base_spec () const
bool in_class_def () const
bool in_conv_type_id () const
bool in_nested_name () const
bool in_expr () const
bool in_extern_decl () const
bool is_entity_name () const
Syntax::State in_template_param_list () const
Syntax::State in_template_arg_list () const
virtual CProtection::Type protection () const
bool non_project_loc ()
bool non_primary_loc ()
bool skip_tpl_fct_bodies () const
bool reset_search_scope (bool=false)
CStructure * array_delim (CStructure *=0)
CStructure * conv_fct_id (CStructure *=0)
CTree * postfix_expr ()
virtual CTree * add_base_classes ()
- Public Member Functions inherited from Puma::CSemantic
 CSemantic (CSyntax &, CBuilder &)
void configure (Config &)
 Configure the semantic analysis.
virtual CTree * id_expr ()
virtual CTree * abst_declarator ()
virtual CTree * direct_abst_declarator ()
virtual CTree * param_decl_clause ()
virtual CTree * finish_fct_def ()
virtual CTree * arg_decl_seq ()
virtual CTree * decl_spec_seq_err ()
virtual CTree * declare_parameter ()
virtual CTree * identifier_list ()
virtual bool finish_param_check (bool)
virtual CTree * begin_decl ()
virtual CTree * array_delim ()
virtual CTree * trans_unit ()
virtual CTree * cmpd_stmt ()
virtual CTree * select_stmt ()
virtual CTree * iter_stmt ()
virtual void introduce_label (CTree *&)
void enter_arg_decl_seq ()
void leave_arg_decl_seq ()
void begin_param_check ()
bool in_arg_decl_seq () const
bool decl_spec_seq ()
bool empty_decl_spec_seq ()
void reenter_class_scope ()
void reenter_scope (CStructure *scp)
 Reenter the given scope.
void leave_scopes ()
 Leave all scopes entered up to the current scope.
- Public Member Functions inherited from Puma::Semantic
void error_sink (ErrorSink &e)
 Set the error output stream object.
void undo (CTree *tree)
 Undo the declaration analysis of the given syntax tree node.
CTree * PrivateName ()
 Create a new anonymous (private) name.
void save_state ()
 Save the current semantic analysis state.
void forget_state ()
 Discard the saved semantic analysis state.
void restore_state ()
 Restore the saved semantic analysis state.
CFileInfo * getFile ()
 Get the root node of the semantic tree.
void enter_local_scope ()
 Enter a local scope.
bool in_param_decl_clause ()
 Check if in the declaration of a function parameter clause.
void finish_decl ()
 Finish the analysis of the current declaration.
void finish_declarator ()
 Finish the analysis of the current declarator.
- Public Member Functions inherited from Puma::PtrStack< CObjectInfo >
 PtrStack (long=8192, long=8192)
virtual ~PtrStack ()
void Push (const CObjectInfo *)
void Pop ()
CObjectInfo * Top () const
long Length () const
CObjectInfo * Get (long) const
void New ()
void Forget ()
void Reject ()
void Destroy ()
long Stacks () const
void Reset ()

Protected Member Functions

virtual InstantiationBuilder & builder () const
virtual InstantiationSyntax & syntax () const
- Protected Member Functions inherited from Puma::CCSemantic
virtual void Delete ()
 Delete the top item on the semantic stack.
CTree * createDelayedParse (bool(CCSyntax::*)(), CTree *)
void parseDelayed ()
void instantiateDelayed (CT_DelayedParse *, CTree *)
void enter_scope (CStructure *)
 Enter the given scope.
void deleteContainer (int)
void setQualName (CObjectInfo *, CObjectInfo *) const
CStructure * getQualifiedScope (CStructure *scope) const
CTypeInfo * resolveExpr (CTree *, CTree *=(CTree *) 0) const
void calculateAddress (CTree *) const
CObjectInfo * getLastResolvedName (CT_SimpleName *) const
CStructure * getNameScope (CT_SimpleName *, bool=true) const
CStructure * getScope (CObjectInfo *obj) const
CStructure * getFriendScope (bool skip_tpl_scope=false) const
CStructure * getNonTplScope (bool consider_instance_scope=false) const
CClassInfo * getOutermostIncompleteParsedRecord ()
Token * getCloseCurly ()
void qualifiedScopeName (CT_SimpleName *, std::ostringstream &) const
bool isQualName (CT_SimpleName *) const
bool realTypedef (CObjectInfo *) const
bool equalType (CTypeInfo *, CTypeInfo *, bool=true) const
void lookupName (const Token *, CStructure *, bool)
bool isClassOrEnum (CObjectInfo *) const
bool inTemplateDecl (CScopeInfo *scope) const
void introduceTemplate (CObjectInfo *, CTemplateInfo *, bool is_friend=false)
void setTemplateScope (CCNameLookup &, CObjectInfo *, CTypeInfo *, CTemplateInfo *, bool)
bool isSpecialization (CTree *) const
void setSpecializationName (CTree *, CTemplateInfo *) const
bool matchArguments (CT_TemplateName *n1, CT_TemplateName *n2) const
CLinkage::Type determine_linkage (CSemDeclSpecs *, SemObjType, CObjectInfo *=(CObjectInfo *) 0) const
CStorage::Type determine_storage_class (CSemDeclSpecs *) const
void setLanguage (CObjectInfo *) const
void setProtection (CObjectInfo *) const
void linkFctDecls (CCNameLookup &, CObjectInfo *) const
void linkCtorDecls (CObjectInfo *) const
void addImplicitThisObject (CFunctionInfo *, CTypeInfo *, CTree *)
void declareNamespaceStd ()
void declareImplicitFcts ()
void declareSpecialMembers ()
CFunctionInfo * createMethod (const char *, CRecord *, CTypeInfo *)
bool isRefToClass (CTypeInfo *, CRecord *) const
bool isBaseClass (CClassInfo *, CClassInfo *) const
void addBaseClasses (CClassInfo *, CT_ClassDef *)
void addBaseClass (CClassInfo *, CT_BaseSpec *)
virtual bool check_function_lookup (CCNameLookup &, CStructure *, CSemDeclSpecs *, CCSemDeclarator &, CTree *, bool)
virtual bool check_member_lookup (CCNameLookup &, CStructure *, CSemDeclSpecs *, CCSemDeclarator &, CTree *, bool &, bool)
virtual bool check_object_lookup (CCNameLookup &, CStructure *, CSemDeclSpecs *, CCSemDeclarator &, CTree *, bool &, CObjectInfo *&)
- Protected Member Functions inherited from Puma::CSemantic
CObjectInfo * lookup (const char *, SemObjType, bool=false) const
CObjectInfo * lookup (CT_SimpleName *, SemObjType, bool=false) const
CObjectInfo * lookup (const char *, CStructure *, SemObjType, bool) const
CObjectInfo * lookupBuiltin (const char *name) const
CStorage::Type determine_storage_class (CSemDeclSpecs *, SemObjType, CLinkage::Type) const
bool typeMatch (CTypeInfo *, CTypeInfo *) const
CStructure * findParent () const
void setSpecifiers (CObjectInfo *, CSemDeclSpecs *) const
bool isRedefiningTypedef (CObjectInfo *, int obj_type) const
bool isRedefinedFunction (CFunctionInfo *) const
CAttributeInfo * createAttribute (const char *, CStructure *, CTypeInfo *, bool=false)
CTypedefInfo * createTypedef (const char *, CStructure *, CTypeInfo *)
void createParameter (CFunctionInfo *, CTypeInfo *)
CFunctionInfo * createFunction (const char *, CStructure *, CTypeInfo *)
- Protected Member Functions inherited from Puma::Semantic
 Semantic ()
 Constructor.
virtual ~Semantic ()
 Destructor.
void common_settings (CObjectInfo *info, CTree *tree)
 Apply command settings on the given semantic object.
void common_settings (CObjectInfo *info, CTree *tree, CSemDeclarator *d)
 Apply command settings on the given semantic object.
void Push (CObjectInfo *info)
 Push the given semantic information object on the semantic stack.
bool in_decl () const
 Check if currently analysing a declaration.
void decl_begin (CSemDeclSpecs *ds)
 Begin analysing a declaration.
void decl_end ()
 Finish analysing a declaration.
void decl_specs_begin (CT_DeclSpecSeq *dss)
 Begin analysing a declaration specifier sequence.
void decl_specs_end ()
 Finish analysing a declaration specifier sequence.
CSemDeclSpecs * sem_decl_specs () const
 Get the semantic information for the currently analysed declaration specifier sequence.
CT_DeclSpecSeq * decl_specs () const
 Get the currently analysed declaration specifier sequence.
- Protected Member Functions inherited from Puma::PtrStack< CObjectInfo >
virtual void Remove ()

Additional Inherited Members

- Public Types inherited from Puma::CCSemantic
enum  MemberAccessOperator {
  MAO_NONE = 0,
  MAO_PTS,
  MAO_DOT
}
- Public Attributes inherited from Puma::CCSemantic
CStructure * search_scope
CStructure * last_search_scope
CStructure * last_scope
bool dep_nested_name
- Protected Attributes inherited from Puma::CCSemantic
CRecord * _outermost_class_def
Stack< bool > _in_base_spec
Stack< bool > _in_nested_name
Stack< bool > _in_conv_type_id
Stack< const char * > _in_extern_decl
Stack< CProtection::Type > _protection
CCNameLookup shared_nl
struct {
   const Token *   tok
   CStructure *   scope
   bool   nested
   bool   nested_name
   bool   base_spec
} last_token_nl
Stack< Syntax::State > _in_template_arg_list
Stack< Syntax::State > _in_template_param_list
Stack< bool > parsing_entity_name
Stack< bool > _in_expr
Stack< CTree * > _postfix_expr
Stack< MemberAccessOperator > _in_memb_access_expr
bool expect_template
bool parsing_fct_inst
bool parsing_class_inst
bool real_inst
CCInstantiation * tpl_inst
Unit * _last_unit
bool _last_body_skipped
- Protected Attributes inherited from Puma::CSemantic
bool in_arg_decl
bool _in_arg_decl_seq
bool is_type_name
bool support_implicit_int
PtrStack< CStructure > non_record_scopes
- Protected Attributes inherited from Puma::Semantic
CSemDatabase * _db
 Database of all semantic objects of the semantic tree.
CFileInfo * _file
 Top level semantic object representing the file scope.
ErrorSink * _err
 Error output stream.
long _Anonymous
 Counter for generating anonymous (private) names.
CEnumInfo * current_enum
 The current enumeration, if inside the definition of an enumeration.
CStructure * current_fct
 The current function, if inside the definition of a function.
CStructure * current_scope
 The current scope.
BCStack< CSemDeclSpecs *, 256 > _sem_decl_specs
 Stack for the type analysis of declarations.
BCStack< CT_DeclSpecSeq *, 256 > _decl_specs
 Stack for collecting declaration specifiers.
BCStack< bool, 256 > _in_param_decl_clause
 Stack for the state of analysing a function parameter list.
BCStack< bool, 256 > _in_decl
 Stack for the state of analysing a declaration.

Constructor & Destructor Documentation

Puma::InstantiationSemantic::InstantiationSemantic ( InstantiationSyntax &  s,
InstantiationBuilder &  b 
)
inline

Member Function Documentation

InstantiationBuilder & Puma::InstantiationSemantic::builder ( ) const
inlineprotectedvirtual

Reimplemented from Puma::CCSemantic.

CTree* Puma::InstantiationSemantic::introduce_class ( )
virtual

Reimplemented from Puma::CCSemantic.

CTree* Puma::InstantiationSemantic::introduce_function ( )
virtual

Reimplemented from Puma::CCSemantic.

CTree* Puma::InstantiationSemantic::introduce_object ( CTree *  = 0)
virtual

Reimplemented from Puma::CCSemantic.

bool Puma::InstantiationSemantic::is_class_name ( )
bool Puma::InstantiationSemantic::is_class_template_name ( )
bool Puma::InstantiationSemantic::is_enum_name ( )
bool Puma::InstantiationSemantic::is_namespace_name ( )
bool Puma::InstantiationSemantic::is_template_name ( )
bool Puma::InstantiationSemantic::is_this_instance ( )
bool Puma::InstantiationSemantic::is_this_specialization ( )
bool Puma::InstantiationSemantic::is_typedef_name ( )
CTree* Puma::InstantiationSemantic::non_type_param_without_init ( )
void Puma::InstantiationSemantic::parse_delayed ( bool(CCSyntax::*)()  rule,
CTree *  tree 
)
virtual

Reimplemented from Puma::CCSemantic.

void Puma::InstantiationSemantic::set_this_instance ( )
InstantiationSyntax & Puma::InstantiationSemantic::syntax ( ) const
inlineprotectedvirtual

Reimplemented from Puma::CCSemantic.




Puma Reference Manual. Created on Sun Jul 1 2012.