1 /* UndoManager.c generated by valac, the Vala compiler
2 * generated from UndoManager.vala, do not modify */
4 /* Copyright 2009 Yorba Foundation
6 * This software is licensed under the GNU Lesser General Public License
7 * (version 2.1 or later). See the COPYING file in this distribution.
11 #include <glib-object.h>
15 #include <gobject/gvaluecollector.h>
18 #define MODEL_TYPE_UNDO_MANAGER (model_undo_manager_get_type ())
19 #define MODEL_UNDO_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_UNDO_MANAGER, ModelUndoManager))
20 #define MODEL_UNDO_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_UNDO_MANAGER, ModelUndoManagerClass))
21 #define MODEL_IS_UNDO_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_UNDO_MANAGER))
22 #define MODEL_IS_UNDO_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_UNDO_MANAGER))
23 #define MODEL_UNDO_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_UNDO_MANAGER, ModelUndoManagerClass))
25 typedef struct _ModelUndoManager ModelUndoManager;
26 typedef struct _ModelUndoManagerClass ModelUndoManagerClass;
27 typedef struct _ModelUndoManagerPrivate ModelUndoManagerPrivate;
29 #define MODEL_TYPE_COMMAND (model_command_get_type ())
30 #define MODEL_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_COMMAND, ModelCommand))
31 #define MODEL_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_COMMAND, ModelCommandClass))
32 #define MODEL_IS_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_COMMAND))
33 #define MODEL_IS_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_COMMAND))
34 #define MODEL_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_COMMAND, ModelCommandClass))
36 typedef struct _ModelCommand ModelCommand;
37 typedef struct _ModelCommandClass ModelCommandClass;
38 #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
40 #define MODEL_TYPE_TRANSACTION_COMMAND (model_transaction_command_get_type ())
41 #define MODEL_TRANSACTION_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MODEL_TYPE_TRANSACTION_COMMAND, ModelTransactionCommand))
42 #define MODEL_TRANSACTION_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MODEL_TYPE_TRANSACTION_COMMAND, ModelTransactionCommandClass))
43 #define MODEL_IS_TRANSACTION_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MODEL_TYPE_TRANSACTION_COMMAND))
44 #define MODEL_IS_TRANSACTION_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MODEL_TYPE_TRANSACTION_COMMAND))
45 #define MODEL_TRANSACTION_COMMAND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MODEL_TYPE_TRANSACTION_COMMAND, ModelTransactionCommandClass))
47 typedef struct _ModelTransactionCommand ModelTransactionCommand;
48 typedef struct _ModelTransactionCommandClass ModelTransactionCommandClass;
49 #define _model_command_unref0(var) ((var == NULL) ? NULL : (var = (model_command_unref (var), NULL)))
50 typedef struct _ModelParamSpecUndoManager ModelParamSpecUndoManager;
52 struct _ModelUndoManager {
53 GTypeInstance parent_instance;
54 volatile int ref_count;
55 ModelUndoManagerPrivate * priv;
58 struct _ModelUndoManagerClass {
59 GTypeClass parent_class;
60 void (*finalize) (ModelUndoManager *self);
63 struct _ModelUndoManagerPrivate {
66 GeeArrayList* command_list;
69 struct _ModelParamSpecUndoManager {
70 GParamSpec parent_instance;
74 static gpointer model_undo_manager_parent_class = NULL;
76 gpointer model_undo_manager_ref (gpointer instance);
77 void model_undo_manager_unref (gpointer instance);
78 GParamSpec* model_param_spec_undo_manager (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
79 void model_value_set_undo_manager (GValue* value, gpointer v_object);
80 void model_value_take_undo_manager (GValue* value, gpointer v_object);
81 gpointer model_value_get_undo_manager (const GValue* value);
82 GType model_undo_manager_get_type (void);
83 gpointer model_command_ref (gpointer instance);
84 void model_command_unref (gpointer instance);
85 GParamSpec* model_param_spec_command (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
86 void model_value_set_command (GValue* value, gpointer v_object);
87 void model_value_take_command (GValue* value, gpointer v_object);
88 gpointer model_value_get_command (const GValue* value);
89 GType model_command_get_type (void);
90 #define MODEL_UNDO_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MODEL_TYPE_UNDO_MANAGER, ModelUndoManagerPrivate))
92 MODEL_UNDO_MANAGER_DUMMY_PROPERTY
94 ModelUndoManager* model_undo_manager_new (void);
95 ModelUndoManager* model_undo_manager_construct (GType object_type);
96 void model_undo_manager_reset (ModelUndoManager* self);
97 void model_undo_manager_mark_clean (ModelUndoManager* self);
98 ModelTransactionCommand* model_transaction_command_new (gboolean open, const char* transaction_description);
99 ModelTransactionCommand* model_transaction_command_construct (GType object_type, gboolean open, const char* transaction_description);
100 GType model_transaction_command_get_type (void);
101 void model_undo_manager_start_transaction (ModelUndoManager* self, const char* description);
102 void model_undo_manager_end_transaction (ModelUndoManager* self, const char* description);
103 gboolean model_undo_manager_get_in_undo (ModelUndoManager* self);
104 void model_command_apply (ModelCommand* self);
105 static ModelCommand* model_undo_manager_get_current_command (ModelUndoManager* self);
106 gboolean model_command_merge (ModelCommand* self, ModelCommand* command);
107 gboolean model_undo_manager_get_can_undo (ModelUndoManager* self);
108 void model_undo_manager_do_command (ModelUndoManager* self, ModelCommand* the_command);
109 static void model_undo_manager_set_in_undo (ModelUndoManager* self, gboolean value);
110 gboolean model_transaction_command_in_transaction (ModelTransactionCommand* self);
111 void model_command_undo (ModelCommand* self);
112 gboolean model_undo_manager_get_is_dirty (ModelUndoManager* self);
113 void model_undo_manager_undo (ModelUndoManager* self);
114 char* model_command_description (ModelCommand* self);
115 char* model_undo_manager_get_undo_title (ModelUndoManager* self);
116 static void model_undo_manager_finalize (ModelUndoManager* obj);
120 #line 19 "UndoManager.vala"
121 ModelUndoManager* model_undo_manager_construct (GType object_type) {
122 #line 123 "UndoManager.c"
123 ModelUndoManager* self;
124 self = (ModelUndoManager*) g_type_create_instance (object_type);
129 #line 19 "UndoManager.vala"
130 ModelUndoManager* model_undo_manager_new (void) {
131 #line 19 "UndoManager.vala"
132 return model_undo_manager_construct (MODEL_TYPE_UNDO_MANAGER);
133 #line 134 "UndoManager.c"
137 #line 22 "UndoManager.vala"
138 void model_undo_manager_reset (ModelUndoManager* self) {
139 #line 22 "UndoManager.vala"
140 g_return_if_fail (MODEL_IS_UNDO_MANAGER (self));
141 #line 23 "UndoManager.vala"
142 gee_abstract_collection_clear (GEE_ABSTRACT_COLLECTION (self->priv->command_list));
143 #line 24 "UndoManager.vala"
144 self->priv->saved_index = 0;
145 #line 25 "UndoManager.vala"
146 g_signal_emit_by_name (self, "undo-changed", FALSE);
147 #line 148 "UndoManager.c"
151 #line 28 "UndoManager.vala"
152 void model_undo_manager_mark_clean (ModelUndoManager* self) {
153 #line 28 "UndoManager.vala"
154 g_return_if_fail (MODEL_IS_UNDO_MANAGER (self));
155 #line 29 "UndoManager.vala"
156 self->priv->saved_index = gee_collection_get_size (GEE_COLLECTION (self->priv->command_list));
157 #line 30 "UndoManager.vala"
158 g_signal_emit_by_name (self, "dirty-changed", FALSE);
159 #line 160 "UndoManager.c"
163 #line 33 "UndoManager.vala"
164 void model_undo_manager_start_transaction (ModelUndoManager* self, const char* description) {
165 #line 166 "UndoManager.c"
166 ModelTransactionCommand* command;
167 #line 33 "UndoManager.vala"
168 g_return_if_fail (MODEL_IS_UNDO_MANAGER (self));
169 #line 33 "UndoManager.vala"
170 g_return_if_fail (description != NULL);
171 #line 34 "UndoManager.vala"
172 command = model_transaction_command_new (FALSE, description);
173 #line 35 "UndoManager.vala"
174 gee_abstract_collection_add (GEE_ABSTRACT_COLLECTION (self->priv->command_list), MODEL_COMMAND (command));
175 #line 36 "UndoManager.vala"
176 g_signal_emit_by_name (self, "undo-changed", TRUE);
177 #line 178 "UndoManager.c"
178 _model_command_unref0 (command);
182 #line 39 "UndoManager.vala"
183 void model_undo_manager_end_transaction (ModelUndoManager* self, const char* description) {
184 #line 185 "UndoManager.c"
185 ModelTransactionCommand* command;
186 #line 39 "UndoManager.vala"
187 g_return_if_fail (MODEL_IS_UNDO_MANAGER (self));
188 #line 39 "UndoManager.vala"
189 g_return_if_fail (description != NULL);
190 #line 40 "UndoManager.vala"
191 command = model_transaction_command_new (TRUE, description);
192 #line 41 "UndoManager.vala"
193 gee_abstract_collection_add (GEE_ABSTRACT_COLLECTION (self->priv->command_list), MODEL_COMMAND (command));
194 #line 42 "UndoManager.vala"
195 g_signal_emit_by_name (self, "undo-changed", TRUE);
196 #line 197 "UndoManager.c"
197 _model_command_unref0 (command);
201 #line 45 "UndoManager.vala"
202 void model_undo_manager_do_command (ModelUndoManager* self, ModelCommand* the_command) {
203 #line 45 "UndoManager.vala"
204 g_return_if_fail (MODEL_IS_UNDO_MANAGER (self));
205 #line 45 "UndoManager.vala"
206 g_return_if_fail (MODEL_IS_COMMAND (the_command));
207 #line 46 "UndoManager.vala"
208 if (!model_undo_manager_get_in_undo (self)) {
209 #line 210 "UndoManager.c"
210 ModelCommand* current_command;
211 gboolean _tmp0_ = FALSE;
212 #line 47 "UndoManager.vala"
213 model_command_apply (the_command);
214 #line 48 "UndoManager.vala"
215 current_command = model_undo_manager_get_current_command (self);
216 #line 49 "UndoManager.vala"
217 if (current_command == NULL) {
218 #line 49 "UndoManager.vala"
220 #line 221 "UndoManager.c"
222 #line 49 "UndoManager.vala"
223 _tmp0_ = !model_command_merge (current_command, the_command);
224 #line 225 "UndoManager.c"
226 #line 49 "UndoManager.vala"
228 #line 50 "UndoManager.vala"
229 gee_abstract_collection_add (GEE_ABSTRACT_COLLECTION (self->priv->command_list), the_command);
230 #line 231 "UndoManager.c"
232 #line 52 "UndoManager.vala"
233 g_signal_emit_by_name (self, "dirty-changed", TRUE);
234 #line 53 "UndoManager.vala"
235 g_signal_emit_by_name (self, "undo-changed", model_undo_manager_get_can_undo (self));
236 #line 237 "UndoManager.c"
237 _model_command_unref0 (current_command);
242 #line 57 "UndoManager.vala"
243 static ModelCommand* model_undo_manager_get_current_command (ModelUndoManager* self) {
244 #line 245 "UndoManager.c"
245 ModelCommand* result = NULL;
247 #line 57 "UndoManager.vala"
248 g_return_val_if_fail (MODEL_IS_UNDO_MANAGER (self), NULL);
249 #line 58 "UndoManager.vala"
250 index = gee_collection_get_size (GEE_COLLECTION (self->priv->command_list)) - 1;
251 #line 59 "UndoManager.vala"
253 #line 254 "UndoManager.c"
254 result = (ModelCommand*) gee_abstract_list_get (GEE_ABSTRACT_LIST (self->priv->command_list), index);
255 #line 60 "UndoManager.vala"
257 #line 258 "UndoManager.c"
260 #line 62 "UndoManager.vala"
262 #line 263 "UndoManager.c"
267 static gpointer _model_command_ref0 (gpointer self) {
268 return self ? model_command_ref (self) : NULL;
272 #line 66 "UndoManager.vala"
273 void model_undo_manager_undo (ModelUndoManager* self) {
274 #line 275 "UndoManager.c"
276 #line 66 "UndoManager.vala"
277 g_return_if_fail (MODEL_IS_UNDO_MANAGER (self));
278 #line 67 "UndoManager.vala"
279 g_assert (model_undo_manager_get_in_undo (self) == FALSE);
280 #line 68 "UndoManager.vala"
281 model_undo_manager_set_in_undo (self, TRUE);
282 #line 69 "UndoManager.vala"
284 #line 285 "UndoManager.c"
287 #line 70 "UndoManager.vala"
289 #line 70 "UndoManager.vala"
291 #line 292 "UndoManager.c"
292 ModelCommand* the_command;
293 #line 70 "UndoManager.vala"
295 #line 87 "UndoManager.vala"
296 if (!(in_transaction > 0)) {
297 #line 87 "UndoManager.vala"
299 #line 300 "UndoManager.c"
302 #line 70 "UndoManager.vala"
304 #line 71 "UndoManager.vala"
305 the_command = model_undo_manager_get_current_command (self);
306 #line 72 "UndoManager.vala"
307 if (the_command != NULL) {
308 #line 309 "UndoManager.c"
309 ModelCommand* _tmp1_;
310 ModelTransactionCommand* transaction_command;
311 #line 73 "UndoManager.vala"
312 gee_abstract_collection_remove (GEE_ABSTRACT_COLLECTION (self->priv->command_list), the_command);
313 #line 74 "UndoManager.vala"
314 transaction_command = _model_command_ref0 ((_tmp1_ = the_command, MODEL_IS_TRANSACTION_COMMAND (_tmp1_) ? ((ModelTransactionCommand*) _tmp1_) : NULL));
315 #line 75 "UndoManager.vala"
316 if (transaction_command != NULL) {
317 #line 76 "UndoManager.vala"
318 if (model_transaction_command_in_transaction (transaction_command)) {
319 #line 77 "UndoManager.vala"
321 #line 322 "UndoManager.c"
323 #line 79 "UndoManager.vala"
325 #line 326 "UndoManager.c"
328 #line 82 "UndoManager.vala"
329 model_command_undo (the_command);
330 #line 331 "UndoManager.c"
332 _model_command_unref0 (transaction_command);
334 _model_command_unref0 (the_command);
335 #line 85 "UndoManager.vala"
337 #line 338 "UndoManager.c"
339 _model_command_unref0 (the_command);
342 #line 88 "UndoManager.vala"
343 g_signal_emit_by_name (self, "dirty-changed", model_undo_manager_get_is_dirty (self));
344 #line 89 "UndoManager.vala"
345 g_signal_emit_by_name (self, "undo-changed", model_undo_manager_get_can_undo (self));
346 #line 90 "UndoManager.vala"
347 model_undo_manager_set_in_undo (self, FALSE);
348 #line 349 "UndoManager.c"
352 #line 93 "UndoManager.vala"
353 char* model_undo_manager_get_undo_title (ModelUndoManager* self) {
354 #line 355 "UndoManager.c"
356 ModelCommand* the_command;
357 #line 93 "UndoManager.vala"
358 g_return_val_if_fail (MODEL_IS_UNDO_MANAGER (self), NULL);
359 #line 94 "UndoManager.vala"
360 the_command = model_undo_manager_get_current_command (self);
361 #line 95 "UndoManager.vala"
362 if (the_command != NULL) {
363 #line 364 "UndoManager.c"
364 result = model_command_description (the_command);
365 _model_command_unref0 (the_command);
366 #line 96 "UndoManager.vala"
368 #line 369 "UndoManager.c"
370 result = g_strdup ("");
371 _model_command_unref0 (the_command);
372 #line 98 "UndoManager.vala"
374 #line 375 "UndoManager.c"
376 _model_command_unref0 (the_command);
380 gboolean model_undo_manager_get_is_dirty (ModelUndoManager* self) {
382 g_return_val_if_fail (MODEL_IS_UNDO_MANAGER (self), FALSE);
383 result = self->priv->saved_index != gee_collection_get_size (GEE_COLLECTION (self->priv->command_list));
384 #line 12 "UndoManager.vala"
386 #line 387 "UndoManager.c"
390 gboolean model_undo_manager_get_can_undo (ModelUndoManager* self) {
392 g_return_val_if_fail (MODEL_IS_UNDO_MANAGER (self), FALSE);
393 result = gee_collection_get_size (GEE_COLLECTION (self->priv->command_list)) > 0;
394 #line 13 "UndoManager.vala"
396 #line 397 "UndoManager.c"
400 gboolean model_undo_manager_get_in_undo (ModelUndoManager* self) {
402 g_return_val_if_fail (MODEL_IS_UNDO_MANAGER (self), FALSE);
403 result = self->priv->_in_undo;
404 #line 14 "UndoManager.vala"
406 #line 407 "UndoManager.c"
410 static void model_undo_manager_set_in_undo (ModelUndoManager* self, gboolean value) {
411 g_return_if_fail (MODEL_IS_UNDO_MANAGER (self));
412 #line 14 "UndoManager.vala"
413 self->priv->_in_undo = value;
414 #line 415 "UndoManager.c"
418 static void model_value_undo_manager_init (GValue* value) {
419 value->data[0].v_pointer = NULL;
423 static void model_value_undo_manager_free_value (GValue* value) {
424 if (value->data[0].v_pointer) {
425 model_undo_manager_unref (value->data[0].v_pointer);
430 static void model_value_undo_manager_copy_value (const GValue* src_value, GValue* dest_value) {
431 if (src_value->data[0].v_pointer) {
432 dest_value->data[0].v_pointer = model_undo_manager_ref (src_value->data[0].v_pointer);
434 dest_value->data[0].v_pointer = NULL;
439 static gpointer model_value_undo_manager_peek_pointer (const GValue* value) {
440 return value->data[0].v_pointer;
444 static gchar* model_value_undo_manager_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) {
445 if (collect_values[0].v_pointer) {
446 ModelUndoManager* object;
447 object = collect_values[0].v_pointer;
448 if (object->parent_instance.g_class == NULL) {
449 return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
450 } else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) {
451 return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
453 value->data[0].v_pointer = model_undo_manager_ref (object);
455 value->data[0].v_pointer = NULL;
461 static gchar* model_value_undo_manager_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) {
462 ModelUndoManager** object_p;
463 object_p = collect_values[0].v_pointer;
465 return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value));
467 if (!value->data[0].v_pointer) {
469 } else if (collect_flags && G_VALUE_NOCOPY_CONTENTS) {
470 *object_p = value->data[0].v_pointer;
472 *object_p = model_undo_manager_ref (value->data[0].v_pointer);
478 GParamSpec* model_param_spec_undo_manager (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) {
479 ModelParamSpecUndoManager* spec;
480 g_return_val_if_fail (g_type_is_a (object_type, MODEL_TYPE_UNDO_MANAGER), NULL);
481 spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags);
482 G_PARAM_SPEC (spec)->value_type = object_type;
483 return G_PARAM_SPEC (spec);
487 gpointer model_value_get_undo_manager (const GValue* value) {
488 g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, MODEL_TYPE_UNDO_MANAGER), NULL);
489 return value->data[0].v_pointer;
493 void model_value_set_undo_manager (GValue* value, gpointer v_object) {
494 ModelUndoManager* old;
495 g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, MODEL_TYPE_UNDO_MANAGER));
496 old = value->data[0].v_pointer;
498 g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, MODEL_TYPE_UNDO_MANAGER));
499 g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
500 value->data[0].v_pointer = v_object;
501 model_undo_manager_ref (value->data[0].v_pointer);
503 value->data[0].v_pointer = NULL;
506 model_undo_manager_unref (old);
511 void model_value_take_undo_manager (GValue* value, gpointer v_object) {
512 ModelUndoManager* old;
513 g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, MODEL_TYPE_UNDO_MANAGER));
514 old = value->data[0].v_pointer;
516 g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, MODEL_TYPE_UNDO_MANAGER));
517 g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
518 value->data[0].v_pointer = v_object;
520 value->data[0].v_pointer = NULL;
523 model_undo_manager_unref (old);
528 static void model_undo_manager_class_init (ModelUndoManagerClass * klass) {
529 model_undo_manager_parent_class = g_type_class_peek_parent (klass);
530 MODEL_UNDO_MANAGER_CLASS (klass)->finalize = model_undo_manager_finalize;
531 g_type_class_add_private (klass, sizeof (ModelUndoManagerPrivate));
532 g_signal_new ("undo_changed", MODEL_TYPE_UNDO_MANAGER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__BOOLEAN, G_TYPE_NONE, 1, G_TYPE_BOOLEAN);
533 g_signal_new ("dirty_changed", MODEL_TYPE_UNDO_MANAGER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__BOOLEAN, G_TYPE_NONE, 1, G_TYPE_BOOLEAN);
537 static void model_undo_manager_instance_init (ModelUndoManager * self) {
538 self->priv = MODEL_UNDO_MANAGER_GET_PRIVATE (self);
539 self->priv->saved_index = 0;
540 self->priv->_in_undo = FALSE;
541 self->priv->command_list = gee_array_list_new (MODEL_TYPE_COMMAND, (GBoxedCopyFunc) model_command_ref, model_command_unref, NULL);
546 static void model_undo_manager_finalize (ModelUndoManager* obj) {
547 ModelUndoManager * self;
548 self = MODEL_UNDO_MANAGER (obj);
549 _g_object_unref0 (self->priv->command_list);
553 GType model_undo_manager_get_type (void) {
554 static volatile gsize model_undo_manager_type_id__volatile = 0;
555 if (g_once_init_enter (&model_undo_manager_type_id__volatile)) {
556 static const GTypeValueTable g_define_type_value_table = { model_value_undo_manager_init, model_value_undo_manager_free_value, model_value_undo_manager_copy_value, model_value_undo_manager_peek_pointer, "p", model_value_undo_manager_collect_value, "p", model_value_undo_manager_lcopy_value };
557 static const GTypeInfo g_define_type_info = { sizeof (ModelUndoManagerClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) model_undo_manager_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ModelUndoManager), 0, (GInstanceInitFunc) model_undo_manager_instance_init, &g_define_type_value_table };
558 static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) };
559 GType model_undo_manager_type_id;
560 model_undo_manager_type_id = g_type_register_fundamental (g_type_fundamental_next (), "ModelUndoManager", &g_define_type_info, &g_define_type_fundamental_info, 0);
561 g_once_init_leave (&model_undo_manager_type_id__volatile, model_undo_manager_type_id);
563 return model_undo_manager_type_id__volatile;
567 gpointer model_undo_manager_ref (gpointer instance) {
568 ModelUndoManager* self;
570 g_atomic_int_inc (&self->ref_count);
575 void model_undo_manager_unref (gpointer instance) {
576 ModelUndoManager* self;
578 if (g_atomic_int_dec_and_test (&self->ref_count)) {
579 MODEL_UNDO_MANAGER_GET_CLASS (self)->finalize (self);
580 g_type_free_instance ((GTypeInstance *) self);