80 amxc_var_for_each(r, result) {
81 const char* path = amxc_var_key(r);
82 amxc_var_t* updated_params = GET_ARG(retval, path);
84 if(updated_params == NULL) {
85 updated_params = amxc_var_add_key(amxc_htable_t, retval, path, NULL);
87 amxc_var_for_each(param, GET_ARG(r,
"parameters")) {
88 const char* param_name = amxc_var_key(param);
89 amxc_var_take_it(param);
91 if(!GET_BOOL(param,
"required") ||
92 (amxc_var_type_of(param) != AMXC_VAR_ID_HTABLE)) {
93 amxc_var_delete(¶m);
97 amxc_var_set_key(updated_params, param_name, param, AMXC_VAR_FLAG_DEFAULT);
99 if(amxc_htable_is_empty(amxc_var_constcast(amxc_htable_t, updated_params))) {
100 amxc_var_delete(&updated_params);
110 amxc_var_t* var_rel_path = GET_ARG(args,
"rel_path");
111 const char* rel_path = GET_CHAR(var_rel_path, NULL);
118 amxc_llist_init(&paths);
119 amxc_var_set_type(ret, AMXC_VAR_ID_HTABLE);
121 amxc_var_take_it(var_rel_path);
122 if((rel_path != NULL) && (*rel_path != 0)) {
124 when_failed(retval, exit);
125 if(amxc_llist_is_empty(&paths)) {
129 amxc_llist_for_each(it, (&paths)) {
130 amxc_string_t* path = amxc_string_from_llist_it(it);
140 if((rel_path != NULL) && (*rel_path != 0)) {
142 amxc_llist_for_each(it, (&paths)) {
143 amxc_var_t* result = GETI_ARG(&transaction.
retvals, index);
148 amxc_var_t* result = GETI_ARG(&transaction.
retvals, 1);
152 if(amxc_htable_is_empty(amxc_var_constcast(amxc_htable_t, ret))) {
153 amxc_var_set_type(ret, AMXC_VAR_ID_NULL);
157 amxc_var_delete(&var_rel_path);
158 amxc_llist_clean(&paths, amxc_string_list_it_free);
Ambiorix Data Model API header file.
amxd_object_t * amxd_dm_findf(amxd_dm_t *const dm, const char *abs_path,...) __attribute__((format(printf
void PRIVATE amxd_def_funcs_remove_args(amxc_var_t *args)
amxd_status_t amxd_object_func_set(amxd_object_t *object, UNUSED amxd_function_t *func, amxc_var_t *args, amxc_var_t *ret)
static void amxd_add_result(amxc_var_t *result, amxc_var_t *retval, amxd_status_t status)
static void amxd_add_set(amxd_object_t *object, amxd_trans_t *transaction, amxc_var_t *args)
Ambiorix Data Model API header file.
Ambiorix path API header file.
Ambiorix Data Model API header file.
enum _amxd_status amxd_status_t
@ amxd_status_object_not_found
@ amxd_status_unknown_error
amxd_dm_t * amxd_object_get_dm(const amxd_object_t *const object)
Get the data model.
amxd_object_t amxd_status_t amxd_object_resolve_pathf(amxd_object_t *object, amxc_llist_t *paths, const char *rel_path,...) __attribute__((format(printf
Resolves a search path into a list of matching object paths.
amxd_status_t amxd_trans_add_action(amxd_trans_t *const trans, const amxd_action_t reason, const amxc_var_t *data)
Adds an action to a transaction.
void amxd_trans_clean(amxd_trans_t *const trans)
Cleans the transaction object.
amxd_status_t amxd_trans_apply(amxd_trans_t *const trans, amxd_dm_t *const dm)
Applies all previously added actions.
amxd_status_t amxd_status_t amxd_trans_select_object(amxd_trans_t *trans, const amxd_object_t *const object)
Selects an object using an object pointer.
amxd_status_t amxd_trans_init(amxd_trans_t *const trans)
Initializes a transaction object.
static amxd_status_t status