lestes::lang::cplus::sem::ss_expr2pi Class Reference

Visitor for converting expressions into pseudoinstructions. More...

#include <ss_ss2pi_base.g.hh>

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

Inheritance graph
[legend]
List of all members.

Public Member Functions

ptr< ss_stmt2picaller_get () const
 The method caller_get returns the value of the field ss_expr2pi::caller.
void caller_set (const ptr< ss_stmt2pi > &)
 The method caller_set sets the field ss_expr2pi::caller to the given value.
ptr< ::lestes::backend_v2::intercode::pi_operandresult_get () const
 The method result_get returns the value of the field ss_expr2pi::result.
void result_set (const ptr< ::lestes::backend_v2::intercode::pi_operand > &)
 The method result_set sets the field ss_expr2pi::result to the given value.
ptr< ss_sppsp_get () const
 The method psp_get returns the value of the field ss_expr2pi::psp.
void psp_set (const ptr< ss_sp > &)
 The method psp_set sets the field ss_expr2pi::psp to the given value.
ptr< ss_destructor_tabletemporaries_get () const
 The method temporaries_get returns the value of the field ss_expr2pi::temporaries.
void temporaries_set (const ptr< ss_destructor_table > &)
 The method temporaries_set sets the field ss_expr2pi::temporaries to the given value.
ptr< expression_results_map_typeexpr2operand_map_get () const
 The method expr2operand_map_get returns the value of the field ss_expr2pi::expr2operand_map.
void expr2operand_map_set (const ptr< expression_results_map_type > &)
 The method expr2operand_map_set sets the field ss_expr2pi::expr2operand_map to the given value.
bool returned_pointer_get () const
 The method returned_pointer_get returns the value of the field ss_expr2pi::returned_pointer.
void returned_pointer_set (bool)
 The method returned_pointer_set sets the field ss_expr2pi::returned_pointer to the given value.
bool evaluated (ptr< ss_expression >)
 Check whether given expression was yet transformed.
ptr< ::lestes::backend_v2::intercode::pi_picompute_origin (ptr< ::lestes::backend_v2::intercode::pi_mem_factory >, ptr< ss_sp >)
 Computes an origin of a given pi_mem_factory inside fullexpression settled bye ss_sp.
