Re: Default values for properties
- From: Martin Baulig <martin home-of-linux org>
- To: Tim Janik <timj gtk org>
- Cc: Gtk+ Developers <gtk-devel-list gnome org>
- Subject: Re: Default values for properties
- Date: 01 Apr 2001 14:39:34 +0200
Tim Janik <timj gtk org> writes:
> g_object_new() will only set G_PARAM_CONSTRUCT* proeprties for you, but yes,
> it will set those with default values if not upplied by the user.
> the reason for this is two fold, basically we do what a c++ constructor
> would do if you supplied all of its arguments with default values, but,
> probably more interesting, i took that behaviour over from 1.2.
>
> a flag as you suggest would only affect CONSTRUCT properties, however
> that will cause us ending up with four variants thereof:
>
> G_PARAM_CONSTRUCT /* supply always for constructor */
> G_PARAM_CONSTRUCT_ONLY /* supply if and only if we're constructing */
> G_PARAM_CONSTRUCT_EXPLICIT /* supply with constructor when user-provided */
> G_PARAM_CONSTRUCT_ONLY_EXPLICIT /* supply if and only if (constructing &&
> user-provided) */
>
> i'm not sure that thse additional flags aren't more intriguable than
> benefitting.
Huch, why so complicated ?
G_PARAM_CONSTRUCT /* pass this property to the constructor */
G_PARAM_CONSTRUCT_ONLY /* this property is only allowed at construction
* time; you may not modify it later on. */
G_PARAM_CONSTRUCT_NODEFAULT /* this property has no reasonable default
* value */
> OTOH, since we now have GObjectClass.constructor, i'm not sure
> we still have to default-supply all construct properties at construction
> time. but before i change that, i'd like to know why you have to distinguish
> "user specified construct property with default value" from
> "construct property gets default value, but wasn't user-specified".
Well, IMHO not supplying any default values at construction time won't hurt
at all; all of these properties there is absolutely no need to do this since
you can also set the default value in the object's instance_init function.
However, if you supply any default values at construction time, you won't be
able to find out whether a property has been user-supplied or not.
There are basically two problems with this:
(a) there are properties which don't have any reasonable default values
or whose default values depend on other properties.
(b) it should be allowed to specify construction properties multiple times
(oh, I forgot that I wanted to report this as a bug!)
Basically, I see construction properties more as arguments which you use
at object construction time to tell the object how you look, feel and behave
than as real "properties".
Currently, g_object_new() doesn't allow me to do (with both "module" and
"module_info" being G_CONSTRUCT_ONLY and write-only)
g_object_new (GNOME_TYPE_PROGRAM,
"module", "libgnomeui",
"module", "libbonoboui",
"module_info", foo_module_info,
NULL);
or, for instance in a scripting language
(g-object-new 'gnome-type-icon-selector
'((icon-path . "/gnome/head/INSTALL/share/icons")
(icon-path . "/gnome/unstable/INSTALL/share/icons")
(icon-path . "/gnome/release/INSTALL/share/icons")))
Btw. I'm not so familar with C++, but I don't think it's required to specify
default values for all all arguments ?
--
Martin Baulig
martin gnome org (private)
baulig suse de (work)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]