aboutsummaryrefslogtreecommitdiffstats
path: root/src/JudgeCommon.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/JudgeCommon.h')
-rw-r--r--src/JudgeCommon.h48
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