ptr< ::lestes::backend_v2::intercode::pi_pregreturns_preg (const ptr< ss_expression > &)
ptr< ::lestes::backend_v2::intercode::pi_memreturns_mem (const ptr< ss_expression > &)
ptr< ::lestes::backend_v2::intercode::pi_mem_ptr_derefreturns_mem_pointer (const ptr< ss_expression > &)
bool is_returned_pointer (ptr< ss_expression >)
virtual void visit_ss_assign (ptr< ::lestes::lang::cplus::sem::ss_assign >)
virtual void visit_ss_add (ptr< ::lestes::lang::cplus::sem::ss_add >)
virtual void visit_ss_sub (ptr< ::lestes::lang::cplus::sem::ss_sub >)
virtual void visit_ss_mul (ptr< ::lestes::lang::cplus::sem::ss_mul >)
virtual void visit_ss_div (ptr< ::lestes::lang::cplus::sem::ss_div >)
virtual void visit_ss_mod (ptr< ::lestes::lang::cplus::sem::ss_mod >)
virtual void visit_ss_shr (ptr< ::lestes::lang::cplus::sem::ss_shr >)
virtual void visit_ss_shl (ptr< ::lestes::lang::cplus::sem::ss_shl >)
virtual void visit_ss_sbg (ptr< ::lestes::lang::cplus::sem::ss_sbg >)
virtual void visit_ss_sbl (ptr< ::lestes::lang::cplus::sem::ss_sbl >)
virtual void visit_ss_sbng (ptr< ::lestes::lang::cplus::sem::ss_sbng >)
virtual void visit_ss_sbnl (ptr< ::lestes::lang::cplus::sem::ss_sbnl >)
virtual void visit_ss_sbne (ptr< ::lestes::lang::cplus::sem::ss_sbne >)
virtual void visit_ss_sbe (ptr< ::lestes::lang::cplus::sem::ss_sbe >)
virtual void visit_ss_band (ptr< ::lestes::lang::cplus::sem::ss_band >)
virtual void visit_ss_bor (ptr< ::lestes::lang::cplus::sem::ss_bor >)
virtual void visit_ss_bxor (ptr< ::lestes::lang::cplus::sem::ss_bxor >)
virtual void visit_ss_land (ptr< ::lestes::lang::cplus::sem::ss_land >)
virtual void visit_ss_lor (ptr< ::lestes::lang::cplus::sem::ss_lor >)
virtual void visit_ss_arr_acc (ptr< ::lestes::lang::cplus::sem::ss_arr_acc >)
virtual void visit_ss_pfuncall (ptr< ::lestes::lang::cplus::sem::ss_pfuncall >)
virtual void visit_ss_funcall (ptr< ::lestes::lang::cplus::sem::ss_funcall >)
virtual void visit_ss_ifuncall (ptr< ::lestes::lang::cplus::sem::ss_ifuncall >)
virtual void visit_ss_mfuncall (ptr< ::lestes::lang::cplus::sem::ss_mfuncall >)
virtual void visit_ss_vfuncall (ptr< ::lestes::lang::cplus::sem::ss_vfuncall >)
virtual void visit_ss_dereference (ptr< ::lestes::lang::cplus::sem::ss_dereference >)
virtual void visit_ss_conversion (ptr< ::lestes::lang::cplus::sem::ss_conversion >)
virtual void visit_ss_array_to_pointer (ptr< ::lestes::lang::cplus::sem::ss_array_to_pointer >)
virtual void visit_ss_bind_reference (ptr< ::lestes::lang::cplus::sem::ss_bind_reference >)
virtual void visit_ss_bind_to_temporary (ptr< ::lestes::lang::cplus::sem::ss_bind_to_temporary >)
virtual void visit_ss_get (ptr< ::lestes::lang::cplus::sem::ss_get >)
virtual void visit_ss_vol_get (ptr< ::lestes::lang::cplus::sem::ss_vol_get >)
virtual void visit_ss_gat (ptr< ::lestes::lang::cplus::sem::ss_gat >)
virtual void visit_ss_neg (ptr< ::lestes::lang::cplus::sem::ss_neg >)
virtual void visit_ss_lnot (ptr< ::lestes::lang::cplus::sem::ss_lnot >)
virtual void visit_ss_bnot (ptr< ::lestes::lang::cplus::sem::ss_bnot >)
virtual void visit_ss_address_of (ptr< ::lestes::lang::cplus::sem::ss_address_of >)
virtual void visit_ss_this_expr (ptr< ::lestes::lang::cplus::sem::ss_this_expr >)
virtual void visit_ss_literal (ptr< ::lestes::lang::cplus::sem::ss_literal >)
virtual void visit_ss_ternary (ptr< ::lestes::lang::cplus::sem::ss_ternary >)
virtual void visit_ss_var_ref_by_qname (ptr< ::lestes::lang::cplus::sem::ss_var_ref_by_qname >)
virtual void visit_ss_var_ref (ptr< ::lestes::lang::cplus::sem::ss_var_ref >)
virtual void visit_ss_throw (ptr< ::lestes::lang::cplus::sem::ss_throw >)
virtual void visit_ss_member_ptr (ptr< ::lestes::lang::cplus::sem::ss_member_ptr >)
virtual void visit_ss_ptr_member_ptr (ptr< ::lestes::lang::cplus::sem::ss_ptr_member_ptr >)
virtual void visit_ss_access (ptr< ::lestes::lang::cplus::sem::ss_access >)
virtual void visit_ss_ptr_access (ptr< ::lestes::lang::cplus::sem::ss_ptr_access >)
ptr< ::lestes::backend_v2::intercode::pi_operandreturns (const ptr< ::lestes::lang::cplus::sem::ss_expression > &)
 "visit-return" method
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_expr2picreate (ptr< ss_stmt2pi > a__ss_expr2pi__caller, ptr< ::lestes::backend_v2::intercode::pi_operand > a__ss_expr2pi__result, ptr< ss_sp > a__ss_expr2pi__psp, ptr< ss_destructor_table > a__ss_expr2pi__temporaries, ptr< expression_results_map_type > a__ss_expr2pi__expr2operand_map, bool a__ss_expr2pi__returned_pointer)
 First generated factory method for class ss_expr2pi.
