-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathwrapper.cpp
More file actions
45 lines (38 loc) · 2.01 KB
/
wrapper.cpp
File metadata and controls
45 lines (38 loc) · 2.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include "../extern/pybind11/include/pybind11/pybind11.h"
#include "include/runner/runner.h"
namespace py = pybind11;
using namespace std;
using namespace elans::runner;
PYBIND11_MODULE(runner_lib_py, m) {
m.doc() = "safe runner python lib";
py::class_<Runner> runner(m, "Runner");
py::enum_<Runner::RunningResult>(runner, "ExitStatus")
.value("TL", Runner::RunningResult::TL)
.value("ML", Runner::RunningResult::ML)
.value("OK", Runner::RunningResult::OK)
.value("SE", Runner::RunningResult::SE)
.value("RE", Runner::RunningResult::RE)
.value("IE", Runner::RunningResult::IE)
.export_values();
py::class_<Runner::TestingResult>(runner, "TestingResult")
.def(py::init<>())
.def_readwrite("verdict", &Runner::TestingResult::verdict)
.def_readwrite("exit_code", &Runner::TestingResult::exit_code)
.def_readwrite("threads", &Runner::TestingResult::threads)
.def_readwrite("cpu_time", &Runner::TestingResult::cpu_time)
.def_readwrite("real_time", &Runner::TestingResult::real_time)
.def_readwrite("memory", &Runner::TestingResult::memory);
py::class_<Runner::Limits>(runner, "Limits", py::dynamic_attr())
.def(py::init<>())
.def_readwrite("threads", &Runner::Limits::threads)
.def_readwrite("memory", &Runner::Limits::memory)
.def_readwrite("cpu_time_limit", &Runner::Limits::cpu_time_limit)
.def_readwrite("real_time_limit", &Runner::Limits::real_time_limit)
.def_readwrite("allow_files_read", &Runner::Limits::allow_files_read)
.def_readwrite("allow_files_write", &Runner::Limits::allow_files_write)
.def_readwrite("input_stream_file", &Runner::Limits::input_stream_file)
.def_readwrite("output_stream_file", &Runner::Limits::output_stream_file);
runner
.def(py::init<std::string, Runner::Limits>())
.def("GetOutput", &Runner::GetOutput);
}