myxce/src/include/xvec.h

42 lines
1,023 B
C

#if !defined(_XVEC_H_)
#define _XVEC_H_ 1
#include <stddef.h>
#include <stdint.h>
#include <stdlib.h>
typedef enum {
XVEC_ADD_INT = 0,
XVEC_SUB_INT,
XVEC_ADD_FLOAT,
XVEC_SUB_FLOAT
} xvec_op_t;
typedef struct {
int count;
int elsize;
void* data;
} xvec_t;
typedef struct {
int count;
xvec_t idxs;
xvec_t vals;
} xvec_idval_t;
extern int xvec_init(xvec_t*, int, int);
extern void xvec_fini(xvec_t*);
extern int xvec_zero(xvec_t*);
extern int xvec_resize(xvec_t*, int);
extern int xvec_op(xvec_t*, xvec_t*, xvec_op_t);
extern int xvec_dup(xvec_t**, xvec_t*);
extern int xvec_put(xvec_t*, int, void*);
extern int xvec_get(xvec_t*, int, void*);
extern int xvec_idval_init(xvec_idval_t*, int);
extern void xvec_idval_fini(xvec_idval_t*);
extern int xvec_idval_store(xvec_idval_t*, int, float);
extern int xvec_idval_store_idx(xvec_idval_t*, int);
extern int xvec_fill_idval(xvec_idval_t*, xvec_t*);
extern int xvec_idval(xvec_t*, xvec_idval_t*, xvec_op_t);
#endif