Use double instead of int, () are working, splitted expressionbase out to own file.
[calcinator.git] / expression.h
blob2ff91d69f0ce5bedd9a5badd651a267d7adf9b15
1 #ifndef _EXPR_H
2 #define _EXPR_H
4 #define DEBUG 1
6 enum {
7 CONSTANT = 1,
8 EVALUATED = 2
9 };
11 typedef struct expression {
12 char flags;
13 double value;
14 unsigned char op;
15 struct expression *prev;
16 struct expression *next;
17 int precedence;
18 } Expression;
20 int get_precedence(unsigned char op);
21 double apply_operator(unsigned char op, double value1, double value2);
22 double get_value(char *string);
24 void evaluate(Expression *expr);
25 void finish_expression(Expression *expr, char *expression, unsigned char op, int precedence_factor);
26 void print_expression(Expression *expr);
27 #endif