static ptr< ss_expr2picreate (ptr< ss_stmt2pi > a__ss_expr2pi__caller, ptr< ss_sp > a__ss_expr2pi__psp, ptr< ss_destructor_table > a__ss_expr2pi__temporaries, ptr< expression_results_map_type > a__ss_expr2pi__expr2operand_map)
 Second generated factory method for class ss_expr2pi.

Protected Member Functions

 ss_expr2pi (ptr< ss_stmt2pi > a__ss_expr2pi__caller, ptr< ::lestes::backend_v2::intercode::pi_operand > a__ss_expr2pi__result, ptr< ss_sp > a__ss_expr2pi__psp, ptr< ss_destructor_table > a__ss_expr2pi__temporaries, ptr< expression_results_map_type > a__ss_expr2pi__expr2operand_map, bool a__ss_expr2pi__returned_pointer)
 Generated constructor for class ss_expr2pi.
virtual void gc_mark ()
 Marking routine for class ss_expr2pi.

Private Attributes

srp< ss_stmt2picaller
 Nearest statement visitor caller(needed for variable access).
srp< ::lestes::backend_v2::intercode::pi_operandresult
 Result of evaluating current expression.
srp< ss_sppsp
 Previous full-expression sequence point.
srp< ss_destructor_tabletemporaries
 Destructor table for temporary variables.
srp< expression_results_map_typeexpr2operand_map
 Map for result of subexpressions inside fullexpression.
bool returned_pointer
 Temporary variable used by is_returned_pointer method.

Static Private Attributes

static ptr< reflection_listreflection = reflection

Detailed Description

Visitor for converting expressions into pseudoinstructions.


Constructor & Destructor Documentation

lestes::lang::cplus::sem::ss_expr2pi::ss_expr2pi ( ptr< ss_stmt2pi a__ss_expr2pi__caller,
ptr< ::lestes::backend_v2::intercode::pi_operand a__ss_expr2pi__result,
ptr< ss_sp a__ss_expr2pi__psp,
ptr< ss_destructor_table a__ss_expr2pi__temporaries,
ptr< expression_results_map_type a__ss_expr2pi__expr2operand_map,
bool  a__ss_expr2pi__returned_pointer 
) [protected]

Generated constructor for class ss_expr2pi.

Generated constructor for class ss_expr2pi.

Author:
lsg


Member Function Documentation

ptr< ss_stmt2pi > lestes::lang::cplus::sem::ss_expr2pi::caller_get (  )  const

The method caller_get returns the value of the field ss_expr2pi::caller.

Returns:
The value of ss_expr2pi::caller.
Author:
lsg

void lestes::lang::cplus::sem::ss_expr2pi::caller_set ( const ptr< ss_stmt2pi > &  x  ) 

The method caller_set sets the field ss_expr2pi::caller to the given value.

Parameters:
[in] x The new value to set ss_expr2pi::caller to.
Author:
lsg

ptr<::lestes::backend_v2::intercode::pi_operand > lestes::lang::cplus::sem::ss_expr2pi::result_get (  )  const

The method result_get returns the value of the field ss_expr2pi::result.

Returns:
The value of ss_expr2pi::result.
Author:
lsg

void lestes::lang::cplus::sem::ss_expr2pi::result_set ( const ptr< ::lestes::backend_v2::intercode::pi_operand > &  x  ) 

The method result_set sets the field ss_expr2pi::result to the given value.

