XROAD
props.h File Reference
#include <cache/xroad_objects_types.h>
#include <common/xroad_common_types.h>
#include <node/xroad_node_types.h>
#include <common/xroad_xml.h>
#include <common/xroad_time.h>
#include <cache/xroad_objects.h>
#include <json.h>
Include dependency graph for props.h:

Go to the source code of this file.

Classes

struct  props_callback_t
 
struct  props_create_args_t
 

Macros

#define props_create(...)
 
#define __props_dtor__   __dtor__(props_destructor)
 
#define __props_cursor_dtor__   __dtor__(props_cursor_destructor)
 
#define props_get(props, name, value, ...)
 
#define props_set(props, name, value)
 

Typedefs

typedef struct props_s props_t
 
typedef struct props_prop_s props_prop_t
 
typedef struct props_row_s props_row_t
 
typedef struct props_cursor_s props_cursor_t
 

Enumerations

enum  props_event_t { props_event_prop_changed = 1 , props_event_row_added = 2 , props_event_row_deleted = 3 }
 

Functions

props_t * props_create_ex (xroad_node_id_t node_id, xroad_errno_t *error, props_callback_t cback)
 
void props_destroy (props_t *props)
 
void props_destructor (props_t **props)
 
xroad_props_t * props_get_xprops (props_t *props)
 
props_prop_t * props_get_prop (void *obj, xroad_str_t name)
 
xroad_str_t props_get_error (props_t *props)
 
void * props_query (props_t *props, xroad_str_t query)
 
props_cursor_t * props_create_cursor (void *obj)
 
void props_destroy_cursor (props_cursor_t *cur)
 
void props_cursor_destructor (props_cursor_t **cur)
 
void * props_cursor_get_first (props_cursor_t *cur)
 
void * props_cursor_get_next (props_cursor_t *cur)
 
xroad_prop_type_t props_get_type (props_prop_t *prop)
 
xroad_str_t props_get_name (void *obj)
 
xroad_object_id_t props_get_id (void *obj)
 
xroad_str_t props_to_str (props_prop_t *prop)
 
int64_t props_get_int64 (props_prop_t *prop)
 
xroad_errno_t props_set_int64 (props_prop_t *prop, int64_t value)
 
double props_get_double (props_prop_t *prop)
 
xroad_errno_t props_set_double (props_prop_t *prop, double value)
 
xroad_str_t props_get_str (props_prop_t *prop)
 
xroad_errno_t props_set_str (props_prop_t *prop, xroad_str_t value)
 
xroad_time_t props_get_time (props_prop_t *prop)
 
xroad_errno_t props_set_time (props_prop_t *prop, xroad_time_t value)
 
bool props_get_bool (props_prop_t *prop)
 
xroad_errno_t props_set_bool (props_prop_t *prop, bool value)
 
xroad_errno_t props_add_link (props_prop_t *prop, xroad_prop_t *link, bool notify)
 
xroad_errno_t props_del_link (props_prop_t *prop)
 
bool props_has_link (props_prop_t *prop)
 
xroad_errno_t props_reset (props_prop_t *prop)
 
bool props_is_set (props_prop_t *prop)
 
bool props_is_row (void *obj)
 
xroad_errno_t props_notify (props_prop_t *prop)
 
xroad_errno_t props_calc_hash (props_prop_t *prop)
 
xroad_prop_t * props_get_xprop (void *prop)
 
xroad_prop_t * props_get_link (props_prop_t *prop)
 
int32_t props_get_row_count (props_prop_t *prop)
 
props_row_t * props_add_row (props_prop_t *prop)
 
props_row_t * props_get_row (props_prop_t *prop, xroad_object_id_t row_id)
 
xroad_errno_t props_row_delete (props_row_t *row)
 
void * props_get_parent (void *obj)
 
xroad_prop_row_t * props_row_get_xrow (props_row_t *row)
 
xroad_props_t * props_clone (props_t *props, xroad_node_id_t node_id)
 
json_object * props_get_descr (void *obj)
 
xroad_errno_t props_get_int8_by_name (void *obj, xroad_str_t name, int8_t *value,...)
 
xroad_errno_t props_get_int16_by_name (void *obj, xroad_str_t name, int16_t *value,...)
 
