aboutsummaryrefslogtreecommitdiff
path: root/tree.h
blob: aa7a44c4e69f86b4069f0c8b2ad91832fe664151 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/*
** tree.h
** TecCGraf - PUC-Rio
** $Id: tree.h,v 1.3 1994/11/16 16:03:48 roberto Exp roberto $
*/

#ifndef tree_h
#define tree_h

#include "opcode.h"


#define UNMARKED_STRING	0xFFFF
#define MARKED_STRING   0xFFFE
#define MAX_WORD        0xFFFD

 
typedef struct TreeNode
{
 struct TreeNode *right;
 struct TreeNode *left;
 Word varindex;  /* if this is a symbol */
 Word constindex;  /* if this is a constant; also used for garbage collection */
 char            str[1];        /* \0 byte already reserved */
} TreeNode;


#define indexstring(s) (*(((Word *)s)-1))


char *lua_strcreate    (char *str);
TreeNode *lua_constcreate  (char *str);
int  lua_strcollector (void);
TreeNode *lua_varnext      (char *n);

#endif