--- GParamSpec.xs 18 Oct 2005 05:26:09 +1000 1.23 +++ GParamSpec.xs 23 Jun 2008 19:12:06 +1000 @@ -288,6 +288,26 @@ const gchar* g_param_spec_get_blurb (GParamSpec * pspec) +=for apidoc +This is the C level C method of GParamSpecClass. +If C<$pspec> doesn't have a C field the return is +C (for example object or scalar). + +See also L which has its own version of this method. +=cut +SV * +g_param_spec_get_default_value (GParamSpec * pspec) + PREINIT: + GValue v = { 0, }; + GType type; + CODE: + type = G_PARAM_SPEC_VALUE_TYPE (pspec); + g_value_init (&v, type); + g_param_value_set_default (pspec, &v); + RETVAL = gperl_sv_from_value (&v); + g_value_unset (&v); + OUTPUT: + RETVAL ## stuff from gparamspecs.h @@ -686,27 +706,6 @@ RETVAL -=for apidoc Glib::Param::Char::get_default_value __hide__ -=cut - -=for apidoc Glib::Param::Long::get_default_value __hide__ -=cut - -IV -get_default_value (GParamSpec * pspec) - ALIAS: - Glib::Param::Int::get_default_value = 1 - Glib::Param::Long::get_default_value = 2 - CODE: - switch (ix) { - case 0: RETVAL = G_PARAM_SPEC_CHAR (pspec)->default_value; break; - case 1: RETVAL = G_PARAM_SPEC_INT (pspec)->default_value; break; - case 2: RETVAL = G_PARAM_SPEC_LONG (pspec)->default_value; break; - default: g_assert_not_reached (); RETVAL = 0; - } - OUTPUT: - RETVAL - MODULE = Glib::ParamSpec PACKAGE = Glib::Param::UChar ## similarly, all unsigned integer types @@ -772,27 +771,6 @@ RETVAL -=for apidoc Glib::Param::UChar::get_default_value __hide__ -=cut - -=for apidoc Glib::Param::ULong::get_default_value __hide__ -=cut - -UV -get_default_value (GParamSpec * pspec) - ALIAS: - Glib::Param::UInt::get_default_value = 1 - Glib::Param::ULong::get_default_value = 2 - CODE: - switch (ix) { - case 0: RETVAL = G_PARAM_SPEC_UCHAR (pspec)->default_value; break; - case 1: RETVAL = G_PARAM_SPEC_UINT (pspec)->default_value; break; - case 2: RETVAL = G_PARAM_SPEC_ULONG (pspec)->default_value; break; - default: g_assert_not_reached (); RETVAL = 0; - } - OUTPUT: - RETVAL - MODULE = Glib::ParamSpec PACKAGE = Glib::Param::Int64 =for object Glib::Param::Int64 @@ -820,13 +798,6 @@ OUTPUT: RETVAL -gint64 -get_default_value (GParamSpec * pspec) - CODE: - RETVAL = G_PARAM_SPEC_INT64 (pspec)->default_value; - OUTPUT: - RETVAL - MODULE = Glib::ParamSpec PACKAGE = Glib::Param::UInt64 =for object Glib::Param::UInt64 @@ -854,13 +825,6 @@ OUTPUT: RETVAL -guint64 -get_default_value (GParamSpec * pspec) - CODE: - RETVAL = G_PARAM_SPEC_UINT64 (pspec)->default_value; - OUTPUT: - RETVAL - MODULE = Glib::ParamSpec PACKAGE = Glib::Param::Float ## and again for the floating-point types @@ -915,23 +879,6 @@ RETVAL -=for apidoc Glib::Param::Float::get_default_value __hide__ -=cut - -double -get_default_value (GParamSpec * pspec) - ALIAS: - Glib::Param::Double::get_default_value = 1 - CODE: - switch (ix) { - case 0: RETVAL = G_PARAM_SPEC_FLOAT (pspec)->default_value; break; - case 1: RETVAL = G_PARAM_SPEC_DOUBLE (pspec)->default_value; break; - default: g_assert_not_reached (); RETVAL = 0.0; - } - OUTPUT: - RETVAL - - =for apidoc Glib::Param::Float::get_epsilon __hide__ =cut @@ -953,13 +900,6 @@ =for see_also Glib::ParamSpec =cut -gboolean -get_default_value (GParamSpec * pspec_boolean) - CODE: - RETVAL = G_PARAM_SPEC_BOOLEAN (pspec_boolean)->default_value; - OUTPUT: - RETVAL - MODULE = Glib::ParamSpec PACKAGE = Glib::Param::Enum =for see_also Glib::ParamSpec @@ -974,17 +914,6 @@ OUTPUT: RETVAL -SV * -get_default_value (GParamSpec * pspec_enum) - PREINIT: - GParamSpecEnum * penum; - CODE: - penum = G_PARAM_SPEC_ENUM (pspec_enum); - RETVAL = gperl_convert_back_enum (G_ENUM_CLASS_TYPE (penum->enum_class), - penum->default_value); - OUTPUT: - RETVAL - MODULE = Glib::ParamSpec PACKAGE = Glib::Param::Flags =for see_also Glib::ParamSpec @@ -999,30 +928,11 @@ OUTPUT: RETVAL -SV * -get_default_value (GParamSpec * pspec_flags) - PREINIT: - GParamSpecFlags * pflags; - CODE: - pflags = G_PARAM_SPEC_FLAGS (pspec_flags); - RETVAL = gperl_convert_back_flags - (G_FLAGS_CLASS_TYPE (pflags->flags_class), - pflags->default_value); - OUTPUT: - RETVAL - MODULE = Glib::ParamSpec PACKAGE = Glib::Param::String =for see_also Glib::ParamSpec =cut -gchar * -get_default_value (GParamSpec * pspec_string) - CODE: - RETVAL = G_PARAM_SPEC_STRING (pspec_string)->default_value; - OUTPUT: - RETVAL - ## the others are fairly uninteresting. ## string cset_first ## string cset_nth @@ -1035,6 +945,14 @@ =for see_also Glib::ParamSpec =cut +# this overrides the base get_default_value() in Glib::ParamSpec above +# because a GParamSpecUnichar is only type G_TYPE_UINT and so comes +# back from gperl_sv_from_value() as an integer, where we prefer a +# string (a single-char Perl wide-char string) +# +=for apidoc +Return the default value as a single-character string. +=cut gunichar get_default_value (GParamSpec * pspec_unichar) CODE: