00001 #pragma once 00002 #ifndef _SEXP_DATATYPE 00003 #define _SEXP_DATATYPE 00004 00005 #include "public/sexp-datatype.h" 00006 #include "generic/redblack.h" 00007 #include "../../../common/util.h" 00008 00009 OSCAP_HIDDEN_START; 00010 00011 typedef struct { 00012 uint8_t arity; 00013 SEXP_datatype_opfn_t fn[3]; 00014 } SEXP_dtype_op_t; 00015 00016 struct SEXP_datatype { 00017 char *name; 00018 uint16_t name_len; 00019 uint16_t op_cnt; 00020 SEXP_dtype_op_t *op; 00021 }; 00022 00023 DEFRBTREE(datatype, SEXP_datatype_t datatype); 00024 00025 struct SEXP_datatypetbl { 00026 TREETYPE(datatype) tree; 00027 }; 00028 00029 SEXP_datatypetbl_t *SEXP_datatypetbl_new (void); 00030 int SEXP_datatypetbl_init (SEXP_datatypetbl_t *t); 00031 00032 SEXP_datatype_t *SEXP_datatype_get (SEXP_datatypetbl_t *t, const char *name); 00033 SEXP_datatype_t *SEXP_datatype_add (SEXP_datatypetbl_t *t, SEXP_datatype_t *datatype); 00034 int SEXP_datatype_del (SEXP_datatypetbl_t *t, const char *name); 00035 00036 OSCAP_HIDDEN_END; 00037 00038 #endif /* _SEXP_DATATYPE */