34
37
s_object_set_class (S_OBJECT (self), S_OBJECT_CLASS (klass));
35
38
s_object_set_free_method (S_OBJECT (self), FREE_METHOD (s_method_box_free));
41
s_box_new_pointer (spointer object);
44
s_box_new_sobject (SObject * object);
47
s_box_new_int (int i);
50
s_box_new_long (long l);
53
s_box_new_short (short s);
56
s_box_new_char (char c);
59
s_box_new_wchar (wchar_t wc);
62
s_box_new_uint (unsigned int ui);
65
s_box_new_ulong (long l);
68
s_box_new_ushort (short s);
71
s_box_new_string (char * s);
74
s_box_new_wstring (wchar_t * ws);
40
self->priv->free_func = NULL;
46
s_box_new_pointer (spointer object) {
47
SBox * self = internal_s_box_new ();
48
self->priv->data.m_ptr = object;
49
self->priv->object_type = S_TYPE_POINTER;
55
s_box_new_sobject (SObject * object) {
56
SBox * self = internal_s_box_new ();
57
self->priv->data.m_sobject = object;
58
self->priv->object_type = S_TYPE_OBJECT;
64
s_box_new_int (int i) {
65
SBox * self = internal_s_box_new ();
66
self->priv->data.m_int = i;
67
self->priv->object_type = S_TYPE_INT;
73
s_box_new_long (long l) {
74
SBox * self = internal_s_box_new ();
75
self->priv->data.m_long = l;
76
self->priv->object_type = S_TYPE_LONG;
82
s_box_new_short (short s) {
83
SBox * self = internal_s_box_new ();
84
self->priv->data.m_short = s;
85
self->priv->object_type = S_TYPE_SHORT;
91
s_box_new_char (char c) {
92
SBox * self = internal_s_box_new ();
93
self->priv->data.m_char = c;
94
self->priv->object_type = S_TYPE_CHAR;
100
s_box_new_wchar (wchar_t wc) {
101
SBox * self = internal_s_box_new ();
102
self->priv->data.m_wchar = wc;
103
self->priv->object_type = S_TYPE_WCHAR;
109
s_box_new_uint (unsigned int ui) {
110
SBox * self = internal_s_box_new ();
111
self->priv->data.m_uint = ui;
112
self->priv->object_type = S_TYPE_UINT;
119
s_box_new_ulong (unsigned long ul) {
120
SBox * self = internal_s_box_new ();
121
self->priv->data.m_ulong = ul;
122
self->priv->object_type = S_TYPE_ULONG;
128
s_box_new_ushort (unsigned short us) {
129
SBox * self = internal_s_box_new ();
130
self->priv->data.m_ushort = us;
131
self->priv->object_type = S_TYPE_USHORT;
137
s_box_new_string (char * s) {
138
SBox * self = internal_s_box_new ();
139
self->priv->data.m_string = s;
140
self->priv->object_type = S_TYPE_STRING;
146
s_box_new_wstring (wchar_t * ws) {
147
SBox * self = internal_s_box_new ();
148
self->priv->data.m_wstring = ws;
149
self->priv->object_type = S_TYPE_WSTRING;
77
155
s_box_free (SBox * self) {
82
160
s_box_set_free_data_on_free (SBox * self, sboolean free_data) {
161
self->priv->free_data = free_data;
87
165
s_box_set_free_func (SBox * self, FreeFunc free_func) {
88
SBoxClass * klass = S_BOX_CLASS (s_object_get_class(S_OBJECT (self)));
89
klass->free_func = free_func;
166
self->priv->free_func = free_func;
171
s_box_get_pointer (SBox * self);
175
s_box_get_sobject (SBox * self);
179
s_box_get_int (SBox * self);
183
s_box_get_long (SBox * self);
187
s_box_get_short (SBox * self);
191
s_box_get_char (SBox * self);
195
s_box_get_wchar (SBox * self);
198
s_box_get_uint (SBox * self);
201
s_box_get_ulong (SBox * self);
204
s_box_get_ushort (SBox * self);
207
s_box_get_string (SBox * self);
210
s_box_get_wstring (SBox * self);
93
213
s_method_box_free (SBox * self) {
94
214
SBoxClass * klass = S_BOX_CLASS (s_object_get_class(S_OBJECT(self)));
96
216
SBoxPrivate * priv = self->priv;
98
FreeFunc free_func = klass->free_func;
218
FreeFunc free_func = priv->free_func;
100
220
if (priv->free_data) {
101
221
switch (priv->object_type) {
102
222
case S_TYPE_OBJECT:
103
s_object_free (priv->m_sobject);
223
s_object_free (priv->data.m_sobject);
105
225
case S_TYPE_POINTER:
107
free_func (priv->m_ptr);
227
free_func (priv->data.m_ptr);
229
free (priv->data.m_ptr);
112
232
case S_TYPE_STRING:
113
free (priv->m_string);
233
free (priv->data.m_string);
115
235
case S_TYPE_WSTRING:
116
free (priv->m_wstring);
236
free (priv->data.m_wstring);
119
239
s_warn_print ("[SBox] free_data was set despite not being an object"