You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.8 KiB
C
54 lines
1.8 KiB
C
#ifndef linear_algebra_h
|
|
#define linear_algebra_h
|
|
|
|
#include <stddef.h>
|
|
#include <stdint.h>
|
|
|
|
enum LinearType {
|
|
LINEAR_TYPE_NONE = -1,
|
|
LINEAR_TYPE_MAT = 0,
|
|
LINEAR_TYPE_VEC4,
|
|
LINEAR_TYPE_QUAT,
|
|
LINEAR_TYPE_COUNT,
|
|
};
|
|
|
|
#define LINEAR_TYPE_BITS_NUM 3
|
|
|
|
struct lastack;
|
|
|
|
int64_t lastack_constant(int cons);
|
|
int lastack_isconstant(int64_t id);
|
|
int lastack_marked(int64_t id, int *type);
|
|
int lastack_sametype(int64_t id1, int64_t id2);
|
|
char * lastack_idstring(int64_t id, char tmp[64]); // for debug
|
|
int lastack_typesize(int type);
|
|
const char * lastack_typename(int type);
|
|
|
|
struct lastack * lastack_new();
|
|
void lastack_delete(struct lastack *LS);
|
|
void lastack_pushobject(struct lastack *LS, const float *v, int type);
|
|
void lastack_pushvec4(struct lastack *LS, const float *v);
|
|
void lastack_pushquat(struct lastack *LS, const float *v);
|
|
void lastack_pushmatrix(struct lastack *LS, const float *mat);
|
|
void lastack_pushsrt(struct lastack *LS, const float *s, const float *r, const float *t);
|
|
const float * lastack_value(struct lastack *LS, int64_t id, int *type);
|
|
int lastack_pushref(struct lastack *LS, int64_t id);
|
|
int64_t lastack_mark(struct lastack *LS, int64_t tempid);
|
|
void lastack_unmark(struct lastack *LS, int64_t markid);
|
|
int64_t lastack_pop(struct lastack *LS);
|
|
int64_t lastack_top(struct lastack *LS);
|
|
int64_t lastack_dup(struct lastack *LS, int index);
|
|
int64_t lastack_swap(struct lastack *LS);
|
|
void lastack_reset(struct lastack *LS);
|
|
void lastack_print(struct lastack *LS); // for debug, dump all stack
|
|
int lastack_gettop(struct lastack *LS); // for debug, get stack length
|
|
void lastack_dump(struct lastack *LS, int from); // for debug, dump top values
|
|
int lastack_type(struct lastack *LS, int64_t id);
|
|
size_t lastack_size(struct lastack *LS);
|
|
|
|
static inline int lastack_is_vec_type(int type) {
|
|
return (type == LINEAR_TYPE_VEC4) ? 1 : 0;
|
|
}
|
|
|
|
#endif
|