Parameters:
[in] x The new value to set ss_expr2pi::result to.
Author:
lsg

ptr< ss_sp > lestes::lang::cplus::sem::ss_expr2pi::psp_get (  )  const

The method psp_get returns the value of the field ss_expr2pi::psp.

Returns:
The value of ss_expr2pi::psp.
Author:
lsg

void lestes::lang::cplus::sem::ss_expr2pi::psp_set ( const ptr< ss_sp > &  x  ) 

The method psp_set sets the field ss_expr2pi::psp to the given value.

Parameters:
[in] x The new value to set ss_expr2pi::psp to.
Author:
lsg

ptr< ss_destructor_table > lestes::lang::cplus::sem::ss_expr2pi::temporaries_get (  )  const

The method temporaries_get returns the value of the field ss_expr2pi::temporaries.

Returns:
The value of ss_expr2pi::temporaries.
Author:
lsg

void lestes::lang::cplus::sem::ss_expr2pi::temporaries_set ( const ptr< ss_destructor_table > &  x  ) 

The method temporaries_set sets the field ss_expr2pi::temporaries to the given value.

Parameters:
[in] x The new value to set ss_expr2pi::temporaries to.
Author:
lsg

ptr< expression_results_map_type > lestes::lang::cplus::sem::ss_expr2pi::expr2operand_map_get (  )  const

The method expr2operand_map_get returns the value of the field ss_expr2pi::expr2operand_map.

Returns:
The value of ss_expr2pi::expr2operand_map.
Author:
lsg

void lestes::lang::cplus::sem::ss_expr2pi::expr2operand_map_set ( const ptr< expression_results_map_type > &  x  ) 

The method expr2operand_map_set sets the field ss_expr2pi::expr2operand_map to the given value.

Parameters:
[in] x The new value to set ss_expr2pi::expr2operand_map to.
Author:
lsg

bool lestes::lang::cplus::sem::ss_expr2pi::returned_pointer_get (  )  const

The method returned_pointer_get returns the value of the field ss_expr2pi::returned_pointer.

Returns:
The value of ss_expr2pi::returned_pointer.
Author:
lsg

void lestes::lang::cplus::sem::ss_expr2pi::returned_pointer_set ( bool  x  ) 

The method returned_pointer_set sets the field ss_expr2pi::returned_pointer to the given value.

Parameters:
[in] x The new value to set ss_expr2pi::returned_pointer to.
Author:
lsg

bool lestes::lang::cplus::sem::ss_expr2pi::evaluated ( ptr< ss_expression x  ) 

Check whether given expression was yet transformed.

Check whether given expression was already transformed. In such a case result is set to according result of evaluated subexpression and returned TRUE.

ptr< ::lestes::backend_v2::intercode::pi_pi > lestes::lang::cplus::sem::ss_expr2pi::compute_origin ( ptr< ::lestes::backend_v2::intercode::pi_mem_factory ,
ptr< ss_sp  
)

Computes an origin of a given pi_mem_factory inside fullexpression settled bye ss_sp.

ptr<::lestes::backend_v2::intercode::pi_preg > lestes::lang::cplus::sem::ss_expr2pi::returns_preg ( const ptr< ss_expression > &  o  ) 

Returning value from transforming expression visitor.

ptr<::lestes::backend_v2::intercode::pi_mem > lestes::lang::cplus::sem::ss_expr2pi::returns_mem ( const ptr< ss_expression > &  o  ) 

Returning value from transforming expression visitor.

ptr<::lestes::backend_v2::intercode::pi_mem_ptr_deref > lestes::lang::cplus::sem::ss_expr2pi::returns_mem_pointer ( const ptr< ss_expression > &  o  ) 

Returning value from transforming expression visitor.

bool lestes::lang::cplus::sem::ss_expr2pi::is_returned_pointer ( ptr< ss_expression x  ) 

Transform given expression and check whether pointer for dereference is returned. Used by (vol)get and assign for identification of dereferenced pointer in operand,which cause load/store via returned pointer. This can happen via dereferience of ss_pointer or via var_ref of variable with ss_reference type.

