|
|
1.1 root 1: #ifndef SYMBOL_H
2: #define SYMBOL_H
3:
4: /*
5: *-IMPORTS:
6: * <sys/compat.h>
7: * CONST
8: * EXTERN_C_BEGIN
9: * EXTERN_C_END
10: * PROTO ()
11: * <stddef.h>
12: * size_t
13: */
14:
15: #include <sys/compat.h>
16: #include <stddef.h>
17:
18:
19: /*
20: * Don't pull in the other application #includes.
21: */
22:
23: #ifndef BUILD_T
24: #define BUILD_T
25: typedef struct builder build_t;
26: #endif
27:
28: #ifndef INPUT_T
29: #define INPUT_T
30: typedef struct input input_t;
31: #endif
32:
33: #ifndef SYMBOL_T
34: #define SYMBOL_T
35: typedef struct symbol symbol_t;
36: #endif
37:
38: #ifndef LEX_T
39: #define LEX_T
40: typedef struct lexinfo lex_t;
41: #endif
42:
43: #ifndef TOKEN_T
44: #define TOKEN_T
45: typedef struct token token_t;
46: #endif
47:
48:
49: /*
50: * This is the structure tokens are built into.
51: */
52:
53: struct symbol {
54: symbol_t * s_next; /* next symbol */
55: CONST unsigned char
56: * s_data; /* octets occupied by symbol data */
57: size_t s_size; /* length of symbol data */
58: };
59:
60:
61: /*
62: * Alternate EOF character so our clients don't have to pull in <stdio.h>,
63: * should be the same as READ_EOF and IN_EOF.
64: */
65:
66: #define SYM_EOF -1
67:
68:
69: typedef int (* dev_func_p) PROTO ((input_t * _input, lex_t * _lexp,
70: VOID * _extra));
71:
72:
73: EXTERN_C_BEGIN
74:
75: int symbol_init PROTO ((void));
76:
77: void read_dev_file PROTO ((CONST char * _inname,
78: CONST char * _outname,
79: dev_func_p _devfuncp, VOID * extra));
80: void read_dev_string PROTO ((CONST char * _string,
81: dev_func_p _devfuncp, VOID * extra));
82: int read_symbol PROTO ((input_t * _input, lex_t * _lexp,
83: symbol_t ** _sym));
84: symbol_t * sym_intern PROTO ((token_t * tok));
85: symbol_t * sym_find PROTO ((CONST unsigned char * data,
86: size_t len));
87: symbol_t * string_to_symbol PROTO ((CONST unsigned char * str,
88: size_t len));
89:
90: EXTERN_C_END
91:
92: #endif /* ! defined (SYMBOL_H) */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.