diff options
Diffstat (limited to 'src/JudgeCommon.h')
-rw-r--r-- | src/JudgeCommon.h | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/src/JudgeCommon.h b/src/JudgeCommon.h new file mode 100644 index 0000000..19b4eef --- /dev/null +++ b/src/JudgeCommon.h @@ -0,0 +1,48 @@ +#ifndef SCTJUDGE_JUDGE_COMMON +#define SCTJUDGE_JUDGE_COMMON + +#include "ProcCommon.h" + +/* 這裡的東西記得和 ProcCommon.h 與 SctMain.c 連動 */ +#define JUDGEINFO_RESULT_OK PROCINFO_RESULT_OK +#define JUDGEINFO_RESULT_RE PROCINFO_RESULT_RE +#define JUDGEINFO_RESULT_TLE PROCINFO_RESULT_TLE +#define JUDGEINFO_RESULT_OLE PROCINFO_RESULT_OLE +#define JUDGEINFO_RESULT_SLE PROCINFO_RESULT_SLE +#define JUDGEINFO_RESULT_AB PROCINFO_RESULT_AB +#define JUDGEINFO_RESULT_UD PROCINFO_RESULT_UD +#define JUDGEINFO_RESULT_WA (PROCINFO_RESULT_MAX + 0) +#define JUDGEINFO_RESULT_PE (PROCINFO_RESULT_MAX + 1) +#define JUDGEINFO_RESULT_AC (PROCINFO_RESULT_MAX + 2) +#define JUDGEINFO_RESULT_MAX (PROCINFO_RESULT_MAX + 3) + +/* --- JudgeMain.c --- */ + +/* 全域常數,表示 JUDGEINFO 中 result 的值 */ +extern const char* sctjudge_result_text[][2]; +#define JUDGEINFO_GET_RESULT_ABBR(n) (sctjudge_result_text[(n)][0]) +#define JUDGEINFO_GET_RESULT_TEXT(n) (sctjudge_result_text[(n)][1]) + +typedef struct sctjudge_judgeinfo{ + PROCINFO procinfo; /* 交給 Proc 系列函式的參數和結果 */ + int procmain; /* ProcMain 回傳的東西 */ + int flag; /* 與 Judge 相關的參數,但不會傳到 Proc */ + int pedetect; /* 偵測 PE 的方法 */ + int result; /* Judge 的結果 */ + /* 未完待續...... (special judge ?) */ +} JUDGEINFO; + +/* JUDGEINFO 裡面 judgeflag 的值 */ +#define JUDGEINFO_FLAG_COPY 0x00000001 /* chroot 所以要複製執行檔 */ + +/* sctjudge_main 的回傳值,0 表示正常 */ +#define SCTJUDGE_JUDGE_EXIT_SUCCESS 0 +#define SCTJUDGE_JUDGE_EXIT_MAX (SCTJUDGE_PROC_EXIT_MAX + 0) + +int sctjudge_main(JUDGEINFO*); +void sctjudge_setdefault(JUDGEINFO*); +void sctjudge_freestring(JUDGEINFO*); +void sctjudge_logger(int, const char*, ...); +void sctjudge_err(const char*, ...); + +#endif |