74 amxc_var_t* default_value) {
77 amxc_llist_it_init(&arg->
it);
79 if((type == AMXC_VAR_ID_ANY) ||
80 ( amxc_var_get_type(type) != NULL)) {
81 arg->
name = strdup(name);
82 if(arg->
name != NULL) {
99 uint32_t attributes = 0;
110 const uint32_t attr) {
121 amxc_llist_for_each(it, (&func->
args)) {
123 if(strcmp(arg->
name, name) == 0) {
133 amxc_llist_it_take(&arg->
it);
143 amxc_var_t* default_value) {
146 when_null(func, exit);
154 when_null(arg, exit);
159 amxc_llist_append(&func->
args, &arg->
it);
170 when_null(func, exit);
171 when_str_empty(name, exit);
174 when_null(arg, exit);
190 when_null(func, exit);
197 when_null(arg, exit);
202 ( arg->
type == AMXC_VAR_ID_ANY)) {
208 flags |= (1 << attr);
210 flags &= ~(1 << attr);
222 const uint32_t bitmask,
233 when_null(func, exit);
237 when_null(arg, exit);
242 ( arg->
type == AMXC_VAR_ID_ANY)) {
266 when_null(func, exit);
270 when_null(arg, exit);
272 retval = (flags & (1 << attr)) != 0 ? true :
false;
279 amxc_var_t*
const value) {
281 amxc_var_t* table = NULL;
283 static const char* attr_name[] = {
290 when_null(arg, exit);
291 when_null(value, exit);
293 amxc_var_set_type(value, AMXC_VAR_ID_HTABLE);
294 amxc_var_add_key(cstring_t, value,
"name", arg->
name);
295 amxc_var_add_key(uint32_t, value,
"type_id", arg->
type);
296 amxc_var_add_key(cstring_t,
299 amxc_var_get_type_name_from_id(arg->
type));
301 amxc_var_set_key(value,
"default", &arg->
default_value, AMXC_VAR_FLAG_COPY);
303 table = amxc_var_add_key(amxc_htable_t, value,
"attributes", NULL);
306 bool is_set = (attrs & (1 << i)) != 0 ? true :
false;
307 amxc_var_add_key(
bool,
Ambiorix Data Model RPC methods API header file.
static bool amxd_function_arg_valid_name(amxd_function_t *func, const char *name)
static amxd_status_t amxd_function_arg_init(amxd_func_arg_t *const arg, const char *name, uint32_t type, amxc_var_t *default_value)
static uint32_t amxd_function_arg_get_attributes(const amxd_func_arg_t *const arg)
void PRIVATE amxd_function_arg_clean(amxd_func_arg_t *const arg)
static void amxd_function_arg_set_attributes(amxd_func_arg_t *const arg, const uint32_t attr)
Ambiorix Data Model API header file.
enum _amxd_status amxd_status_t
@ amxd_status_invalid_name
@ amxd_status_invalid_attr
@ amxd_status_unknown_error
enum _amxd_aattr_id amxd_aattr_id_t
The method argument attributes.
amxd_status_t amxd_function_arg_set_attr(amxd_function_t *const func, const char *name, const amxd_aattr_id_t attr, const bool enable)
Sets or unsets a method argument attribute.
amxd_func_arg_t * amxd_function_get_arg(const amxd_function_t *const func, const char *name)
Gets the argument definition of a RPC method.
bool amxd_function_arg_is_attr_set(const amxd_function_t *const func, const char *name, const amxd_aattr_id_t attr)
Checks if a method argument attribute is set.
amxd_status_t amxd_function_arg_describe(amxd_func_arg_t *const arg, amxc_var_t *const value)
Fetches the argument definition in a variant.
void amxd_function_del_arg(amxd_function_t *func, const char *name)
Removes an argument definition from a RPC method definition.
amxd_status_t amxd_function_new_arg(amxd_function_t *func, const char *name, const uint32_t type, amxc_var_t *default_value)
Adds an argument definition to a RPC method definition.
amxd_status_t amxd_function_arg_set_attrs(amxd_function_t *func, const char *name, const uint32_t bitmask, bool enable)
Sets or unsets method argument attributes using a bitmap.
static amxd_status_t status