xroad_errno_t props_get_int32_by_name (void *obj, xroad_str_t name, int32_t *value,...)
 
xroad_errno_t props_get_int64_by_name (void *obj, xroad_str_t name, int64_t *value,...)
 
xroad_errno_t props_set_int64_by_name (void *obj, xroad_str_t name, int64_t value)
 
xroad_errno_t props_get_bool_by_name (void *obj, xroad_str_t name, bool *value,...)
 
xroad_errno_t props_set_bool_by_name (void *obj, xroad_str_t name, bool value)
 
xroad_errno_t props_get_double_by_name (void *obj, xroad_str_t name, double *value,...)
 
xroad_errno_t props_set_double_by_name (void *obj, xroad_str_t name, double value)
 
xroad_errno_t props_get_str_by_name (void *obj, xroad_str_t name, xroad_str_t *value,...)
 
xroad_errno_t props_set_str_by_name (void *obj, xroad_str_t name, xroad_str_t value)
 
xroad_errno_t props_get_time_by_name (void *obj, xroad_str_t name, xroad_time_t *value,...)
 
xroad_errno_t props_set_time_by_name (void *obj, xroad_str_t name, xroad_time_t value)
 

Detailed Description

Macro Definition Documentation

◆ props_create

#define props_create (   ...)
Value:
({ \
props_create_args_t args = {.node_id = 0, .error = NULL, .cback = {}, __VA_ARGS__}; \
props_create_ex(args.node_id, args.error, args.cback); \
})

◆ props_get

#define props_get (   props,
  name,
  value,
  ... 
)
Value:
_Generic((value), \
int16_t*: props_get_int16_by_name, \
int32_t*: props_get_int32_by_name, \
int64_t*: props_get_int64_by_name, \
)(props, name, value, ## __VA_ARGS__, NULL)
xroad_errno_t props_get_str_by_name(void *obj, xroad_str_t name, xroad_str_t *value,...)
xroad_errno_t props_get_bool_by_name(void *obj, xroad_str_t name, bool *value,...)
xroad_errno_t props_get_double_by_name(void *obj, xroad_str_t name, double *value,...)
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,...)
Definition: xroad_string.h:29
Definition: xroad_time.h:26

◆ props_set

#define props_set (   props,
  name,
  value 
)
Value:
_Generic((value), \
int64_t: props_set_int64_by_name, \
double: props_set_double_by_name, \
xroad_str_t: props_set_str_by_name, \
xroad_time_t: props_set_time_by_name, \
default: props_set_int64_by_name \
)(props, name, value)

Function Documentation

◆ props_add_link()

xroad_errno_t props_add_link ( props_prop_t *  prop,
xroad_prop_t *  link,
bool  notify 
)

link property with another one

Parameters
[in]prop- prop pointer
[in]link- new link value
[in]notify- notify, when value of link has changed
Returns
XROAD_OK if success, XROAD_FAILED otherwise

◆ props_add_row()

props_row_t* props_add_row ( props_prop_t *  prop)

prop add row

Parameters
[in]prop- prop to add row
Returns
row pointer, or NULL

◆ props_calc_hash()

xroad_errno_t props_calc_hash ( props_prop_t *  prop)

calculate hash

Parameters
[in]prop- property to calc hash
Returns
XROAD_OK - cleared

◆ props_clone()

xroad_props_t* props_clone ( props_t *  props,
xroad_node_id_t  node_id 
)

clone properties

Parameters
[in]props- properties to clone
[in]node_id- node to clone
Returns
new props instance, NULL - failed

◆ props_create_cursor()

props_cursor_t* props_create_cursor ( void *  obj)

creates cursor for enumerate props

Parameters
[in]obj- props, row or table prop pointer
Returns
cursor instance

◆ props_create_ex()

props_t* props_create_ex ( xroad_node_id_t  node_id,
xroad_errno_t *  error,
props_callback_t  cback 
)

create library instance

Parameters
[in]node_id- id ноды у которой есть app/props тэг. Если нужно создать свои свойства, то это поле можно не заполнять
[in]cback- prop change callback
[in]error- optional field. returns error of creation. XROAD_ERROR_NOT_FOUND - no properties found in config
Returns
library instance, NULL - in case of error (see error for details)

◆ props_cursor_get_first()

