* @return the name to be used in C code by default
*/
public string get_default_cname () {
- return "%s%s".printf (parent_symbol.get_cprefix (), name);
+ // parent_symbol may be null in GIR parser
+ if (parent_symbol != null) {
+ return "%s%s".printf (parent_symbol.get_cprefix (), name);
+ } else {
+ return name;
+ }
}
private void set_const_cname (string cname) {
parse_constructor ();
} else if (reader.name == "method") {
st.add_method (parse_method ("method"));
+ } else if (reader.name == "union") {
+ Struct s = parse_union ();
+ var s_fields = s.get_fields ();
+ foreach (var f in s_fields) {
+ f.set_cname (s.get_cname () + "." + f.get_cname ());
+ f.name = s.name + "_" + f.name;
+ st.add_field (f);
+ }
} else {
// error
Report.error (get_current_src (), "unknown child element `%s' in `record'".printf (reader.name));
methods.add (parse_method ("method"));
} else if (reader.name == "virtual-method") {
vmethods.add (parse_method ("virtual-method"));
+ } else if (reader.name == "union") {
+ Struct s = parse_union ();
+ var s_fields = s.get_fields ();
+ foreach (var f in s_fields) {
+ f.set_cname (s.get_cname () + "." + f.get_cname ());
+ f.name = s.name + "_" + f.name;
+ fields.add (f);
+ }
} else if (reader.name == "glib:signal") {
signals.add (parse_signal ());
} else {
parse_constructor ();
} else if (reader.name == "method") {
st.add_method (parse_method ("method"));
+ } else if (reader.name == "record") {
+ Struct s = parse_record ();
+ var fs = s.get_fields ();
+ foreach (var f in fs) {
+ f.set_cname (s.get_cname () + "." + f.get_cname ());
+ f.name = s.name + "_" + f.name;
+ st.add_field (f);
+ }
} else {
// error
Report.error (get_current_src (), "unknown child element `%s' in `union'".printf (reader.name));