#include <ss_declaration.g.hh>
Inheritance diagram for lestes::lang::cplus::sem::ss_function_declaration:

Public Member Functions | |
| ptr< ss_decl_seq > | parameters_get () const |
| The method parameters_get returns the value of the field ss_function_declaration::parameters. | |
| void | parameters_set (const ptr< ss_decl_seq > &) |
| The method parameters_set sets the field ss_function_declaration::parameters to the given value. | |
| ptr< ss_compound_stmt > | body_get () const |
| The method body_get returns the value of the field ss_function_declaration::body. | |
| void | body_set (const ptr< ss_compound_stmt > &) |
| The method body_set sets the field ss_function_declaration::body to the given value. | |
| ptr< ::lestes::std::map< srp< ss_id_label >, srp< ss_statement > > > | labels_get () const |
| The method labels_get returns the value of the field ss_function_declaration::labels. | |
| void | labels_set (const ptr< ::lestes::std::map< srp< ss_id_label >, srp< ss_statement > > > &) |
| The method labels_set sets the field ss_function_declaration::labels to the given value. | |
| ptr< ::lestes::std::list< srp< ss_decl_seq > > > | historical_parameters_get () const |
| The method historical_parameters_get returns the value of the field ss_function_declaration::historical_parameters. | |
| void | historical_parameters_set (const ptr< ::lestes::std::list< srp< ss_decl_seq > > > &) |
| The method historical_parameters_set sets the field ss_function_declaration::historical_parameters to the given value. | |
| bool | is_entry_point () |
| Whether is the current function entry point of the whole translation unit. | |
| 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_list > | reflection_get () const |
| for purposes of dumping | |
| virtual ptr< field_list_list > | field_values_get () const |
| for purposes of dumping | |
Static Public Member Functions | |
| static ptr< ss_function_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< ::lestes::std::set< srp< ss_struct_base > > > a__ss_befriendable_declaration__friend_of, ptr< ss_decl_seq > a__ss_function_declaration__parameters, ptr< ss_compound_stmt > a__ss_function_declaration__body, ptr< ::lestes::std::map< srp< ss_id_label >, srp< ss_statement > > > a__ss_function_declaration__labels, ptr< ::lestes::std::list< srp< ss_decl_seq > > > a__ss_function_declaration__historical_parameters) |
| First generated factory method for class ss_function_declaration. | |
| static ptr< ss_function_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_decl_seq > a__ss_function_declaration__parameters, ptr< ss_compound_stmt > a__ss_function_declaration__body) |
| Second generated factory method for class ss_function_declaration. | |
Protected Member Functions | |
| ss_function_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< ::lestes::std::set< srp< ss_struct_base > > > a__ss_befriendable_declaration__friend_of, ptr< ss_decl_seq > a__ss_function_declaration__parameters, ptr< ss_compound_stmt > a__ss_function_declaration__body, ptr< ::lestes::std::map< srp< ss_id_label >, srp< ss_statement > > > a__ss_function_declaration__labels, ptr< ::lestes::std::list< srp< ss_decl_seq > > > a__ss_function_declaration__historical_parameters) | |
| Generated constructor for class ss_function_declaration. | |
| virtual void | gc_mark () |
| Marking routine for class ss_function_declaration. | |
Private Attributes | |
| srp< ss_decl_seq > | parameters |
| srp< ss_compound_stmt > | body |
| Compound statement of the function. | |
| srp< ::lestes::std::map< srp< ss_id_label >, srp< ss_statement > > > | labels |
| Labels used inside function body. Used for goto statement. | |
| srp< ::lestes::std::list< srp< ss_decl_seq > > > | historical_parameters |
| Historical parameters. | |
Static Private Attributes | |
| static ptr< reflection_list > | reflection = reflection |
Definition at line 967 of file ss_declaration.g.hh.
| lestes::lang::cplus::sem::ss_function_declaration::ss_function_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< ::lestes::std::set< srp< ss_struct_base > > > | a__ss_befriendable_declaration__friend_of, | |||
| ptr< ss_decl_seq > | a__ss_function_declaration__parameters, | |||
| ptr< ss_compound_stmt > | a__ss_function_declaration__body, | |||
| ptr< ::lestes::std::map< srp< ss_id_label >, srp< ss_statement > > > | a__ss_function_declaration__labels, | |||
| ptr< ::lestes::std::list< srp< ss_decl_seq > > > | a__ss_function_declaration__historical_parameters | |||
| ) | [protected] |
Generated constructor for class ss_function_declaration.
Generated constructor for class ss_function_declaration.
Definition at line 1851 of file ss_declaration.g.cc.
Referenced by create().
01865 : ss_befriendable_declaration(a__ss_base_with_location__location, 01866 a__ss_declaration__visible_since, 01867 a__ss_declaration__decl_time, 01868 a__ss_declaration__name, 01869 a__ss_declaration__contained_in, 01870 a__ss_declaration__type, 01871 a__ss_declaration__linkage, 01872 a__ss_declaration_with_access_specifier__access_specifier, 01873 a__ss_declaration_with_access_specifier__storage_class, 01874 a__ss_befriendable_declaration__friend_of), parameters(checked(a__ss_function_declaration__parameters)), body(a__ss_function_declaration__body), labels(checked(a__ss_function_declaration__labels)), historical_parameters(checked(a__ss_function_declaration__historical_parameters)) 01875 {}
| ptr< ss_decl_seq > lestes::lang::cplus::sem::ss_function_declaration::parameters_get | ( | ) | const |
The method parameters_get returns the value of the field ss_function_declaration::parameters.
Definition at line 1712 of file ss_declaration.g.cc.
References parameters.
01713 { 01714 return parameters; 01715 }
| void lestes::lang::cplus::sem::ss_function_declaration::parameters_set | ( | const ptr< ss_decl_seq > & | x | ) |
The method parameters_set sets the field ss_function_declaration::parameters to the given value.
| [in] | x | The new value to set ss_function_declaration::parameters to. |
Definition at line 1721 of file ss_declaration.g.cc.
References parameters.
01722 { 01723 ss_function_declaration::parameters = x; 01724 }
| ptr< ss_compound_stmt > lestes::lang::cplus::sem::ss_function_declaration::body_get | ( | ) | const |
The method body_get returns the value of the field ss_function_declaration::body.
Definition at line 1730 of file ss_declaration.g.cc.
References body.
01731 { 01732 return body; 01733 }
| void lestes::lang::cplus::sem::ss_function_declaration::body_set | ( | const ptr< ss_compound_stmt > & | x | ) |
The method body_set sets the field ss_function_declaration::body to the given value.
| [in] | x | The new value to set ss_function_declaration::body to. |
Definition at line 1739 of file ss_declaration.g.cc.
References body.
01740 { 01741 ss_function_declaration::body = x; 01742 }
| ptr<::lestes::std::map< srp< ss_id_label >, srp< ss_statement > > > lestes::lang::cplus::sem::ss_function_declaration::labels_get | ( | ) | const |
The method labels_get returns the value of the field ss_function_declaration::labels.
Definition at line 1748 of file ss_declaration.g.cc.
References labels.
01749 { 01750 return labels; 01751 }
| void lestes::lang::cplus::sem::ss_function_declaration::labels_set | ( | const ptr< ::lestes::std::map< srp< ss_id_label >, srp< ss_statement > > > & | x | ) |
The method labels_set sets the field ss_function_declaration::labels to the given value.
| [in] | x | The new value to set ss_function_declaration::labels to. |
Definition at line 1757 of file ss_declaration.g.cc.
References labels.
01758 { 01759 ss_function_declaration::labels = x; 01760 }
| ptr<::lestes::std::list< srp< ss_decl_seq > > > lestes::lang::cplus::sem::ss_function_declaration::historical_parameters_get | ( | ) | const |
The method historical_parameters_get returns the value of the field ss_function_declaration::historical_parameters.
Definition at line 1766 of file ss_declaration.g.cc.
References historical_parameters.
01767 { 01768 return historical_parameters; 01769 }
| void lestes::lang::cplus::sem::ss_function_declaration::historical_parameters_set | ( | const ptr< ::lestes::std::list< srp< ss_decl_seq > > > & | x | ) |
The method historical_parameters_set sets the field ss_function_declaration::historical_parameters to the given value.
| [in] | x | The new value to set ss_function_declaration::historical_parameters to. |
Definition at line 1775 of file ss_declaration.g.cc.
References historical_parameters.
01776 { 01777 ss_function_declaration::historical_parameters = x; 01778 }
| bool lestes::lang::cplus::sem::ss_function_declaration::is_entry_point | ( | ) |
Whether is the current function entry point of the whole translation unit.
Check whether the current function is entry point of the translation unit.
This function has to be maintained by semantic part, because backend should be independet on current language, which defines entry point(main)[].
Definition at line 109 of file ss_misc.cc.
References lestes::lang::cplus::sem::ss_declaration::contained_in_get(), lestes::intercode::intercode::create(), lestes::intercode::ss_base_with_location::location_get(), lestes::lang::cplus::sem::ss_declaration::name_get(), and lestes::lang::cplus::sem::ss_decl_seq::root_instance().
00110 { 00111 if (contained_in_get() != ss_decl_seq::root_instance()) //has to be on global scope 00112 return false; 00113 ptr<ss_decl_name> main_name = ss_ordinary_name::create( name_get()->location_get(), "main" ); 00114 if (main_name->matches(name_get())) //has to be main 00115 return true; 00116 00117 return false; 00118 }
| void lestes::lang::cplus::sem::ss_function_declaration::accept_ss_declaration_visitor | ( | ptr< ss_declaration_visitor > | v | ) | [virtual] |
Implements lestes::lang::cplus::sem::ss_befriendable_declaration.
Reimplemented in lestes::lang::cplus::sem::ss_method_declaration, and lestes::lang::cplus::sem::ss_builtin_operator_declaration.
Definition at line 1780 of file ss_declaration.g.cc.
| ulint lestes::lang::cplus::sem::ss_function_declaration::accept_ss_decl2ulint_base | ( | ptr< ss_decl2ulint_base > | v | ) | [virtual] |
Implements lestes::lang::cplus::sem::ss_befriendable_declaration.
Reimplemented in lestes::lang::cplus::sem::ss_method_declaration, and lestes::lang::cplus::sem::ss_builtin_operator_declaration.
Definition at line 1785 of file ss_declaration.g.cc.
| lstring lestes::lang::cplus::sem::ss_function_declaration::accept_ss_decl2lstring_base | ( | ptr< ss_decl2lstring_base > | v | ) | [virtual] |
Implements lestes::lang::cplus::sem::ss_befriendable_declaration.
Reimplemented in lestes::lang::cplus::sem::ss_method_declaration, and lestes::lang::cplus::sem::ss_builtin_operator_declaration.
Definition at line 1790 of file ss_declaration.g.cc.
| ptr< ss_function_declaration > lestes::lang::cplus::sem::ss_function_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< ::lestes::std::set< srp< ss_struct_base > > > | a__ss_befriendable_declaration__friend_of, | |||
| ptr< ss_decl_seq > | a__ss_function_declaration__parameters, | |||
| ptr< ss_compound_stmt > | a__ss_function_declaration__body, | |||
| ptr< ::lestes::std::map< srp< ss_id_label >, srp< ss_statement > > > | a__ss_function_declaration__labels, | |||
| ptr< ::lestes::std::list< srp< ss_decl_seq > > > | a__ss_function_declaration__historical_parameters | |||
| ) | [static] |
First generated factory method for class ss_function_declaration.
This factory method for class ss_function_declaration takes values of all fields as arguments.
Reimplemented in lestes::lang::cplus::sem::ss_builtin_operator_declaration.
Definition at line 1799 of file ss_declaration.g.cc.
References ss_function_declaration().
01813 { 01814 return ptr< ss_function_declaration > ( new ss_function_declaration(a__ss_base_with_location__location, 01815 a__ss_declaration__visible_since, 01816 a__ss_declaration__decl_time, 01817 a__ss_declaration__name, 01818 a__ss_declaration__contained_in, 01819 a__ss_declaration__type, 01820 a__ss_declaration__linkage, 01821 a__ss_declaration_with_access_specifier__access_specifier, 01822 a__ss_declaration_with_access_specifier__storage_class, 01823 a__ss_befriendable_declaration__friend_of, 01824 a__ss_function_declaration__parameters, 01825 a__ss_function_declaration__body, 01826 a__ss_function_declaration__labels, 01827 a__ss_function_declaration__historical_parameters) ); 01828 }
| ptr< ss_function_declaration > lestes::lang::cplus::sem::ss_function_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_decl_seq > | a__ss_function_declaration__parameters, | |||
| ptr< ss_compound_stmt > | a__ss_function_declaration__body | |||
| ) | [static] |
Second generated factory method for class ss_function_declaration.
This factory method for class ss_function_declaration uses initializers.
Reimplemented in lestes::lang::cplus::sem::ss_builtin_operator_declaration.
Definition at line 1834 of file ss_declaration.g.cc.
References lestes::lang::cplus::sem::ss_access_specifier::ACCESS_PUBLIC, lestes::intercode::intercode::create(), ss_function_declaration(), and lestes::lang::cplus::sem::ss_storage_class::ST_NONE.
01843 { 01844 return ptr< ss_function_declaration > ( new ss_function_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, ::lestes::std::set< srp< ss_struct_base > > ::create(), a__ss_function_declaration__parameters, a__ss_function_declaration__body, ::lestes::std::map< srp< ss_id_label >, srp< ss_statement > > ::create(), ::lestes::std::list< srp< ss_decl_seq > > ::create()) ); 01845 }
| ptr< object::reflection_list > lestes::lang::cplus::sem::ss_function_declaration::reflection_get | ( | ) | const [virtual] |
for purposes of dumping
Reimplemented from lestes::lang::cplus::sem::ss_befriendable_declaration.
Reimplemented in lestes::lang::cplus::sem::ss_method_declaration, and lestes::lang::cplus::sem::ss_builtin_operator_declaration.
Definition at line 1877 of file ss_declaration.g.cc.
References lestes::std::list< T >::create(), reflection, and lestes::lang::cplus::sem::ss_befriendable_declaration::reflection_get().
Referenced by lestes::lang::cplus::sem::ss_builtin_operator_declaration::reflection_get(), and lestes::lang::cplus::sem::ss_method_declaration::reflection_get().
01878 { 01879 if (!reflection) { 01880 typedef class_reflection::field_metadata md; 01881 typedef class_reflection::field_metadata_list mdlist; 01882 ptr<mdlist> mdl = mdlist::create(); 01883 mdl->push_back( md::create( "parameters", "ss_decl_seq" ) ); 01884 mdl->push_back( md::create( "body", "ss_compound_stmt" ) ); 01885 mdl->push_back( md::create( "labels", "map< srp< ss_id_label >, srp< ss_statement > >" ) ); 01886 mdl->push_back( md::create( "historical_parameters", "list< srp< ss_decl_seq > >" ) ); 01887 reflection = reflection_list::create( ss_befriendable_declaration::reflection_get() ); 01888 reflection->push_back( class_reflection::create( "ss_function_declaration", mdl ) ); 01889 } 01890 return reflection; 01891 }
| ptr< object::field_list_list > lestes::lang::cplus::sem::ss_function_declaration::field_values_get | ( | ) | const [virtual] |
for purposes of dumping
Reimplemented from lestes::lang::cplus::sem::ss_befriendable_declaration.
Reimplemented in lestes::lang::cplus::sem::ss_method_declaration, and lestes::lang::cplus::sem::ss_builtin_operator_declaration.
Definition at line 1893 of file ss_declaration.g.cc.
References lestes::std::list< T >::create(), and lestes::lang::cplus::sem::ss_befriendable_declaration::field_values_get().
Referenced by lestes::lang::cplus::sem::ss_builtin_operator_declaration::field_values_get(), and lestes::lang::cplus::sem::ss_method_declaration::field_values_get().
01894 { 01895 ptr < field_list_list > result = ss_befriendable_declaration::field_values_get(); 01896 result->push_back( value_list::create() ); 01897 result->back()->push_back( this->parameters ); 01898 result->push_back( value_list::create() ); 01899 result->back()->push_back( this->body ); 01900 result->push_back( value_list::create() ); 01901 result->back()->push_back( this->labels ); 01902 result->push_back( value_list::create() ); 01903 result->back()->push_back( this->historical_parameters ); 01904 return result; 01905 }
| void lestes::lang::cplus::sem::ss_function_declaration::gc_mark | ( | void | ) | [protected, virtual] |
Marking routine for class ss_function_declaration.
Marking routine is used for garbage collection.
Reimplemented from lestes::lang::cplus::sem::ss_befriendable_declaration.
Reimplemented in lestes::lang::cplus::sem::ss_method_declaration, and lestes::lang::cplus::sem::ss_builtin_operator_declaration.
Definition at line 1912 of file ss_declaration.g.cc.
References lestes::lang::cplus::sem::ss_befriendable_declaration::gc_mark().
Referenced by lestes::lang::cplus::sem::ss_builtin_operator_declaration::gc_mark(), and lestes::lang::cplus::sem::ss_method_declaration::gc_mark().
01913 { 01914 ss_befriendable_declaration::gc_mark(); 01915 }
srp< ss_decl_seq > lestes::lang::cplus::sem::ss_function_declaration::parameters [private] |
Definition at line 1058 of file ss_declaration.g.hh.
Referenced by parameters_get(), and parameters_set().
srp< ss_compound_stmt > lestes::lang::cplus::sem::ss_function_declaration::body [private] |
Compound statement of the function.
When the declaration is not a definition (ie. there was no function body), null value is used.
Parent of ss_decl_seq in the body should be set to parameters_get()->parent_get(), not to parameters_get().
Definition at line 1069 of file ss_declaration.g.hh.
Referenced by body_get(), and body_set().
srp< ::lestes::std::map< srp< ss_id_label >, srp< ss_statement > > > lestes::lang::cplus::sem::ss_function_declaration::labels [private] |
Labels used inside function body. Used for goto statement.
Definition at line 1071 of file ss_declaration.g.hh.
Referenced by labels_get(), and labels_set().
srp< ::lestes::std::list< srp< ss_decl_seq > > > lestes::lang::cplus::sem::ss_function_declaration::historical_parameters [private] |
Historical parameters.
Whenever a function declaration is encountered a new declseq is created, holding the parameters. The old value is of the field ss_function_declaration::parameters is put at the end of that list, so that the old names of the parameters can be retrieved later.
Definition at line 1081 of file ss_declaration.g.hh.
Referenced by historical_parameters_get(), and historical_parameters_set().
ptr< object::reflection_list > lestes::lang::cplus::sem::ss_function_declaration::reflection = reflection [static, private] |
Reimplemented from lestes::lang::cplus::sem::ss_befriendable_declaration.
Reimplemented in lestes::lang::cplus::sem::ss_method_declaration, and lestes::lang::cplus::sem::ss_builtin_operator_declaration.
Definition at line 1082 of file ss_declaration.g.hh.
Referenced by reflection_get().
1.5.1-20070107