void* props_cursor_get_first ( props_cursor_t *  cur)

return first prop

Parameters
[in]cur- cursor
Returns
prop, or NULL

◆ props_cursor_get_next()

void* props_cursor_get_next ( props_cursor_t *  cur)

return next prop

Parameters
[in]cur- cursor
Returns
prop, or NULL at end

◆ props_del_link()

xroad_errno_t props_del_link ( props_prop_t *  prop)

unlink property

Parameters
[in]prop- prop pointer
Returns
XROAD_OK if success, XROAD_FAILED otherwise

◆ props_destroy()

void props_destroy ( props_t *  props)

destroys library instance

Parameters
[in]props- library instance to destroy. If NULL, nothing happened

◆ props_destroy_cursor()

void props_destroy_cursor ( props_cursor_t *  cur)

destroys cursor

Parameters
[in]cur- cursor to destroy

◆ props_get_bool()

bool props_get_bool ( props_prop_t *  prop)

gets prop value as boolean

Parameters
[in]prop- prop pointer
Returns
prop value as boolean

◆ props_get_bool_by_name()

xroad_errno_t props_get_bool_by_name ( void *  obj,
xroad_str_t  name,
bool *  value,
  ... 
)

get/set bool

Returns
XROAD_OK, XROAD_ERROR_NOT_FOUND is property not found

◆ props_get_descr()

json_object* props_get_descr ( void *  obj)

get property JSON description

Parameters
[in]obj- props, prop or prop_row
Returns
JSON description

◆ props_get_double()

double props_get_double ( props_prop_t *  prop)

gets prop value as double

Parameters
[in]prop- prop pointer
Returns
prop value as double

◆ props_get_double_by_name()

xroad_errno_t props_get_double_by_name ( void *  obj,
xroad_str_t  name,
double *  value,
  ... 
)

get/set double

Returns
XROAD_OK, XROAD_ERROR_NOT_FOUND is property not found

◆ props_get_error()

xroad_str_t props_get_error ( props_t *  props)

get error, if any

Parameters
[in]props- libraray instance
Returns
error description

◆ props_get_id()

xroad_object_id_t props_get_id ( void *  obj)

return prop id

Parameters
[in]obj- prop or row pointer
Returns
prop id

◆ props_get_int64()

int64_t props_get_int64 ( props_prop_t *  prop)

gets prop value as 64-bit integer

Parameters
[in]prop- prop pointer
Returns
prop value as integer

◆ props_get_int8_by_name()

xroad_errno_t props_get_int8_by_name ( void *  obj,
xroad_str_t  name,
int8_t *  value,
  ... 
)

get/set int8,16,32,64

Returns
XROAD_OK, XROAD_ERROR_NOT_FOUND is property not found

◆ props_get_link()

xroad_prop_t* props_get_link ( props_prop_t *  prop)

get cache prop object of link

Parameters
[in]prop- prop pointer
Returns
cache prop pointer for link, if prop has no link, NULL will be returned

◆ props_get_name()

xroad_str_t props_get_name ( void *  obj)

return prop or row name

Parameters
[in]prop- prop or row pointer
Returns
prop or row name. Row name is actually a parent row name

◆ props_get_parent()

void* props_get_parent ( void *  obj)

get parent prop or row

Parameters
[in]obj- prop or row
Returns
parent entity

◆ props_get_prop()

props_prop_t* props_get_prop ( void *  obj,
xroad_str_t  name 
)

gets prop

Parameters
[in]props- library or row instance
[in]name- prop name to find
Returns
prop instance, else NULL

◆ props_get_row()

props_row_t* props_get_row ( props_prop_t *  prop,
xroad_object_id_t  row_id 
)

get row by id

Parameters
[in]prop- table property
[in]row_id- id of row to return
Returns
row, if any, else NULL

◆ props_get_row_count()

int32_t props_get_row_count ( props_prop_t *  prop)

get row count for table prop

Parameters
[in]table- prop pointer
Returns
row count, < 0 - prop is not a table

◆ props_get_str()

xroad_str_t props_get_str ( props_prop_t *  prop)

gets prop value as string

Parameters
[in]props- prop pointer
Returns
prop value as string

◆ props_get_str_by_name()

