FTEQW
Documentation of the FTE engine source tree.
qcc.h
Go to the documentation of this file.
1#define COMPILER
2#define PROGSUSED
3
4//#define COMMONINLINES
5//#define inline _inline
6
7#include "cmdlib.h"
8#include <setjmp.h>
9/*
10#include <stdio.h>
11#include <conio.h>
12
13
14#include "pr_comp.h"
15*/
16
17//this is for testing
18#define WRITEASM
19
20#ifndef MAX_QPATH
21#define MAX_QPATH 128
22#endif
23#ifndef MAX_OSPATH
24#define MAX_OSPATH 1024
25#endif
26
27#ifdef __MINGW32_VERSION
28 #define MINGW
29#endif
30
31#define progfuncs qccprogfuncs
33
34#if defined(_MSC_VER) && _MSC_VER < 1900
35 #define strtoll _strtoi64
36 #define strtoull _strtoui64
37 #ifndef PRIxPTR
38 #define PRIxPTR "Ix"
39 #endif
40#else
41 #include <inttypes.h>
42 #ifndef PRIxPTR
43 #define PRIxPTR "p"
44 #endif
45#endif
46
47#ifndef STRINGIFY
48 #define STRINGIFY2(s) #s
49 #define STRINGIFY(s) STRINGIFY2(s)
50#endif
51
52void *qccHunkAlloc(size_t mem);
53void qccClearHunk(void);
54
55extern short (*PRBigShort) (short l);
56extern short (*PRLittleShort) (short l);
57extern int (*PRBigLong) (int l);
58extern int (*PRLittleLong) (int l);
59extern float (*PRBigFloat) (float l);
60extern float (*PRLittleFloat) (float l);
61
62
63#define MAX_ERRORS 10
64
65#define MAX_NAME 256 // chars long
66
67extern unsigned int MAX_REGS;
68extern unsigned int MAX_LOCALS;
69extern unsigned int MAX_TEMPS;
70
71extern int MAX_STRINGS;
72extern int MAX_GLOBALS;
73extern int MAX_FIELDS;
74extern int MAX_STATEMENTS;
75extern int MAX_FUNCTIONS;
76
77#define QCC_MAX_SOUNDS 1024 //convert to int?
78#define QCC_MAX_TEXTURES 1024 //convert to int?
79#define QCC_MAX_MODELS 1024 //convert to int?
80#define QCC_MAX_FILES 1024 //convert to int?
81#define MAX_DATA_PATH 64
82
83extern int MAX_CONSTANTS;
84#define MAXCONSTANTNAMELENGTH 64
85#define MAXCONSTANTPARAMLENGTH 32
86#define MAXCONSTANTPARAMS 32
87
90#define qcc_targetformat_ishexen2() (qcc_targetformat == QCF_HEXEN2 || qcc_targetformat == QCF_UHEXEN2 || qcc_targetformat == QCF_FTEH2)
91extern unsigned int qcc_targetversion;
92void QCC_OPCodeSetTarget(qcc_targetformat_t targfmt, unsigned int targver);
93pbool QCC_OPCodeSetTargetName(const char *targ);
94
95
96/*
97
98TODO:
99
100"stopped at 10 errors"
101
102other pointer types for models and clients?
103
104compact string heap?
105
106always initialize all variables to something safe
107
108the def->type->type arrangement is really silly.
109
110return type checking
111
112parm count type checking
113
114immediate overflow checking
115
116pass the first two parms in call->b and call->c
117
118*/
119
120/*
121
122comments
123--------
124// comments discard text until the end of line
125/ * * / comments discard all enclosed text (spaced out on this line because this documentation is in a regular C comment block, and typing them in normally causes a parse error)
126
127code structure
128--------------
129A definition is:
130 <type> <name> [ = <immediate>] {, <name> [ = <immediate>] };
131
132
133types
134-----
135simple types: void, float, vector, string, or entity
136 float width, height;
137 string name;
138 entity self, other;
139
140vector types:
141 vector org; // also creates org_x, org_y, and org_z float defs
142
143
144A function type is specified as: simpletype ( type name {,type name} )
145The names are ignored except when the function is initialized.
146 void() think;
147 entity() FindTarget;
148 void(vector destination, float speed, void() callback) SUB_CalcMove;
149 void(...) dprint; // variable argument builtin
150
151A field type is specified as: .type
152 .vector origin;
153 .string netname;
154 .void() think, touch, use;
155
156
157names
158-----
159Names are a maximum of 64 characters, must begin with A-Z,a-z, or _, and can continue with those characters or 0-9.
160
161There are two levels of scoping: global, and function. The parameter list of a function and any vars declared inside a function with the "local" statement are only visible within that function,
162
163
164immediates
165----------
166Float immediates must begin with 0-9 or minus sign. .5 is illegal.
167
168A parsing ambiguity is present with negative constants. "a-5" will be parsed as "a", then "-5", causing an error. Seperate the - from the digits with a space "a - 5" to get the proper behavior.
169 12
170 1.6
171 0.5
172 -100
173
174Vector immediates are three float immediates enclosed in single quotes.
175 '0 0 0'
176 '20.5 -10 0.00001'
177
178String immediates are characters enclosed in double quotes. The string cannot contain explicit newlines, but the escape character \n can embed one. The \" escape can be used to include a quote in the string.
179 "maps/jrwiz1.bsp"
180 "sound/nin/pain.wav"
181 "ouch!\n"
182
183Code immediates are statements enclosed in {} braces.
184statement:
185 { <multiple statements> }
186 <expression>;
187 local <type> <name> [ = <immediate>] {, <name> [ = <immediate>] };
188 return <expression>;
189 if ( <expression> ) <statement> [ else <statement> ];
190 while ( <expression> ) <statement>;
191 do <statement> while ( <expression> );
192 <function name> ( <function parms> );
193
194expression:
195 combiations of names and these operators with standard C precedence:
196 "&&", "||", "<=", ">=","==", "!=", "!", "*", "/", "-", "+", "=", ".", "<", ">", "&", "|"
197 Parenthesis can be used to alter order of operation.
198 The & and | operations perform integral bit ops on floats
199
200A built in function immediate is a number sign followed by an integer.
201 #1
202 #12
203
204
205compilation
206-----------
207Source files are processed sequentially without dumping any state, so if a defs file is the first one processed, the definitions will be available to all other files.
208
209The language is strongly typed and there are no casts.
210
211Anything that is initialized is assumed to be constant, and will have immediates folded into it. If you change the value, your program will malfunction. All uninitialized globals will be saved to savegame files.
212
213Functions cannot have more than eight parameters.
214
215Error recovery during compilation is minimal. It will skip to the next global definition, so you will never see more than one error at a time in a given function. All compilation aborts after ten error messages.
216
217Names can be defined multiple times until they are defined with an initialization, allowing functions to be prototyped before their definition.
218
219void() MyFunction; // the prototype
220
221void() MyFunction = // the initialization
222{
223 dprint ("we're here\n");
224};
225
226
227entities and fields
228-------------------
229
230
231execution
232---------
233Code execution is initiated by C code in quake from two main places: the timed think routines for periodic control, and the touch function when two objects impact each other.
234
235There are three global variables that are set before beginning code execution:
236 entity world; // the server's world object, which holds all global
237 // state for the server, like the deathmatch flags
238 // and the body ques.
239 entity self; // the entity the function is executing for
240 entity other; // the other object in an impact, not used for thinks
241 float time; // the current game time. Note that because the
242 // entities in the world are simulated sequentially,
243 // time is NOT strictly increasing. An impact late
244 // in one entity's time slice may set time higher
245 // than the think function of the next entity.
246 // The difference is limited to 0.1 seconds.
247Execution is also caused by a few uncommon events, like the addition of a new client to an existing server.
248
249There is a runnaway counter that stops a program if 100000 statements are executed, assuming it is in an infinite loop.
250
251It is acceptable to change the system set global variables. This is usually done to pose as another entity by changing self and calling a function.
252
253The interpretation is fairly efficient, but it is still over an order of magnitude slower than compiled C code. All time consuming operations should be made into built in functions.
254
255A profile counter is kept for each function, and incremented for each interpreted instruction inside that function. The "profile" console command in Quake will dump out the top 10 functions, then clear all the counters. The "profile all" command will dump sorted stats for every function that has been executed.
256
257
258afunc ( 4, bfunc(1,2,3));
259will fail because there is a shared parameter marshaling area, which will cause the 1 from bfunc to overwrite the 4 already placed in parm0. When a function is called, it copies the parms from the globals into it's privately scoped variables, so there is no collision when calling another function.
260
261total = factorial(3) + factorial(4);
262Will fail because the return value from functions is held in a single global area. If this really gets on your nerves, tell me and I can work around it at a slight performance and space penalty by allocating a new register for the function call and copying it out.
263
264
265built in functions
266------------------
267void(string text) dprint;
268Prints the string to the server console.
269
270void(entity client, string text) cprint;
271Prints a message to a specific client.
272
273void(string text) bprint;
274Broadcast prints a message to all clients on the current server.
275
276entity() spawn;
277Returns a totally empty entity. You can manually set everything up, or just set the origin and call one of the existing entity setup functions.
278
279entity(entity start, .string field, string match) find;
280Searches the server entity list beginning at start, looking for an entity that has entity.field = match. To start at the beginning of the list, pass world. World is returned when the end of the list is reached.
281
282<FIXME: define all the other functions...>
283
284
285gotchas
286-------
287
288The && and || operators DO NOT EARLY OUT like C!
289
290Don't confuse single quoted vectors with double quoted strings
291
292The function declaration syntax takes a little getting used to.
293
294Don't forget the ; after the trailing brace of a function initialization.
295
296Don't forget the "local" before defining local variables.
297
298There are no ++ / -- operators, or operate/assign operators.
299
300*/
301
302
303#if 1
304#include "hash.h"
307#endif
308
309#ifdef WRITEASM
310extern FILE *asmfile;
311extern pbool asmfilebegun;
312#endif
313//=============================================================================
314
315// offsets are always multiplied by 4 before using
316typedef unsigned int gofs_t; // offset in global data block
318
319#define MAX_PARMS 8
320
321//keep this sizeof(float)
322typedef union QCC_eval_basic_s
323{
324 QCC_string_t string;
326#ifdef __GNUC__
327 pvec_t vector[0]; //gnuc extension. I'm using it to mute clang warnings.
328#else
329 pvec_t vector[1]; //should be 3, except that then eval_t would be too big.
330#endif
334// union QCC_eval_s *ptr;
336
337//must be the maximum size possible for a single basic type.
338typedef union QCC_eval_s
339{
340 QCC_string_t string;
342 pdouble_t _double;
347 pint64_t i64;
348 puint64_t u64;
349// union QCC_eval_s *ptr;
351
353{
356 pbool optional:1; //argument may safely be omitted, for builtin functions. for qc functions use the defltvalue instead.
357 pbool isvirtual:1; //const, with implicit initialisation only. valid for structs
358 unsigned char out; //0=in,1==inout,2=out
359 unsigned int ofs; //FIXME: make byte offsets, for bytes/shorts.
360 unsigned int arraysize;
362};
364{
367 struct QCC_type_s *indexertype; //null if not indexer
372};
373
374typedef struct QCC_type_s
375{
377
378 struct QCC_type_s *parentclass; //type_entity...
379// function types are more complex
380 struct QCC_type_s *aux_type; // return type or field type
381
382 struct QCC_typeparam_s *params; //[num_parms]
383 unsigned int num_parms;
384
385 unsigned int size; //FIXME: make bytes, for bytes+shorts
386 pbool typedefed:1; //name is in the typenames list.
387 pbool vargs:1; //function has vargs
388 pbool vargcount:1; //function has special varg count param
389 const char *name;
390 const char *aname;
391
392 const char *filen;
393 unsigned int line;
394
396
397 struct QCC_function_s *scope; //stoopid scoped typedefs...
398 struct QCC_type_s *ptrto; //(cache) this points to a type that is a pointer back to this type. yeah, weird.
399 struct QCC_type_s *fldto; //(cache) this points to a type that is a pointer back to this type. yeah, weird.
404
405typedef struct temp_s temp_t;
406void QCC_PurgeTemps(void);
407void QCC_FinaliseTemps(void);
408
409//not written
410typedef struct QCC_def_s
411{
413 char *name;
414 char *comment; //ui info
416 struct QCC_def_s *nextlocal; //provides a chain of local variables for the opt_locals_marshalling optimisation.
417 gofs_t ofs; //offset of symbol relative to symbol header.
418 struct QCC_function_s *scope; // function the var was defined in, or NULL
419 struct QCC_def_s *deftail; // arrays and structs create multiple globaldef objects providing different types at the different parts of the single object (struct), or alternative names (vectors). this allows us to correctly set the const type based upon how its initialised.
421 int constant; // 1 says we can use the value over and over again. 2 is used on fields, for some reason.
422
423 struct QCC_def_s *reloc; //the symbol that we're a reloc for
424 struct QCC_def_s *gaddress; //a def that holds our offset.
425 struct QCC_def_s *symbolheader; //this is the original symbol within which the def is stored.
426 union QCC_eval_basic_s *symboldata; //null if uninitialised. use sym->symboldata[sym->ofs] to index.
427 unsigned int symbolsize; //total byte size of symbol
428
429 int refcount; //if 0, temp can be reused. tracked on globals too in order to catch bugs that would otherwise be a little too obscure.
430 int timescalled; //part of the opt_stripfunctions optimisation.
431
432 const char *filen;
435
437 //should really use proper flags
438 pbool funccalled:1; //was called somewhere.
439 pbool read:1; //variable was read
440 pbool written:1; //variable was written
441 pbool referenced:1; //was used somewhere in the code (even if it can still be stripped). this controls warnings only.
442 pbool shared:1; //weird multiprogs flag thing.
443 pbool saved:1; //def may be saved to saved games.
444 pbool isstatic:1; //global, even if scoped. also specific to the file it was seen in.
445 pbool subscoped_away:1; //this local is no longer linked into the locals hash table. don't do remove it twice.
446// pbool followptr:1; //float &foo;
447 pbool strip:1; //info about this def should be stripped. it may still consume globals space however, and its storage can still be used, its just not visible.
448 pbool allowinline:1; //calls to this function will attempt to inline the specified function. requires const, supposedly.
449 pbool used:1; //if it remains 0, it may be stripped. this is forced for functions and fields. commonly 0 on fields.
450 pbool unused:1; //silently strip it if it wasn't referenced.
451 pbool localscope:1; //is a local, as opposed to a static (which is only visible within its scope)
452 pbool arraylengthprefix:1; //hexen2 style arrays have a length prefixed to them for auto bounds checks. this can only work reliably for simple non-struct arrays.
453 pbool assumedtype:1; //#merged. the type is not reliable.
454 pbool weak:1; //ignore any initialiser value (only permitted on functions)
455 pbool accumulate:1; //don't finalise the function's statements.
457 pbool initialized:1; //true when a declaration included "= immediate".
458 pbool isextern:1; //fteqw-specific lump entry
459 pbool isparameter:1; //its an engine parameter (thus preinitialised).
460 const char *deprecated; //reason its deprecated (or empty for no reason given)
461
462 int fromstatement; //statement that it is valid from.
465
466struct temp_s {
468 unsigned char locked;
469 unsigned int size;
470
472 unsigned int laststatement;
473};
474extern size_t tempsused;
475
476typedef struct
477{
478 enum{
479 REF_GLOBAL, //(global.ofs) - use vector[2] is an array ref or vector_z
480 REF_ARRAY, //(global.ofs+wordoffset) - constant offsets should be direct references, variable offsets will generally result in function calls
481 REF_ARRAYHEAD,//(global) - like REF_ARRAY, but otherwise convert to a pointer.
482 REF_POINTER,//*(pointerdef+wordindex) - maths...
483 REF_FIELD, //(entity.field) - reading is a single load, writing requires address+storep
484 REF_STRING, //"hello"[1]=='e' - special opcodes, or str2chr builtin, or something
485 REF_NONVIRTUAL, //(global.ofs) - identical to global except for function calls, where index can be used to provide the 'newself' for the call.
486 REF_THISCALL, //(global.ofs) - identical to global except for function calls, where index is used as the first argument.
487 REF_ACCESSOR //buf_create()[5]
489
492 QCC_type_t *cast; //entity.float is float, not pointer.
493 struct accessor_s *accessor; //the accessor field of base that we're trying to use
494 int postinc; //+1 or -1
495 pbool readonly; //for whatever reason, like base being a const
496} QCC_ref_t;
497
498//============================================================================
499
500// pr_loc.h -- program local defs
501
502
503//=============================================================================
504extern char QCC_copyright[1024];
505extern char QCC_Packname[5][128];
506extern int QCC_packid;
507
508extern const unsigned int type_size[];
509//extern QCC_def_t *def_for_type[9];
510
512extern char *basictypenames[];
513
515{
516 int builtin; // the builtin number. >= 0
517 int code; // first statement. if -1, is a builtin.
518 dfunction_t *merged; // this function was merged. this is the index to use to ensure that the parms are sized correctly..
519 string_t s_filed; // source file with definition
520 const char *filen;
521 int line;
523 char *name; //internal name of function
524 struct QCC_function_s *parentscope; //for nested functions
525 struct QCC_type_s *type; //same as the def's type
526 struct QCC_def_s *def;
528 QCC_sref_t returndef; //default return value
529 pbool privatelocals; //false means locals may overlap with other functions, true is needed for compat if stuff is uninitialised.
530// unsigned int parm_ofs[MAX_PARMS]; // always contiguous, right?
531
532 QCC_statement_t *statements; //if set, then this function isn't finialised yet.
534};
535
536
537//
538// output generated by prog parsing
539//
540typedef struct
541{
542 char *memory;
546
547 QCC_def_t def_head; // unused head of linked list
548 QCC_def_t *def_tail; // add new defs after this and move it
549 QCC_def_t local_head; // chain of variables which need to be pushed and stuff (head unused).
550 QCC_def_t *local_tail; // add new defs after this and move it
551
552 unsigned int size_fields;
554
555extern QCC_pr_info_t pr;
556
557
558typedef struct
559{
560 char name[MAXCONSTANTNAMELENGTH];
561 char *value;
562 char params[MAXCONSTANTPARAMS][MAXCONSTANTPARAMLENGTH];
564 int inside:10; //cuts off at some point
568 const char *fromfile;
570
573
574char *QCC_PR_GetDefinesList(void);
575
576//============================================================================
577
578extern pbool pr_dumpasm;
579extern pbool preprocessonly;
580
581//extern QCC_def_t **pr_global_defs; // to find def for a global variable
582
583typedef enum {
584tt_eof, // end of file reached
585tt_name, // an alphanumeric name token
586tt_punct, // code punctuation
587tt_immediate, // string, float, vector
589
590extern char *pr_token_precomment;
591extern char pr_token[8192];
593extern int pr_token_line;
594extern int pr_token_line_last;
597
598extern int verbose;
599#define VERBOSE_WARNINGSONLY -1
600#define VERBOSE_PROGRESS 0
601#define VERBOSE_STANDARD 1
602#define VERBOSE_DEBUG 2
603#define VERBOSE_DEBUGSTATEMENTS 3 //figuring out the files can be expensive.
604
605extern pbool keyword_asm;
606extern pbool keyword_break;
607extern pbool keyword_case;
608extern pbool keyword_class;
610extern pbool keyword_const;
611extern pbool keyword_inout;
615extern pbool keyword_do;
616extern pbool keyword_entity;
617extern pbool keyword_float;
618extern pbool keyword_double;
619extern pbool keyword_for;
620extern pbool keyword_goto;
621extern pbool keyword_char;
622extern pbool keyword_byte;
623extern pbool keyword_short;
624extern pbool keyword_int;
626extern pbool keyword_long;
627extern pbool keyword_signed;
629extern pbool keyword_state;
630extern pbool keyword_string;
631extern pbool keyword_struct;
632extern pbool keyword_switch;
634extern pbool keyword_loop;
635extern pbool keyword_until;
636extern pbool keyword_var;
637extern pbool keyword_vector;
638extern pbool keyword_union;
639extern pbool keyword_enum; //kinda like in c, but typedef not supported.
640extern pbool keyword_enumflags; //like enum, but doubles instead of adds 1.
641extern pbool keyword_typedef; //fixme
642extern pbool keyword_extern; //function is external, don't error or warn if the body was not found
643extern pbool keyword_shared; //mark global to be copied over when progs changes (part of FTE_MULTIPROGS)
644extern pbool keyword_noref; //nowhere else references this, don't strip it.
645extern pbool keyword_nosave; //don't write the def to the output.
646extern pbool keyword_inline; //don't write the def to the output.
647extern pbool keyword_strip; //don't write the def to the output.
648extern pbool keyword_union; //you surly know what a union is!
649extern pbool keyword_wrap;
650extern pbool keyword_weak;
652extern pbool keyword_using;
653
654extern pbool keyword_unused;
655extern pbool keyword_used;
656extern pbool keyword_static;
658extern pbool keyword_ignore;
659
661extern pbool output_parms;
665extern pbool flag_acc;
667extern pbool flag_laxcasts;
668extern pbool flag_hashonly;
673extern pbool flag_msvcstyle;
675extern pbool flag_filetimes;
681extern pbool flag_qccx;
683extern pbool flag_assumevar;
686extern pbool flag_cpriority;
687extern pbool flag_qcfuncs;
688extern pbool flag_embedsrc;
691
699extern pbool opt_filenames;
703extern pbool opt_locals;
708//extern pbool opt_comexprremoval;
711extern pbool opt_logicops;
714
715extern int optres_shortenifnots;
716extern int optres_overlaptemps;
719extern int optres_nonvec_parms;
720extern int optres_constant_names;
721extern int optres_precache_file;
722extern int optres_filenames;
723extern int optres_assignments;
724extern int optres_unreferenced;
725extern int optres_function_names;
726extern int optres_locals;
727extern int optres_dupconstdefs;
729extern int optres_return_only;
730extern int optres_compound_jumps;
731//extern int optres_comexprremoval;
732extern int optres_stripfunctions;
734extern int optres_logicops;
735extern int optres_inlines;
736
737pbool CompileParams(progfuncs_t *progfuncs, void(*cb)(void), int nump, const char **parms);
739
741
742void QCC_PR_Lex (void);
743// reads the next token into pr_token and classifies its type
744
745QCC_type_t *QCC_PR_NewType (const char *name, int basictype, pbool typedefed); //note: name must be hunk/immediate
747QCC_type_t *QCC_PR_ParseType (int newtype, pbool silentfail);
750QCC_type_t *QCC_TypeForName(const char *name);
751QCC_type_t *QCC_PR_ParseFunctionType (int newtype, QCC_type_t *returntype);
752QCC_type_t *QCC_PR_ParseFunctionTypeReacc (int newtype, QCC_type_t *returntype);
753QCC_type_t *QCC_PR_GenFunctionType (QCC_type_t *rettype, struct QCC_typeparam_s *args, int numargs);
754char *QCC_PR_ParseName (void);
755struct QCC_typeparam_s *QCC_PR_FindStructMember(QCC_type_t *t, const char *membername, unsigned int *out_ofs);
757
758const char *QCC_VarAtOffset(QCC_sref_t ref);
759
760void QCC_PrioritiseOpcodes(void);
761int QCC_PR_IntConstExpr(void);
762
763#ifndef COMMONINLINES
764pbool QCC_PR_CheckImmediate (const char *string);
765pbool QCC_PR_CheckToken (const char *string);
766pbool QCC_PR_PeekToken (const char *string);
767pbool QCC_PR_CheckName (const char *string);
768void QCC_PR_Expect (const char *string);
769pbool QCC_PR_CheckKeyword(int keywordenabled, const char *string);
770#endif
771pbool QCC_PR_CheckTokenComment(const char *string, char **comment);
772NORETURN void VARGS QCC_PR_ParseError (int errortype, const char *error, ...);
773pbool VARGS QCC_PR_ParseWarning (int warningtype, const char *error, ...);
774pbool VARGS QCC_PR_Warning (int type, const char *file, int line, const char *error, ...);
775void VARGS QCC_PR_Note (int type, const char *file, int line, const char *error, ...);
776void QCC_PR_ParsePrintDef (int warningtype, QCC_def_t *def);
777void QCC_PR_ParsePrintSRef (int warningtype, QCC_sref_t sref);
778NORETURN void VARGS QCC_PR_ParseErrorPrintDef (int errortype, QCC_def_t *def, const char *error, ...);
779NORETURN void VARGS QCC_PR_ParseErrorPrintSRef (int errortype, QCC_sref_t sref, const char *error, ...);
780
782
783int QCC_WarningForName(const char *name);
784char *QCC_NameForWarning(int idx);
785
786//QccMain.c must be changed if this is changed.
787enum {
790 WARN_REMOVEDWARNING, //to silence warnings about old warnings.
802 WARN_STRINGOFFSET, //works for static/memalloc strings, but fundamentally unsafe on tempstrings/etc, and varies between engine
803 WARN_OVERFLOW, //compile time overflow or inprecision.
846 WARN_DEPRECACTEDSYNTAX, //triggered when syntax is used that I'm trying to kill
847 WARN_DEPRECATEDVARIABLE, //triggered from usage of a symbol that someone tried to kill
848 WARN_MUTEDEPRECATEDVARIABLE, //triggered from usage of a symbol that someone tried to kill (without having been muted).
849 WARN_GMQCC_SPECIFIC, //extension created by gmqcc that conflicts or isn't properly implemented.
850 WARN_FTE_SPECIFIC, //extension that only FTEQCC will have a clue about.
851 WARN_EXTENSION_USED, //extension that frikqcc also understands
853 WARN_IFVECTOR_DISABLED, //if(vector) does if(vector_x) if ifvector is disabled
854 WARN_LAXCAST, //some errors become this with a compiler flag
862 WARN_SYSTEMCRC, //unknown system crc
863 WARN_SYSTEMCRC2, //legacy/dp system crc
865 WARN_MISSINGMEMBERQUALIFIER,//virtual/static/nonvirtual qualifier is missing
866 WARN_SELFNOTTHIS, //warned for because 'self' does not have the right type. we convert such references to 'this' instead, which is more usable.
867 WARN_EVILPREPROCESSOR, //exploited by nexuiz, and generally unsafe.
869 WARN_STRICTTYPEMISMATCH, //self.think = T_Damage; both are functions, but the arguments/return types/etc differ.
870 WARN_MISUSEDAUTOCVAR, //various issues with autocvar definitions.
872 WARN_POINTERASSIGNMENT, //&somefloat = 5; disabled for qccx compat sanity.
873 WARN_COMPATIBILITYHACK, //work around old defs.qc or invalid dpextensions.qc
877 WARN_IGNOREDKEYWORD, //use of a keyword that fteqcc does not support at this time.
878
879 ERR_PARSEERRORS, //caused by qcc_pr_parseerror being called.
880
881 //these are definatly my fault...
893
894 //limitations, some are imposed by compiler, some arn't.
903
904 //these are probably yours, or qcc being fussy.
973
976
977//ansi colour codes, for debugging stuff.
978enum
979{
980 COL_NONE, //white/regular text.
981 COL_ERROR, //to highlight errors
982 COL_WARNING, //to highlight warnings
983 COL_LOCATION, //to highlight file:line locations
984 COL_NAME, //unknown symbols.
985 COL_SYMBOL, //known symbols
986 COL_TYPE, //known types
987 COL_MAX
989extern const char *qcccol[COL_MAX];
990#define col_none qcccol[COL_NONE]
991#define col_location qcccol[COL_LOCATION]
992#define col_error qcccol[COL_ERROR]
993#define col_name qcccol[COL_NAME]
994#define col_warning qcccol[COL_WARNING]
995#define col_symbol qcccol[COL_SYMBOL]
996#define col_type qcccol[COL_TYPE]
997
998#define FLAG_KILLSDEBUGGERS 1
999#define FLAG_ASDEFAULT 2
1000#define FLAG_SETINGUI 4
1001#define FLAG_HIDDENINGUI 8
1002#define FLAG_MIDCOMPILE 16 //option can be changed mid-compile with the special pragma
1003typedef struct {
1005 char *abbrev;
1007 int flags; //1: kills debuggers. 2: applied as default.
1010 void *guiinfo;
1013
1014typedef struct {
1016 int flags; //2 applied as default
1017 char *abbrev;
1020 void *guiinfo;
1023
1024#define WA_IGNORE 0
1025#define WA_WARN 1
1026#define WA_ERROR 2
1027extern unsigned char qccwarningaction[WARN_MAX];
1028
1029extern jmp_buf pr_parse_abort; // longjump with this on parse error
1030extern const char *s_filen; //name of the file we're currently compiling.
1031extern QCC_string_t s_filed; //name of the file we're currently compiling, as seen by whoever reads the .dat
1032extern int pr_source_line;
1033extern char *pr_file_p;
1034
1036
1037
1038#define OFS_NULL 0
1039#define OFS_RETURN 1
1040#define OFS_PARM0 4 // leave 3 ofs for each parm to hold vectors
1041#define OFS_PARM1 7
1042#define OFS_PARM2 10
1043#define OFS_PARM3 13
1044#define OFS_PARM4 16
1045#define RESERVED_OFS 28
1046
1047
1048extern struct QCC_function_s *pr_scope;
1050
1051void QCC_PR_NewLine (pbool incomment);
1052#define GDF_NONE 0
1053#define GDF_SAVED 1
1054#define GDF_STATIC 2
1055#define GDF_CONST 4
1056#define GDF_STRIP 8 //always stripped, regardless of optimisations. used for class member fields
1057#define GDF_SILENT 16 //used by the gui, to suppress ALL warnings associated with querying the def.
1058#define GDF_INLINE 32 //attempt to inline calls to this function
1059#define GDF_USED 64 //don't strip this, ever.
1060#define GDF_BASICTYPE 128 //don't care about #merge types not being known correctly.
1061#define GDF_SCANLOCAL 256 //don't use the locals hash table
1062#define GDF_POSTINIT 512 //field must be initialised at the end of the compile (allows arrays to be extended later)
1063#define GDF_PARAMETER 1024
1064QCC_def_t *QCC_PR_GetDef (QCC_type_t *type, const char *name, struct QCC_function_s *scope, pbool allocate, int arraysize, unsigned int flags);
1065QCC_sref_t QCC_PR_GetSRef (QCC_type_t *type, const char *name, struct QCC_function_s *scope, pbool allocate, int arraysize, unsigned int flags);
1068char *QCC_PR_CheckCompConstTooltip(char *word, char *outstart, char *outend);
1069
1071
1072void QCC_PR_SkipToSemicolon (void);
1073
1074extern char *pr_parm_argcount_name;
1075#define MAX_EXTRA_PARMS 128
1076#ifdef MAX_EXTRA_PARMS
1077extern char pr_parm_names[MAX_PARMS+MAX_EXTRA_PARMS][MAX_NAME];
1078extern QCC_sref_t extra_parms[MAX_EXTRA_PARMS];
1079#else
1080extern char pr_parm_names[MAX_PARMS][MAX_NAME];
1081#endif
1082
1083char *QCC_PR_ValueString (etype_t type, void *val);
1084
1085void QCC_PR_ClearGrabMacros (pbool newfile);
1086
1087void QCC_ImportProgs(const char *filename);
1088pbool QCC_PR_CompileFile (char *string, char *filename);
1089void QCC_PR_ResetErrorScope(void);
1090
1092
1093extern QCC_def_t def_ret, def_parms[MAX_PARMS];
1094
1095void QCC_PR_EmitArrayGetFunction(QCC_def_t *defscope, QCC_def_t *thearray, char *arrayname);
1096void QCC_PR_EmitArraySetFunction(QCC_def_t *defscope, QCC_def_t *thearray, char *arrayname);
1097void QCC_PR_EmitClassFromFunction(QCC_def_t *defscope, QCC_type_t *basetype);
1098
1099void QCC_PR_ParseDefs (const char *classname, pbool fatal);
1100QCC_def_t *QCC_PR_DummyDef(QCC_type_t *type, const char *name, QCC_function_t *scope, int arraysize, QCC_def_t *rootsymbol, unsigned int ofs, int referable, unsigned int flags);
1101void QCC_PR_ParseInitializerDef(QCC_def_t *def, unsigned int flags);
1102void QCC_PR_FinaliseFunctions(void);
1103
1104
1105pbool QCC_main (int argc, const char **argv); //as part of the quake engine
1106void QCC_ContinueCompile(void);
1107void PostCompile(void);
1108pbool PreCompile(void);
1109void QCC_Cleanup(void);
1110
1111
1112#define FIRST_LOCAL 0//(MAX_REGS)
1113//=============================================================================
1114
1115extern char pr_immediate_string[8192];
1116extern size_t pr_immediate_strlen;
1117
1119extern unsigned int numpr_globals;
1120
1121extern char *strings;
1122extern int strofs;
1123
1125extern int numstatements;
1126
1128extern dfunction_t *dfunctions;
1129extern int numfunctions;
1130
1131extern QCC_ddef_t *qcc_globals;
1132extern int numglobaldefs;
1133
1134extern QCC_def_t *activetemps;
1135
1136extern QCC_ddef_t *fields;
1137extern int numfielddefs;
1138
1139extern QCC_type_t *qcc_typeinfo;
1140extern int numtypeinfos;
1141extern int maxtypeinfos;
1142
1143extern int ForcedCRC;
1144extern float qcc_framerate; //number of OP_STATE ticks per second.
1145extern pbool defaultnoref;
1146extern pbool defaultnosave;
1147extern pbool defaultstatic;
1148
1149extern int *qcc_tempofs;
1150extern int max_temps;
1151//extern int qcc_functioncalled; //unuse temps if this is true - don't want to reuse the same space.
1152
1153extern int tempsstart;
1154extern int numtemps;
1155
1156extern char compilingrootfile[]; //.src file currently being compiled
1157
1158typedef char PATHSTRING[MAX_DATA_PATH];
1159
1160typedef struct
1161{
1164 int used;
1166 const char *filename;
1167} precache_t;
1169extern int numsounds;
1171extern int numtextures;
1173extern int nummodels;
1175extern int numfiles;
1176
1177typedef struct qcc_includechunk_s {
1178 struct qcc_includechunk_s *prev;//chunk it was expanded/included from
1179 const char *currentfilename; //filename it was expended from
1180 int currentlinenumber; //line it was expanded from
1182 CompilerConstant_t *cnst; //define we're expanding from
1183 char *datastart; //the start of the expanded data
1186
1187int QCC_CopyString (const char *str);
1188int QCC_CopyStringLength (const char *str, size_t length);
1189
1190
1191
1192
1194 size_t size;
1195 size_t bufsize;
1196 size_t zhdrofs;
1197 int zcrc;
1198 char *file;
1199 enum{FT_CODE, FT_DATA} type; //quakec source file or not.
1201 char filename[1];
1204int WriteSourceFiles(qcc_cachedsourcefile_t *filelist, int h, pbool sourceaswell, pbool legacyembed);
1205
1206
1207struct pkgctx_s;
1209{
1213};
1214pbool Packager_CompressDir(const char *dirname, enum pkgtype_e type, void (*messagecallback)(void *userctx, const char *message, ...), void *userctx);
1215struct pkgctx_s *Packager_Create(void (*messagecallback)(void *userctx, const char *message, ...), void *userctx);
1216void Packager_ParseFile(struct pkgctx_s *ctx, char *scriptfilename);
1217void Packager_ParseText(struct pkgctx_s *ctx, char *scripttext);
1218void Packager_WriteDataset(struct pkgctx_s *ctx, char *setname);
1219void Packager_Destroy(struct pkgctx_s *ctx);
1220
1221
1222
1223#ifdef COMMONINLINES
1224static bool inline QCC_PR_CheckToken (char *string)
1225{
1226 if (pr_token_type != tt_punct)
1227 return false;
1228
1229 if (STRCMP (string, pr_token))
1230 return false;
1231
1232 QCC_PR_Lex ();
1233 return true;
1234}
1235static bool inline QCC_PR_PeekToken (char *string)
1236{
1237 if (pr_token_type != tt_punct)
1238 return false;
1239
1240 if (STRCMP (string, pr_token))
1241 return false;
1242
1243 return true;
1244}
1245
1246static void inline QCC_PR_Expect (const char *string)
1247{
1248 if (strcmp (string, pr_token))
1249 QCC_PR_ParseError ("expected %s, found %s",string, pr_token);
1250 QCC_PR_Lex ();
1251}
1252#endif
1253
1255void editbadfile(const char *fname, int line);
1256char *TypeName(QCC_type_t *type, char *buffer, int buffersize);
1257void QCC_PR_AddIncludePath(const char *newinc);
1258void QCC_PR_IncludeChunk (char *data, pbool duplicate, char *filename);
1259void QCC_PR_CloseProcessor(void);
1260void QCC_FindBestInclude(char *newfile, char *currentfile, pbool verbose);
1262extern void *(*pHash_Get)(hashtable_t *table, const char *name);
1263extern void *(*pHash_GetNext)(hashtable_t *table, const char *name, void *old);
1264extern void *(*pHash_Add)(hashtable_t *table, const char *name, void *data, bucket_t *);
1265extern void (*pHash_RemoveData)(hashtable_t *table, const char *name, void *data);
1266
1267//when originally running from a .dat, we load up all the functions and work from those rather than actual files.
1268//(these get re-written into the resulting .dat)
1270void QCC_CloseAllVFiles(void);
1271vfile_t *QCC_FindVFile(const char *name);
1272vfile_t *QCC_AddVFile(const char *name, void *data, size_t size);
1273void QCC_CatVFile(vfile_t *, const char *fmt, ...);
1274void QCC_InsertVFile(vfile_t *, size_t pos, const char *fmt, ...);
1275char *ReadProgsCopyright(char *buf, size_t bufsize);
1276
1277//void *QCC_ReadFile(const char *fname, unsigned char *(*buf_get)(void *ctx, size_t len), void *buf_ctx, size_t *out_size, pbool issourcefile);
1278
1279
1280typedef struct
1281{
1282 char name[56];
1283 int filepos, filelen;
1284} packfile_t;
1285
1286typedef struct
1287{
1288 char id[4];
1291} packheader_t;
void(QDECL *vgui_frame)(void)
s
Definition: execloop.h:53
char filename[64]
Definition: generatebuiltin.c:8
void size_t buffersize
Definition: gl_model.c:912
GLenum GLuint GLenum GLsizei const GLchar * message
Definition: gl_vidcommon.c:351
GLint ref
Definition: gl_vidcommon.c:76
GLfloat t
Definition: gl_vidcommon.c:184
GLsizei bufsize
Definition: gl_vidcommon.c:312
static EGLSurface EGLSurface EGLContext ctx
Definition: gl_videgl.c:47
int error
Definition: gl_vidlinuxglx.c:447
float old
Definition: gl_vidlinuxglx.c:1365
static CONST PIXELFORMATDESCRIPTOR *static int
Definition: gl_vidnt.c:222
GLsizei const GLcharARB const GLint * length
Definition: glquake.h:149
GLint GLenum type
Definition: glquake.h:157
GLuint GLcharARB * name
Definition: glquake.h:155
GLint size
Definition: glquake.h:157
GLenum GLint * params
Definition: glquake.h:151
GLint GLfloat * parms
Definition: glsupp.h:612
keynum_t pos
Definition: in_sdl.c:105
char fname[MAX_QPATH]
Definition: m_mp3.c:160
char ** data
Definition: p_script.c:63
int b
Definition: pr_lua.c:242
pubprogfuncs_t progfuncs
Definition: pr_lua.c:198
int idx
Definition: pr_lua.c:221
etype_t
Definition: progslib.h:75
unsigned int pbool
Definition: progtype.h:62
uint64_t puint_t
Definition: progtype.h:21
int64_t pint_t
Definition: progtype.h:20
puint_t string_t
Definition: progtype.h:66
puint_t func_t
Definition: progtype.h:65
double pvec_t
Definition: progtype.h:19
QCC_type_t * type_string
Definition: qcc.h:511
pbool QCC_PR_PeekToken(const char *string)
Definition: qcc_pr_lex.c:4401
pbool flag_iffloat
Definition: qcc.h:664
QCC_type_t * QCC_PR_GenFunctionType(QCC_type_t *rettype, struct QCC_typeparam_s *args, int numargs)
Definition: qcc_pr_lex.c:5263
pbool flag_assume_integer
Definition: qcc_pr_comp.c:139
pbool flag_brokenarrays
Definition: qcc_pr_comp.c:145
pbool flag_qcfuncs
Definition: qcc_pr_comp.c:152
NORETURN void VARGS QCC_PR_ParseErrorPrintSRef(int errortype, QCC_sref_t sref, const char *error,...)
Definition: qcc_pr_lex.c:4112
void QCC_PR_ResetErrorScope(void)
Definition: qcc_pr_lex.c:4049
pbool opt_overlaptemps
Definition: qcc_pr_comp.c:158
char * QCC_PR_GetDefinesList(void)
Definition: qcc_pr_lex.c:513
QCC_type_t * type_field
Definition: qcc.h:511
void QCC_ContinueCompile(void)
Definition: qccmain.c:5726
pbool VARGS QCC_PR_Warning(int type, const char *file, int line, const char *error,...)
Definition: qcc_pr_lex.c:4182
pbool keyword_typedef
Definition: qcc_pr_comp.c:94
pbool flag_typeexplicit
Definition: qcc_pr_comp.c:142
pbool keyword_union
Definition: qcc.h:648
char * QCC_NameForWarning(int idx)
Definition: qccmain.c:273
int numtypeinfos
Definition: qccmain.c:139
char compilingrootfile[]
Definition: qccmain.c:70
jmp_buf pr_parse_abort
Definition: qcc_pr_comp.c:309
int verbose
Definition: iwebiface.c:329
int pr_token_line_last
Definition: qcc_pr_lex.c:44
pkgtype_e
Definition: qcc.h:1209
@ PACKAGER_PK3
Definition: qcc.h:1211
@ PACKAGER_PK3_SPANNED
Definition: qcc.h:1212
@ PACKAGER_PAK
Definition: qcc.h:1210
pbool opt_locals
Definition: qcc_pr_comp.c:170
struct QCC_function_s * pr_scope
Definition: qcc_pr_comp.c:297
pbool output_parms
Definition: qcc_pr_comp.c:120
pbool CompileParams(progfuncs_t *progfuncs, void(*cb)(void), int nump, const char **parms)
Definition: comprout.c:105
void QCC_PR_ParsePrintSRef(int warningtype, QCC_sref_t sref)
Definition: qcc_pr_lex.c:4008
int optres_constant_names
Definition: qcc_pr_comp.c:189
int MAX_STRINGS
Definition: qccmain.c:52
QCC_type_t * type_void
Definition: qcc_pr_lex.c:86
void editbadfile(const char *fname, int line)
Definition: comprout.c:264
unsigned int MAX_TEMPS
Definition: qccmain.c:50
pbool opt_constantarithmatic
Definition: qcc_pr_comp.c:162
pbool flag_embedsrc
Definition: qcc_pr_comp.c:154
pbool keyword_float
Definition: qcc_pr_comp.c:69
void QCC_PrioritiseOpcodes(void)
Definition: qcc_pr_comp.c:1288
token_type_t pr_token_type
Definition: qcc_pr_lex.c:42
pbool asmfilebegun
Definition: qccmain.c:124
pbool opt_constant_names
Definition: qcc_pr_comp.c:164
qcc_targetformat_t qcc_targetformat
Definition: qccmain.c:134
void QCC_PR_ParsePrintDef(int warningtype, QCC_def_t *def)
Definition: qcc_pr_lex.c:3962
QCC_def_t def_ret
Definition: qcc_pr_lex.c:109
pbool keyword_shared
Definition: qcc_pr_comp.c:105
pbool keyword_thinktime
Definition: qcc_pr_comp.c:61
QCC_type_t * qcc_typeinfo
Definition: qccmain.c:138
void QCC_FreeDef(QCC_def_t *def)
Definition: qcc_pr_comp.c:2245
QCC_type_t * type_floatpointer
Definition: qcc.h:511
pbool opt_locals_overlapping
Definition: qcc_pr_comp.c:175
QCC_type_t * type_bint
Definition: qcc.h:511
float(* PRBigFloat)(float l)
Definition: qcc_cmdlib.c:77
char * basictypenames[]
Definition: qcc_cmdlib.c:44
pbool opt_vectorcalls
Definition: qcc_pr_comp.c:177
pbool autoprototype
Definition: qcc_pr_comp.c:121
void QCC_PR_Lex(void)
Definition: qcc_pr_lex.c:3820
QCC_type_t * type_variant
Definition: qcc.h:511
unsigned int MAX_LOCALS
Definition: qccmain.c:49
FILE * asmfile
Definition: qccmain.c:123
QCC_type_t * QCC_PR_ParseType(int newtype, pbool silentfail)
Definition: qcc_pr_lex.c:5471
struct qcc_cachedsourcefile_s qcc_cachedsourcefile_t
precache_t * precache_model
Definition: qccmain.c:111
pbool opt_return_only
Definition: qcc_pr_comp.c:172
QCC_sref_t extra_parms[MAX_EXTRA_PARMS]
Definition: qcc_pr_comp.c:341
int pr_token_line
Definition: qcc_pr_lex.c:43
pbool Packager_CompressDir(const char *dirname, enum pkgtype_e type, void(*messagecallback)(void *userctx, const char *message,...), void *userctx)
Definition: packager.c:1755
pbool flag_assume_double
Definition: qcc_pr_comp.c:140
QCC_def_t * QCC_PR_DummyDef(QCC_type_t *type, const char *name, QCC_function_t *scope, int arraysize, QCC_def_t *rootsymbol, unsigned int ofs, int referable, unsigned int flags)
Definition: qcc_pr_comp.c:16765
int optres_constantarithmatic
Definition: qcc_pr_comp.c:187
QCC_ddef_t * fields
Definition: qccmain.c:100
pbool flag_msvcstyle
Definition: qcc_pr_comp.c:137
precache_t * precache_texture
Definition: qccmain.c:108
pbool keyword_state
Definition: qcc_pr_comp.c:80
unsigned int gofs_t
Definition: qcc.h:316
char * QCC_PR_ParseName(void)
Definition: qcc_pr_lex.c:4478
pbool parseonly
Definition: qcc.h:662
int numfielddefs
Definition: qccmain.c:101
void QCC_FindBestInclude(char *newfile, char *currentfile, pbool verbose)
Definition: qcc_pr_lex.c:255
int typecmp_lax(QCC_type_t *a, QCC_type_t *b)
Definition: qcc_pr_lex.c:4610
pbool QCC_PR_CheckImmediate(const char *string)
Definition: qcc_pr_lex.c:4410
void QCC_PR_AddIncludePath(const char *newinc)
Definition: qcc_pr_lex.c:129
pbool keyword_double
Definition: qcc_pr_comp.c:70
pbool flag_dblstarexp
Definition: qcc_pr_comp.c:150
precache_t * precache_file
Definition: qccmain.c:114
int QCC_CopyString(const char *str)
Definition: qccmain.c:502
void QCC_PR_NewLine(pbool incomment)
Definition: qcc_pr_lex.c:1457
void QCC_PR_EmitArraySetFunction(QCC_def_t *defscope, QCC_def_t *thearray, char *arrayname)
Definition: qcc_pr_comp.c:16673
int MAX_CONSTANTS
Definition: qccmain.c:57
pbool pr_subscopedlocals
Definition: qcc_pr_comp.c:124
struct QCC_type_s QCC_type_t
int * qcc_tempofs
Definition: qccmain.c:60
int strofs
Definition: qccmain.c:87
QCC_type_t * QCC_PR_ParseFunctionTypeReacc(int newtype, QCC_type_t *returntype)
Definition: qcc_pr_lex.c:5158
pbool flag_rootconstructor
Definition: qcc_pr_comp.c:146
QCC_type_t * type_floatfield
Definition: qcc.h:511
void(* pHash_RemoveData)(hashtable_t *table, const char *name, void *data)
Definition: qcc_pr_comp.c:211
pbool flag_attributes
Definition: qcc_pr_comp.c:148
pbool keyword_switch
Definition: qcc_pr_comp.c:54
QCC_type_t * type_uint64
Definition: qcc.h:511
pbool keyword_do
short(* PRBigShort)(short l)
Definition: qcc_cmdlib.c:73
pbool keyword_wrap
Definition: qcc_pr_comp.c:113
pbool flag_assumevar
Definition: qcc_pr_comp.c:149
pbool keyword_goto
Definition: qcc_pr_comp.c:72
pbool keyword_default
Definition: qcc_pr_comp.c:56
pbool keyword_short
Definition: qcc_pr_comp.c:74
int pr_error_count
Definition: qcc_pr_lex.c:51
int numtemps
int QCC_CopyStringLength(const char *str, size_t length)
Definition: qccmain.c:554
int optres_filenames
Definition: qcc_pr_comp.c:192
int numfiles
Definition: qccmain.c:115
progfuncs_t * qccprogfuncs
Definition: comprout.c:9
qcc_includechunk_t * currentchunk
Definition: qcc_pr_lex.c:120
QCC_def_t * activetemps
pbool opt_compound_jumps
Definition: qcc_pr_comp.c:173
pbool keyword_static
Definition: qcc_pr_comp.c:86
pbool keyword_ignore
Definition: qcc_pr_comp.c:110
hashtable_t globalstable
Definition: qccmain.c:119
pbool keyword_integer
Definition: qcc_pr_comp.c:76
pbool keyword_struct
Definition: qcc_pr_comp.c:82
pbool flag_utf8strings
Definition: qcc_pr_comp.c:156
pbool keyword_signed
Definition: qcc_pr_comp.c:78
QCC_type_t * QCC_PR_NewType(const char *name, int basictype, pbool typedefed)
Definition: qccmain.c:3542
pbool keyword_char
Definition: qcc_pr_comp.c:73
char * QCC_PR_CheckCompConstTooltip(char *word, char *outstart, char *outend)
Definition: qcc_pr_lex.c:3777
void QCC_PR_EmitArrayGetFunction(QCC_def_t *defscope, QCC_def_t *thearray, char *arrayname)
Definition: qcc_pr_comp.c:16474
pbool keyword_accumulate
Definition: qcc_pr_comp.c:114
void QCC_InsertVFile(vfile_t *, size_t pos, const char *fmt,...)
Definition: qccguistuff.c:1156
hashtable_t compconstantstable
Definition: qccmain.c:118
pbool keyword_strip
Definition: qcc_pr_comp.c:109
int MAX_FIELDS
Definition: qccmain.c:54
int pr_warning_count
Definition: qcc.h:1049
pbool opt_classfields
Definition: qcc_pr_comp.c:178
int QCC_packid
Definition: qccmain.c:23
unsigned char qccwarningaction[WARN_MAX]
Definition: qccmain.c:131
unsigned int MAX_REGS
Definition: qccmain.c:48
pbool keyword_inline
Definition: qcc_pr_comp.c:108
pbool keyword_enumflags
Definition: qcc_pr_comp.c:93
void QCC_PR_ParseDefs(const char *classname, pbool fatal)
Definition: qcc_pr_comp.c:18307
pbool keyword_entity
Definition: qcc_pr_comp.c:68
pbool QCC_PR_CheckKeyword(int keywordenabled, const char *string)
Definition: qcc_pr_lex.c:4440
pbool opt_function_names
Definition: qcc_pr_comp.c:169
int(* PRBigLong)(int l)
Definition: qcc_cmdlib.c:75
pbool opt_assignments
Definition: qcc_pr_comp.c:159
int numfunctions
Definition: qccmain.c:95
NORETURN void VARGS QCC_PR_ParseErrorPrintDef(int errortype, QCC_def_t *def, const char *error,...)
Definition: qcc_pr_lex.c:4089
pbool keyword_enum
Definition: qcc_pr_comp.c:92
pbool keywords_coexist
Definition: qcc_pr_comp.c:119
void QCC_PR_FinaliseFunctions(void)
Definition: qcc_pr_comp.c:15920
pbool keyword_optional
Definition: qcc_pr_comp.c:66
void QCC_PR_PrintStatement(QCC_statement_t *s)
int optres_noduplicatestrings
Definition: qcc_pr_comp.c:186
int optres_locals
Definition: qcc_pr_comp.c:195
struct pkgctx_s * Packager_Create(void(*messagecallback)(void *userctx, const char *message,...), void *userctx)
Definition: packager.c:1674
pbool flag_qccx
Definition: qcc_pr_comp.c:147
pbool QCC_RegisterSourceFile(const char *filename)
Definition: qccmain.c:4462
int optres_compound_jumps
Definition: qcc_pr_comp.c:198
int numstatements
Definition: qccmain.c:90
char * ReadProgsCopyright(char *buf, size_t bufsize)
Definition: decomp.c:538
pbool opt_precache_file
Definition: qcc_pr_comp.c:166
pbool keyword_asm
Definition: qcc_pr_comp.c:62
QCC_type_t * type_floatfunction
Definition: qcc.h:511
int optres_logicops
Definition: qcc_pr_comp.c:202
pbool VARGS QCC_PR_ParseWarning(int warningtype, const char *error,...)
Definition: qcc_pr_lex.c:4201
int optres_assignments
Definition: qcc_pr_comp.c:184
pbool flag_ifvector
Definition: qcc.h:664
QCC_type_t * type_float
Definition: qcc.h:511
struct qcc_includechunk_s qcc_includechunk_t
pbool autoprototyped
Definition: qcc.h:662
size_t tempsused
Definition: qcc_pr_comp.c:2066
pbool keyword_inout
Definition: qcc_pr_comp.c:65
pbool defaultstatic
Definition: qcc_pr_lex.c:315
pbool flag_macroinstrings
Definition: qcc_pr_comp.c:135
void Packager_ParseFile(struct pkgctx_s *ctx, char *scriptfilename)
Definition: packager.c:1740
char PATHSTRING[MAX_DATA_PATH]
Definition: qcc.h:1158
int numtextures
Definition: qccmain.c:109
pbool opt_dupconstdefs
Definition: qcc_pr_comp.c:171
char * pr_file_p
Definition: qcc_pr_lex.c:35
void PostCompile(void)
Definition: comprout.c:76
pbool keyword_noref
Definition: qcc_pr_comp.c:106
int max_temps
Definition: qccmain.c:58
struct QCC_def_s QCC_def_t
int MAX_STATEMENTS
Definition: qccmain.c:55
QCC_type_t * QCC_PR_MakeThiscall(QCC_type_t *orig, QCC_type_t *thistype)
Definition: qcc_pr_lex.c:4965
union QCC_eval_basic_s QCC_eval_basic_t
char QCC_Packname[5][128]
Definition: qccmain.c:24
int optres_constant_names_strings
Definition: qcc_pr_comp.c:190
QCC_pr_info_t pr
Definition: qcc_pr_comp.c:287
int optres_dupconstdefs
Definition: qcc_pr_comp.c:196
char * pr_token_precomment
Definition: qcc_pr_lex.c:40
QCC_type_t * type_vector
Definition: qcc.h:511
QCC_def_t * QCC_PR_GetDef(QCC_type_t *type, const char *name, struct QCC_function_s *scope, pbool allocate, int arraysize, unsigned int flags)
Definition: qcc_pr_comp.c:16994
QCC_sref_t QCC_PR_ParseDefaultInitialiser(QCC_type_t *type)
Definition: qcc_pr_comp.c:18043
QCC_type_t * type_integer
Definition: qcc.h:511
vfile_t * QCC_AddVFile(const char *name, void *data, size_t size)
Definition: qccguistuff.c:1116
int pr_source_line
Definition: qcc_pr_lex.c:33
char * TypeName(QCC_type_t *type, char *buffer, int buffersize)
Definition: qcc_pr_lex.c:4736
char pr_token[8192]
Definition: qcc_pr_lex.c:41
int numsounds
Definition: qccmain.c:106
int optres_function_names
Definition: qcc_pr_comp.c:194
int optres_unreferenced
Definition: qcc_pr_comp.c:193
QCC_type_t * type_uint
Definition: qcc.h:511
void QCC_CloseAllVFiles(void)
Definition: qccguistuff.c:1086
pbool QCC_PR_CheckName(const char *string)
Definition: qcc_pr_lex.c:4422
pbool opt_unreferenced
Definition: qcc_pr_comp.c:168
pbool opt_stripfunctions
Definition: qcc_pr_comp.c:174
QCC_string_t s_filed
Definition: qcc_pr_comp.c:305
QCC_type_t * type_double
Definition: qcc.h:511
pbool keyword_vector
Definition: qcc_pr_comp.c:84
int WriteSourceFiles(qcc_cachedsourcefile_t *filelist, int h, pbool sourceaswell, pbool legacyembed)
Definition: qccmain.c:1079
pbool opt_filenames
Definition: qcc_pr_comp.c:167
hashtable_t localstable
Definition: qcc.h:306
pbool flag_caseinsensitive
Definition: qcc_pr_comp.c:132
QCC_type_t * QCC_PR_PointerType(QCC_type_t *pointsto)
Definition: qcc_pr_lex.c:5240
pbool keyword_nonstatic
Definition: qcc_pr_comp.c:87
QCC_type_t * QCC_TypeForName(const char *name)
Definition: qcc_pr_lex.c:4913
unsigned int qcc_targetversion
Definition: qccmain.c:133
pbool defaultnosave
Definition: qcc_pr_lex.c:314
pbool flag_ifstring
Definition: qcc.h:664
QCC_type_t * type_bfloat
Definition: qcc.h:511
@ WARN_ERROR
Definition: qcc.h:789
@ WARN_CONSTANTCOMPARISON
Definition: qcc.h:858
@ ERR_EOF
Definition: qcc.h:962
@ ERR_TOOMANYCONTINUES
Definition: qcc.h:898
@ ERR_EXPECTED
Definition: qcc.h:912
@ WARN_IGNOREDKEYWORD
Definition: qcc.h:877
@ ERR_UNKNOWNVALUE
Definition: qcc.h:940
@ WARN_DENORMAL
Definition: qcc.h:801
@ WARN_REMOVEDWARNING
Definition: qcc.h:790
@ WARN_UNSAFEFUNCTIONRETURNTYPE
Definition: qcc.h:860
@ ERR_NOTANAME
Definition: qcc.h:913
@ ERR_TOOMANYGOTOS
Definition: qcc.h:896
@ ERR_WRONGSUBTYPE
Definition: qcc.h:961
@ WARN_EXTENSION_USED
Definition: qcc.h:851
@ WARN_KEYWORDDISABLED
Definition: qcc.h:826
@ WARN_HANGINGSLASHR
Definition: qcc.h:821
@ ERR_NOLABEL
Definition: qcc.h:952
@ ERR_NOOUTPUT
Definition: qcc.h:907
@ WARN_EXTRAPRECACHE
Definition: qcc.h:837
@ ERR_NOSHAREDLOCALS
Definition: qcc.h:935
@ WARN_STRINGTOOLONG
Definition: qcc.h:817
@ ERR_PRECOMPILERCONSTANTTOOLONG
Definition: qcc.h:890
@ ERR_NAMETOOLONG
Definition: qcc.h:914
@ WARN_WRONGRETURNTYPE
Definition: qcc.h:807
@ WARN_PRECOMPILERMESSAGE
Definition: qcc.h:813
@ ERR_TOOMANYCASES
Definition: qcc.h:899
@ WARN_NOTSTANDARDBEHAVIOUR
Definition: qcc.h:842
@ ERR_TOOMANYFRAMEMACROS
Definition: qcc.h:892
@ ERR_BADNOTTYPE
Definition: qcc.h:945
@ ERR_TOOMANYBREAKS
Definition: qcc.h:897
@ WARN_TOOMANYPARAMETERSVARARGS
Definition: qcc.h:815
@ WARN_CORRECTEDRETURNTYPE
Definition: qcc.h:808
@ ERR_NOPRECOMPILERIF
Definition: qcc.h:963
@ WARN_FTE_SPECIFIC
Definition: qcc.h:850
@ ERR_BADFRAMEMACRO
Definition: qcc.h:921
@ WARN_BADTARGET
Definition: qcc.h:818
@ WARN_CONDITIONALTYPEMISMATCH
Definition: qcc.h:864
@ WARN_NESTEDCOMMENT
Definition: qcc.h:816
@ WARN_UNREACHABLECODE
Definition: qcc.h:841
@ ERR_BADMEMBER
Definition: qcc.h:947
@ WARN_POINTLESSSTATEMENT
Definition: qcc.h:809
@ ERR_NOTATYPE
Definition: qcc.h:966
@ ERR_BADOPCODE
Definition: qcc.h:884
@ ERR_TOOMANYPARAMS
Definition: qcc.h:919
@ WARN_BADPARAMS
Definition: qcc.h:835
@ ERR_TYPEINVALIDINSTRUCT
Definition: qcc.h:934
@ ERR_NOTFUNCTIONTYPE
Definition: qcc.h:917
@ WARN_DIVISIONBY0
Definition: qcc.h:859
@ WARN_DUPLICATELABEL
Definition: qcc.h:832
@ ERR_TOOMANYSTATEMENTS
Definition: qcc.h:885
@ ERR_BADEXTENSION
Definition: qcc.h:905
@ WARN_SYSTEMCRC
Definition: qcc.h:862
@ ERR_ILLEGALCONTINUES
Definition: qcc.h:957
@ WARN_MAX
Definition: qcc.h:974
@ ERR_BADCHARACTERCODE
Definition: qcc.h:970
@ WARN_MUTEDEPRECATEDVARIABLE
Definition: qcc.h:848
@ WARN_IFSTRING_USED
Definition: qcc.h:852
@ ERR_TOOMANYSTRINGS
Definition: qcc.h:886
@ WARN_DUPLICATEMACRO
Definition: qcc.h:831
@ ERR_INVALIDVECTORIMMEDIATE
Definition: qcc.h:968
@ WARN_UNARYNOTSCOPE
Definition: qcc.h:868
@ ERR_WERROR
Definition: qcc.h:972
@ ERR_NONAME
Definition: qcc.h:938
@ ERR_TOOMANYPAKFILES
Definition: qcc.h:889
@ WARN_UNDESIRABLECONVENTION
Definition: qcc.h:856
@ WARN_MISUSEDAUTOCVAR
Definition: qcc.h:870
@ ERR_UNKNOWNPUCTUATION
Definition: qcc.h:911
@ WARN_EVILPREPROCESSOR
Definition: qcc.h:867
@ WARN_LAXCAST
Definition: qcc.h:854
@ ERR_TOOMANYTYPES
Definition: qcc.h:888
@ WARN_SYSTEMCRC2
Definition: qcc.h:863
@ WARN_NOTPRECACHED
Definition: qcc.h:838
@ ERR_FUNCTIONWITHVARGS
Definition: qcc.h:909
@ ERR_TOOMANYPACKFILES
Definition: qcc.h:967
@ WARN_CASEINSENSITIVEFRAMEMACRO
Definition: qcc.h:829
@ WARN_NONPORTABLEFILENAME
Definition: qcc.h:839
@ WARN_DUPLICATEDEFINITION
Definition: qcc.h:811
@ WARN_MISSINGMEMBERQUALIFIER
Definition: qcc.h:865
@ ERR_NOTDEFINED
Definition: qcc.h:930
@ WARN_OVERFLOW
Definition: qcc.h:803
@ WARN_STRINGOFFSET
Definition: qcc.h:802
@ WARN_UNEXPECTEDPUNCT
Definition: qcc.h:799
@ WARN_GMQCC_SPECIFIC
Definition: qcc.h:849
@ WARN_IFVECTOR_DISABLED
Definition: qcc.h:853
@ WARN_TYPEMISMATCHREDECOPTIONAL
Definition: qcc.h:855
@ ERR_TYPEMISMATCH
Definition: qcc.h:922
@ WARN_BADPRAGMA
Definition: qcc.h:819
@ ERR_NOTACONSTANT
Definition: qcc.h:927
@ WARN_TOOMANYPARAMETERSFORFUNC
Definition: qcc.h:814
@ ERR_BADSWITCHTYPE
Definition: qcc.h:950
@ WARN_MACROINSTRING
Definition: qcc.h:834
@ WARN_NOTUTF8
Definition: qcc.h:820
@ WARN_MEMBERNOTDEFINED
Definition: qcc.h:822
@ ERR_NOENDIF
Definition: qcc.h:964
@ ERR_TOOMANYGLOBALS
Definition: qcc.h:895
@ ERR_ILLEGALCASES
Definition: qcc.h:959
@ ERR_INTERNAL
Definition: qcc.h:882
@ WARN_ASSIGNMENTINCONDITIONAL
Definition: qcc.h:833
@ WARN_NOTCONSTANT
Definition: qcc.h:823
@ ERR_BADPLUSPLUSOPERATOR
Definition: qcc.h:944
@ ERR_BADLABELNAME
Definition: qcc.h:951
@ WARN_READNOTWRITTEN
Definition: qcc.h:792
@ ERR_BADIMMEDIATETYPE
Definition: qcc.h:906
@ ERR_MACROTOOMANYPARMS
Definition: qcc.h:891
@ WARN_SELFNOTTHIS
Definition: qcc.h:866
@ WARN_DEBUGGING
Definition: qcc.h:788
@ ERR_MULTIPLEDEFAULTS
Definition: qcc.h:948
@ WARN_ENUMFLAGS_NOTINTEGER
Definition: qcc.h:827
@ WARN_ASSIGNMENTTOCONSTANTFUNC
Definition: qcc.h:805
@ WARN_DUPLICATEPRECOMPILER
Definition: qcc.h:843
@ ERR_NOFUNC
Definition: qcc.h:915
@ WARN_ASSIGNMENTTOCONSTANT
Definition: qcc.h:804
@ WARN_DEPRECATEDVARIABLE
Definition: qcc.h:847
@ ERR_REDECLARATION
Definition: qcc.h:928
@ ERR_TYPEMISMATCHPARM
Definition: qcc.h:924
@ WARN_NOTREFERENCEDFIELD
Definition: qcc.h:795
@ WARN_DEPRECACTEDSYNTAX
Definition: qcc.h:846
@ WARN_STALEMACRO
Definition: qcc.h:830
@ WARN_STRICTTYPEMISMATCH
foo & bar the ! applies to the result of &. This is unlike C.
Definition: qcc.h:869
@ ERR_SHAREDINITIALISED
Definition: qcc.h:939
@ WARN_DEADCODE
Definition: qcc.h:840
@ WARN_PARAMWITHNONAME
Definition: qcc.h:875
@ ERR_TOOMANYOPENFILES
Definition: qcc.h:901
@ ERR_UNEXPECTEDPUNCTUATION
Definition: qcc.h:926
@ WARN_CONFLICTINGUNIONMEMBER
Definition: qcc.h:825
@ WARN_TOOFEWPARAMS
Definition: qcc.h:797
@ ERR_NOVALIDOPCODES
Definition: qcc.h:942
@ ERR_PARSEERRORS
Definition: qcc.h:879
@ ERR_BADPARMS
Definition: qcc.h:971
@ ERR_BADARRAYINDEXTYPE
Definition: qcc.h:941
@ WARN_IMPLICITCONVERSION
Definition: qcc.h:836
@ ERR_COULDNTOPENFILE
Definition: qcc.h:916
@ WARN_UNDEFNOTDEFINED
Definition: qcc.h:812
@ WARN_SAMENAMEASGLOBAL
Definition: qcc.h:857
@ WARN_MISSINGRETURN
Definition: qcc.h:810
@ ERR_ARRAYNEEDSBRACES
Definition: qcc.h:932
@ WARN_NOTREFERENCED
Definition: qcc.h:793
@ ERR_CONSTANTNOTDEFINED
Definition: qcc.h:920
@ WARN_SWITCHTYPEMISMATCH
Definition: qcc.h:824
@ WARN_UNINITIALIZED
Definition: qcc.h:800
@ ERR_BADARRAYSIZE
Definition: qcc.h:937
@ ERR_TYPEMISMATCHARRAYSIZE
Definition: qcc.h:925
@ ERR_INVALIDSTRINGIMMEDIATE
Definition: qcc.h:969
@ ERR_STATETYPEMISMATCH
Definition: qcc.h:954
@ WARN_IDENTICALPRECOMPILER
Definition: qcc.h:844
@ WARN_CONFLICTINGRETURNS
Definition: qcc.h:796
@ ERR_MEMBERNOTVALID
Definition: qcc.h:943
@ WARN_FORMATSTRING
Definition: qcc.h:845
@ WARN_IGNORECOMMANDLINE
Definition: qcc.h:871
@ ERR_TYPEWITHNONAME
Definition: qcc.h:936
@ ERR_CASENOTIMMEDIATE
Definition: qcc.h:949
@ ERR_ARRAYNEEDSSIZE
Definition: qcc.h:931
@ WARN_ARGUMENTCHECK
Definition: qcc.h:876
@ WARN_POINTERASSIGNMENT
Definition: qcc.h:872
@ ERR_BADTARGETSWITCH
Definition: qcc.h:887
@ ERR_THINKTIMETYPEMISMATCH
Definition: qcc.h:953
@ ERR_BADPARAMORDER
Definition: qcc.h:956
@ ERR_BADBUILTINIMMEDIATE
Definition: qcc.h:955
@ WARN_NOTREFERENCEDCONST
Definition: qcc.h:794
@ WARN_MISSINGRETURNVALUE
Definition: qcc.h:806
@ ERR_TOOMANYLABELS
Definition: qcc.h:900
@ WARN_REDECLARATIONMISMATCH
Definition: qcc.h:874
@ ERR_TOOFEWPARAMS
Definition: qcc.h:918
@ ERR_TOOMANYTOTALPARAMETERS
Definition: qcc.h:902
@ WARN_COMPATIBILITYHACK
Definition: qcc.h:873
@ WARN_MISSINGOPTIONAL
Definition: qcc.h:861
@ ERR_NOTAFUNCTION
Definition: qcc.h:908
@ ERR_NOTANUMBER
Definition: qcc.h:960
@ ERR_BADHEX
Definition: qcc.h:910
@ ERR_BADTYPECAST
Definition: qcc.h:946
@ ERR_INITIALISEDLOCALFUNCTION
Definition: qcc.h:929
@ ERR_ILLEGALBREAKS
Definition: qcc.h:958
@ ERR_TOOMANYINITIALISERS
Definition: qcc.h:933
@ WARN_WRITTENNOTREAD
Definition: qcc.h:791
@ WARN_TOOMANYPARAMS
Definition: qcc.h:798
@ ERR_TYPEMISMATCHREDEC
Definition: qcc.h:923
@ ERR_TOOCOMPLEX
Definition: qcc.h:883
@ ERR_HASHERROR
Definition: qcc.h:965
@ WARN_ENUMFLAGS_NOTBINARY
Definition: qcc.h:828
precache_t * precache_sound
Definition: qccmain.c:105
char * pr_parm_argcount_name
Definition: qcc_pr_lex.c:4961
int MAX_FUNCTIONS
Definition: qccmain.c:56
QCC_type_t * pr_immediate_type
Definition: qcc_pr_lex.c:45
vfile_t * QCC_FindVFile(const char *name)
Definition: qccguistuff.c:1100
pbool flag_hashonly
Definition: qcc_pr_comp.c:134
pbool opt_logicops
Definition: qcc_pr_comp.c:176
int numglobaldefs
Definition: qccmain.c:98
QCC_type_t * type_int64
Definition: qcc.h:511
void QCC_PR_IncludeChunk(char *data, pbool duplicate, char *filename)
Definition: qcc_pr_lex.c:202
int optres_precache_file
Definition: qcc_pr_comp.c:191
void QCC_PR_CloseProcessor(void)
Definition: qcc_pr_lex.c:121
pbool flag_cpriority
Definition: qcc_pr_comp.c:151
int MAX_GLOBALS
Definition: qccmain.c:53
pbool keyword_using
Definition: qcc_pr_comp.c:115
QCC_type_t * QCC_PointerTypeTo(QCC_type_t *type)
Definition: qcc_pr_comp.c:8687
float(* PRLittleFloat)(float l)
Definition: qcc_cmdlib.c:78
int optres_nonvec_parms
Definition: qcc_pr_comp.c:188
void QCC_OPCodeSetTarget(qcc_targetformat_t targfmt, unsigned int targver)
Definition: qcc_pr_comp.c:1651
pbool keyword_used
Definition: qcc_pr_comp.c:88
hashtable_t typedeftable
Definition: qcc.h:306
struct QCC_typeparam_s * QCC_PR_FindStructMember(QCC_type_t *t, const char *membername, unsigned int *out_ofs)
Definition: qcc_pr_comp.c:9130
pbool keyword_nosave
Definition: qcc_pr_comp.c:107
pbool keyword_case
Definition: qcc_pr_comp.c:55
pbool flag_allowuninit
Definition: qcc_pr_comp.c:153
void QCC_ImportProgs(const char *filename)
Definition: qccmain.c:3244
pbool flag_boundchecks
Definition: qcc_pr_comp.c:143
void Packager_ParseText(struct pkgctx_s *ctx, char *scripttext)
Definition: packager.c:1685
int optres_inlines
Definition: qcc_pr_comp.c:203
int optres_return_only
Definition: qcc_pr_comp.c:197
pbool QCC_PR_UnInclude(void)
Definition: qcc_pr_lex.c:207
void QCC_PR_ClearGrabMacros(pbool newfile)
Definition: qcc_pr_lex.c:2524
pbool keyword_accessor
Definition: qcc_pr_comp.c:64
int nummodels
Definition: qccmain.c:112
pbool keyword_extern
Definition: qcc_pr_comp.c:104
QCC_eval_t pr_immediate
Definition: qcc_pr_lex.c:46
QCC_type_t * type_pointer
Definition: qcc.h:511
pbool flag_acc
Definition: qcc_pr_comp.c:131
const char * s_filen
Definition: qcc_pr_comp.c:304
pbool QCC_PR_CheckToken(const char *string)
Definition: qcc_pr_lex.c:4389
void QCC_PR_PrintDefs(void)
void * QCC_PR_Malloc(int size)
pbool type_inlinefunction
Definition: qcc_pr_lex.c:5467
compiler_flag_t compiler_flag[]
Definition: qccmain.c:334
int optres_stripfunctions
Definition: qcc_pr_comp.c:200
pbool QCC_OPCodeSetTargetName(const char *targ)
Definition: qcc_pr_comp.c:1740
pbool keyword_string
Definition: qcc_pr_comp.c:81
pbool preprocessonly
Definition: qccmain.c:142
QCC_function_t * functions
Definition: qccmain.c:93
void Packager_WriteDataset(struct pkgctx_s *ctx, char *setname)
Definition: packager.c:1657
pbool pr_dumpasm
Definition: qcc.h:1091
pbool keyword_for
Definition: qcc_pr_comp.c:71
NORETURN void VARGS QCC_PR_ParseError(int errortype, const char *error,...)
Definition: qcc_pr_lex.c:4064
int QCC_WarningForName(const char *name)
Definition: qccmain.c:283
@ COL_ERROR
Definition: qcc.h:981
@ COL_NAME
Definition: qcc.h:984
@ COL_WARNING
Definition: qcc.h:982
@ COL_SYMBOL
Definition: qcc.h:985
@ COL_LOCATION
Definition: qcc.h:983
@ COL_MAX
Definition: qcc.h:987
@ COL_NONE
Definition: qcc.h:980
@ COL_TYPE
Definition: qcc.h:986
void qccClearHunk(void)
Definition: comprout.c:65
QCC_type_t * type_function
Definition: qcc.h:511
int typecmp(QCC_type_t *a, QCC_type_t *b)
Definition: qcc_pr_lex.c:4560
pbool QCC_main(int argc, const char **argv)
Definition: qccmain.c:5267
pbool PreCompile(void)
Definition: comprout.c:89
pbool flag_debugmacros
Definition: qcc_pr_comp.c:138
QCC_sref_t QCC_PR_GetSRef(QCC_type_t *type, const char *name, struct QCC_function_s *scope, pbool allocate, int arraysize, unsigned int flags)
Definition: qcc_pr_comp.c:17278
char * strings
Definition: qccmain.c:86
pbool keyword_long
Definition: qcc_pr_comp.c:77
QCC_type_t * QCC_PR_ParseFunctionType(int newtype, QCC_type_t *returntype)
Definition: qcc_pr_lex.c:4991
pbool keyword_until
Definition: qcc_pr_comp.c:60
token_type_t
Definition: qcc.h:583
@ tt_eof
Definition: qcc.h:584
@ tt_punct
Definition: qcc.h:586
@ tt_name
Definition: qcc.h:585
@ tt_immediate
Definition: qcc.h:587
const char * QCC_VarAtOffset(QCC_sref_t ref)
Definition: qcc_pr_comp.c:2503
int(* PRLittleLong)(int l)
Definition: qcc_cmdlib.c:76
pbool QCC_PR_CompileFile(char *string, char *filename)
Definition: qcc_pr_comp.c:19245
qcc_targetformat_t
Definition: qcc.h:88
@ QCF_UHEXEN2
Definition: qcc.h:88
@ QCF_HEXEN2
Definition: qcc.h:88
@ QCF_DARKPLACES
Definition: qcc.h:88
@ QCF_FTEH2
Definition: qcc.h:88
@ QCF_STANDARD
Definition: qcc.h:88
@ QCF_FTE
Definition: qcc.h:88
@ QCF_KK7
Definition: qcc.h:88
@ QCF_QSS
Definition: qcc.h:88
@ QCF_FTEDEBUG
Definition: qcc.h:88
@ QCF_QTEST
Definition: qcc.h:88
int optres_shortenifnots
Definition: qcc_pr_comp.c:183
int maxtypeinfos
Definition: qccmain.c:140
pbool flag_nullemptystr
Definition: qcc_pr_comp.c:125
QCC_type_t * type_intpointer
Definition: qcc.h:511
optimisations_t optimisations[]
Definition: qccmain.c:294
QCC_type_t * type_invalid
Definition: qcc.h:511
int tempsstart
Definition: qccmain.c:61
void QCC_PR_EmitClassFromFunction(QCC_def_t *defscope, QCC_type_t *basetype)
Definition: qcc_pr_comp.c:8804
QCC_statement_t * statements
Definition: qccmain.c:89
float qcc_framerate
Definition: qcc_pr_lex.c:317
pbool keyword_loop
Definition: qcc_pr_comp.c:59
pbool flag_vectorlogic
Definition: qcc.h:664
char * QCC_PR_ValueString(etype_t type, void *val)
Definition: qccmain.c:3374
QCC_type_t * type_entity
Definition: qcc.h:511
void Packager_Destroy(struct pkgctx_s *ctx)
Definition: packager.c:1750
const unsigned int type_size[]
Definition: qcc_cmdlib.c:22
size_t pr_immediate_strlen
Definition: qcc_pr_lex.c:49
QCC_type_t * QCC_PR_DuplicateType(QCC_type_t *in, pbool recurse)
Definition: qcc_pr_lex.c:4703
CompilerConstant_t * QCC_PR_DefineName(const char *name)
Definition: qcc_pr_lex.c:2880
void QCC_CatVFile(vfile_t *, const char *fmt,...)
Definition: qccguistuff.c:1136
void QCC_PR_SkipToSemicolon(void)
Definition: qcc_pr_lex.c:4934
void QCC_FreeTemp(QCC_sref_t t)
Definition: qcc_pr_comp.c:2254
int optres_overlaptemps
Definition: qcc_pr_comp.c:185
QCC_ddef_t * qcc_globals
Definition: qccmain.c:97
pbool keyword_var
Definition: qcc_pr_comp.c:83
int optres_locals_overlapping
Definition: qcc_pr_comp.c:201
char pr_parm_names[MAX_PARMS+MAX_EXTRA_PARMS][MAX_NAME]
Definition: qcc.h:1080
pbool opt_shortenifnots
Definition: qcc_pr_comp.c:160
qcc_cachedsourcefile_t * qcc_sourcefile
Definition: qcc_cmdlib.c:945
pbool opt_noduplicatestrings
Definition: qcc_pr_comp.c:161
pbool keyword_int
Definition: qcc_pr_comp.c:75
int QCC_PR_IntConstExpr(void)
Definition: qcc_pr_comp.c:13067
QCC_def_t def_parms[MAX_PARMS]
Definition: qcc.h:1093
void * qccHunkAlloc(size_t mem)
Definition: comprout.c:52
void QCC_PR_ParseInitializerDef(QCC_def_t *def, unsigned int flags)
Definition: qcc_pr_comp.c:18034
pbool keyword_class
Definition: qcc_pr_comp.c:63
pbool flag_nopragmafileline
Definition: qcc_pr_comp.c:155
pbool flag_brokenifstring
Definition: qcc.h:664
short(* PRLittleShort)(short l)
Definition: qcc_cmdlib.c:74
char pr_immediate_string[8192]
Definition: qcc_pr_lex.c:48
QCC_eval_basic_t * qcc_pr_globals
Definition: qccmain.c:83
unsigned int numpr_globals
Definition: qccmain.c:84
void QCC_PR_Expect(const char *string)
Definition: qcc.h:1246
pbool flag_filetimes
Definition: qcc_pr_comp.c:141
pbool keyword_weak
Definition: qcc_pr_comp.c:112
void QCC_PurgeTemps(void)
Definition: qcc_pr_comp.c:2296
void VARGS QCC_PR_Note(int type, const char *file, int line, const char *error,...)
Definition: qcc_pr_lex.c:4216
pbool keyword_byte
void QCC_FinaliseTemps(void)
Definition: qcc_pr_comp.c:2218
pbool QCC_PR_CheckTokenComment(const char *string, char **comment)
Definition: qcc_pr_lex.c:4365
pbool keyword_unsigned
Definition: qcc_pr_comp.c:79
char QCC_copyright[1024]
Definition: qccmain.c:22
const char * qcccol[COL_MAX]
Definition: qccmain.c:5262
pbool opt_nonvec_parms
Definition: qcc_pr_comp.c:163
void QCC_Cleanup(void)
Definition: qcc_pr_comp.c:19469
pbool keyword_break
Definition: qcc_pr_comp.c:57
pbool opt_constant_names_strings
Definition: qcc_pr_comp.c:165
dfunction_t * dfunctions
pbool defaultnoref
Definition: qcc_pr_lex.c:313
pbool keyword_continue
Definition: qcc_pr_comp.c:58
pbool flag_laxcasts
Definition: qcc_pr_comp.c:133
pbool flag_fasttrackarrays
Definition: qcc_pr_comp.c:136
int ForcedCRC
Definition: qcc_pr_lex.c:316
pbool keyword_const
Definition: qcc_pr_comp.c:67
pbool keyword_unused
Definition: qcc_pr_comp.c:89
pbool flag_guiannotate
Definition: qcc_pr_comp.c:144
union QCC_eval_s QCC_eval_t
int ofs
Definition: qcc_cmdlib.c:849
const char * file
Definition: qcc_pr_lex.c:2518
int jmp_buf
Definition: quakedef.h:129
uploadfmt_t fmt
Definition: r_2d.c:48
static ALC_API ALCvoid * buffer
Definition: snd_al.c:259
static spx_int16_t * in
Definition: snd_dma.c:488
char int int int word
Definition: snd_ov.c:52
Definition: qcc.h:559
char * value
Definition: qcc.h:561
int numparams
Definition: qcc.h:563
const char * fromfile
Definition: qcc.h:568
int inside
Definition: qcc.h:564
int namelen
Definition: qcc.h:571
pbool used
Definition: qcc.h:565
pbool varg
Definition: qcc.h:567
pbool evil
Definition: qcc.h:566
int fromline
Definition: qcc.h:569
Definition: qcc.h:411
int s_line
Definition: qcc.h:434
pbool localscope
Definition: qcc.h:451
pbool assumedtype
Definition: qcc.h:453
pbool unused
Definition: qcc.h:450
struct QCC_def_s * deftail
Definition: qcc.h:419
union QCC_eval_basic_s * symboldata
Definition: qcc.h:426
const char * deprecated
Definition: qcc.h:460
temp_t * temp
Definition: qcc.h:463
pbool written
Definition: qcc.h:440
pbool isparameter
Definition: qcc.h:459
struct QCC_def_s * next
Definition: qcc.h:415
pbool funccalled
Definition: qcc.h:438
pbool accumulate
Definition: qcc.h:455
const char * filen
Definition: qcc.h:432
pbool weak
Definition: qcc.h:454
QCC_type_t * type
Definition: qcc.h:412
struct QCC_def_s * reloc
Definition: qcc.h:423
int timescalled
Definition: qcc.h:430
pbool strip
Definition: qcc.h:447
struct QCC_def_s * generatedfor
Definition: qcc.h:420
struct QCC_function_s * scope
Definition: qcc.h:418
int refcount
Definition: qcc.h:429
pbool subscoped_away
Definition: qcc.h:445
int arraysize
Definition: qcc.h:436
pbool used
Definition: qcc.h:449
pbool arraylengthprefix
Definition: qcc.h:452
pbool read
Definition: qcc.h:439
int fromstatement
Definition: qcc.h:462
struct QCC_def_s * nextlocal
Definition: qcc.h:416
char * name
Definition: qcc.h:413
pbool isstatic
Definition: qcc.h:444
pbool allowinline
Definition: qcc.h:448
pbool referenced
Definition: qcc.h:441
int s_filed
Definition: qcc.h:433
gofs_t ofs
Definition: qcc.h:417
char * comment
Definition: qcc.h:414
unsigned int symbolsize
Definition: qcc.h:427
pbool isextern
Definition: qcc.h:458
struct QCC_def_s * gaddress
Definition: qcc.h:424
pbool initialized
Definition: qcc.h:457
struct QCC_def_s * symbolheader
Definition: qcc.h:425
pbool shared
Definition: qcc.h:442
int constant
Definition: qcc.h:421
pbool saved
Definition: qcc.h:443
pbool nofold
Definition: qcc.h:456
Definition: qcc.h:515
int builtin
Definition: qcc.h:516
string_t s_filed
Definition: qcc.h:519
struct QCC_def_s * firstlocal
Definition: qcc.h:527
pbool privatelocals
Definition: qcc.h:529
const char * filen
Definition: qcc.h:520
struct QCC_type_s * type
Definition: qcc.h:525
QCC_statement_t * statements
Definition: qcc.h:532
dfunction_t * merged
Definition: qcc.h:518
QCC_sref_t returndef
Definition: qcc.h:528
int code
Definition: qcc.h:517
struct QCC_function_s * parentscope
Definition: qcc.h:524
char * name
Definition: qcc.h:523
struct QCC_def_s * def
Definition: qcc.h:526
int line_end
Definition: qcc.h:522
size_t numstatements
Definition: qcc.h:533
int line
Definition: qcc.h:521
Definition: qcc.h:541
QCC_def_t * def_tail
Definition: qcc.h:548
char * memory
Definition: qcc.h:542
QCC_type_t * types
Definition: qcc.h:545
int current_memory
Definition: qcc.h:544
int max_memory
Definition: qcc.h:543
QCC_def_t * local_tail
Definition: qcc.h:550
unsigned int size_fields
Definition: qcc.h:552
QCC_def_t local_head
Definition: qcc.h:549
QCC_def_t def_head
Definition: qcc.h:547
Definition: qcc.h:477
QCC_sref_t index
Definition: qcc.h:491
@ REF_ARRAYHEAD
Definition: qcc.h:481
@ REF_STRING
Definition: qcc.h:484
@ REF_FIELD
Definition: qcc.h:483
@ REF_POINTER
Definition: qcc.h:482
@ REF_ARRAY
Definition: qcc.h:480
@ REF_THISCALL
Definition: qcc.h:486
@ REF_GLOBAL
Definition: qcc.h:479
@ REF_NONVIRTUAL
Definition: qcc.h:485
int postinc
Definition: qcc.h:494
pbool readonly
Definition: qcc.h:495
QCC_sref_t base
Definition: qcc.h:490
QCC_type_t * cast
Definition: qcc.h:492
struct accessor_s * accessor
Definition: qcc.h:493
Definition: pr_comp.h:617
Definition: qcc.h:375
pbool typedefed
Definition: qcc.h:386
struct QCC_type_s * parentclass
Definition: qcc.h:378
struct QCC_function_s * scope
Definition: qcc.h:397
const char * name
Definition: qcc.h:389
struct QCC_type_s * ptrto
Definition: qcc.h:398
const char * filen
Definition: qcc.h:392
unsigned int size
Definition: qcc.h:385
struct accessor_s * accessors
Definition: qcc.h:395
pbool vargcount
Definition: qcc.h:388
pbool vargs
Definition: qcc.h:387
const char * aname
Definition: qcc.h:390
struct QCC_type_s * aux_type
Definition: qcc.h:380
struct QCC_type_s * fldto
Definition: qcc.h:399
struct QCC_typeparam_s * params
Definition: qcc.h:382
unsigned int line
Definition: qcc.h:393
unsigned int num_parms
Definition: qcc.h:383
etype_t type
Definition: qcc.h:376
Definition: qcc.h:353
struct QCC_type_s * type
Definition: qcc.h:354
unsigned int arraysize
Definition: qcc.h:360
unsigned char out
Definition: qcc.h:358
pbool isvirtual
Definition: qcc.h:357
pbool optional
Definition: qcc.h:356
unsigned int ofs
Definition: qcc.h:359
QCC_sref_t defltvalue
Definition: qcc.h:355
char * paramname
Definition: qcc.h:361
Definition: qcc.h:364
char * fieldname
Definition: qcc.h:371
QCC_sref_t getset_func[2]
Definition: qcc.h:368
struct QCC_type_s * indexertype
Definition: qcc.h:367
struct QCC_type_s * type
Definition: qcc.h:366
struct accessor_s * next
Definition: qcc.h:365
pbool getset_isref[2]
Definition: qcc.h:370
QCC_sref_t staticval
Definition: qcc.h:369
Definition: hash.h:11
Definition: qcc.h:1014
int flags
Definition: qcc.h:1016
pbool * enabled
Definition: qcc.h:1015
void * guiinfo
Definition: qcc.h:1020
char * fullname
Definition: qcc.h:1018
char * abbrev
Definition: qcc.h:1017
char * description
Definition: qcc.h:1019
Definition: pr_comp.h:671
Definition: hash.h:19
Definition: qcc.h:1003
void * guiinfo
Definition: qcc.h:1010
int flags
Definition: qcc.h:1007
int optimisationlevel
Definition: qcc.h:1006
pbool * enabled
Definition: qcc.h:1004
char * description
Definition: qcc.h:1009
char * fullname
Definition: qcc.h:1008
char * abbrev
Definition: qcc.h:1005
Definition: qcc.h:1281
int filelen
Definition: qcc.h:1283
Definition: qcc.h:1287
int dirlen
Definition: qcc.h:1290
int dirofs
Definition: qcc.h:1289
Definition: qcc.h:1161
PATHSTRING name
Definition: qcc.h:1162
const char * filename
Definition: qcc.h:1166
int used
Definition: qcc.h:1164
int fileline
Definition: qcc.h:1165
int block
Definition: qcc.h:1163
Definition: progsint.h:203
Definition: qcc.h:1193
struct qcc_cachedsourcefile_s * next
Definition: qcc.h:1200
@ FT_DATA
Definition: qcc.h:1199
@ FT_CODE
Definition: qcc.h:1199
size_t zhdrofs
Definition: qcc.h:1196
int zcrc
Definition: qcc.h:1197
size_t bufsize
Definition: qcc.h:1195
char * file
Definition: qcc.h:1198
char filename[1]
Definition: qcc.h:1201
enum qcc_cachedsourcefile_s::@403 type
size_t size
Definition: qcc.h:1194
Definition: qcc.h:1177
char * datastart
Definition: qcc.h:1183
CompilerConstant_t * cnst
Definition: qcc.h:1182
char * currentdatapoint
Definition: qcc.h:1181
const char * currentfilename
Definition: qcc.h:1179
struct qcc_includechunk_s * prev
Definition: qcc.h:1178
int currentlinenumber
Definition: qcc.h:1180
Definition: pr_comp.h:623
Definition: qcc.h:466
QCC_def_t * def
Definition: qcc.h:467
unsigned char locked
Definition: qcc.h:468
struct QCC_function_s * lastfunc
Definition: qcc.h:471
unsigned int size
Definition: qcc.h:469
unsigned int laststatement
Definition: qcc.h:472
netadr_t a
Definition: sv_master.c:141
static char ** argv
Definition: sv_sql.c:11
unsigned char buf[KBRINGSIZE]
Definition: sys_dos.c:27
Definition: qcc.h:323
QCC_string_t string
Definition: qcc.h:324
func_t function
Definition: qcc.h:331
puint_t _uint
Definition: qcc.h:333
pint_t _int
Definition: qcc.h:332
pvec_t _float
Definition: qcc.h:325
pvec_t vector[0]
Definition: qcc.h:327
Definition: qcc.h:339
pdouble_t _double
Definition: qcc.h:342
pint64_t i64
Definition: qcc.h:347
puint_t _uint
Definition: qcc.h:346
func_t function
Definition: qcc.h:344
QCC_string_t string
Definition: qcc.h:340
puint64_t u64
Definition: qcc.h:348
pvec_t _float
Definition: qcc.h:341
pvec_t vector[3]
Definition: qcc.h:343
pint_t _int
Definition: qcc.h:345
unsigned int flags
Definition: valid.c:313