has_instance_fields = true;
CCodeExpression cexp; // if (cexp) return FALSE;
- var s1 = (CCodeExpression) new CCodeMemberAccess.pointer (new CCodeIdentifier ("s1"), f.name); // s1->f
- var s2 = (CCodeExpression) new CCodeMemberAccess.pointer (new CCodeIdentifier ("s2"), f.name); // s2->f
+ var s1 = (CCodeExpression) new CCodeMemberAccess.pointer (new CCodeIdentifier ("s1"), get_ccode_name (f)); // s1->f
+ var s2 = (CCodeExpression) new CCodeMemberAccess.pointer (new CCodeIdentifier ("s2"), get_ccode_name (f)); // s2->f
var variable_type = f.variable_type.copy ();
make_comparable_cexpression (ref variable_type, ref s1, ref variable_type, ref s2);
if (get_ccode_array_length_name (field) != null) {
length_cname = get_ccode_array_length_name (field);
} else {
- length_cname = get_array_length_cname (field.name, dim);
+ length_cname = get_array_length_cname (get_ccode_name (field), dim);
}
if (((TypeSymbol) field.parent_symbol).is_reference_type ()) {
result.append_array_length_cvalue (length_expr);
}
if (array_type.rank == 1 && field.is_internal_symbol ()) {
- string size_cname = get_array_size_cname (field.name);
+ string size_cname = get_array_size_cname (get_ccode_name (field));
if (((TypeSymbol) field.parent_symbol).is_reference_type ()) {
set_array_size_cvalue (result, new CCodeMemberAccess.pointer (inst, size_cname));
if (get_ccode_array_length_name (f) != null) {
length_cname = get_ccode_array_length_name (f);
} else {
- length_cname = get_array_length_cname (f.name, dim);
+ length_cname = get_array_length_cname (get_ccode_name (f), dim);
}
instance_struct.add_field (get_ccode_name (len_type), length_cname);
}
if (array_type.rank == 1 && f.is_internal_symbol ()) {
- instance_struct.add_field (get_ccode_name (len_type), get_array_size_cname (f.name));
+ instance_struct.add_field (get_ccode_name (len_type), get_array_size_cname (get_ccode_name (f)));
}
}
} else if (f.variable_type is DelegateType) {
// create field to store delegate target
instance_struct.add_field ("gpointer", get_ccode_delegate_target_name (f));
if (delegate_type.is_disposable ()) {
- instance_struct.add_field ("GDestroyNotify", get_delegate_target_destroy_notify_cname (f.name));
+ instance_struct.add_field ("GDestroyNotify", get_delegate_target_destroy_notify_cname (get_ccode_name (f)));
}
}
}
if (get_ccode_array_length_name (f) != null) {
length_cname = get_ccode_array_length_name (f);
} else {
- length_cname = get_array_length_cname (f.name, dim);
+ length_cname = get_array_length_cname (get_ccode_name (f), dim);
}
instance_struct.add_field (get_ccode_name (len_type), length_cname);
}
if (array_type.rank == 1 && f.is_internal_symbol ()) {
- instance_struct.add_field (get_ccode_name (len_type), get_array_size_cname (f.name));
+ instance_struct.add_field (get_ccode_name (len_type), get_array_size_cname (get_ccode_name (f)));
}
}
} else if (f.variable_type is DelegateType) {
// create field to store delegate target
instance_struct.add_field ("gpointer", get_ccode_delegate_target_name (f));
if (delegate_type.is_disposable ()) {
- instance_struct.add_field ("GDestroyNotify", get_delegate_target_destroy_notify_cname (f.name));
+ instance_struct.add_field ("GDestroyNotify", get_delegate_target_destroy_notify_cname (get_ccode_name (f)));
}
}
}
if (get_ccode_array_length_name (f) != null) {
length_cname = get_ccode_array_length_name (f);
} else {
- length_cname = get_array_length_cname (f.name, dim);
+ length_cname = get_array_length_cname (get_ccode_name (f), dim);
}
instance_priv_struct.add_field (get_ccode_name (len_type), length_cname);
}
if (array_type.rank == 1 && f.is_internal_symbol ()) {
- instance_priv_struct.add_field (get_ccode_name (len_type), get_array_size_cname (f.name));
+ instance_priv_struct.add_field (get_ccode_name (len_type), get_array_size_cname (get_ccode_name (f)));
}
}
} else if (f.variable_type is DelegateType) {
// create field to store delegate target
instance_priv_struct.add_field ("gpointer", get_ccode_delegate_target_name (f));
if (delegate_type.is_disposable ()) {
- instance_priv_struct.add_field ("GDestroyNotify", get_delegate_target_destroy_notify_cname (f.name));
+ instance_priv_struct.add_field ("GDestroyNotify", get_delegate_target_destroy_notify_cname (get_ccode_name (f)));
}
}
}
if (f.get_lock_used ()) {
cl.has_private_fields = true;
// add field for mutex
- instance_priv_struct.add_field (get_ccode_name (mutex_type), get_symbol_lock_name (f.name));
+ instance_priv_struct.add_field (get_ccode_name (mutex_type), get_symbol_lock_name (get_ccode_name (f)));
}
} else if (f.binding == MemberBinding.CLASS) {
if (f.access == SymbolAccessibility.PRIVATE) {
structs/bug686190.vala \
structs/bug690380.vala \
structs/bug749952.vala \
+ structs/bug775761.vala \
delegates/delegates.vala \
delegates/bug539166.vala \
delegates/bug595610.vala \
--- /dev/null
+struct Foo {
+ [CCode (cname = "foo")]
+ public string f1;
+ [CCode (cname = "bar")]
+ public int f2;
+ [CCode (cname = "baz")]
+ public unowned string[] f3;
+}
+
+const string[] FOO_ARRAY = { "manam", "minimi" };
+
+void main () {
+ Foo a = { "42", 42, FOO_ARRAY};
+ Foo b = { "42", 42, FOO_ARRAY};
+ assert (a == b);
+ assert (a.f3.length == 2);
+}