#ifdef _WIN32
+ #ifndef _CRT_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS
+ #endif
#define _CRT_NONSTDC_NO_WARNINGS
#ifndef AVAIL_ZLIB
#ifdef _MSC_VER
#define PROGSUSED
#endif
-extern int maxedicts;
-extern int maxprogs;
-extern int hunksize;
-
#include "progtype.h"
#include "progslib.h"
void *statements;
// void *global_struct;
float *globals; // same as pr_global_struct
+ int globals_size; // in bytes
typeinfo_t *types;
int *linenums; //debug versions only
progstructtype_t structtype;
+
+#ifdef QCJIT
+ struct jitstate *jit;
+#endif
} progstate_t;
typedef struct extensionbuiltin_s {
#define GQ_STRING(o) (*(QCC_string_t *)&pr_globals[o])
#define GQ_STRING2(o) ((char*)*(QCC_string_t *)&pr_globals[o])
#define G_FUNCTION(o) (*(func_t *)&pr_globals[o])
-#define G_PROG(o) (*(progsnum_t *)&pr_globals[o]) //simply so it's nice and easy to change...
+#define G_PROG(o) G_FLOAT(o) //simply so it's nice and easy to change...
#define RETURN_EDICT(e) (((int *)pr_globals)[OFS_RETURN] = EDICT_TO_PROG(e))
#define vars(type, name, size) type name[size]
typedef struct prinst_s {
-#ifdef QCJIT
- struct jitstate *jit;
-#endif
char **tempstrings;
int maxtempstrings;
int numtempstrings;
int maxallocedstrings;
int numallocedstrings;
-var(progstate_t *, pr_progstate);
-#define pr_progstate prinst->pr_progstate
+var(progstate_t *, progstate);
+#define pr_progstate prinst->progstate
var(progsnum_t, pr_typecurrent);
#define pr_typecurrent prinst->pr_typecurrent
struct jitstate;
struct jitstate *PR_GenerateJit(progfuncs_t *progfuncs);
void PR_EnterJIT(progfuncs_t *progfuncs, struct jitstate *jitstate, int statement);
+void PR_CloseJit(struct jitstate *jit);
char *QCC_COM_Parse (char *data);
extern char qcc_token[1024];