Open SCAP Library
Loading...
Searching...
No Matches
Data Structures | Macros | Functions
sexp-manip.c File Reference

S-expression object manipulation functions - implementation. More...

#include <stdio.h>
#include <string.h>
#include <stdint.h>
#include <stdbool.h>
#include <errno.h>
#include <math.h>
#include "common/bfind.h"
#include "_sexp-types.h"
#include "_sexp-value.h"
#include "_sexp-rawptr.h"
#include "public/sexp-manip.h"
#include "public/sexp-manip_r.h"
#include "debug_priv.h"
#include <inttypes.h>
Include dependency graph for sexp-manip.c:

Data Structures

struct  SEXP_list_it
 
struct  __dbginf_t
 

Macros

#define SEXP_LISTIT_ARRAY_INC   32
 
#define SEXP_LISTIT_ARRAY_INIT   32
 

Functions

OSCAP_API SEXP_tSEXP_number_new (SEXP_numtype_t t, const void *n) __attribute__((nonnull(2)))
 Create a new sexp object from a value and a number type.
 
OSCAP_API SEXP_tSEXP_number_newb (bool n)
 Create a new sexp object from a boolean value.
 
OSCAP_API SEXP_tSEXP_number_newi_8 (int8_t n)
 Create a new sexp object from an integer.
 
OSCAP_API SEXP_tSEXP_number_newu_8 (uint8_t n)
 Create a new sexp object from an unsigned integer.
 
OSCAP_API uint8_t SEXP_number_getu_8 (const SEXP_t *s_exp)
 Get unsigned integer value from a sexp object.
 
OSCAP_API SEXP_tSEXP_number_newi_16 (int16_t n)
 Create a new sexp object from an integer.
 
OSCAP_API SEXP_tSEXP_number_newu_16 (uint16_t n)
 Create a new sexp object from an unsigned integer.
 
OSCAP_API uint16_t SEXP_number_getu_16 (const SEXP_t *s_exp)
 Get unsigned integer value from a sexp object.
 
OSCAP_API SEXP_tSEXP_number_newi_32 (int32_t n)
 Create a new sexp object from an integer.
 
OSCAP_API int32_t SEXP_number_geti_32 (const SEXP_t *s_exp)
 Get integer value from a sexp object.
 
OSCAP_API SEXP_tSEXP_number_newu_32 (uint32_t n)
 Create a new sexp object from an unsigned integer.
 
OSCAP_API uint32_t SEXP_number_getu_32 (const SEXP_t *s_exp)
 Get unsigned integer value from a sexp object.
 
OSCAP_API SEXP_tSEXP_number_newi_64 (int64_t n)
 Create a new sexp object from an integer.
 
OSCAP_API int64_t SEXP_number_geti_64 (const SEXP_t *s_exp)
 Get integer value from a sexp object.
 
OSCAP_API SEXP_tSEXP_number_newu_64 (uint64_t n)
 Create a new sexp object from an unsigned integer.
 
OSCAP_API uint64_t SEXP_number_getu_64 (const SEXP_t *s_exp)
 Get unsigned integer value from a sexp object.
 
OSCAP_API bool SEXP_number_getb (const SEXP_t *s_exp)
 Get boolean value from a sexp object.
 
OSCAP_API SEXP_tSEXP_number_newf (double n)
 Create a new sexp object from an floating point value.
 
OSCAP_API double SEXP_number_getf (const SEXP_t *s_exp)
 Get floating point value from a sexp object.
 
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.
 
OSCAP_API void SEXP_number_free (SEXP_t *s_exp)
 Free the specified sexp object.
 
OSCAP_API bool SEXP_numberp (const SEXP_t *s_exp)
 Check whether the provided sexp object is a number.
 
OSCAP_API SEXP_numtype_t SEXP_number_type (const SEXP_t *sexp)
 Get the number type of an object.
 
OSCAP_API SEXP_tSEXP_string_new (const void *string, size_t strlen) __attribute__((nonnull(1)))
 Create a new sexp object from a string.
 
