1 | #include "resource-holder.h" |
---|---|
2 | |
3 | struct _ResourceHolder { |
4 | GObject instance; |
5 | |
6 | char *name; |
7 | char *path; |
8 | int count; |
9 | gsize size; |
10 | GListModel *children; |
11 | ResourceHolder *parent; |
12 | }; |
13 | |
14 | G_DEFINE_TYPE (ResourceHolder, resource_holder, G_TYPE_OBJECT) |
15 | |
16 | static void |
17 | resource_holder_init (ResourceHolder *holder) |
18 | { |
19 | } |
20 | |
21 | static void |
22 | resource_holder_finalize (GObject *object) |
23 | { |
24 | ResourceHolder *holder = RESOURCE_HOLDER (ptr: object); |
25 | |
26 | g_free (mem: holder->name); |
27 | g_free (mem: holder->path); |
28 | g_clear_object (&holder->children); |
29 | |
30 | G_OBJECT_CLASS (resource_holder_parent_class)->finalize (object); |
31 | } |
32 | |
33 | static void |
34 | resource_holder_class_init (ResourceHolderClass *class) |
35 | { |
36 | GObjectClass *object_class = G_OBJECT_CLASS (class); |
37 | |
38 | object_class->finalize = resource_holder_finalize; |
39 | } |
40 | |
41 | ResourceHolder * |
42 | resource_holder_new (const char *name, |
43 | const char *path, |
44 | int count, |
45 | gsize size, |
46 | GListModel *children) |
47 | { |
48 | ResourceHolder *holder; |
49 | |
50 | holder = g_object_new (RESOURCE_TYPE_HOLDER, NULL); |
51 | |
52 | holder->name = g_strdup (str: name); |
53 | holder->path = g_strdup (str: path); |
54 | holder->count = count; |
55 | holder->size = size; |
56 | g_set_object (&holder->children, children); |
57 | |
58 | if (children) |
59 | { |
60 | int i; |
61 | for (i = 0; i < g_list_model_get_n_items (list: children); i++) |
62 | { |
63 | ResourceHolder *child = g_list_model_get_item (list: children, position: i); |
64 | child->parent = holder; |
65 | g_object_unref (object: child); |
66 | } |
67 | } |
68 | |
69 | return holder; |
70 | } |
71 | |
72 | const char * |
73 | resource_holder_get_name (ResourceHolder *holder) |
74 | { |
75 | return holder->name; |
76 | } |
77 | |
78 | const char * |
79 | resource_holder_get_path (ResourceHolder *holder) |
80 | { |
81 | return holder->path; |
82 | } |
83 | |
84 | int |
85 | resource_holder_get_count (ResourceHolder *holder) |
86 | { |
87 | return holder->count; |
88 | } |
89 | |
90 | gsize |
91 | resource_holder_get_size (ResourceHolder *holder) |
92 | { |
93 | return holder->size; |
94 | } |
95 | |
96 | GListModel * |
97 | resource_holder_get_children (ResourceHolder *holder) |
98 | { |
99 | return holder->children; |
100 | } |
101 | |
102 | ResourceHolder * |
103 | resource_holder_get_parent (ResourceHolder *holder) |
104 | { |
105 | return holder->parent; |
106 | } |
107 |