void lestes::lang::cplus::sem::ss_expr2pi::visit_ss_assign ( ptr< ::lestes::lang::cplus::sem::ss_assign x  )  [virtual]

Assignment transformation. It distinguishes between store and store via pointer dependently on returned result from subexpression.

pointer on destination type

Implements lestes::lang::cplus::sem::ss_expression_visitor.

virtual void lestes::lang::cplus::sem::ss_expr2pi::visit_ss_add ( ptr< ::lestes::lang::cplus::sem::ss_add  )  [virtual]

Implements lestes::lang::cplus::sem::ss_expression_visitor.

virtual void lestes::lang::cplus::sem::ss_expr2pi::visit_ss_sub ( ptr< ::lestes::lang::cplus::sem::ss_sub  )  [virtual]

Implements lestes::lang::cplus::sem::ss_expression_visitor.

virtual void lestes::lang::cplus::sem::ss_expr2pi::visit_ss_mul ( ptr< ::lestes::lang::cplus::sem::ss_mul  )  [virtual]

Implements lestes::lang::cplus::sem::ss_expression_visitor.

virtual void lestes::lang::cplus::sem::ss_expr2pi::visit_ss_div ( ptr< ::lestes::lang::cplus::sem::ss_div  )  [virtual]

Implements lestes::lang::cplus::sem::ss_expression_visitor.

virtual void lestes::lang::cplus::sem::ss_expr2pi::visit_ss_mod ( ptr< ::lestes::lang::cplus::sem::ss_mod  )  [virtual]

Implements lestes::lang::cplus::sem::ss_expression_visitor.

virtual void lestes::lang::cplus::sem::ss_expr2pi::visit_ss_shr ( ptr< ::lestes::lang::cplus::sem::ss_shr  )  [virtual]

Implements lestes::lang::cplus::sem::ss_expression_visitor.

virtual void lestes::lang::cplus::sem::ss_expr2pi::visit_ss_shl ( ptr< ::lestes::lang::cplus::sem::ss_shl  )  [virtual]

Implements lestes::lang::cplus::sem::ss_expression_visitor.

virtual void lestes::lang::cplus::sem::ss_expr2pi::visit_ss_sbg ( ptr< ::lestes::lang::cplus::sem::ss_sbg  )  [virtual]

Implements lestes::lang::cplus::sem::ss_expression_visitor.

virtual void lestes::lang::cplus::sem::ss_expr2pi::visit_ss_sbl ( ptr< ::lestes::lang::cplus::sem::ss_sbl  )  [virtual]

Implements lestes::lang::cplus::sem::ss_expression_visitor.

virtual void lestes::lang::cplus::sem::ss_expr2pi::visit_ss_sbng ( ptr< ::lestes::lang::cplus::sem::ss_sbng  )  [virtual]

Implements lestes::lang::cplus::sem::ss_expression_visitor.

virtual void lestes::lang::cplus::sem::ss_expr2pi::visit_ss_sbnl ( ptr< ::lestes::lang::cplus::sem::ss_sbnl  )  [virtual]

Implements lestes::lang::cplus::sem::ss_expression_visitor.

virtual void lestes::lang::cplus::sem::ss_expr2pi::visit_ss_sbne ( ptr< ::lestes::lang::cplus::sem::ss_sbne  )  [virtual]

Implements lestes::lang::cplus::sem::ss_expression_visitor.

virtual void lestes::lang::cplus::sem::ss_expr2pi::visit_ss_sbe ( ptr< ::lestes::lang::cplus::sem::ss_sbe  )  [virtual]

Implements lestes::lang::cplus::sem::ss_expression_visitor.

virtual void lestes::lang::cplus::sem::ss_expr2pi::visit_ss_band ( ptr< ::lestes::lang::cplus::sem::ss_band  )  [virtual]

Implements lestes::lang::cplus::sem::ss_expression_visitor.

