public abstract TargetValue get_field_cvalue (Field field, TargetValue? instance);
+ public abstract TargetValue load_this_parameter (TypeSymbol sym);
+
public virtual string get_delegate_target_cname (string delegate_cname) {
assert_not_reached ();
}
// use closure
result.cvalue = new CCodeMemberAccess.pointer (new CCodeIdentifier ("data"), "self");
} else {
- var st = current_type_symbol as Struct;
+ var st = result.value_type.data_type as Struct;
if (st != null && !st.is_simple_type ()) {
result.cvalue = new CCodeIdentifier ("(*self)");
} else {
return load_variable (param, get_parameter_cvalue (param));
}
+ /* Convenience method returning access to "this" */
+ public override TargetValue load_this_parameter (TypeSymbol sym) {
+ var param = new Parameter ("this", get_data_type_for_symbol (sym));
+ return load_parameter (param);
+ }
+
/* Returns unowned access to the given field */
public override TargetValue load_field (Field field, TargetValue? instance) {
return load_variable (field, get_field_cvalue (field, instance));