[Workman-devel] [PATCH 3/4] Add state property to WorkmanObject

Daniel P. Berrange berrange at redhat.com
Thu Feb 28 10:36:07 UTC 2013


On Wed, Feb 27, 2013 at 05:55:36PM -0600, Josh Poimboeuf wrote:
> Add the WorkmanState property to WorkmanObject.  Also remove get_state()
> from the class struct since the subclasses won't override it.
> ---
>  workman/workman-object.c | 21 +++++++++++++++++++--
>  workman/workman-object.h |  3 ---
>  2 files changed, 19 insertions(+), 5 deletions(-)
> 
> diff --git a/workman/workman-object.c b/workman/workman-object.c
> index 55aa7cf..11bf434 100644
> --- a/workman/workman-object.c
> +++ b/workman/workman-object.c
> @@ -31,12 +31,14 @@ G_DEFINE_ABSTRACT_TYPE(WorkmanObject, workman_object, G_TYPE_OBJECT);
>  
>  struct _WorkmanObjectPrivate {
>      gchar *name;
> +    WorkmanState state;
>  };
>  
>  
>  enum {
>      PROP_0,
>      PROP_NAME,
> +    PROP_STATE,
>  };
>  
>  
> @@ -53,6 +55,9 @@ workman_object_get_property(GObject *object,
>          case PROP_NAME:
>              g_value_set_string(value, self->priv->name);
>              break;
> +        case PROP_STATE:
> +            g_value_set_uint(value, self->priv->state);
> +            break;
>          default:
>              G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
>              break;
> @@ -72,6 +77,9 @@ workman_object_set_property(GObject *object,
>          case PROP_NAME:
>              self->priv->name = g_value_dup_string(value);
>              break;
> +        case PROP_STATE:
> +            self->priv->state = g_value_get_uint(value);
> +            break;
>          default:
>              G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
>              break;
> @@ -109,6 +117,16 @@ workman_object_class_init(WorkmanObjectClass *klass)
>                                  G_PARAM_STATIC_STRINGS);
>      g_object_class_install_property(g_klass, PROP_NAME, pspec);
>  
> +    pspec = g_param_spec_uint("state",
> +                              "State",
> +                              "The object's WorkmanState",
> +                              0,
> +                              G_MAXUINT,
> +                              0,
> +                              G_PARAM_READWRITE |
> +                              G_PARAM_CONSTRUCT_ONLY |
> +                              G_PARAM_STATIC_STRINGS);
> +    g_object_class_install_property(g_klass, PROP_STATE, pspec);

GLib actually has a g_param_spec_enum you can use in preference
to this. It will ensure that type checking is done on the range
of values which be set.

Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the Workman-devel mailing list