/simpletypesystem/trunk

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/simpletypesystem/trunk

« back to all changes in this revision

Viewing changes to libssts/Error.c

  • Committer: Gustav Hartvigsson
  • Date: 2015-10-25 19:56:39 UTC
  • Revision ID: gustav.hartvigsson@gmail.com-20151025195639-rd3fg4fg5a02v3bb
* Passing arguments can not be initialised from within a function...
* Started re-write of the SError tests.

Show diffs side-by-side

added added

removed removed

Lines of Context:
86
86
 ************************** SError ******************************************
87
87
 **************************************************************************** */
88
88
 
 
89
SError *
 
90
s_error_new (void) {
 
91
  SError * self = malloc (sizeof (SError));
 
92
  self->error_list = s_linked_list_new (FREEFUNC (_internal_s_error_domain_item_free));
 
93
  return self;
 
94
}
 
95
 
89
96
void
90
 
s_error_new (SError * self ,sint error, const char * message, SErrorDomain error_domain) {
 
97
s_error_append (SError * self ,sint error, const char * message, SErrorDomain error_domain) {
 
98
  assert (self != NULL);
91
99
  SErrorItem * item = malloc (sizeof (SErrorItem));
92
 
  if (!(self)) {
93
 
    self = malloc (sizeof (SError));
94
 
    self->error_list = s_linked_list_new (FREEFUNC (_internal_s_error_domain_item_free));
95
 
  }
96
100
 
97
101
  item->message = s_string_new (message);
98
102
  item->error_type = error;
103
107
 
104
108
SDynamicArray *
105
109
s_error_to_string_array (SError * self) {
106
 
  SDynamicArray * ret_val = s_dynamic_array_new (
107
 
    s_linked_list_len (self->error_list),
108
 
    FREEFUNC (_internal_s_error_domain_item_free));
 
110
  assert (self != NULL);
 
111
 
 
112
  size_t out_arr_len = s_linked_list_len (self->error_list);
 
113
 
 
114
  SDynamicArray * ret_val = s_dynamic_array_new (out_arr_len, NULL);
109
115
 
110
116
  s_linked_list_for_each (self->error_list,
111
117
                          FOREACHFUNC(_internal_s_error_list_for_each_item),
122
128
 
123
129
void
124
130
s_error_teardown () {
 
131
  s_dbg_print ("Taring down error system.");
125
132
  if (_internal_s_error_domain_list) {
126
133
    s_dynamic_array_free (_internal_s_error_domain_list, TRUE);
127
134
  }
 
135
  s_dbg_print ("Done taring down error system.");
128
136
}
129
137
 
130
138
 
143
151
  }
144
152
 
145
153
  if (!(_internal_s_error_domain_list)) {
 
154
    s_dbg_print ("Array does not exist, lets crete it!");
146
155
    _internal_s_error_domain_list =
147
156
          s_dynamic_array_new (S_ERROR_DOMAIN_RANGE_MAX,
148
157
          FREEFUNC (_internal_s_error_domain_item_free));
155
164
  }
156
165
 
157
166
  if (s_string_is_equal (name, "default")) {
 
167
    s_dbg_print ("Default error domain");
158
168
    if (to_string_func != s_default_error_domain_to_string) {
159
169
      s_err_print ("Trying to override the default error domain to string "
160
170
                   "callback.\n"
239
249
 
240
250
void
241
251
_internal_s_error_domain_item_free (SErrorDomainItem * self) {
 
252
  s_dbg_print ("Freeing name.");
242
253
  free (self->domain_name);
 
254
  s_dbg_print ("freeing self.");
243
255
  free (self);
 
256
  s_dbg_print ("Done.");
244
257
}
245
258
 
246
259
void
250
263
  SErrorDomainItem * domain_item = s_dynamic_array_get (
251
264
                                          _internal_s_error_domain_list,
252
265
                                          item->error_domain);
 
266
 
253
267
  SErrorDomainToString to_string_func = domain_item->to_string_func;
254
268
  s_dynamic_array_append (out_array, to_string_func (item->error_type,
255
269
                                                     item->message));