Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
5131 | clevermous | 1 | /* |
2 | Copyright (C) 1996-1997 Id Software, Inc. |
||
3 | |||
4 | This program is free software; you can redistribute it and/or |
||
5 | modify it under the terms of the GNU General Public License |
||
6 | as published by the Free Software Foundation; either version 2 |
||
7 | of the License, or (at your option) any later version. |
||
8 | |||
9 | This program is distributed in the hope that it will be useful, |
||
10 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
||
11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
||
12 | |||
13 | See the GNU General Public License for more details. |
||
14 | |||
15 | You should have received a copy of the GNU General Public License |
||
16 | along with this program; if not, write to the Free Software |
||
17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
||
18 | |||
19 | */ |
||
20 | |||
21 | // this file is shared by quake and qcc |
||
22 | |||
23 | typedef int func_t; |
||
24 | typedef int string_t; |
||
25 | |||
26 | typedef enum {ev_void, ev_string, ev_float, ev_vector, ev_entity, ev_field, ev_function, ev_pointer} etype_t; |
||
27 | |||
28 | |||
29 | #define OFS_NULL 0 |
||
30 | #define OFS_RETURN 1 |
||
31 | #define OFS_PARM0 4 // leave 3 ofs for each parm to hold vectors |
||
32 | #define OFS_PARM1 7 |
||
33 | #define OFS_PARM2 10 |
||
34 | #define OFS_PARM3 13 |
||
35 | #define OFS_PARM4 16 |
||
36 | #define OFS_PARM5 19 |
||
37 | #define OFS_PARM6 22 |
||
38 | #define OFS_PARM7 25 |
||
39 | #define RESERVED_OFS 28 |
||
40 | |||
41 | |||
42 | enum { |
||
43 | OP_DONE, |
||
44 | OP_MUL_F, |
||
45 | OP_MUL_V, |
||
46 | OP_MUL_FV, |
||
47 | OP_MUL_VF, |
||
48 | OP_DIV_F, |
||
49 | OP_ADD_F, |
||
50 | OP_ADD_V, |
||
51 | OP_SUB_F, |
||
52 | OP_SUB_V, |
||
53 | |||
54 | OP_EQ_F, |
||
55 | OP_EQ_V, |
||
56 | OP_EQ_S, |
||
57 | OP_EQ_E, |
||
58 | OP_EQ_FNC, |
||
59 | |||
60 | OP_NE_F, |
||
61 | OP_NE_V, |
||
62 | OP_NE_S, |
||
63 | OP_NE_E, |
||
64 | OP_NE_FNC, |
||
65 | |||
66 | OP_LE, |
||
67 | OP_GE, |
||
68 | OP_LT, |
||
69 | OP_GT, |
||
70 | |||
71 | OP_LOAD_F, |
||
72 | OP_LOAD_V, |
||
73 | OP_LOAD_S, |
||
74 | OP_LOAD_ENT, |
||
75 | OP_LOAD_FLD, |
||
76 | OP_LOAD_FNC, |
||
77 | |||
78 | OP_ADDRESS, |
||
79 | |||
80 | OP_STORE_F, |
||
81 | OP_STORE_V, |
||
82 | OP_STORE_S, |
||
83 | OP_STORE_ENT, |
||
84 | OP_STORE_FLD, |
||
85 | OP_STORE_FNC, |
||
86 | |||
87 | OP_STOREP_F, |
||
88 | OP_STOREP_V, |
||
89 | OP_STOREP_S, |
||
90 | OP_STOREP_ENT, |
||
91 | OP_STOREP_FLD, |
||
92 | OP_STOREP_FNC, |
||
93 | |||
94 | OP_RETURN, |
||
95 | OP_NOT_F, |
||
96 | OP_NOT_V, |
||
97 | OP_NOT_S, |
||
98 | OP_NOT_ENT, |
||
99 | OP_NOT_FNC, |
||
100 | OP_IF, |
||
101 | OP_IFNOT, |
||
102 | OP_CALL0, |
||
103 | OP_CALL1, |
||
104 | OP_CALL2, |
||
105 | OP_CALL3, |
||
106 | OP_CALL4, |
||
107 | OP_CALL5, |
||
108 | OP_CALL6, |
||
109 | OP_CALL7, |
||
110 | OP_CALL8, |
||
111 | OP_STATE, |
||
112 | OP_GOTO, |
||
113 | OP_AND, |
||
114 | OP_OR, |
||
115 | |||
116 | OP_BITAND, |
||
117 | OP_BITOR |
||
118 | }; |
||
119 | |||
120 | |||
121 | typedef struct statement_s |
||
122 | { |
||
123 | unsigned short op; |
||
124 | short a,b,c; |
||
125 | } dstatement_t; |
||
126 | |||
127 | typedef struct |
||
128 | { |
||
129 | unsigned short type; // if DEF_SAVEGLOBGAL bit is set |
||
130 | // the variable needs to be saved in savegames |
||
131 | unsigned short ofs; |
||
132 | int s_name; |
||
133 | } ddef_t; |
||
134 | #define DEF_SAVEGLOBAL (1<<15) |
||
135 | |||
136 | #define MAX_PARMS 8 |
||
137 | |||
138 | typedef struct |
||
139 | { |
||
140 | int first_statement; // negative numbers are builtins |
||
141 | int parm_start; |
||
142 | int locals; // total ints of parms + locals |
||
143 | |||
144 | int profile; // runtime |
||
145 | |||
146 | int s_name; |
||
147 | int s_file; // source file defined in |
||
148 | |||
149 | int numparms; |
||
150 | byte parm_size[MAX_PARMS]; |
||
151 | } dfunction_t; |
||
152 | |||
153 | |||
154 | #define PROG_VERSION 6 |
||
155 | typedef struct |
||
156 | { |
||
157 | int version; |
||
158 | int crc; // check of header file |
||
159 | |||
160 | int ofs_statements; |
||
161 | int numstatements; // statement 0 is an error |
||
162 | |||
163 | int ofs_globaldefs; |
||
164 | int numglobaldefs; |
||
165 | |||
166 | int ofs_fielddefs; |
||
167 | int numfielddefs; |
||
168 | |||
169 | int ofs_functions; |
||
170 | int numfunctions; // function 0 is an empty |
||
171 | |||
172 | int ofs_strings; |
||
173 | int numstrings; // first string is a null string |
||
174 | |||
175 | int ofs_globals; |
||
176 | int numglobals; |
||
177 | |||
178 | int entityfields; |
||
179 | } dprograms_t;15) |
||
180 |