#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