diff options
-rw-r--r-- | codegen/valaccode.vala | 21 | ||||
-rw-r--r-- | codegen/valaccodebasemodule.vala | 10 | ||||
-rw-r--r-- | codegen/valaccodememberaccessmodule.vala | 4 | ||||
-rw-r--r-- | codegen/valaccodemethodmodule.vala | 4 | ||||
-rw-r--r-- | codegen/valagtypemodule.vala | 8 | ||||
-rw-r--r-- | libvaladoc/api/class.vala | 2 | ||||
-rw-r--r-- | libvaladoc/api/interface.vala | 2 | ||||
-rw-r--r-- | vala/valausedattr.vala | 2 |
8 files changed, 30 insertions, 23 deletions
diff --git a/codegen/valaccode.vala b/codegen/valaccode.vala index d89d7219e..3284647c3 100644 --- a/codegen/valaccode.vala +++ b/codegen/valaccode.vala @@ -54,13 +54,20 @@ namespace Vala { return get_ccode_upper_case_name (sym); } - public static string get_ccode_interface_get_function (Interface iface) { - return "%s_GET_INTERFACE".printf (get_ccode_upper_case_name (iface)); - } - - public static string get_ccode_class_get_function (Class cl) { - assert (!cl.is_compact); - return "%s_GET_CLASS".printf (get_ccode_upper_case_name (cl)); + public static string get_ccode_type_get_function (ObjectTypeSymbol sym) { + var func_name = sym.get_attribute_string ("CCode", "type_get_function"); + if (func_name != null) { + return func_name; + } + if (sym is Class) { + assert (!((Class) sym).is_compact); + return "%s_GET_CLASS".printf (get_ccode_upper_case_name (sym)); + } else if (sym is Interface) { + return "%s_GET_INTERFACE".printf (get_ccode_upper_case_name (sym)); + } else { + Report.error (sym.source_reference, "`CCode.type_get_function' not supported"); + return ""; + } } public static string get_ccode_class_get_private_function (Class cl) { diff --git a/codegen/valaccodebasemodule.vala b/codegen/valaccodebasemodule.vala index 9f570049b..515851525 100644 --- a/codegen/valaccodebasemodule.vala +++ b/codegen/valaccodebasemodule.vala @@ -1780,7 +1780,7 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator { var iface = (Interface) prop.parent_symbol; vcast = new CCodeIdentifier ("_iface_"); - var vcastcall = new CCodeFunctionCall (new CCodeIdentifier (get_ccode_interface_get_function (iface))); + var vcastcall = new CCodeFunctionCall (new CCodeIdentifier (get_ccode_type_get_function (iface))); ((CCodeFunctionCall) vcastcall).add_argument (new CCodeIdentifier ("self")); ccode.add_declaration ("%s*".printf (get_ccode_type_name (iface)), new CCodeVariableDeclarator ("_iface_")); ccode.add_assignment (vcast, vcastcall); @@ -1788,7 +1788,7 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator { var cl = (Class) prop.parent_symbol; if (!cl.is_compact) { vcast = new CCodeIdentifier ("_klass_"); - var vcastcall = new CCodeFunctionCall (new CCodeIdentifier (get_ccode_class_get_function (cl))); + var vcastcall = new CCodeFunctionCall (new CCodeIdentifier (get_ccode_type_get_function (cl))); ((CCodeFunctionCall) vcastcall).add_argument (new CCodeIdentifier ("self")); ccode.add_declaration ("%sClass*".printf (get_ccode_name (cl)), new CCodeVariableDeclarator ("_klass_")); ccode.add_assignment (vcast, vcastcall); @@ -2860,7 +2860,7 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator { require_generic_accessors (iface); string method_name = "get_%s_type".printf (type_parameter.name.ascii_down ()); - var cast_self = new CCodeFunctionCall (new CCodeIdentifier (get_ccode_interface_get_function (iface))); + var cast_self = new CCodeFunctionCall (new CCodeIdentifier (get_ccode_type_get_function (iface))); cast_self.add_argument (new CCodeIdentifier ("self")); var function_call = new CCodeFunctionCall (new CCodeMemberAccess.pointer (cast_self, method_name)); function_call.add_argument (new CCodeIdentifier ("self")); @@ -2930,7 +2930,7 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator { require_generic_accessors (iface); string method_name = "get_%s_dup_func".printf (type_parameter.name.ascii_down ()); - var cast_self = new CCodeFunctionCall (new CCodeIdentifier (get_ccode_interface_get_function (iface))); + var cast_self = new CCodeFunctionCall (new CCodeIdentifier (get_ccode_type_get_function (iface))); cast_self.add_argument (new CCodeIdentifier ("self")); var function_call = new CCodeFunctionCall (new CCodeMemberAccess.pointer (cast_self, method_name)); function_call.add_argument (new CCodeIdentifier ("self")); @@ -3486,7 +3486,7 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator { require_generic_accessors (iface); string method_name = "get_%s_destroy_func".printf (type_parameter.name.ascii_down ()); - var cast_self = new CCodeFunctionCall (new CCodeIdentifier (get_ccode_interface_get_function (iface))); + var cast_self = new CCodeFunctionCall (new CCodeIdentifier (get_ccode_type_get_function (iface))); cast_self.add_argument (new CCodeIdentifier ("self")); var function_call = new CCodeFunctionCall (new CCodeMemberAccess.pointer (cast_self, method_name)); function_call.add_argument (new CCodeIdentifier ("self")); diff --git a/codegen/valaccodememberaccessmodule.vala b/codegen/valaccodememberaccessmodule.vala index 4b353a09e..0a85a058d 100644 --- a/codegen/valaccodememberaccessmodule.vala +++ b/codegen/valaccodememberaccessmodule.vala @@ -68,7 +68,7 @@ public abstract class Vala.CCodeMemberAccessModule : CCodeControlFlowModule { if (m.base_method.get_attribute ("NoWrapper") != null) { var base_class = (Class) m.base_method.parent_symbol; if (!base_class.is_compact) { - var vclass = new CCodeFunctionCall (new CCodeIdentifier (get_ccode_class_get_function (base_class))); + var vclass = new CCodeFunctionCall (new CCodeIdentifier (get_ccode_type_get_function (base_class))); vclass.add_argument (pub_inst); set_cvalue (expr, new CCodeMemberAccess.pointer (vclass, get_ccode_vfunc_name (m))); } else { @@ -80,7 +80,7 @@ public abstract class Vala.CCodeMemberAccessModule : CCodeControlFlowModule { } else if (m.base_interface_method != null) { if (m.base_interface_method.get_attribute ("NoWrapper") != null) { var base_iface = (Interface) m.base_interface_method.parent_symbol; - var vclass = new CCodeFunctionCall (new CCodeIdentifier (get_ccode_interface_get_function (base_iface))); + var vclass = new CCodeFunctionCall (new CCodeIdentifier (get_ccode_type_get_function (base_iface))); vclass.add_argument (pub_inst); set_cvalue (expr, new CCodeMemberAccess.pointer (vclass, get_ccode_vfunc_name (m))); } else { diff --git a/codegen/valaccodemethodmodule.vala b/codegen/valaccodemethodmodule.vala index 467273547..9402ad6ab 100644 --- a/codegen/valaccodemethodmodule.vala +++ b/codegen/valaccodemethodmodule.vala @@ -1117,14 +1117,14 @@ public abstract class Vala.CCodeMethodModule : CCodeStructModule { if (m.parent_symbol is Interface) { var iface = (Interface) m.parent_symbol; - var vcastcall = new CCodeFunctionCall (new CCodeIdentifier (get_ccode_interface_get_function (iface))); + var vcastcall = new CCodeFunctionCall (new CCodeIdentifier (get_ccode_type_get_function (iface))); ((CCodeFunctionCall) vcastcall).add_argument (new CCodeIdentifier ("self")); ccode.add_declaration ("%s*".printf (get_ccode_type_name (iface)), new CCodeVariableDeclarator ("_iface_")); ccode.add_assignment (vcast, vcastcall); } else { var cl = (Class) m.parent_symbol; if (!cl.is_compact) { - var vcastcall = new CCodeFunctionCall (new CCodeIdentifier (get_ccode_class_get_function (cl))); + var vcastcall = new CCodeFunctionCall (new CCodeIdentifier (get_ccode_type_get_function (cl))); ((CCodeFunctionCall) vcastcall).add_argument (new CCodeIdentifier ("self")); ccode.add_declaration ("%sClass*".printf (get_ccode_name (cl)), new CCodeVariableDeclarator ("_klass_")); ccode.add_assignment (vcast, vcastcall); diff --git a/codegen/valagtypemodule.vala b/codegen/valagtypemodule.vala index cc51849e1..8ba915557 100644 --- a/codegen/valagtypemodule.vala +++ b/codegen/valagtypemodule.vala @@ -85,7 +85,7 @@ public class Vala.GTypeModule : GErrorModule { decl_space.add_type_declaration (new CCodeMacroReplacement ("%s(klass)".printf (get_ccode_class_type_check_function (cl)), macro)); macro = "(G_TYPE_INSTANCE_GET_CLASS ((obj), %s, %sClass))".printf (get_ccode_type_id (cl), get_ccode_name (cl)); - decl_space.add_type_declaration (new CCodeMacroReplacement ("%s(obj)".printf (get_ccode_class_get_function (cl)), macro)); + decl_space.add_type_declaration (new CCodeMacroReplacement ("%s(obj)".printf (get_ccode_type_get_function (cl)), macro)); decl_space.add_type_declaration (new CCodeNewline ()); } @@ -762,11 +762,11 @@ public class Vala.GTypeModule : GErrorModule { ccall.add_argument (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, ref_count)); ccode.open_if (ccall); - var get_class = new CCodeFunctionCall (new CCodeIdentifier (get_ccode_class_get_function (cl))); + var get_class = new CCodeFunctionCall (new CCodeIdentifier (get_ccode_type_get_function (cl))); get_class.add_argument (new CCodeIdentifier ("self")); // finalize class - var ccast = new CCodeFunctionCall (new CCodeIdentifier (get_ccode_class_get_function (cl))); + var ccast = new CCodeFunctionCall (new CCodeIdentifier (get_ccode_type_get_function (cl))); ccast.add_argument (new CCodeIdentifier ("self")); ccall = new CCodeFunctionCall (new CCodeMemberAccess.pointer (ccast, "finalize")); ccall.add_argument (new CCodeIdentifier ("self")); @@ -2072,7 +2072,7 @@ public class Vala.GTypeModule : GErrorModule { decl_space.add_type_declaration (new CCodeMacroReplacement ("%s(obj)".printf (get_ccode_type_check_function (iface)), macro)); macro = "(G_TYPE_INSTANCE_GET_INTERFACE ((obj), %s, %s))".printf (get_ccode_type_id (iface), get_ccode_type_name (iface)); - decl_space.add_type_declaration (new CCodeMacroReplacement ("%s(obj)".printf (get_ccode_interface_get_function (iface)), macro)); + decl_space.add_type_declaration (new CCodeMacroReplacement ("%s(obj)".printf (get_ccode_type_get_function (iface)), macro)); decl_space.add_type_declaration (new CCodeNewline ()); decl_space.add_type_declaration (new CCodeTypeDefinition ("struct _%s".printf (get_ccode_name (iface)), new CCodeVariableDeclarator (get_ccode_name (iface)))); diff --git a/libvaladoc/api/class.vala b/libvaladoc/api/class.vala index 667565bbc..da22a5645 100644 --- a/libvaladoc/api/class.vala +++ b/libvaladoc/api/class.vala @@ -57,7 +57,7 @@ public class Valadoc.Api.Class : TypeSymbol { if (!data.is_compact) { this.is_class_type_macro_name = Vala.get_ccode_class_type_check_function (data); this.class_type_macro_name = Vala.get_ccode_class_type_function (data); - this.class_macro_name = Vala.get_ccode_class_get_function (data); + this.class_macro_name = Vala.get_ccode_type_get_function (data); this.private_cname = _get_private_cname (data); } this.dbus_name = Vala.GDBusModule.get_dbus_name (data); diff --git a/libvaladoc/api/interface.vala b/libvaladoc/api/interface.vala index 3b336bdfc..bcc751196 100644 --- a/libvaladoc/api/interface.vala +++ b/libvaladoc/api/interface.vala @@ -38,7 +38,7 @@ public class Valadoc.Api.Interface : TypeSymbol { { base (parent, file, name, accessibility, comment, false, data); - this.interface_macro_name = Vala.get_ccode_interface_get_function (data); + this.interface_macro_name = Vala.get_ccode_type_get_function (data); this.dbus_name = Vala.GDBusModule.get_dbus_name (data); this.cname = Vala.get_ccode_name (data); this.type_id = Vala.get_ccode_type_id (data); diff --git a/vala/valausedattr.vala b/vala/valausedattr.vala index c00d8e6a2..b9d8ceb22 100644 --- a/vala/valausedattr.vala +++ b/vala/valausedattr.vala @@ -35,7 +35,7 @@ public class Vala.UsedAttr : CodeVisitor { "has_type_id", "instance_pos", "const_cname", "take_value_function", "copy_function", "free_function", "param_spec_function", "has_target", "has_typedef", "type_cname", "ref_function", "ref_function_void", "unref_function", "type", "has_construct_function", "returns_floating_reference", "gir_namespace", "gir_version", "construct_function", - "lower_case_cprefix", "simple_generics", "sentinel", "scope", "has_destroy_function", "ordering", "type_check_function", + "lower_case_cprefix", "simple_generics", "sentinel", "scope", "has_destroy_function", "ordering", "type_check_function", "type_get_function", "has_copy_function", "lower_case_csuffix", "ref_sink_function", "dup_function", "finish_function", "generic_type_pos", "array_length_type", "array_length", "array_length_cname", "array_length_cexpr", "array_null_terminated", "vfunc_name", "finish_vfunc_name", "finish_name", "free_function_address_of", "pos", "delegate_target", "delegate_target_cname", |