Open SCAP Library
|
Data Structures | |
struct | SEXP_list_it |
struct | __dbginf_t |
Macros | |
#define | SEXP_MANIP_H |
#define | SEXP_number_newi SEXP_number_newi_32 |
Create a new sexp object from an integer. More... | |
#define | SEXP_number_geti SEXP_number_geti_32 |
Get integer value from a sexp object. More... | |
#define | SEXP_number_newu SEXP_number_newu_32 |
Create a new sexp object from an unsigned integer. More... | |
#define | SEXP_number_getu SEXP_number_getu_32 |
Get unsigned integer value from a sexp object. More... | |
#define | SEXP_IT_RECURSIVE 0x01 |
#define | SEXP_IT_HARDREF 0x02 |
#define | SEXP_list_foreach(var, list) for (uint32_t OSCAP_CONCAT(i,__LINE__) = 1; ((var) = SEXP_list_nth (list, OSCAP_CONCAT(i,__LINE__))) != NULL; ++OSCAP_CONCAT(i,__LINE__), SEXP_free (var), (var) = NULL) |
Iterate through a list, assigning each element to a variable. More... | |
#define | SEXP_sublist_foreach(var, list, beg, end) for (uint32_t OSCAP_CONCAT(i,__LINE__) = (beg); OSCAP_CONCAT(i,__LINE__) <= ((size_t)(end)) && ((var) = SEXP_list_nth (list, OSCAP_CONCAT(i,__LINE__))) != NULL; ++OSCAP_CONCAT(i,__LINE__), SEXP_free (var), (var) = NULL) |
Iterate through a sublist, assigning each element to a variable. More... | |
#define | SEXP_LIST_END (UINT32_MAX - 1) |
#define | SEXP_VALIDATE(s) __SEXP_VALIDATE(s, __FILE__, __LINE__, __PRETTY_FUNCTION__) |
#define | SEXP_LISTIT_ARRAY_INC 32 |
#define | SEXP_LISTIT_ARRAY_INIT 32 |
Typedefs | |
typedef struct SEXP_it | SEXP_it_t |
typedef struct SEXP_list_it | SEXP_list_it |
Functions | |
OSCAP_API SEXP_t * | SEXP_number_new (SEXP_numtype_t t, const void *n) __attribute__((nonnull(2))) |
Create a new sexp object from a value and a number type. More... | |
OSCAP_API SEXP_t * | SEXP_number_newb (bool n) |
Create a new sexp object from a boolean value. More... | |
OSCAP_API SEXP_t * | SEXP_number_newi_8 (int8_t n) |
Create a new sexp object from an integer. More... | |
OSCAP_API SEXP_t * | SEXP_number_newu_8 (uint8_t n) |
Create a new sexp object from an unsigned integer. More... | |
OSCAP_API uint8_t | SEXP_number_getu_8 (const SEXP_t *s_exp) |
Get unsigned integer value from a sexp object. More... | |
OSCAP_API SEXP_t * | SEXP_number_newi_16 (int16_t n) |
Create a new sexp object from an integer. More... | |
OSCAP_API SEXP_t * | SEXP_number_newu_16 (uint16_t n) |
Create a new sexp object from an unsigned integer. More... | |
OSCAP_API SEXP_t * | SEXP_number_newi_32 (int32_t n) |
Create a new sexp object from an integer. More... | |
OSCAP_API int32_t | SEXP_number_geti_32 (const SEXP_t *s_exp) |
Get integer value from a sexp object. More... | |
OSCAP_API bool | SEXP_number_getb (const SEXP_t *s_exp) |
Get boolean value from a sexp object. More... | |
OSCAP_API SEXP_t * | SEXP_number_newu_32 (uint32_t n) |
Create a new sexp object from an unsigned integer. More... | |
OSCAP_API uint32_t | SEXP_number_getu_32 (const SEXP_t *s_exp) |
Get unsigned integer value from a sexp object. More... | |
OSCAP_API SEXP_t * | SEXP_number_newi_64 (int64_t n) |
Create a new sexp object from an integer. More... | |
OSCAP_API int64_t | SEXP_number_geti_64 (const SEXP_t *s_exp) |
Get integer value from a sexp object. More... | |
OSCAP_API SEXP_t * | SEXP_number_newu_64 (uint64_t n) |
Create a new sexp object from an unsigned integer. More... | |
OSCAP_API uint64_t | SEXP_number_getu_64 (const SEXP_t *s_exp) |
Get unsigned integer value from a sexp object. More... | |
OSCAP_API SEXP_t * | SEXP_number_newf (double n) |
Create a new sexp object from an floating point value. More... | |
OSCAP_API double | SEXP_number_getf (const SEXP_t *s_exp) |
Get floating point value from a sexp object. More... | |
OSCAP_API int | SEXP_number_get (const SEXP_t *s_exp, void *dst, SEXP_numtype_t type) |
Get a value from a sexp object according to a specified type. More... | |
OSCAP_API uint16_t | SEXP_number_getu_16 (const SEXP_t *s_exp) |
Get unsigned integer value from a sexp object. More... | |
OSCAP_API void | SEXP_number_free (SEXP_t *s_exp) |
Free the specified sexp object. More... | |
OSCAP_API bool | SEXP_numberp (const SEXP_t *s_exp) |
Check whether the provided sexp object is a number. More... | |
OSCAP_API SEXP_numtype_t | SEXP_number_type (const SEXP_t *sexp) |
Get the number type of an object. More... | |
OSCAP_API SEXP_t * | SEXP_string_new (const void *string, size_t strlen) __attribute__((nonnull(1))) |
Create a new sexp object from a string. More... | |
OSCAP_API SEXP_t * | SEXP_string_newf (const char *format,...) __attribute__((format(printf |
Create a new sexp object from a format string. More... | |
OSCAP_API SEXP_t | nonnull (1))) |
OSCAP_API void | SEXP_string_free (SEXP_t *s_exp) |
Free the specified sexp object. More... | |
OSCAP_API bool | SEXP_stringp (const SEXP_t *s_exp) |
Check whether the provided sexp object is a string. More... | |
OSCAP_API size_t | SEXP_string_length (const SEXP_t *s_exp) |
Get the length of a string in a sexp object. More... | |
OSCAP_API int | SEXP_strcmp (const SEXP_t *s_exp, const char *str) __attribute__((nonnull(2))) |
Compare a string in a sexp object with a C string. More... | |
OSCAP_API int | SEXP_strncmp (const SEXP_t *s_exp, const char *str, size_t n) __attribute__((nonnull(2))) |
Compare a string in a sexp object with a C string. More... | |
OSCAP_API int | SEXP_string_nth (const SEXP_t *s_exp, size_t n) |
Get the n-th byte of a string. More... | |
OSCAP_API char * | SEXP_string_cstr (const SEXP_t *s_exp) |
Get a C string from a sexp object. | |
OSCAP_API size_t | SEXP_string_cstr_r (const SEXP_t *s_exp, char *buf, size_t len) __attribute__((nonnull(2))) |
Get a C string from a sexp object. More... | |
OSCAP_API char * | SEXP_string_cstrp (const SEXP_t *s_exp) |
Obsolete function. | |
OSCAP_API char * | SEXP_string_subcstr (const SEXP_t *s_exp, size_t beg, size_t len) |
Get a C substring from a sexp object. More... | |
OSCAP_API int | SEXP_string_cmp (const SEXP_t *str_a, const SEXP_t *str_b) |
Compare two sexp strings. More... | |
OSCAP_API bool | SEXP_string_getb (const SEXP_t *s_exp) |
Try to cast the supplied sexp string to a boolean. More... | |
OSCAP_API SEXP_t * | SEXP_list_new (SEXP_t *memb,...) |
Create a new sexp list, optionally initialized with the provided sexp arguments. More... | |
OSCAP_API void | SEXP_list_free (SEXP_t *s_exp) |
Free the specified sexp object. More... | |
OSCAP_API bool | SEXP_listp (const SEXP_t *s_exp) |
Check whether the provided sexp object is a list. More... | |
OSCAP_API size_t | SEXP_list_length (const SEXP_t *s_exp) |
Get the length of the sexp list. More... | |
OSCAP_API SEXP_t * | SEXP_list_first (const SEXP_t *list) |
Get the first element of a list. More... | |
OSCAP_API SEXP_t * | SEXP_list_rest (const SEXP_t *list) |
Get the rest of a list. More... | |
OSCAP_API SEXP_t * | SEXP_list_last (const SEXP_t *list) |
Get the last element of a list. More... | |
OSCAP_API SEXP_t * | SEXP_list_nth (const SEXP_t *list, uint32_t n) |
Get the n-th element of a list. More... | |
OSCAP_API SEXP_t * | SEXP_list_add (SEXP_t *list, const SEXP_t *s_exp) |
Add an element to a list. More... | |
OSCAP_API SEXP_t * | SEXP_list_join (const SEXP_t *list_a, const SEXP_t *list_b) |
Create a new list containing the concatenated contents of two lists. More... | |
OSCAP_API SEXP_t * | SEXP_list_push (SEXP_t *list, const SEXP_t *s_exp) |
Push an element to the head of a list. More... | |
OSCAP_API SEXP_t * | SEXP_list_pop (SEXP_t *list) |
Extract the first element of a list. More... | |
OSCAP_API SEXP_t * | SEXP_list_sort (SEXP_t *list, int(*compare)(const SEXP_t *, const SEXP_t *)) |
Sort a list using ‘compare’ as the comparison function. | |
OSCAP_API SEXP_t * | SEXP_list_replace (SEXP_t *list, uint32_t n, const SEXP_t *s_exp) |
Replace the n-th element of a list. More... | |
OSCAP_API SEXP_t * | SEXP_listref_first (SEXP_t *list) |
Get the first element of a list. More... | |
OSCAP_API SEXP_t * | SEXP_listref_rest (SEXP_t *list) |
Get the rest of a list. More... | |
OSCAP_API SEXP_t * | SEXP_listref_last (SEXP_t *list) |
Get the last element of a list. More... | |
OSCAP_API SEXP_t * | SEXP_listref_nth (SEXP_t *list, uint32_t n) |
Get the n-th element of a list. More... | |
OSCAP_API SEXP_list_it * | SEXP_list_it_new (const SEXP_t *list) |
OSCAP_API SEXP_t * | SEXP_list_it_next (SEXP_list_it *it) |
OSCAP_API void | SEXP_list_it_free (SEXP_list_it *it) |
OSCAP_API SEXP_t * | SEXP_new (void) |
OSCAP_API bool | SEXP_emptyp (SEXP_t *sexp) |
OSCAP_API SEXP_t * | SEXP_ref (const SEXP_t *s_exp) |
Create a new reference to a sexp object. More... | |
OSCAP_API SEXP_t * | SEXP_unref (SEXP_t *s_exp_o) |
OSCAP_API SEXP_t * | SEXP_softref (SEXP_t *s_exp) |
Create a new soft reference to a sexp object. More... | |
OSCAP_API bool | SEXP_softrefp (const SEXP_t *s_exp) |
Check whether an S-exp reference is a "soft" reference. More... | |
OSCAP_API uint32_t | SEXP_refs (const SEXP_t *ref) |
Return the value of the reference counter. More... | |
OSCAP_API bool | SEXP_eq (const SEXP_t *a, const SEXP_t *b) |
OSCAP_API int | SEXP_refcmp (const SEXP_t *a, const SEXP_t *b) |
Compare reference pointers. | |
OSCAP_API bool | SEXP_deepcmp (const SEXP_t *a, const SEXP_t *b) |
OSCAP_API void | SEXP_free (SEXP_t *s_exp) |
Free a sexp object. More... | |
OSCAP_API const char * | SEXP_datatype (const SEXP_t *s_exp) |
Get the user data type of a sexp object. More... | |
OSCAP_API int | SEXP_datatype_set (SEXP_t *s_exp, const char *name) __attribute__((nonnull(2))) |
Set the user data type of a sexp object. More... | |
OSCAP_API int | SEXP_datatype_set_nth (SEXP_t *list, uint32_t n, const char *name) __attribute__((nonnull(3))) |
Set the user data type of the nth sexp object in a list. More... | |
OSCAP_API SEXP_type_t | SEXP_typeof (const SEXP_t *s_exp) |
Get the type of a sexp object. More... | |
OSCAP_API const char * | SEXP_strtype (const SEXP_t *s_exp) |
Get a text description of the sexp object's type. More... | |
OSCAP_API SEXP_t * | SEXP_build (const char *s_str,...) |
OSCAP_API size_t | SEXP_sizeof (const SEXP_t *s_exp) |
OSCAP_API void | __SEXP_VALIDATE (const SEXP_t *s_exp, const char *file, uint32_t line, const char *func) |
SEXP_ID_t | SEXP_ID_v (const SEXP_t *s) |
Compute an S-exp value identifier. | |
Variables | |
struct SEXP_val_lblk * | SEXP_list_it::block |
uint16_t | SEXP_list_it::index |
uint16_t | SEXP_list_it::count |
const char * | __dbginf_t::file |
uint32_t | __dbginf_t::line |
const char * | __dbginf_t::func |
#define SEXP_list_foreach | ( | var, | |
list | |||
) | for (uint32_t OSCAP_CONCAT(i,__LINE__) = 1; ((var) = SEXP_list_nth (list, OSCAP_CONCAT(i,__LINE__))) != NULL; ++OSCAP_CONCAT(i,__LINE__), SEXP_free (var), (var) = NULL) |
Iterate through a list, assigning each element to a variable.
var | the var variable is assigned one value from the list in each cycle |
list | the list the loop iterates through |
#define SEXP_number_geti SEXP_number_geti_32 |
Get integer value from a sexp object.
The size of the integer may be architecture dependent.
#define SEXP_number_getu SEXP_number_getu_32 |
Get unsigned integer value from a sexp object.
The size of the integer may be architecture dependent.
#define SEXP_number_newi SEXP_number_newi_32 |
Create a new sexp object from an integer.
The size of the integer may be architecture dependent.
#define SEXP_number_newu SEXP_number_newu_32 |
Create a new sexp object from an unsigned integer.
The size of the integer may be architecture dependent.
#define SEXP_sublist_foreach | ( | var, | |
list, | |||
beg, | |||
end | |||
) | for (uint32_t OSCAP_CONCAT(i,__LINE__) = (beg); OSCAP_CONCAT(i,__LINE__) <= ((size_t)(end)) && ((var) = SEXP_list_nth (list, OSCAP_CONCAT(i,__LINE__))) != NULL; ++OSCAP_CONCAT(i,__LINE__), SEXP_free (var), (var) = NULL) |
Iterate through a sublist, assigning each element to a variable.
var | the var variable is assigned one value from the list in each cycle |
list | the list the loop iterates through |
beg | the index of the first element of the sublist |
end | the index of the last element of the sublist |
const char * SEXP_datatype | ( | const SEXP_t * | s_exp | ) |
Get the user data type of a sexp object.
s_exp | the object to be queried |
int SEXP_datatype_set | ( | SEXP_t * | s_exp, |
const char * | name | ||
) |
Set the user data type of a sexp object.
s_exp | the object to be modified |
int SEXP_datatype_set_nth | ( | SEXP_t * | list, |
uint32_t | n, | ||
const char * | name | ||
) |
Set the user data type of the nth sexp object in a list.
list | list containing the object to be modified |
n | the position of the object |
name | name of the user data type |
void SEXP_free | ( | SEXP_t * | s_exp | ) |
Free a sexp object.
s_exp | the object to be freed |
Add an element to a list.
This function increments element's reference count.
list | the modified sexp object |
s_exp | the element to be added |
Get the first element of a list.
This function increments element's reference count
list | the queried sexp object |
void SEXP_list_free | ( | SEXP_t * | s_exp | ) |
Free the specified sexp object.
s_exp | the object to be freed |
Create a new list containing the concatenated contents of two lists.
This function increments element's reference count.
list_a | the first list to be contatenated |
list_b | the list to be attached to the first one |
Get the last element of a list.
This function increments element's reference count.
list | the queried sexp object |
size_t SEXP_list_length | ( | const SEXP_t * | s_exp | ) |
Get the length of the sexp list.
s_sexp | the queried sexp object |
Create a new sexp list, optionally initialized with the provided sexp arguments.
The argument list needs to be terminated with NULL.
memb | the first sexp object to be inserted into the new list. can be NULL. |
... | arbitrary number of elements to be inserted |
Get the n-th element of a list.
This function increments element's reference count.
list | the queried sexp object |
n | the position of the element in the list |
Extract the first element of a list.
This function increments element's reference count.
list | the modified sexp object |
Push an element to the head of a list.
This function increments element's reference count.
list | the modified sexp object |
s_exp | the element to be added |
Replace the n-th element of a list.
This function increments element's reference count.
list | the modified sexp object |
n | the index of the element to be replaced |
s_exp | the element to be added |
Get the rest of a list.
This function increments elements' reference count.
list | the queried sexp object |
bool SEXP_listp | ( | const SEXP_t * | s_exp | ) |
Check whether the provided sexp object is a list.
s_exp | the sexp object to be tested |
Get the first element of a list.
This function creates a soft reference to the element.
list | the queried sexp object |
Get the last element of a list.
This function creates a soft reference to the element.
list | the queried sexp object |
Get the n-th element of a list.
This function creates a soft reference to the element.
list | the queried sexp object |
n | the position of the element in the list |
Get the rest of a list.
This function creates a soft reference to the list.
list | the queried sexp object |
void SEXP_number_free | ( | SEXP_t * | s_exp | ) |
Free the specified sexp object.
s_exp | the object to be freed |
int SEXP_number_get | ( | const SEXP_t * | s_exp, |
void * | dst, | ||
SEXP_numtype_t | type | ||
) |
Get a value from a sexp object according to a specified type.
s_exp | the queried sexp object |
dst | buffer for the value |
type | the desired number type |
bool SEXP_number_getb | ( | const SEXP_t * | s_exp | ) |
Get boolean value from a sexp object.
s_exp | the queried sexp object |
double SEXP_number_getf | ( | const SEXP_t * | s_exp | ) |
Get floating point value from a sexp object.
s_exp | the queried sexp object |
int32_t SEXP_number_geti_32 | ( | const SEXP_t * | s_exp | ) |
Get integer value from a sexp object.
s_exp | the queried sexp object |
int64_t SEXP_number_geti_64 | ( | const SEXP_t * | s_exp | ) |
Get integer value from a sexp object.
s_exp | the queried sexp object |
uint16_t SEXP_number_getu_16 | ( | const SEXP_t * | s_exp | ) |
Get unsigned integer value from a sexp object.
s_exp | the queried sexp object |
uint32_t SEXP_number_getu_32 | ( | const SEXP_t * | s_exp | ) |
Get unsigned integer value from a sexp object.
s_exp | the queried sexp object |
uint64_t SEXP_number_getu_64 | ( | const SEXP_t * | s_exp | ) |
Get unsigned integer value from a sexp object.
s_exp | the queried sexp object |
uint8_t SEXP_number_getu_8 | ( | const SEXP_t * | s_exp | ) |
Get unsigned integer value from a sexp object.
s_exp | the queried sexp object |
SEXP_t * SEXP_number_new | ( | SEXP_numtype_t | t, |
const void * | n | ||
) |
Create a new sexp object from a value and a number type.
t | the desired number type |
n | pointer to the number value |
SEXP_t * SEXP_number_newb | ( | bool | n | ) |
Create a new sexp object from a boolean value.
n | the boolean value to store |
SEXP_t * SEXP_number_newf | ( | double | n | ) |
Create a new sexp object from an floating point value.
n | the floating point value to store |
SEXP_t * SEXP_number_newi_16 | ( | int16_t | n | ) |
Create a new sexp object from an integer.
n | the integer value to store |
SEXP_t * SEXP_number_newi_32 | ( | int32_t | n | ) |
Create a new sexp object from an integer.
n | the integer value to store |
SEXP_t * SEXP_number_newi_64 | ( | int64_t | n | ) |
Create a new sexp object from an integer.
n | the integer value to store |
SEXP_t * SEXP_number_newi_8 | ( | int8_t | n | ) |
Create a new sexp object from an integer.
n | the integer value to store |
SEXP_t * SEXP_number_newu_16 | ( | uint16_t | n | ) |
Create a new sexp object from an unsigned integer.
n | the unsigned integer value to store |
SEXP_t * SEXP_number_newu_32 | ( | uint32_t | n | ) |
Create a new sexp object from an unsigned integer.
n | the integer value to store |
SEXP_t * SEXP_number_newu_64 | ( | uint64_t | n | ) |
Create a new sexp object from an unsigned integer.
n | the integer value to store |
SEXP_t * SEXP_number_newu_8 | ( | uint8_t | n | ) |
Create a new sexp object from an unsigned integer.
n | the unsigned integer value to store |
SEXP_numtype_t SEXP_number_type | ( | const SEXP_t * | sexp | ) |
Get the number type of an object.
sexp | the queried sexp object |
bool SEXP_numberp | ( | const SEXP_t * | s_exp | ) |
Check whether the provided sexp object is a number.
s_exp | the sexp object to be tested |
Create a new reference to a sexp object.
s_exp | the object of which to increment the reference count |
uint32_t SEXP_refs | ( | const SEXP_t * | ref | ) |
Return the value of the reference counter.
ref |
Create a new soft reference to a sexp object.
s_exp | the object to which create the soft reference |
bool SEXP_softrefp | ( | const SEXP_t * | s_exp | ) |
Check whether an S-exp reference is a "soft" reference.
s_exp | the S-exp reference |
int SEXP_strcmp | ( | const SEXP_t * | s_exp, |
const char * | str | ||
) |
Compare a string in a sexp object with a C string.
s_exp | the sexp object to be compared |
str | the C string to be compared |
Compare two sexp strings.
str_a | the first string to compare |
str_b | the second string to compare |
size_t SEXP_string_cstr_r | ( | const SEXP_t * | s_exp, |
char * | buf, | ||
size_t | len | ||
) |
Get a C string from a sexp object.
The name is stored in the provided buffer.
s_exp | the queried object |
buf | the buffer to store the name in |
len | the length of the buffer |
void SEXP_string_free | ( | SEXP_t * | s_exp | ) |
Free the specified sexp object.
s_exp | the object to be freed |
bool SEXP_string_getb | ( | const SEXP_t * | s_exp | ) |
Try to cast the supplied sexp string to a boolean.
s_ext | the string to be cast |
size_t SEXP_string_length | ( | const SEXP_t * | s_exp | ) |
Get the length of a string in a sexp object.
s_exp | the queried sexp object |
SEXP_t * SEXP_string_new | ( | const void * | string, |
size_t | strlen | ||
) |
Create a new sexp object from a string.
string | the string to be stored |
strlen | the length of the string in bytes |
SEXP_t * SEXP_string_newf | ( | const char * | format, |
... | |||
) |
Create a new sexp object from a format string.
format | the format of the new string |
... | arguments for the format |
int SEXP_string_nth | ( | const SEXP_t * | s_exp, |
size_t | n | ||
) |
Get the n-th byte of a string.
s_exp | the sexp object holding the string |
n | the index of the desired character |
char * SEXP_string_subcstr | ( | const SEXP_t * | s_exp, |
size_t | beg, | ||
size_t | len | ||
) |
Get a C substring from a sexp object.
s_sexp | the queried sexp object |
beg | the position of the fisrt character of the substring |
len | the length of the substring |
bool SEXP_stringp | ( | const SEXP_t * | s_exp | ) |
Check whether the provided sexp object is a string.
s_exp | the sexp object to be tested |
int SEXP_strncmp | ( | const SEXP_t * | s_exp, |
const char * | str, | ||
size_t | n | ||
) |
Compare a string in a sexp object with a C string.
s_exp | the sexp object to be compared |
str | the C string to be compared |
n | compare at most n bytes |
const char * SEXP_strtype | ( | const SEXP_t * | s_exp | ) |
Get a text description of the sexp object's type.
s_exp | the object to be queried |
SEXP_type_t SEXP_typeof | ( | const SEXP_t * | s_exp | ) |
Get the type of a sexp object.
s_exp | the object to be queried |