diff --git a/emper/CallerEnvironment.cpp b/emper/CallerEnvironment.cpp new file mode 100644 index 0000000000000000000000000000000000000000..559b7cbcb781ae5facd0c71b532309c80a727a16 --- /dev/null +++ b/emper/CallerEnvironment.cpp @@ -0,0 +1,20 @@ +// SPDX-License-Identifier: LGPL-3.0-or-later +// Copyright © 2021 Florian Fischer +#include "CallerEnvironment.hpp" + +#include <iostream> + +#include "Common.hpp" + +auto operator<<(std::ostream& os, const CallerEnvironment& callerEnvironment) -> std::ostream& { + switch (callerEnvironment) { + case OWNER: + return os << "OWNER"; + case EMPER: + return os << "EMPER"; + case ANYWHERE: + return os << "ANYWHERE"; + default: + DIE_MSG("Unknown CallerEnvironment"); + } +} diff --git a/emper/CallerEnvironment.hpp b/emper/CallerEnvironment.hpp index b06fb4198e0a97a1f46fecc54e21e4e8a48d89d3..8ba325f1a091c3953da998c08617358a0dff831b 100644 --- a/emper/CallerEnvironment.hpp +++ b/emper/CallerEnvironment.hpp @@ -1,8 +1,14 @@ // SPDX-License-Identifier: LGPL-3.0-or-later -// Copyright © 2020 Florian Schmaus +// Copyright © 2020-2021 Florian Schmaus, Florian Fischer #pragma once +#include <iostream> + +/*! Enum representing the different environments where code can be executed */ enum CallerEnvironment { - EMPER, - ANYWHERE, + OWNER, /*!< indicate code executed by the worker owning the object */ + EMPER, /*!< indicate code executed by any worker */ + ANYWHERE, /*!< indicate code executed outside of any worker */ }; + +auto operator<<(std::ostream& os, const CallerEnvironment& callerEnvironment) -> std::ostream&; diff --git a/emper/meson.build b/emper/meson.build index 1faa562936f56b65f0cd8dfab4f5e1900bf1f1ce..fbd3e44cf19c0aa528233b53d914ddc6767c8ee4 100644 --- a/emper/meson.build +++ b/emper/meson.build @@ -13,6 +13,7 @@ nasm_gen = generator(nasm, emper_asm_objects = nasm_gen.process(emper_asm_sources) emper_cpp_sources = [ + 'CallerEnvironment.cpp', 'Runtime.cpp', 'Emper.cpp', 'Fiber.cpp',