decl_space.add_type_member_declaration (unref_fun.copy ());
// GParamSpec and GValue functions
- var function_name = cl.get_lower_case_cname ("param_spec_");
+ string function_name = cl.get_lower_case_cname ("param_spec_");
var function = new CCodeFunction (function_name, "GParamSpec*");
function.add_parameter (new CCodeFormalParameter ("name", "const gchar*"));
function.add_parameter (new CCodeFormalParameter ("object_type", "GType"));
function.add_parameter (new CCodeFormalParameter ("flags", "GParamFlags"));
- cl.set_param_spec_function (function_name);
-
if (cl.access == SymbolAccessibility.PRIVATE) {
function.modifiers = CCodeModifiers.STATIC;
}
}
private void add_g_param_spec_type_function (Class cl) {
- var function_name = cl.get_lower_case_cname ("param_spec_");
+ string function_name = cl.get_lower_case_cname ("param_spec_");
var function = new CCodeFunction (function_name, "GParamSpec*");
function.add_parameter (new CCodeFormalParameter ("name", "const gchar*"));
function.add_parameter (new CCodeFormalParameter ("object_type", "GType"));
function.add_parameter (new CCodeFormalParameter ("flags", "GParamFlags"));
- cl.set_param_spec_function ( function_name );
-
if (cl.access == SymbolAccessibility.PRIVATE) {
function.modifiers = CCodeModifiers.STATIC;
}
cspec.add_argument (new CCodeConstant ("\"%s\"".printf (prop.blurb)));
- if ((prop.property_type.data_type is Class && !(((Class) prop.property_type.data_type).is_compact)) || prop.property_type.data_type is Interface) {
+ if (prop.property_type.data_type is Class || prop.property_type.data_type is Interface) {
string param_spec_name = prop.property_type.data_type.get_param_spec_function ();
- if (param_spec_name == null) {
- cspec.call = new CCodeIdentifier ("g_param_spec_pointer");
- } else {
- cspec.call = new CCodeIdentifier (param_spec_name);
+ cspec.call = new CCodeIdentifier (param_spec_name);
+ if (prop.property_type.data_type == string_type.data_type) {
+ cspec.add_argument (new CCodeConstant ("NULL"));
+ } else if (prop.property_type.data_type.get_type_id () != "G_TYPE_POINTER") {
cspec.add_argument (new CCodeIdentifier (prop.property_type.data_type.get_type_id ()));
}
- } else if (prop.property_type.data_type == string_type.data_type) {
- cspec.call = new CCodeIdentifier ("g_param_spec_string");
- cspec.add_argument (new CCodeConstant ("NULL"));
} else if (prop.property_type.data_type is Enum) {
var e = prop.property_type.data_type as Enum;
if (e.has_type_id) {
}
public override string? get_param_spec_function () {
- if (param_spec_function == null ) {
- if (!(is_compact || base_class == null)) {
+ if (param_spec_function == null) {
+ if (is_fundamental ()) {
+ param_spec_function = get_lower_case_cname ("param_spec_");
+ } else if (base_class != null) {
param_spec_function = base_class.get_param_spec_function ();
+ } else if (get_type_id () == "G_TYPE_POINTER") {
+ param_spec_function = "g_param_spec_pointer";
+ } else {
+ param_spec_function = "g_param_spec_boxed";
}
}
return param_spec_function;
}
- public void set_param_spec_function ( string name ) {
- param_spec_function = name;
- }
-
public override string? get_get_value_function () {
if (get_value_function == null) {
- if (is_fundamental()) {
+ if (is_fundamental ()) {
get_value_function = get_lower_case_cname ("value_get_");
} else if (base_class != null) {
get_value_function = base_class.get_get_value_function ();
public override string? get_set_value_function () {
if (set_value_function == null) {
- if (is_fundamental()) {
+ if (is_fundamental ()) {
set_value_function = get_lower_case_cname ("value_set_");
} else if (base_class != null) {
set_value_function = base_class.get_set_value_function ();
[Compact]
[Immutable]
-[CCode (cname = "char", const_cname = "const char", copy_function = "g_strdup", free_function = "g_free", cheader_filename = "stdlib.h,string.h,glib.h", type_id = "G_TYPE_STRING", marshaller_type_name = "STRING", get_value_function = "g_value_get_string", set_value_function = "g_value_set_string", type_signature = "s")]
+[CCode (cname = "char", const_cname = "const char", copy_function = "g_strdup", free_function = "g_free", cheader_filename = "stdlib.h,string.h,glib.h", type_id = "G_TYPE_STRING", marshaller_type_name = "STRING", param_spec_function = "g_param_spec_string", get_value_function = "g_value_get_string", set_value_function = "g_value_set_string", type_signature = "s")]
public class string {
[CCode (cname = "strstr")]
public weak string? str (string needle);