virtual void lestes::lang::cplus::sem::ss_expr2pi::visit_ss_bor ( ptr< ::lestes::lang::cplus::sem::ss_bor  )  [virtual]

Implements lestes::lang::cplus::sem::ss_expression_visitor.

virtual void lestes::lang::cplus::sem::ss_expr2pi::visit_ss_bxor ( ptr< ::lestes::lang::cplus::sem::ss_bxor  )  [virtual]

Implements lestes::lang::cplus::sem::ss_expression_visitor.

void lestes::lang::cplus::sem::ss_expr2pi::visit_ss_land ( ptr< ::lestes::lang::cplus::sem::ss_land  )  [virtual]

Implements lestes::lang::cplus::sem::ss_expression_visitor.

void lestes::lang::cplus::sem::ss_expr2pi::visit_ss_lor ( ptr< ::lestes::lang::cplus::sem::ss_lor  )  [virtual]

Implements lestes::lang::cplus::sem::ss_expression_visitor.

void lestes::lang::cplus::sem::ss_expr2pi::visit_ss_arr_acc ( ptr< ::lestes::lang::cplus::sem::ss_arr_acc  )  [virtual]

Implements lestes::lang::cplus::sem::ss_expression_visitor.

void lestes::lang::cplus::sem::ss_expr2pi::visit_ss_pfuncall ( ptr< ::lestes::lang::cplus::sem::ss_pfuncall  )  [virtual]

Implements lestes::lang::cplus::sem::ss_expression_visitor.

void lestes::lang::cplus::sem::ss_expr2pi::visit_ss_funcall ( ptr< ::lestes::lang::cplus::sem::ss_funcall  )  [virtual]

Implements lestes::lang::cplus::sem::ss_expression_visitor.

void lestes::lang::cplus::sem::ss_expr2pi::visit_ss_ifuncall ( ptr< ::lestes::lang::cplus::sem::ss_ifuncall  )  [virtual]

Implements lestes::lang::cplus::sem::ss_expression_visitor.

void lestes::lang::cplus::sem::ss_expr2pi::visit_ss_mfuncall ( ptr< ::lestes::lang::cplus::sem::ss_mfuncall  )  [virtual]

Implements lestes::lang::cplus::sem::ss_expression_visitor.

void lestes::lang::cplus::sem::ss_expr2pi::visit_ss_vfuncall ( ptr< ::lestes::lang::cplus::sem::ss_vfuncall  )  [virtual]

Implements lestes::lang::cplus::sem::ss_expression_visitor.

void lestes::lang::cplus::sem::ss_expr2pi::visit_ss_dereference ( ptr< ::lestes::lang::cplus::sem::ss_dereference  )  [virtual]

Implements lestes::lang::cplus::sem::ss_expression_visitor.

void lestes::lang::cplus::sem::ss_expr2pi::visit_ss_conversion ( ptr< ::lestes::lang::cplus::sem::ss_conversion x  )  [virtual]

Conversion between types. Note, that frontend products conversions, where source type is equal destination type. These cases must be properly treated.

Implements lestes::lang::cplus::sem::ss_expression_visitor.

void lestes::lang::cplus::sem::ss_expr2pi::visit_ss_array_to_pointer ( ptr< ::lestes::lang::cplus::sem::ss_array_to_pointer x  )  [virtual]

Up to now, there is nothing to be done for array->pointer conversion.

Implements lestes::lang::cplus::sem::ss_expression_visitor.

void lestes::lang::cplus::sem::ss_expr2pi::visit_ss_bind_reference ( ptr< ::lestes::lang::cplus::sem::ss_bind_reference x  )  [virtual]

Bind reference. It can occurs in initialization, function parameter passing and return value store. Its input value shall be lvalue - in case of dereference on pointer, only pointer shall be returned, in case of variable reference, its address shall be loaded.

Implements lestes::lang::cplus::sem::ss_expression_visitor.

void lestes::lang::cplus::sem::ss_expr2pi::visit_ss_bind_to_temporary ( ptr< ::lestes::lang::cplus::sem::ss_bind_to_temporary  )  [virtual]