OSCAP_API SEXP_tSEXP_string_newf (const char *format,...) __attribute__((format(printf
 Create a new sexp object from a format string.
 
OSCAP_API void SEXP_string_free (SEXP_t *s_exp)
 Free the specified sexp object.
 
OSCAP_API bool SEXP_stringp (const SEXP_t *s_exp)
 Check whether the provided sexp object is a string.
 
OSCAP_API size_t SEXP_string_length (const SEXP_t *s_exp)
 Get the length of a string in a sexp object.
 
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.
 
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.
 
OSCAP_API int SEXP_string_nth (const SEXP_t *s_exp, size_t n)
 Get the n-th byte of a string.
 
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.
 
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.
 
OSCAP_API char * SEXP_string_cstrp (const SEXP_t *s_exp)
 Obsolete function.
 
OSCAP_API int SEXP_string_cmp (const SEXP_t *str_a, const SEXP_t *str_b)
 Compare two sexp strings.
 
OSCAP_API bool SEXP_string_getb (const SEXP_t *s_exp)
 Try to cast the supplied sexp string to a boolean.
 
OSCAP_API SEXP_tSEXP_list_new (SEXP_t *memb,...)
 Create a new sexp list, optionally initialized with the provided sexp arguments.
 
OSCAP_API void SEXP_list_free (SEXP_t *s_exp)
 Free the specified sexp object.
 
OSCAP_API bool SEXP_listp (const SEXP_t *s_exp)
 Check whether the provided sexp object is a list.
 
OSCAP_API size_t SEXP_list_length (const SEXP_t *s_exp)
 Get the length of the sexp list.
 
OSCAP_API SEXP_tSEXP_list_first (const SEXP_t *list)
 Get the first element of a list.
 
OSCAP_API SEXP_tSEXP_listref_first (SEXP_t *list)
 Get the first element of a list.
 
OSCAP_API SEXP_tSEXP_list_rest (const SEXP_t *list)
 Get the rest of a list.
 
OSCAP_API SEXP_tSEXP_listref_rest (SEXP_t *list)
 Get the rest of a list.
 
OSCAP_API SEXP_tSEXP_list_last (const SEXP_t *list)
 Get the last element of a list.
 
OSCAP_API SEXP_tSEXP_list_replace (SEXP_t *list, uint32_t n, const SEXP_t *s_exp)
 Replace the n-th element of a list.
 
OSCAP_API SEXP_tSEXP_listref_last (SEXP_t *list)
 Get the last element of a list.
 
OSCAP_API SEXP_tSEXP_list_nth (const SEXP_t *list, uint32_t n)
 Get the n-th element of a list.
 
OSCAP_API SEXP_tSEXP_listref_nth (SEXP_t *list, uint32_t n)
 Get the n-th element of a list.
 
OSCAP_API SEXP_tSEXP_list_add (SEXP_t *list, const SEXP_t *s_exp)
 Add an element to a list.
 
OSCAP_API SEXP_tSEXP_list_join (const SEXP_t *list_a, const SEXP_t *list_b)
 Create a new list containing the concatenated contents of two lists.
 
OSCAP_API SEXP_tSEXP_list_push (SEXP_t *list, const SEXP_t *s_exp)
 Push an element to the head of a list.
 
OSCAP_API SEXP_tSEXP_list_pop (SEXP_t *list)
 Extract the first element of a list.
 
OSCAP_API SEXP_list_itSEXP_list_it_new (const SEXP_t *list)
 
OSCAP_API SEXP_tSEXP_list_it_next (SEXP_list_it *it)
 
OSCAP_API void SEXP_list_it_free (SEXP_list_it *it)
 
OSCAP_API SEXP_tSEXP_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_tSEXP_new (void)
 
OSCAP_API bool SEXP_emptyp (SEXP_t *sexp)
 
OSCAP_API SEXP_tSEXP_ref (const SEXP_t *s_exp)
 Create a new reference to a sexp object.
 
OSCAP_API SEXP_tSEXP_unref (SEXP_t *s_exp_o)
 
OSCAP_API SEXP_tSEXP_softref (SEXP_t *s_exp)
 Create a new soft reference to a sexp object.
 
OSCAP_API bool SEXP_softrefp (const SEXP_t *s_exp)
 Check whether an S-exp reference is a "soft" reference.
 
OSCAP_API uint32_t SEXP_refs (const SEXP_t *ref)
 Return the value of the reference counter.
 
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.
 
OSCAP_API const char * SEXP_datatype (const SEXP_t *s_exp)
 Get the user data type of a sexp object.
 
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.
 
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.
 
OSCAP_API SEXP_type_t SEXP_typeof (const SEXP_t *s_exp)
 Get the type of a sexp object.
 
OSCAP_API const char * SEXP_strtype (const SEXP_t *s_exp)
 Get a text description of the sexp object's type.
 
OSCAP_API SEXP_tSEXP_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)
 

Detailed Description

S-expression object manipulation functions - implementation.

Author
"Daniel Kopecek" dkope.nosp@m.cek@.nosp@m.redha.nosp@m.t.co.nosp@m.m