Gimp/plug-ins/mathmap/exprtree.h
1997-11-24 22:05:25 +00:00

62 lines
1.2 KiB
C

#ifndef __EXPRTREE_H__
#define __EXPRTREE_H__
#ifdef USE_TREE
typedef double (*function) (double*);
#else
typedef void (*function) (double);
#endif
typedef char ident[64];
typedef struct _exprtree
{
int type;
union
{
double number;
struct
{
int numArgs;
function routine;
struct _exprtree *args;
} func;
struct
{
struct _exprtree *left;
struct _exprtree *right;
} operator;
} val;
struct _exprtree *next;
} exprtree;
#define EXPR_NUMBER 1
#define EXPR_ADD 2
#define EXPR_SUB 3
#define EXPR_MUL 4
#define EXPR_DIV 5
#define EXPR_MOD 6
#define EXPR_NEG 7
#define EXPR_FUNC 8
#define EXPR_VAR_X 9
#define EXPR_VAR_Y 10
#define EXPR_VAR_R 11
#define EXPR_VAR_A 12
#define EXPR_VAR_W 13
#define EXPR_VAR_H 14
#define EXPR_VAR_BIG_R 15
#define EXPR_VAR_BIG_X 16
#define EXPR_VAR_BIG_Y 17
exprtree* make_number (double num);
exprtree* make_var (char *name);
exprtree* make_operator (int type, exprtree *left, exprtree *right);
exprtree* make_function (char *name, exprtree *args);
exprtree* arglist_append (exprtree *list1, exprtree *list2);
double eval_exprtree (exprtree *tree);
#endif