#pragma once #include #include "machine.h" #include "katom.h" enum class eval_t { shell, python, cpp, }; class Eval { public: explicit Eval(Machine& machine, const Locator& loc) : m_machine(machine), m_loc(loc) {}; Eval(const Eval&) = delete; Eval& operator=(const Eval&) = delete; //~Eval_cpp(); std::vector eval( std::vector::iterator begin, std::vector::iterator end); // Dispatch the @eval command (python/shell/haskell/cpp) and return its // raw string result, without re-reading it as Klammertext. Used by // :after_apply phase functions, whose input and output are final target // text -- re-katomizing it would misparse target characters (a "@" in // justified txt output) as Klammertext syntax. std::string eval_command( std::vector::iterator begin, std::vector::iterator end); Machine m_machine; Locator m_loc; }; // The Python exception the last fetch saw (Eval_python::fetch_python_exception): // its type name and its str(). The Error that fetch produces carries the // whole traceback; a caller that wants the exception's OWN words for a // headline -- Machine::run_phase_functions, reporting a phase's ValueError // as the phase's message about the document -- reads these. Declared here // so machine.cpp needs no Python header. (TODO 77, 2026-10-13) std::string last_python_exception_type(); std::string last_python_exception_text();