summaryrefslogtreecommitdiff
path: root/tree.h
blob: 0b5019188181dd8f591ddd89d3b9123baa0f27dd (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
37
38
/*
** tree.h
** TecCGraf - PUC-Rio
** $Id: tree.h,v 1.17 1997/05/14 18:38:29 roberto Exp roberto $
*/

#ifndef tree_h
#define tree_h

#include "types.h"

#define NOT_USED  0xFFFE


typedef struct TaggedString
{
  int tag;  /* if != LUA_T_STRING, this is a userdata */
  struct TaggedString *next;
  union {
    struct {
      Word varindex;  /* != NOT_USED  if this is a symbol */
      Word constindex;  /* != NOT_USED  if this is a constant */
    } s;
    void *v;  /* if this is a userdata, here is its value */
  } u;
  unsigned long hash;  /* 0 if not initialized */
  int marked;   /* for garbage collection; never collect (nor change) if > 1 */
  char str[1];   /* \0 byte already reserved */
} TaggedString;
 

TaggedString *lua_createstring (char *str);
TaggedString *luaI_createudata (void *udata, int tag);
TaggedString *luaI_strcollector (long *cont);
void luaI_strfree (TaggedString *l);
void luaI_strcallIM (TaggedString *l);

#endif