1 #include "meson-sample.h"
2
3 typedef struct _MesonSamplePrivate
4 {
5 gchar *msg;
6 } MesonSamplePrivate;
7
8
9 G_DEFINE_TYPE_WITH_PRIVATE (MesonSample, meson_sample, G_TYPE_OBJECT)
10
11 enum {
12 PROP_0,
13 PROP_MSG,
14 LAST_PROP
15 };
16
17 static GParamSpec *gParamSpecs [LAST_PROP];
18
19 /**
20 * meson_sample_new:
21 * @msg: The message to set.
22 *
23 * Allocates a new #MesonSample.
24 *
25 * Returns: (transfer full): a #MesonSample.
26 */
27 MesonSample *
meson_sample_new(const gchar * msg)28 meson_sample_new (const gchar *msg)
29 {
30 g_return_val_if_fail (msg != NULL, NULL);
31
32 return g_object_new (MESON_TYPE_SAMPLE,
33 "message", msg,
34 NULL);
35 }
36
37 static void
meson_sample_finalize(GObject * object)38 meson_sample_finalize (GObject *object)
39 {
40 MesonSamplePrivate *priv = meson_sample_get_instance_private ((MesonSample *) object);
41
42 g_clear_pointer (&priv->msg, g_free);
43
44 G_OBJECT_CLASS (meson_sample_parent_class)->finalize (object);
45 }
46
47 static void
meson_sample_get_property(GObject * object,guint prop_id,GValue * value,GParamSpec * pspec)48 meson_sample_get_property (GObject *object,
49 guint prop_id,
50 GValue *value,
51 GParamSpec *pspec)
52 {
53 MesonSamplePrivate *priv = meson_sample_get_instance_private ((MesonSample *) object);
54
55 switch (prop_id)
56 {
57 case PROP_MSG:
58 g_value_set_string (value, priv->msg);
59 break;
60 default:
61 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
62 }
63 }
64
65 static void
meson_sample_set_property(GObject * object,guint prop_id,const GValue * value,GParamSpec * pspec)66 meson_sample_set_property (GObject *object,
67 guint prop_id,
68 const GValue *value,
69 GParamSpec *pspec)
70 {
71 MesonSamplePrivate *priv = meson_sample_get_instance_private ((MesonSample *) object);
72
73 switch (prop_id)
74 {
75 case PROP_MSG:
76 priv->msg = g_value_dup_string (value);
77 break;
78 default:
79 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
80 }
81 }
82
83 static void
meson_sample_class_init(MesonSampleClass * klass)84 meson_sample_class_init (MesonSampleClass *klass)
85 {
86 GObjectClass *object_class = G_OBJECT_CLASS (klass);
87
88 object_class->finalize = meson_sample_finalize;
89 object_class->get_property = meson_sample_get_property;
90 object_class->set_property = meson_sample_set_property;
91
92 gParamSpecs [PROP_MSG] =
93 g_param_spec_string ("message",
94 "Message",
95 "The message to print.",
96 NULL,
97 (G_PARAM_READWRITE |
98 G_PARAM_CONSTRUCT_ONLY |
99 G_PARAM_STATIC_STRINGS));
100
101 g_object_class_install_properties (object_class, LAST_PROP, gParamSpecs);
102 }
103
104 static void
meson_sample_init(MesonSample * self)105 meson_sample_init (MesonSample *self)
106 {
107 }
108
109 /**
110 * meson_sample_print_message:
111 * @self: a #MesonSample.
112 *
113 * Prints the message.
114 *
115 */
116 void
meson_sample_print_message(MesonSample * self)117 meson_sample_print_message (MesonSample *self)
118 {
119 MesonSamplePrivate *priv;
120
121 g_return_if_fail (MESON_IS_SAMPLE (self));
122
123 priv = meson_sample_get_instance_private (self);
124
125 g_print ("Message: %s\n", priv->msg);
126 }
127