FTEQW
Documentation of the FTE engine source tree.
vm.h
Go to the documentation of this file.
1#ifndef _VM_H
2#define _VM_H
3
4#ifdef _WIN32
5 #define EXPORT_FN __cdecl
6#else
7 #define EXPORT_FN
8#endif
9
10typedef qintptr_t (EXPORT_FN *sys_calldll_t) (qintptr_t arg, ...);
11typedef int (*sys_callqvm_t) (void *offset, quintptr_t mask, int fn, const int *arg);
12
13typedef struct vm_s vm_t;
14
15// for syscall users
16#define VM_LONG(x) (*(int*)&(x)) //note: on 64bit platforms, the later bits can contain junk
17#define VM_FLOAT(x) (*(float*)&(x)) //note: on 64bit platforms, the later bits can contain junk
18#define VM_POINTER(x) ((x)?(void*)((char *)offset+((x)%mask)):NULL)
19#define VM_OOB(p,l) (p + l >= mask || VM_POINTER(p) < offset)
20// ------------------------- * interface * -------------------------
21
22void VM_PrintInfo(vm_t *vm);
23vm_t *VM_CreateBuiltin(const char *name, sys_calldll_t syscalldll, qintptr_t (*init)(qintptr_t *args));
24vm_t *VM_Create(const char *dllname, sys_calldll_t syscalldll, const char *qvmname, sys_callqvm_t syscallqvm);
25const char *VM_GetFilename(vm_t *vm);
26void VM_Destroy(vm_t *vm);
27//qboolean VM_Restart(vm_t *vm);
28qintptr_t VARGS VM_Call(vm_t *vm, qintptr_t instruction, ...);
30void *VM_MemoryBase(vm_t *vm);
32
33#define VM_FS_READ 0
34#define VM_FS_WRITE 1
35#define VM_FS_APPEND 2
36#define VM_FS_APPEND_SYNC 3 //I don't know, don't ask me. look at q3 source
37qofs_t VM_fopen (const char *name, int *handle, int fmode, int owner);
38int VM_FRead (char *dest, int quantity, int fnum, int owner);
39int VM_FWrite (const char *dest, int quantity, int fnum, int owner);
40qboolean VM_FSeek (int fnum, qofs_t offset, int seektype, int owner);
41qofs_t VM_FTell (int fnum, int owner);
42void VM_fclose (int fnum, int owner);
44int VM_GetFileList(const char *path, const char *ext, char *output, int buffersize);
45
46typedef struct {
47 int handle;
49 float value;
51 char string[256];
53int VMQ3_Cvar_Register(q3vmcvar_t *v, char *name, char *defval, int flags);
55
56typedef struct {
57 int tm_sec;
58 int tm_min;
61 int tm_mon;
66} q3time_t;
67qint64_t Q3VM_GetRealtime(q3time_t *qtime);
68
69#endif
qboolean
Definition: api_menu.h:34
uint64_t qofs_t
Definition: api_menu.h:49
struct @13::@38 ext
intptr_t qintptr_t
Definition: common.h:38
uintptr_t quintptr_t
Definition: common.h:39
void size_t buffersize
Definition: gl_model.c:912
GLint GLuint mask
Definition: gl_vidcommon.c:76
XRROutputInfo * output
Definition: gl_vidlinuxglx.c:710
static CONST PIXELFORMATDESCRIPTOR *static int
Definition: gl_vidnt.c:222
GLuint GLcharARB * name
Definition: glquake.h:155
const GLfloat * v
Definition: glsupp.h:466
void * handle
Definition: image.c:4553
lua_CFunction fn
Definition: pr_lua.c:247
unsigned int owner
Definition: pr_menu.c:103
func_t init
Definition: pr_menu.c:1383
vec3_t offset
Definition: q2m_flash.c:28
Definition: vm.h:56
int tm_isdst
Definition: vm.h:65
int tm_sec
Definition: vm.h:57
int tm_mon
Definition: vm.h:61
int tm_yday
Definition: vm.h:64
int tm_wday
Definition: vm.h:63
int tm_year
Definition: vm.h:62
int tm_hour
Definition: vm.h:59
int tm_min
Definition: vm.h:58
int tm_mday
Definition: vm.h:60
Definition: vm.h:46
float value
Definition: vm.h:49
int integer
Definition: vm.h:50
int handle
Definition: vm.h:47
int modificationCount
Definition: vm.h:48
static enum mysql_option option const char * arg
Definition: sv_sql.c:28
unsigned int flags
Definition: valid.c:313
void VM_PrintInfo(vm_t *vm)
Definition: qvm.c:975
void VM_Destroy(vm_t *vm)
Definition: qvm.c:1071
int(* sys_callqvm_t)(void *offset, quintptr_t mask, int fn, const int *arg)
Definition: vm.h:11
int VM_GetFileList(const char *path, const char *ext, char *output, int buffersize)
qintptr_t(EXPORT_FN * sys_calldll_t)(qintptr_t arg,...)
Definition: vm.h:10
qintptr_t VARGS VM_Call(vm_t *vm, qintptr_t instruction,...)
Definition: qvm.c:1169
qint64_t Q3VM_GetRealtime(q3time_t *qtime)
quintptr_t VM_MemoryMask(vm_t *vm)
Definition: qvm.c:1140
vm_t * VM_CreateBuiltin(const char *name, sys_calldll_t syscalldll, qintptr_t(*init)(qintptr_t *args))
Definition: qvm.c:1012
int VM_FWrite(const char *dest, int quantity, int fnum, int owner)
vm_t * VM_Create(const char *dllname, sys_calldll_t syscalldll, const char *qvmname, sys_callqvm_t syscallqvm)
Definition: qvm.c:1026
int VMQ3_Cvar_Register(q3vmcvar_t *v, char *name, char *defval, int flags)
qboolean VM_FSeek(int fnum, qofs_t offset, int seektype, int owner)
void VM_fcloseall(int owner)
qboolean VM_NonNative(vm_t *vm)
Definition: qvm.c:1152
void VM_fclose(int fnum, int owner)
qofs_t VM_fopen(const char *name, int *handle, int fmode, int owner)
void * VM_MemoryBase(vm_t *vm)
Definition: qvm.c:1127
struct vm_s vm_t
Definition: vm.h:13
const char * VM_GetFilename(vm_t *vm)
Definition: qvm.c:1007
qofs_t VM_FTell(int fnum, int owner)
int VMQ3_Cvar_Update(q3vmcvar_t *v)
int VM_FRead(char *dest, int quantity, int fnum, int owner)