g_object_class_install_property: G_PARAM_CONSTRUCT | G_PARAM_CONSTRUCT_ONLY not allowed
- From: Tom Schoonjans <tom schoonjans me com>
- To: gtk-list gnome org
- Subject: g_object_class_install_property: G_PARAM_CONSTRUCT | G_PARAM_CONSTRUCT_ONLY not allowed
- Date: Fri, 02 Dec 2016 14:21:11 +0000
Hi,
I am dealing with a scenario where I want to have a property that can only be set and will be set at
construction time.
Looking at the documentation, I thought that the appropriate combination of GParamFlags that should be used
in this case is: G_PARAM_CONSTRUCT | G_PARAM_CONSTRUCT_ONLY | G_PARAM_WRITABLE
However, this doesn’t work as I am getting the critical error:
Glib-GObject-CRITICAL **: g_object_class_install_property: assertion `(pspec->flags &
G_PARAM_CONSTRUCT_ONLY) == 0` failed
This can be traced back to the following chunk of code in gobject.c
void
g_object_class_install_property (GObjectClass *class,
guint property_id,
GParamSpec *pspec)
{
g_return_if_fail (G_IS_OBJECT_CLASS (class));
g_return_if_fail (G_IS_PARAM_SPEC (pspec));
if (CLASS_HAS_DERIVED_CLASS (class))
g_error ("Attempt to add property %s::%s to class after it was derived", G_OBJECT_CLASS_NAME (class),
pspec->name);
class->flags |= CLASS_HAS_PROPS_FLAG;
g_return_if_fail (pspec->flags & (G_PARAM_READABLE | G_PARAM_WRITABLE));
if (pspec->flags & G_PARAM_WRITABLE)
g_return_if_fail (class->set_property != NULL);
if (pspec->flags & G_PARAM_READABLE)
g_return_if_fail (class->get_property != NULL);
g_return_if_fail (property_id > 0);
g_return_if_fail (PARAM_SPEC_PARAM_ID (pspec) == 0); /* paranoid */
if (pspec->flags & G_PARAM_CONSTRUCT)
g_return_if_fail ((pspec->flags & G_PARAM_CONSTRUCT_ONLY) == 0); # this triggers the early return
Interestingly the next two lines of code appears to deal with exactly my case:
if (pspec->flags & (G_PARAM_CONSTRUCT | G_PARAM_CONSTRUCT_ONLY))
g_return_if_fail (pspec->flags & G_PARAM_WRITABLE);
Any thoughts on this?
Thanks in advance,
Tom
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]