XROAD
props.h
Go to the documentation of this file.
1 
6 #pragma once
7 
10 #include <node/xroad_node_types.h>
11 #include <common/xroad_xml.h>
12 #include <common/xroad_time.h>
13 #include <cache/xroad_objects.h>
14 #include <json.h>
15 
16 #ifdef __cplusplus
17 extern "C"
18 {
19 #endif
20 
21 typedef struct props_s props_t;
22 typedef struct props_prop_s props_prop_t;
23 typedef struct props_row_s props_row_t;
24 typedef struct props_cursor_s props_cursor_t;
25 
26 typedef enum
27 {
28  props_event_prop_changed = 1,
29  props_event_row_added = 2,
30  props_event_row_deleted = 3
31 } props_event_t;
32 
33 typedef struct
34 {
35  void* ctx;
36  void (*on_props_event)(props_t*, props_event_t, void*, void*);
38 
39 typedef struct
40 {
41  xroad_node_id_t node_id;
42  xroad_errno_t* error;
43  props_callback_t cback;
45 
46 #define props_create(...) \
47 ({ \
48  props_create_args_t args = {.node_id = 0, .error = NULL, .cback = {}, __VA_ARGS__}; \
49  props_create_ex(args.node_id, args.error, args.cback); \
50 })
51 
60 props_t* props_create_ex(xroad_node_id_t node_id, xroad_errno_t* error, props_callback_t cback);
61 
66 void props_destroy(props_t* props);
67 
68 #define __props_dtor__ __dtor__(props_destructor)
69 void props_destructor(props_t** props);
70 
76 xroad_props_t* props_get_xprops(props_t* props);
77 
84 props_prop_t* props_get_prop(void* obj, xroad_str_t name);
85 
91 xroad_str_t props_get_error(props_t* props);
92 
99 void* props_query(props_t* props, xroad_str_t query);
100 
106 props_cursor_t* props_create_cursor(void* obj);
107 
112 void props_destroy_cursor(props_cursor_t* cur);
113 
114 #define __props_cursor_dtor__ __dtor__(props_cursor_destructor)
115 void props_cursor_destructor(props_cursor_t** cur);
116 
122 void* props_cursor_get_first(props_cursor_t* cur);
123 
129 void* props_cursor_get_next(props_cursor_t* cur);
130 
136 xroad_prop_type_t props_get_type(props_prop_t* prop);
137 
144 
150 xroad_object_id_t props_get_id(void* obj);
151 
157 xroad_str_t props_to_str(props_prop_t* prop);
158 
164 int64_t props_get_int64(props_prop_t* prop);
165 
172 xroad_errno_t props_set_int64(props_prop_t* prop, int64_t value);
173 
179 double props_get_double(props_prop_t* prop);
180 
187 xroad_errno_t props_set_double(props_prop_t* prop, double value);
188 
194 xroad_str_t props_get_str(props_prop_t* prop);
195 
202 xroad_errno_t props_set_str(props_prop_t* prop, xroad_str_t value);
203 
209 xroad_time_t props_get_time(props_prop_t* prop);
210 
217 xroad_errno_t props_set_time(props_prop_t* prop, xroad_time_t value);
218 
224 bool props_get_bool(props_prop_t* prop);
225 
232 xroad_errno_t props_set_bool(props_prop_t* prop, bool value);
233 
241 xroad_errno_t props_add_link(props_prop_t* prop, xroad_prop_t* link, bool notify);
242 
248 xroad_errno_t props_del_link(props_prop_t* prop);
249 
255 bool props_has_link(props_prop_t* prop);
256 
262 xroad_errno_t props_reset(props_prop_t* prop);
263 
269 bool props_is_set(props_prop_t* prop);
270 
276 bool props_is_row(void* obj);
277 
283 xroad_errno_t props_notify(props_prop_t* prop);
284 
290 xroad_errno_t props_calc_hash(props_prop_t* prop);
291 
297 xroad_prop_t* props_get_xprop(void* prop);
298 
304 xroad_prop_t* props_get_link(props_prop_t* prop);
305 
311 int32_t props_get_row_count(props_prop_t* prop);
312 
318 props_row_t* props_add_row(props_prop_t* prop);
319 
326 props_row_t* props_get_row(props_prop_t* prop, xroad_object_id_t row_id);
327 
333 xroad_errno_t props_row_delete(props_row_t* row);
334 
340 void* props_get_parent(void* obj);
341 
347 xroad_prop_row_t* props_row_get_xrow(props_row_t* row);
348 
355 xroad_props_t* props_clone(props_t* props, xroad_node_id_t node_id);
356 
362 json_object* props_get_descr(void* obj);
363 
364 #ifdef __cplusplus
365 }
366 #endif
367 
368 //**************************************************************************************
369 // helper for set/get property by one line
370 //*************************************************************************************
371 
372 #ifdef __cplusplus
373 
374 template<typename value_type_t>
375 xroad_errno_t props_get(void* obj, xroad_str_t name, value_type_t* value, props_prop_t** prop = NULL);
376 
377 xroad_errno_t props_set(void* obj, xroad_str_t name, int64_t value);
378 
379 xroad_errno_t props_get(void* obj, xroad_str_t name, double* value, props_prop_t** prop = NULL);
380 
381 xroad_errno_t props_set(void* obj, xroad_str_t name, double value);
382 
383 xroad_errno_t props_get(void* obj, xroad_str_t name, xroad_str_t* value, props_prop_t** prop = NULL);
384 
385 xroad_errno_t props_set(void* obj, xroad_str_t name, xroad_str_t value);
386 
387 xroad_errno_t props_get(void* obj, xroad_str_t name, xroad_time_t* value, props_prop_t** prop = NULL);
388 
389 xroad_errno_t props_set(void* obj, xroad_str_t name, xroad_time_t value);
390 
391 xroad_errno_t props_get(void* obj, xroad_str_t name, bool* value, props_prop_t** prop = NULL);
392 
393 xroad_errno_t props_set(void* obj, xroad_str_t name, bool value);
394 
395 #else
396 
401 xroad_errno_t props_get_int8_by_name(void* obj, xroad_str_t name, int8_t* value, ...);
402 
403 xroad_errno_t props_get_int16_by_name(void* obj, xroad_str_t name, int16_t* value, ...);
404 
405 xroad_errno_t props_get_int32_by_name(void* obj, xroad_str_t name, int32_t* value, ...);
406 
407 xroad_errno_t props_get_int64_by_name(void* obj, xroad_str_t name, int64_t* value, ...);
408 
409 xroad_errno_t props_set_int64_by_name(void* obj, xroad_str_t name, int64_t value);
410 
415 xroad_errno_t props_get_bool_by_name(void* obj, xroad_str_t name, bool* value, ...);
416 
417 xroad_errno_t props_set_bool_by_name(void* obj, xroad_str_t name, bool value);
422 xroad_errno_t props_get_double_by_name(void* obj, xroad_str_t name, double* value, ...);
423 
424 xroad_errno_t props_set_double_by_name(void* obj, xroad_str_t name, double value);
425 
430 xroad_errno_t props_get_str_by_name(void* obj, xroad_str_t name, xroad_str_t* value, ...);
431 
432 xroad_errno_t props_set_str_by_name(void* obj, xroad_str_t name, xroad_str_t value);
433 
438 xroad_errno_t props_get_time_by_name(void* obj, xroad_str_t name, xroad_time_t* value, ...);
439 
440 xroad_errno_t props_set_time_by_name(void* obj, xroad_str_t name, xroad_time_t value);
441 
442 #define props_get(props, name, value, ...) _Generic((value), \
443  bool*: props_get_bool_by_name, \
444  int8_t*: props_get_int8_by_name, \
445  int16_t*: props_get_int16_by_name, \
446  int32_t*: props_get_int32_by_name, \
447  int64_t*: props_get_int64_by_name, \
448  double*: props_get_double_by_name, \
449  xroad_str_t*: props_get_str_by_name, \
450  xroad_time_t*: props_get_time_by_name \
451  )(props, name, value, ## __VA_ARGS__, NULL)
452 
453 #define props_set(props, name, value) _Generic((value), \
454  int64_t: props_set_int64_by_name, \
455  double: props_set_double_by_name, \
456  xroad_str_t: props_set_str_by_name, \
457  xroad_time_t: props_set_time_by_name, \
458  default: props_set_int64_by_name \
459  )(props, name, value)
460 
461 #endif // __cplusplus
xroad_errno_t props_set_double(props_prop_t *prop, double value)
xroad_errno_t props_get_str_by_name(void *obj, xroad_str_t name, xroad_str_t *value,...)
bool props_is_set(props_prop_t *prop)
void * props_query(props_t *props, xroad_str_t query)
xroad_errno_t props_reset(props_prop_t *prop)
xroad_errno_t props_notify(props_prop_t *prop)
props_prop_t * props_get_prop(void *obj, xroad_str_t name)
bool props_is_row(void *obj)
xroad_str_t props_to_str(props_prop_t *prop)
bool props_has_link(props_prop_t *prop)
xroad_prop_t * props_get_link(props_prop_t *prop)
xroad_errno_t props_set_int64(props_prop_t *prop, int64_t value)
void props_destroy(props_t *props)
xroad_errno_t props_set_bool(props_prop_t *prop, bool value)
xroad_errno_t props_del_link(props_prop_t *prop)
xroad_errno_t props_get_bool_by_name(void *obj, xroad_str_t name, bool *value,...)
xroad_prop_type_t props_get_type(props_prop_t *prop)
xroad_props_t * props_clone(props_t *props, xroad_node_id_t node_id)
xroad_object_id_t props_get_id(void *obj)
xroad_prop_t * props_get_xprop(void *prop)
xroad_errno_t props_set_time(props_prop_t *prop, xroad_time_t value)
xroad_errno_t props_get_double_by_name(void *obj, xroad_str_t name, double *value,...)
int64_t props_get_int64(props_prop_t *prop)
xroad_prop_row_t * props_row_get_xrow(props_row_t *row)
props_cursor_t * props_create_cursor(void *obj)
props_t * props_create_ex(xroad_node_id_t node_id, xroad_errno_t *error, props_callback_t cback)
xroad_str_t props_get_name(void *obj)
xroad_time_t props_get_time(props_prop_t *prop)
xroad_props_t * props_get_xprops(props_t *props)
void * props_cursor_get_first(props_cursor_t *cur)
json_object * props_get_descr(void *obj)
props_row_t * props_get_row(props_prop_t *prop, xroad_object_id_t row_id)
xroad_errno_t props_get_time_by_name(void *obj, xroad_str_t name, xroad_time_t *value,...)
xroad_errno_t props_get_int8_by_name(void *obj, xroad_str_t name, int8_t *value,...)
xroad_errno_t props_add_link(props_prop_t *prop, xroad_prop_t *link, bool notify)
xroad_str_t props_get_error(props_t *props)
bool props_get_bool(props_prop_t *prop)
xroad_str_t props_get_str(props_prop_t *prop)
xroad_errno_t props_row_delete(props_row_t *row)
void * props_get_parent(void *obj)
void * props_cursor_get_next(props_cursor_t *cur)
props_row_t * props_add_row(props_prop_t *prop)
int32_t props_get_row_count(props_prop_t *prop)
xroad_errno_t props_set_str(props_prop_t *prop, xroad_str_t value)
xroad_errno_t props_calc_hash(props_prop_t *prop)
double props_get_double(props_prop_t *prop)
void props_destroy_cursor(props_cursor_t *cur)
Definition: props.h:34
Definition: props.h:40
Definition: xroad_string.h:29
Definition: xroad_time.h:26
CAUTION: do not change this file - it is autogenerated.
CAUTION: do not change this file - it is autogenerated.