libamxd  6.4.1
Data Model Manager
amxd_function_args.c File Reference
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include "amxd_priv.h"
#include <amxd/amxd_common.h>
#include <amxd/amxd_object.h>
#include <amxd/amxd_function.h>
#include "amxd_assert.h"

Go to the source code of this file.

Macros

#define _GNU_SOURCE
 

Functions

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)
 
static void amxd_function_arg_set_attributes (amxd_func_arg_t *const arg, const uint32_t attr)
 
static bool amxd_function_arg_valid_name (amxd_function_t *func, const char *name)
 
void PRIVATE amxd_function_arg_clean (amxd_func_arg_t *const arg)
 
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. More...
 
void amxd_function_del_arg (amxd_function_t *func, const char *name)
 Removes an argument definition from a RPC method definition. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 

Macro Definition Documentation

◆ _GNU_SOURCE

#define _GNU_SOURCE

Definition at line 56 of file amxd_function_args.c.

Function Documentation

◆ amxd_function_arg_clean()

void PRIVATE amxd_function_arg_clean ( amxd_func_arg_t *const  arg)

Definition at line 132 of file amxd_function_args.c.

132  {
133  amxc_llist_it_take(&arg->it);
134 
135  amxc_var_clean(&arg->default_value);
136  free(arg->name);
137  arg->name = NULL;
138 }
amxc_llist_it_t it
Definition: amxd_types.h:298
amxc_var_t default_value
Definition: amxd_types.h:302

◆ amxd_function_arg_get_attributes()

static uint32_t amxd_function_arg_get_attributes ( const amxd_func_arg_t *const  arg)
static

Definition at line 98 of file amxd_function_args.c.

98  {
99  uint32_t attributes = 0;
100 
101  attributes |= arg->attr.in << amxd_aattr_in;
102  attributes |= arg->attr.out << amxd_aattr_out;
103  attributes |= arg->attr.mandatory << amxd_aattr_mandatory;
104  attributes |= arg->attr.strict << amxd_aattr_strict;
105 
106  return attributes;
107 }
@ amxd_aattr_strict
Definition: amxd_types.h:286
@ amxd_aattr_in
Definition: amxd_types.h:283
@ amxd_aattr_mandatory
Definition: amxd_types.h:285
@ amxd_aattr_out
Definition: amxd_types.h:284
uint32_t in
Definition: amxd_types.h:291
uint32_t strict
Definition: amxd_types.h:294
uint32_t mandatory
Definition: amxd_types.h:293
uint32_t out
Definition: amxd_types.h:292
amxd_arg_attr_t attr
Definition: amxd_types.h:299

◆ amxd_function_arg_init()

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

Definition at line 71 of file amxd_function_args.c.

74  {
76 
77  amxc_llist_it_init(&arg->it);
78 
79  if((type == AMXC_VAR_ID_ANY) ||
80  ( amxc_var_get_type(type) != NULL)) {
81  arg->name = strdup(name);
82  if(arg->name != NULL) {
83  arg->attr.in = 0;
84  arg->attr.out = 0;
85  arg->attr.mandatory = 0;
86  arg->attr.strict = 0;
87 
88  amxc_var_init(&arg->default_value);
89  amxc_var_copy(&arg->default_value, default_value);
90  arg->type = type;
91  retval = amxd_status_ok;
92  }
93  }
94 
95  return retval;
96 }
enum _amxd_status amxd_status_t
@ amxd_status_ok
Definition: amxd_types.h:78
@ amxd_status_unknown_error
Definition: amxd_types.h:79
uint32_t type
Definition: amxd_types.h:301

◆ amxd_function_arg_set_attributes()

static void amxd_function_arg_set_attributes ( amxd_func_arg_t *const  arg,
const uint32_t  attr 
)
static

Definition at line 109 of file amxd_function_args.c.

110  {
111  arg->attr.in = IS_BIT_SET(attr, amxd_aattr_in);
112  arg->attr.out = IS_BIT_SET(attr, amxd_aattr_out);
114  arg->attr.strict = IS_BIT_SET(attr, amxd_aattr_strict);
115 }
#define IS_BIT_SET(b, f)
Definition: amxd_common.h:66

◆ amxd_function_arg_valid_name()

static bool amxd_function_arg_valid_name ( amxd_function_t func,
const char *  name 
)
static

Definition at line 117 of file amxd_function_args.c.

118  {
119  bool retval = true;
120 
121  amxc_llist_for_each(it, (&func->args)) {
122  amxd_func_arg_t* arg = amxc_llist_it_get_data(it, amxd_func_arg_t, it);
123  if(strcmp(arg->name, name) == 0) {
124  retval = false;
125  break;
126  }
127  }
128 
129  return retval;
130 }
amxc_llist_t args
Definition: amxd_types.h:346