#include <string>

#define private public
#include "emc/rs274ngc/rs274ngc_interp.hh"
#undef private

#include "emc/rs274ngc/rs274ngc_return.hh"
#include "interp_python.hh"
#include "pythonplugin/python_plugin.hh"

PythonPlugin *python_plugin = nullptr;
int _task = 0;

struct _inittab {
    const char *name;
    void *initfunc;
};

_inittab builtin_modules[] = {{nullptr, nullptr}};

InterpBase::~InterpBase() {}

PythonPlugin *PythonPlugin::instantiate(struct _inittab *)
{
    static PythonPlugin standalone_plugin;
    python_plugin = &standalone_plugin;
    return python_plugin;
}

std::string handle_pyerror()
{
    return {};
}

bool Interp::is_pycallable(setup_pointer, const char *, const char *) { return false; }
bool Interp::is_user_defined_g_code(int) { return false; }
bool Interp::is_any_m_code_remapped(block_pointer, setup_pointer) { return false; }
bool Interp::is_user_defined_m_code(block_pointer, setup_pointer, int) { return false; }
bool Interp::is_m_code_remappable(int) { return false; }
bool Interp::is_g_code_remappable(int) { return false; }
bool Interp::remap_in_progress(const char *) { return false; }
remap_pointer Interp::remapping(const char *) { return nullptr; }
remap_pointer Interp::remapping(const char, int) { return nullptr; }
int Interp::parse_remap(const char *, int) { return INTERP_ERROR; }
int Interp::convert_remapped_code(block_pointer, setup_pointer, int, char, int) { return INTERP_ERROR; }
int Interp::add_parameters(setup_pointer, block_pointer, char *) { return INTERP_ERROR; }
int Interp::pycall(setup_pointer, context_pointer, const char *, const char *, int) { return INTERP_ERROR; }
int Interp::py_execute(const char *, bool) { return INTERP_ERROR; }
int Interp::py_reload() { return INTERP_OK; }
