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);
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)
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)
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.
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_trans_init(amxd_trans_t *const trans)
Initializes a transaction object.