68 const amxc_var_t* args,
69 amxc_var_t*
const retval) {
72 bool template_info = GET_BOOL(args,
"template_info");
74 amxc_llist_for_each(it, (&object->
parameters)) {
81 amxc_var_add(cstring_t, retval, name);
91 amxc_llist_for_each(it, funcs) {
92 amxc_var_t* stored = amxc_var_from_llist_it(it);
93 if(strcmp(amxc_var_constcast(cstring_t, stored), name) == 0) {
105 amxc_var_t*
const funcs,
107 const amxc_llist_t* lfuncs = amxc_var_constcast(amxc_llist_t, funcs);
114 amxc_llist_for_each(it, (&object->
functions)) {
120 amxc_var_add(cstring_t, funcs, func_name);
149 const amxc_var_t* args,
150 amxc_var_t*
const retval) {
153 bool template_info = GET_BOOL(args,
"template_info");
166 UNUSED
const amxc_var_t* args,
167 amxc_var_t*
const retval) {
170 bool template_info = GET_BOOL(args,
"template_info");
173 amxc_llist_for_each(it, (&object->
objects)) {
178 amxc_var_add(cstring_t, retval, name);
188 UNUSED
const amxc_var_t* args,
189 amxc_var_t*
const retval) {
191 amxc_llist_for_each(it, (&object->
instances)) {
193 amxc_var_t* item = amxc_var_add(amxc_htable_t, retval, NULL);
196 amxc_var_add_key(cstring_t, item,
"name", name);
197 amxc_var_add_key(uint32_t, item,
"index", index);
205 UNUSED
const amxc_var_t* args,
206 amxc_var_t*
const retval) {
210 amxc_var_for_each(event, (&object->
events)) {
211 const char* ename = amxc_var_key(event);
212 amxc_var_add(cstring_t, retval, ename);
220 while(base != NULL) {
221 amxc_var_for_each(event, (&base->
events)) {
222 const char* ename = amxc_var_key(event);
223 amxc_var_add(cstring_t, retval, ename);
235 amxc_var_t*
const value,
242 amxc_var_init(&obj_data);
244 when_null(value, exit);
252 amxc_var_clean(&obj_data);
261 amxc_var_t* arg = amxc_var_get_key(args, name, AMXC_VAR_FLAG_DEFAULT);
263 if(amxc_var_is_null(arg) ||
264 ( amxc_var_dyncast(
bool, arg) ==
true)) {
267 if((strcmp(name,
"instances") == 0) &&
278 const amxc_var_t*
const args,
279 amxc_var_t*
const retval,
291 when_null(
object, exit);
292 when_null(retval, exit);
297 when_true_status(!amxc_var_is_null(args) &&
298 amxc_var_type_of(args) != AMXC_VAR_ID_HTABLE,
302 access = (
amxd_dm_access_t) amxc_var_dyncast(uint32_t, GET_ARG(args,
"access"));
308 amxc_var_set_type(retval, AMXC_VAR_ID_HTABLE);
309 for(uint32_t i = 0; i < 5; i++) {
312 amxc_var_add_key(amxc_llist_t, retval, parts[i].name, NULL);
313 status = parts[i].
fn(
object, args, list);
314 when_failed(
status, exit);
323 amxc_var_t*
const list,
329 amxc_var_init(&args);
330 when_null(
object, exit);
331 when_null(list, exit);
333 amxc_var_set_type(&args, AMXC_VAR_ID_HTABLE);
340 amxc_var_add_key(uint32_t, &args,
"access", access);
347 amxc_var_clean(&args);
354 amxc_var_t*
const list,
364 amxc_var_t*
const list,
Ambiorix Data Model Default actions header file.
amxd_status_t amxd_object_list(amxd_object_t *const object, amxc_var_t *const list, uint32_t flags, amxd_dm_access_t access)
amxd_status_t amxd_object_list_params(amxd_object_t *const object, amxc_var_t *const list, amxd_dm_access_t access)
static amxd_status_t amxd_action_list_insts(amxd_object_t *const object, UNUSED const amxc_var_t *args, amxc_var_t *const retval)
static amxd_status_t amxd_object_list_item(amxd_object_t *const object, amxc_var_t *const value, uint32_t flags, amxd_dm_access_t access, const char *item)
amxd_status_t amxd_action_object_list(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)
static bool amxd_is_function_in_list(const amxc_llist_t *funcs, const char *name)
static amxd_status_t amxd_action_list_params(amxd_object_t *const object, const amxc_var_t *args, amxc_var_t *const retval)
static amxd_status_t amxd_action_list_events(amxd_object_t *const object, UNUSED const amxc_var_t *args, amxc_var_t *const retval)
static amxd_status_t amxd_action_list_funcs(amxd_object_t *const object, const amxc_var_t *args, amxc_var_t *const retval)
bool PRIVATE amxd_must_add(const amxc_var_t *const args, const char *name, amxd_object_t *object)
static amxd_status_t amxd_action_list_objs(amxd_object_t *const object, UNUSED const amxc_var_t *args, amxc_var_t *const retval)
static void amxd_object_list_functions_impl(const amxd_object_t *object, amxd_dm_access_t access, bool template_info, amxc_var_t *const funcs, const amxd_object_type_t type)
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)
bool PRIVATE amxd_object_is_base(const amxd_object_t *const object)
Ambiorix Data Model API header file.
#define AMXD_OBJECT_EVENT
amxd_object_t * amxd_object_get_base(const amxd_object_t *const object)
bool amxd_action_can_add_function(uint32_t func_attrs, const amxd_object_type_t type, amxd_dm_access_t access, bool template_info)
bool amxd_action_can_access_object(uint32_t object_attrs, amxd_dm_access_t access)
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)
PRIVATE void amxd_fetch_item(amxc_var_t *const full_data, const char *item, amxc_var_t *const data)
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_function_not_implemented
@ amxd_status_object_not_found
@ amxd_status_invalid_function_argument
@ amxd_status_unknown_error
#define AMXD_OBJECT_INSTANCE
List flag.
enum _amxd_object_type amxd_object_type_t
The different object types.
#define AMXD_TEMPLATE_INFO
List and describe flag.
#define AMXD_OBJECT_NAMED
Name and path format flag - default behavior, use name for instance objects.
#define AMXD_OBJECT_CHILD
List flag.
#define AMXD_OBJECT_FUNC
List and describe flag.
enum _amxd_dm_access amxd_dm_access_t
Access level.
#define AMXD_OBJECT_PARAM
List and describe flag.
amxd_object_t * amxd_object_get_parent(const amxd_object_t *const object)
Get the parent object.
amxd_status_t amxd_object_list_functions(amxd_object_t *const object, amxc_var_t *const list, amxd_dm_access_t access)
Builds a linked list variant containing all function names available in the object.
uint32_t amxd_object_get_index(const amxd_object_t *const object)
Get the index of an instance object.
static amxd_object_type_t amxd_object_get_type(const amxd_object_t *const object)
Returns the object type.
const char * amxd_object_get_name(const amxd_object_t *const object, const uint32_t flags)
Get the name of the object (or index as a string for instance objects)
uint32_t amxd_object_get_attrs(const amxd_object_t *const object)
Gets the set attributes of an object.
const char * amxd_function_get_name(const amxd_function_t *const func)
Get the name of a method.
uint32_t amxd_function_get_attrs(const amxd_function_t *const func)
Gets the set attributes of a RPC method.
amxc_llist_it_t derived_from
static amxd_status_t status