xroad_errno_t props_get_str_by_name ( void *  obj,
xroad_str_t  name,
xroad_str_t value,
  ... 
)

get/set string

Returns
XROAD_OK, XROAD_ERROR_NOT_FOUND is property not found

◆ props_get_time()

xroad_time_t props_get_time ( props_prop_t *  prop)

gets prop value as time with timezone

Parameters
[in]prop- prop pointer
Returns
prop value as time with timezone

◆ props_get_time_by_name()

xroad_errno_t props_get_time_by_name ( void *  obj,
xroad_str_t  name,
xroad_time_t value,
  ... 
)

get/set time

Returns
XROAD_OK, XROAD_ERROR_NOT_FOUND is property not found

◆ props_get_type()

xroad_prop_type_t props_get_type ( props_prop_t *  prop)

gets prop type

Parameters
[in]prop- prop pointer
Returns
prop type

◆ props_get_xprop()

xroad_prop_t* props_get_xprop ( void *  prop)

get cache prop object

Parameters
[in]prop- prop pointer
Returns
cache prop pointer

◆ props_get_xprops()

xroad_props_t* props_get_xprops ( props_t *  props)

props returns xprops

Parameters
[in]params- params instance
Returns
xprops instance

◆ props_has_link()

bool props_has_link ( props_prop_t *  prop)

property is link

Parameters
[in]prop- prop pointer
Returns
true - link, else data property

◆ props_is_row()

bool props_is_row ( void *  obj)

check if prop is row

Parameters
[in]prop- prop
Returns
true - is row, else simple row

◆ props_is_set()

bool props_is_set ( props_prop_t *  prop)

check if prop is set

Parameters
[in]prop- prop
Returns
true - set, else false

◆ props_notify()

xroad_errno_t props_notify ( props_prop_t *  prop)

notify prop owner about changes

Parameters
[in]prop- changed prop XROAD_OK - notified, else failed

◆ props_query()

void* props_query ( props_t *  props,
xroad_str_t  query 
)

query for property @ppram[in] props - library instance

Parameters
[in]query- query path return property or row if found, NULL - not

◆ props_reset()

xroad_errno_t props_reset ( props_prop_t *  prop)

reset proprty value

Parameters
[in]prop- property to reset
Returns
XROAD_OK - property reset

◆ props_row_delete()

xroad_errno_t props_row_delete ( props_row_t *  row)

delete row

Parameters
[in]row- row to delete
Returns
XROAD_OK - deleted, else failed

◆ props_row_get_xrow()

xroad_prop_row_t* props_row_get_xrow ( props_row_t *  row)

get cache prop_row object

Parameters
[in]prop- prop row pointer
Returns
cache prop pointer

◆ props_set_bool()

xroad_errno_t props_set_bool ( props_prop_t *  prop,
bool  value 
)

sets prop value to boolean

Parameters
[in]props- prop pointer
[in]value- prop value
Returns
XROAD_OK if success, XROAD_FAILED otherwise

◆ props_set_double()

xroad_errno_t props_set_double ( props_prop_t *  prop,
double  value 
)

sets prop value to double

Parameters
[in]prop- prop pointer
[in]value- prop value
Returns
XROAD_OK if success, XROAD_FAILED otherwise

◆ props_set_int64()

xroad_errno_t props_set_int64 ( props_prop_t *  prop,
int64_t  value 
)

sets prop value to 64-bit integer

Parameters
[in]props- prop pointer
[in]value- prop value
Returns
XROAD_OK if success, XROAD_FAILED otherwise

◆ props_set_str()

xroad_errno_t props_set_str ( props_prop_t *  prop,
xroad_str_t  value 
)

sets prop value to string

Parameters
[in]prop- prop pointer
[in]value- prop value
Returns
XROAD_OK if success, XROAD_FAILED otherwise

◆ props_set_time()

xroad_errno_t props_set_time ( props_prop_t *  prop,
xroad_time_t  value 
)

sets prop value to time with timezone

Parameters
[in]props- prop pointer
[in]value- prop value
Returns
XROAD_OK if success, XROAD_FAILED otherwise

◆ props_to_str()

xroad_str_t props_to_str ( props_prop_t *  prop)

convert prop value to string

Parameters
[in]prop- prop pointer
Returns
prop string representation