#include "gcode_backend.h" #ifdef CNC_SIM_ENABLE_LINUXCNC_RS274_BACKEND #include "linuxcnc_rs274_backend.h" #endif #ifdef CNC_SIM_ENABLE_SMOKE_BACKEND #include "smoke_gcode_parser.h" #endif const char *gcode_backend_name(GcodeBackendKind backend) { switch (backend) { case GcodeBackendKind::Smoke: return "smoke"; case GcodeBackendKind::LinuxCncRs274: return "linuxcnc-rs274"; default: return "unknown"; } } int parse_gcode_with_backend(GcodeBackendKind backend, CanonEventSink &sink, const char *program, size_t program_len, std::string *error) { switch (backend) { case GcodeBackendKind::Smoke: { #ifdef CNC_SIM_ENABLE_SMOKE_BACKEND SmokeGcodeParser parser(sink); return parser.parse(program, program_len, error); #else if (error) { *error = "smoke backend is not compiled into this build"; } return -1; #endif } case GcodeBackendKind::LinuxCncRs274: #ifdef CNC_SIM_ENABLE_LINUXCNC_RS274_BACKEND return parse_linuxcnc_rs274_backend(sink, program, program_len, error); #else if (error) { *error = "linuxcnc-rs274 backend is not compiled into this build"; } return -1; #endif default: if (error) { *error = "unknown G-code backend"; } return -1; } }