Skip to content
Welcome to the new CppUtils documentation!
using CppUtils::Language::v2::MetaCircularVirtualMachine::MeshNodePtr = Container::MeshNodePtr<Type::Token, Type::Token>;
using CppUtils::Language::v2::MetaCircularVirtualMachine::FunctionPointer = auto (*)(MetaCircularVirtualMachine&, MeshNodePtr) -> std::expected<MeshNodePtr, std::string_view>;

template <class T = MetaCircularVirtualMachine>
constexpr auto MetaCircularVirtualMachine::addFunction(Type::Token token, auto&& function) -> void;

constexpr explicit MetaCircularVirtualMachine::MetaCircularVirtualMachine(Thread::SharedPtr<Environment> environment);

constexpr MetaCircularVirtualMachine::MetaCircularVirtualMachine();

virtual MetaCircularVirtualMachine::~MetaCircularVirtualMachine() = default;

[[nodiscard]] virtual auto MetaCircularVirtualMachine::makeExecutionContext(Thread::SharedPtr<Environment> environment) const -> std::unique_ptr<MetaCircularVirtualMachine>;

[[nodiscard]] constexpr auto MetaCircularVirtualMachine::reportError(std::string_view message) const -> std::expected<void, std::string_view>;

[[nodiscard]] constexpr auto MetaCircularVirtualMachine::get(Type::Token token) -> std::expected<MeshNodePtr, std::string_view>;

[[nodiscard]] constexpr auto MetaCircularVirtualMachine::resolve(Type::Token token) -> std::expected<MeshNodePtr, std::string_view>;

[[nodiscard]] constexpr auto MetaCircularVirtualMachine::operator()(MeshNodePtr instruction) -> std::expected<void, std::string_view>;

[[nodiscard]] constexpr auto MetaCircularVirtualMachine::operator()(Type::Token token) -> std::expected<void, std::string_view>;

MeshNodePtr context;
Thread::SharedPtr< Environment > environment;