669
675
void capture_parameter (FormalParameter param, CCodeStruct data, CCodeBlock cblock, int block_id, CCodeBlock free_block) {
673
679
param_type.value_owned = true;
674
680
data.add_field (param_type.get_cname (), get_variable_cname (param.name));
676
682
// create copy if necessary as captured variables may need to be kept alive
677
683
CCodeExpression cparam = get_variable_cexpression (param.name);
679
685
var ma = new MemberAccess.simple (param.name);
680
686
ma.symbol_reference = param;
682
688
// directly access parameters in ref expressions
684
cparam = get_ref_cexpression (param.parameter_type, cparam, ma, param);
690
cparam = get_ref_cexpression (param.variable_type, cparam, ma, param);