if (expr != null && expr.target_value != null) {
value.array_length_cvalues = ((GLibValue) expr.target_value).array_length_cvalues;
value.array_null_terminated = ((GLibValue) expr.target_value).array_null_terminated;
+ value.array_length_cexpr = ((GLibValue) expr.target_value).array_length_cexpr;
value.delegate_target_cvalue = get_delegate_target_cvalue (expr.target_value);
value.delegate_target_destroy_notify_cvalue = get_delegate_target_destroy_notify_cvalue (expr.target_value);
}
if (expr != null && expr.target_value != null) {
value.array_length_cvalues = ((GLibValue) expr.target_value).array_length_cvalues;
value.array_null_terminated = ((GLibValue) expr.target_value).array_null_terminated;
+ value.array_length_cexpr = ((GLibValue) expr.target_value).array_length_cexpr;
value.delegate_target_cvalue = get_delegate_target_cvalue (expr.target_value);
value.delegate_target_destroy_notify_cvalue = get_delegate_target_destroy_notify_cvalue (expr.target_value);
}
var glib_value = (GLibValue) value;
return glib_value.array_null_terminated;
}
+
+ public CCodeExpression get_array_length_cexpr (TargetValue value) {
+ var glib_value = (GLibValue) value;
+ return glib_value.array_length_cexpr;
+ }
}
public class Vala.GLibValue : TargetValue {
public List<CCodeExpression> array_length_cvalues;
public CCodeExpression? array_size_cvalue;
public bool array_null_terminated;
+ public CCodeExpression? array_length_cexpr;
public CCodeExpression? delegate_target_cvalue;
public CCodeExpression? delegate_target_destroy_notify_cvalue;
}
result.array_size_cvalue = array_size_cvalue;
result.array_null_terminated = array_null_terminated;
+ result.array_length_cexpr = array_length_cexpr;
result.delegate_target_cvalue = delegate_target_cvalue;
result.delegate_target_destroy_notify_cvalue = delegate_target_destroy_notify_cvalue;
/* Returns lvalue access to the given local variable */
public override TargetValue get_local_cvalue (LocalVariable local) {
var result = new GLibValue (local.variable_type.copy ());
- result.array_null_terminated = local.array_null_terminated;
var array_type = local.variable_type as ArrayType;
var delegate_type = local.variable_type as DelegateType;
public override TargetValue get_parameter_cvalue (Parameter param) {
var result = new GLibValue (param.variable_type.copy ());
result.array_null_terminated = param.array_null_terminated;
+ if (param.has_array_length_cexpr) {
+ result.array_length_cexpr = new CCodeConstant (param.get_array_length_cexpr ());
+ }
if (param.captured || is_in_coroutine ()) {
result.value_type.value_owned = true;
}
var result = new GLibValue (value_type);
result.array_null_terminated = field.array_null_terminated;
+ if (field.has_array_length_cexpr) {
+ result.array_length_cexpr = new CCodeConstant (field.get_array_length_cexpr ());
+ }
var array_type = result.value_type as ArrayType;
var delegate_type = result.value_type as DelegateType;