57 #include <amxc/amxc.h>
58 #include <amxp/amxp.h>
72 when_true(amxc_llist_is_empty(names), exit);
74 if(amxc_string_is_empty(filter)) {
75 amxc_string_appendf(filter,
"name in [ ");
77 amxc_string_appendf(filter,
" && name in [");
80 amxc_llist_iterate(it, names) {
81 amxc_var_t* var_name = amxc_var_from_llist_it(it);
82 const char* str_name = amxc_var_constcast(cstring_t, var_name);
83 amxc_string_appendf(filter,
"%s'%s' ", sep, str_name);
87 amxc_string_appendf(filter,
"]");
96 when_str_empty(name, exit)
98 amxc_var_for_each(param, params) {
99 const char* param_name = GET_CHAR(param, NULL);
100 if((param_name != NULL) && (strcmp(name, param_name) == 0)) {
111 const amxc_llist_t* names) {
113 amxc_var_t obj_params;
115 amxc_var_init(&obj_params);
116 when_true(amxc_llist_is_empty(names), exit);
119 amxc_llist_iterate(it, names) {
120 amxc_var_t* var_name = amxc_var_from_llist_it(it);
121 const char* str_name = amxc_var_constcast(cstring_t, var_name);
129 amxc_var_clean(&obj_params);
134 static const char* attr_name[] = {
147 const char* sep =
"";
148 if(!amxc_string_is_empty(filter)) {
154 amxc_string_appendf(filter,
"%sattributes.%s == true", sep, attr_name[i]);
164 const char* expression,
165 amxc_var_t*
const retval) {
168 amxc_var_t description;
170 amxp_expr_status_t expr_status = amxp_expr_status_ok;
172 amxc_var_init(&description);
173 amxc_var_set_type(retval, AMXC_VAR_ID_HTABLE);
174 amxc_var_init(&args);
175 amxc_var_set_type(&args, AMXC_VAR_ID_HTABLE);
177 if(expression != NULL) {
178 when_failed(amxp_expr_init(&expr, expression), exit);
181 amxc_var_add_key(uint32_t, &args,
"access", access);
182 amxc_var_add_key(
bool, &args,
"no-param-value",
true);
184 amxc_llist_for_each(it, (&object->
parameters)) {
188 amxc_var_t* value = NULL;
200 if(((attributes & param_attrs) == 0) && (param_attrs != 0)) {
203 if(params && !in_filter_list) {
206 if(expression != NULL) {
208 if(amxp_expr_eval_var(&expr, &description, &expr_status)) {
209 value = amxc_var_add_new_key(retval, name);
212 if(expr_status != amxp_expr_status_ok) {
217 value = amxc_var_add_new_key(retval, name);
225 if(expression != NULL) {
226 amxp_expr_clean(&expr);
228 amxc_var_clean(&description);
229 amxc_var_clean(&args);
234 const amxc_var_t* args) {
236 amxc_var_t* temp = NULL;
237 const char* f = GET_CHAR(args,
"filter");
239 if((f != NULL) && (*f != 0)) {
240 amxc_string_setf(filter,
"%s", f);
244 temp = GET_ARG(args,
"parameters");
245 when_true_status(!amxc_var_is_null(temp) && amxc_var_type_of(temp) != AMXC_VAR_ID_LIST,
252 temp = GET_ARG(args,
"attributes");
264 const amxc_var_t*
const args,
265 amxc_var_t*
const retval,
269 const char* f = GET_CHAR(args,
"filter");
270 amxc_var_t* params = NULL;
271 uint32_t attributes = 0;
272 amxc_var_t* temp = NULL;
274 when_null(
object, exit);
275 when_null(retval, exit);
280 when_true_status(!amxc_var_is_null(args) &&
281 amxc_var_type_of(args) != AMXC_VAR_ID_HTABLE,
290 params = GET_ARG(args,
"parameters");
291 when_true_status(!amxc_var_is_null(params) && amxc_var_type_of(params) != AMXC_VAR_ID_LIST,
294 if(amxc_llist_is_empty(amxc_var_constcast(amxc_llist_t, params))) {
298 amxc_var_constcast(amxc_llist_t, params));
299 when_failed(
status, exit);
302 temp = GET_ARG(args,
"attributes");
303 attributes = temp == NULL? 0xFFFFFFFF : GET_UINT32(temp, NULL);
309 amxc_var_clean(retval);
315 amxc_var_t*
const params,
320 amxc_var_init(&args);
321 when_null(
object, exit);
322 when_null(params, exit);
324 amxc_var_set_type(&args, AMXC_VAR_ID_HTABLE);
325 amxc_var_add_key(uint32_t, &args,
"access", access);
333 amxc_var_clean(&args);
338 amxc_var_t*
const params,
344 amxc_var_init(&args);
345 when_null(
object, exit);
346 when_null(params, exit);
348 amxc_var_set_type(&args, AMXC_VAR_ID_HTABLE);
349 amxc_var_add_key(uint32_t, &args,
"access", access);
350 amxc_var_add_key(uint32_t, &args,
"attributes", attrs);
358 amxc_var_clean(&args);
363 amxc_var_t*
const params,
369 amxc_var_init(&args);
370 when_null(
object, exit);
372 amxc_var_set_type(&args, AMXC_VAR_ID_HTABLE);
373 amxc_var_add_key(uint32_t, &args,
"access", access);
375 amxc_var_add_key(cstring_t, &args,
"filter", filter);
384 amxc_var_clean(&args);
389 amxc_var_t*
const params,
Ambiorix Data Model Default actions header file.
static amxd_status_t amxd_action_object_read_check_params(amxd_object_t *object, const amxc_llist_t *names)
static bool amxd_action_parameter_is_in(const char *name, amxc_var_t *params)
amxd_status_t amxd_object_get_params_filtered(amxd_object_t *const object, amxc_var_t *const params, const char *filter, amxd_dm_access_t access)
amxd_status_t amxd_object_get_params_with_attr(amxd_object_t *const object, amxc_var_t *const params, uint32_t attrs, amxd_dm_access_t access)
static amxd_status_t amxd_action_get_values(amxd_object_t *const object, amxd_dm_access_t access, uint32_t attributes, amxc_var_t *params, const char *expression, amxc_var_t *const retval)
amxd_status_t amxd_action_object_read(amxd_object_t *const object, UNUSED amxd_param_t *const p, amxd_action_t reason, const amxc_var_t *const args, amxc_var_t *const retval, UNUSED void *priv)
amxd_status_t amxd_action_object_read_filter(amxc_string_t *filter, const amxc_var_t *args)
amxd_status_t amxd_object_get_key_params(amxd_object_t *const object, amxc_var_t *const params, amxd_dm_access_t access)
static void filter_add_attributes(amxc_string_t *filter, uint32_t attrs)
static void filter_add_params(amxc_string_t *filter, const amxc_llist_t *names)
Ambiorix Data Model API header file.
amxd_status_t amxd_dm_invoke_action(amxd_object_t *object, amxd_param_t *param, amxd_action_t reason, const amxc_var_t *const args, amxc_var_t *const retval)
Ambiorix Data Model API header file.
bool amxd_action_verify_access(amxd_object_t *object, amxd_dm_access_t access)
bool amxd_action_can_add_param(uint32_t param_attrs, const amxd_object_type_t type, amxd_dm_access_t access, bool template_info)
amxd_status_t amxd_object_list_params(amxd_object_t *const object, amxc_var_t *const list, amxd_dm_access_t access)
const char * amxd_param_get_name(const amxd_param_t *const param)
uint32_t amxd_param_get_attrs(const amxd_param_t *const param)
enum _amxd_action amxd_action_t
enum _amxd_status amxd_status_t
@ amxd_status_parameter_not_found
@ amxd_status_function_not_implemented
@ amxd_status_object_not_found
@ amxd_status_invalid_function_argument
@ amxd_status_unknown_error
enum _amxd_dm_access amxd_dm_access_t
Access level.
amxd_status_t amxd_object_get_params(amxd_object_t *const object, amxc_var_t *const params, amxd_dm_access_t access)
Gets all parameter values of an object.
static amxd_object_type_t amxd_object_get_type(const amxd_object_t *const object)
Returns the object type.
static amxd_status_t status