Implements lestes::lang::cplus::sem::ss_expression_visitor.

void lestes::lang::cplus::sem::ss_expr2pi::visit_ss_get ( ptr< ::lestes::lang::cplus::sem::ss_get x  )  [virtual]

lvalue->rvalue conversion or indirect load via pointer

pointer on source type

Implements lestes::lang::cplus::sem::ss_expression_visitor.

void lestes::lang::cplus::sem::ss_expr2pi::visit_ss_vol_get ( ptr< ::lestes::lang::cplus::sem::ss_vol_get x  )  [virtual]

lvalue->rvalue conversion or indirect load via pointer on volatile variable

pointer on source type

Implements lestes::lang::cplus::sem::ss_expression_visitor.

virtual void lestes::lang::cplus::sem::ss_expr2pi::visit_ss_gat ( ptr< ::lestes::lang::cplus::sem::ss_gat  )  [virtual]

Implements lestes::lang::cplus::sem::ss_expression_visitor.

virtual void lestes::lang::cplus::sem::ss_expr2pi::visit_ss_neg ( ptr< ::lestes::lang::cplus::sem::ss_neg  )  [virtual]

Implements lestes::lang::cplus::sem::ss_expression_visitor.

virtual void lestes::lang::cplus::sem::ss_expr2pi::visit_ss_lnot ( ptr< ::lestes::lang::cplus::sem::ss_lnot  )  [virtual]

Implements lestes::lang::cplus::sem::ss_expression_visitor.

virtual void lestes::lang::cplus::sem::ss_expr2pi::visit_ss_bnot ( ptr< ::lestes::lang::cplus::sem::ss_bnot  )  [virtual]

Implements lestes::lang::cplus::sem::ss_expression_visitor.

void lestes::lang::cplus::sem::ss_expr2pi::visit_ss_address_of ( ptr< ::lestes::lang::cplus::sem::ss_address_of x  )  [virtual]

Load address of a given object (&x). Only lvalue can be the argument of this operator.

Implements lestes::lang::cplus::sem::ss_expression_visitor.

void lestes::lang::cplus::sem::ss_expr2pi::visit_ss_this_expr ( ptr< ::lestes::lang::cplus::sem::ss_this_expr  )  [virtual]

Implements lestes::lang::cplus::sem::ss_expression_visitor.

void lestes::lang::cplus::sem::ss_expr2pi::visit_ss_literal ( ptr< ::lestes::lang::cplus::sem::ss_literal  )  [virtual]

Implements lestes::lang::cplus::sem::ss_expression_visitor.

void lestes::lang::cplus::sem::ss_expr2pi::visit_ss_ternary ( ptr< ::lestes::lang::cplus::sem::ss_ternary  )  [virtual]

Implements lestes::lang::cplus::sem::ss_expression_visitor.

void lestes::lang::cplus::sem::ss_expr2pi::visit_ss_var_ref_by_qname ( ptr< ::lestes::lang::cplus::sem::ss_var_ref_by_qname  )  [virtual]

This time, templates should be instantiated.

Implements lestes::lang::cplus::sem::ss_expression_visitor.

void lestes::lang::cplus::sem::ss_expr2pi::visit_ss_var_ref ( ptr< ::lestes::lang::cplus::sem::ss_var_ref x  )  [virtual]

Load proper pi_mem_factory for a given declaration. In case of & references, which are treated as pointers, pointer is read and flag for dereference is set. For referenced variables origin has to be computed, to determine correct data flow (e.g. in a=1+a, where a is used as both a load's source and a store's target).

Implements lestes::lang::cplus::sem::ss_expression_visitor.

void lestes::lang::cplus::sem::ss_expr2pi::visit_ss_throw ( ptr< ::lestes::lang::cplus::sem::ss_throw  )  [virtual]

Implements lestes::lang::cplus::sem::ss_expression_visitor.

