// only include in cg_ext.c, g_ext.c, ui_ext.c #ifndef Q3_VM #include "q_shared.h" extern dllSyscall_t syscall; #endif #define EMPTY #ifdef Q3_VM #define DEF_TRAP_0(ret, R, Name) typedef R (*Name##_t)(); Name##_t Name #define DEF_TRAP_1(ret, R, Name, A1) typedef R (*Name##_t)(A1); Name##_t Name #define DEF_TRAP_2(ret, R, Name, A1, A2) typedef R (*Name##_t)(A1, A2); Name##_t Name #define DEF_TRAP_3(ret, R, Name, A1, A2, A3) typedef R (*Name##_t)(A1, A2, A3); Name##_t Name #define DEF_TRAP_4(ret, R, Name, A1, A2, A3, A4) typedef R (*Name##_t)(A1, A2, A3, A4); Name##_t Name #define DEF_TRAP_5(ret, R, Name, A1, A2, A3, A4, A5) typedef R (*Name##_t)(A1, A2, A3, A4, A5); Name##_t Name #define DEF_TRAP_6(ret, R, Name, A1, A2, A3, A4, A5, A6) typedef R (*Name##_t)(A1, A2, A3, A4, A5, A6); Name##_t Name #else #define DEF_TRAP_0(ret, R, Name) R Name() { ret syscall(cpma_ext.Name); } #define DEF_TRAP_1(ret, R, Name, A1) R Name(A1 a1) { ret syscall(cpma_ext.Name, (int)a1); } #define DEF_TRAP_2(ret, R, Name, A1, A2) R Name(A1 a1, A2 a2) { ret syscall(cpma_ext.Name, (int)a1, (int)a2); } #define DEF_TRAP_3(ret, R, Name, A1, A2, A3) R Name(A1 a1, A2 a2, A3 a3) { ret syscall(cpma_ext.Name, (int)a1, (int)a2, (int)a3); } #define DEF_TRAP_4(ret, R, Name, A1, A2, A3, A4) R Name(A1 a1, A2 a2, A3 a3, A4 a4) { ret syscall(cpma_ext.Name, (int)a1, (int)a2, (int)a3, (int)a4); } #define DEF_TRAP_5(ret, R, Name, A1, A2, A3, A4, A5) R Name(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) { ret syscall(cpma_ext.Name, (int)a1, (int)a2, (int)a3, (int)a4, (int)a5); } #define DEF_TRAP_6(ret, R, Name, A1, A2, A3, A4, A5, A6) R Name(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) { ret syscall(cpma_ext.Name, (int)a1, (int)a2, (int)a3, (int)a4, (int)a5, (int)a6); } #endif #ifdef Q3_VM #define GET_TRAP(Name) \ do { \ if (trap_GetValue(syscallStr, sizeof(syscallStr), #Name) && \ sscanf(syscallStr, "%d", &syscallId) == 1 && \ syscallId != 0) { \ cpma_ext.Name = syscallId; \ Name = (Name##_t)(~syscallId); \ } \ } while (0) #else #define GET_TRAP(Name) \ do { \ if (trap_GetValue(syscallStr, sizeof(syscallStr), #Name) && \ sscanf(syscallStr, "%d", &syscallId) == 1 && \ syscallId != 0) { \ cpma_ext.Name = syscallId; \ } \ } while (0) #endif #define GET_CMD(Name) \ do { \ if (trap_GetValue(syscallStr, sizeof(syscallStr), #Name) && \ syscallStr[0] == '1') { \ cpma_ext.Name = qtrue; \ } \ } while (0) #define GET_CAP(Name) GET_CMD(Name)