2 * Copyright (c) 2010, Intel Corporation.
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms and conditions of the GNU General Public License,
6 * version 2, as published by the Free Software Foundation.
8 * This program is distributed in the hope it will be useful, but WITHOUT
9 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
13 * You should have received a copy of the GNU General Public License along with
14 * this program; if not, write to the Free Software Foundation, Inc.,
15 * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
17 * Author: Rob Staudinger <robsta@linux.intel.com>
20 #include "foo-test-object.h"
22 G_DEFINE_TYPE (FooTestObject, foo_test_object, G_TYPE_OBJECT)
24 #define GET_PRIVATE(o) \
25 (G_TYPE_INSTANCE_GET_PRIVATE ((o), FOO_TYPE_TEST_OBJECT, FooTestObjectPrivate))
38 } FooTestObjectPrivate;
41 _get_property (GObject *object,
49 g_value_set_int (value,
50 foo_test_object_get_number (
51 FOO_TEST_OBJECT (object)));
54 g_value_set_string (value,
55 foo_test_object_get_text (
56 FOO_TEST_OBJECT (object)));
59 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
64 _set_property (GObject *object,
72 foo_test_object_set_number (FOO_TEST_OBJECT (object),
73 g_value_get_int (value));
76 foo_test_object_set_text (FOO_TEST_OBJECT (object),
77 g_value_get_string (value));
80 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
85 _finalize (GObject *object)
87 G_OBJECT_CLASS (foo_test_object_parent_class)->finalize (object);
91 foo_test_object_class_init (FooTestObjectClass *klass)
93 GObjectClass *object_class = G_OBJECT_CLASS (klass);
95 g_type_class_add_private (klass, sizeof (FooTestObjectPrivate));
97 object_class->get_property = _get_property;
98 object_class->set_property = _set_property;
99 object_class->finalize = _finalize;
101 g_object_class_install_property (object_class,
103 g_param_spec_int ("number", "", "",
104 G_MININT32, G_MAXINT32, 0,
107 g_object_class_install_property (object_class,
109 g_param_spec_string ("text", "", "",
115 foo_test_object_init (FooTestObject *self)
120 foo_test_object_new (void)
122 return g_object_new (FOO_TYPE_TEST_OBJECT, NULL);
126 foo_test_object_get_number (FooTestObject *self)
128 FooTestObjectPrivate *priv = GET_PRIVATE (self);
130 g_return_val_if_fail (FOO_IS_TEST_OBJECT (self), 0);
136 foo_test_object_set_number (FooTestObject *self,
139 FooTestObjectPrivate *priv = GET_PRIVATE (self);
141 g_return_if_fail (FOO_IS_TEST_OBJECT (self));
143 if (number != priv->number)
145 priv->number = number;
147 g_object_notify (G_OBJECT (self), "number");
152 foo_test_object_get_text (FooTestObject *self)
154 FooTestObjectPrivate *priv = GET_PRIVATE (self);
156 g_return_val_if_fail (FOO_IS_TEST_OBJECT (self), NULL);
162 foo_test_object_set_text (FooTestObject *self,
165 FooTestObjectPrivate *priv = GET_PRIVATE (self);
167 g_return_if_fail (FOO_IS_TEST_OBJECT (self));
169 if (0 != g_strcmp0 (text, priv->text))
179 priv->text = g_strdup (text);
182 g_object_notify (G_OBJECT (self), "text");