void lestes::lang::cplus::sem::ss_expr2pi::visit_ss_member_ptr ( ptr< ::lestes::lang::cplus::sem::ss_member_ptr  )  [virtual]

Implements lestes::lang::cplus::sem::ss_expression_visitor.

void lestes::lang::cplus::sem::ss_expr2pi::visit_ss_ptr_member_ptr ( ptr< ::lestes::lang::cplus::sem::ss_ptr_member_ptr  )  [virtual]

Implements lestes::lang::cplus::sem::ss_expression_visitor.

void lestes::lang::cplus::sem::ss_expr2pi::visit_ss_access ( ptr< ::lestes::lang::cplus::sem::ss_access  )  [virtual]

Implements lestes::lang::cplus::sem::ss_expression_visitor.

void lestes::lang::cplus::sem::ss_expr2pi::visit_ss_ptr_access ( ptr< ::lestes::lang::cplus::sem::ss_ptr_access  )  [virtual]

Implements lestes::lang::cplus::sem::ss_expression_visitor.

ptr< ss_expr2pi > lestes::lang::cplus::sem::ss_expr2pi::create ( ptr< ss_stmt2pi a__ss_expr2pi__caller,
ptr< ::lestes::backend_v2::intercode::pi_operand a__ss_expr2pi__result,
ptr< ss_sp a__ss_expr2pi__psp,
ptr< ss_destructor_table a__ss_expr2pi__temporaries,
ptr< expression_results_map_type a__ss_expr2pi__expr2operand_map,
bool  a__ss_expr2pi__returned_pointer 
) [static]

First generated factory method for class ss_expr2pi.

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

Author:
lsg

ptr< ss_expr2pi > lestes::lang::cplus::sem::ss_expr2pi::create ( ptr< ss_stmt2pi a__ss_expr2pi__caller,
ptr< ss_sp a__ss_expr2pi__psp,
ptr< ss_destructor_table a__ss_expr2pi__temporaries,
ptr< expression_results_map_type a__ss_expr2pi__expr2operand_map 
) [static]

Second generated factory method for class ss_expr2pi.

This factory method for class ss_expr2pi uses initializers.

Author:
lsg

ptr<::lestes::backend_v2::intercode::pi_operand > lestes::lang::cplus::sem::ss_expr2pi::returns ( const ptr< ::lestes::lang::cplus::sem::ss_expression > &   ) 

"visit-return" method

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

for purposes of dumping

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

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

for purposes of dumping

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

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

Marking routine for class ss_expr2pi.

Marking routine is used for garbage collection.

Author:
lsg

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


Member Data Documentation

srp< ss_stmt2pi > lestes::lang::cplus::sem::ss_expr2pi::caller [private]

Nearest statement visitor caller(needed for variable access).

srp< ::lestes::backend_v2::intercode::pi_operand > lestes::lang::cplus::sem::ss_expr2pi::result [private]

Result of evaluating current expression.

Usually pseudoregister, where the result is stored. For lvalues appropriate memory placeholder(pi_mem) is stored. For void funcalls NULL is stored.

srp< ss_sp > lestes::lang::cplus::sem::ss_expr2pi::psp [private]

Previous full-expression sequence point.

It points to the psp of the fullexpression (or the whole expression of the initializer). Used for stop mark of pi_mem origin computation - only side effects inside the whole expression are significant.

srp< ss_destructor_table > lestes::lang::cplus::sem::ss_expr2pi::temporaries [private]

Destructor table for temporary variables.

Temporaries which rise, when evaluating exression. They will be destructed, after evaluating the whole expression(i.e. the whole statement)

srp< expression_results_map_type > lestes::lang::cplus::sem::ss_expr2pi::expr2operand_map [private]

Map for result of subexpressions inside fullexpression.

It prevents of reevaluation of already evaluated subexpressions. Used also for determination of memory destination of side effects.

bool lestes::lang::cplus::sem::ss_expr2pi::returned_pointer [private]

Temporary variable used by is_returned_pointer method.

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

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


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