diff --git a/include/xeus-cpp/xinterpreter.hpp b/include/xeus-cpp/xinterpreter.hpp index d30632d7..8ad069f4 100644 --- a/include/xeus-cpp/xinterpreter.hpp +++ b/include/xeus-cpp/xinterpreter.hpp @@ -79,6 +79,8 @@ namespace xcpp std::string m_version; + std::string m_language; + xmagics_manager xmagics; xpreamble_manager preamble_manager; diff --git a/src/xinterpreter.cpp b/src/xinterpreter.cpp index 139393b4..2f60cc1c 100644 --- a/src/xinterpreter.cpp +++ b/src/xinterpreter.cpp @@ -128,6 +128,43 @@ __get_cxx_version () return std::to_string(cxx_version); } + // FIXME: This function should be upstreamed to CppInterOp. See + // https://github.com/compiler-research/CppInterOp/issues/879 + static std::string get_language() + { + switch (Cpp::GetLanguage(nullptr)) + { + case Cpp::InterpreterLanguage::Unknown: + return "Unknown"; + case Cpp::InterpreterLanguage::Asm: + return "Asm"; + case Cpp::InterpreterLanguage::CIR: + return "CIR"; + case Cpp::InterpreterLanguage::LLVM_IR: + return "LLVM_IR"; + case Cpp::InterpreterLanguage::C: + return "C"; + case Cpp::InterpreterLanguage::CPlusPlus: + return "C++"; + case Cpp::InterpreterLanguage::ObjC: + return "ObjC"; + case Cpp::InterpreterLanguage::ObjCPlusPlus: + return "ObjC++"; + case Cpp::InterpreterLanguage::OpenCL: + return "OpenCL"; + case Cpp::InterpreterLanguage::OpenCLCXX: + return "OpenCLCXX"; + case Cpp::InterpreterLanguage::CUDA: + return "CUDA"; + case Cpp::InterpreterLanguage::HIP: + return "HIP"; + case Cpp::InterpreterLanguage::HLSL: + return "HLSL"; + } + + return "unknown"; + } + interpreter::interpreter(int argc, const char* const* argv) : xmagics() , p_cout_strbuf(nullptr) @@ -138,6 +175,7 @@ __get_cxx_version () //NOLINTNEXTLINE (cppcoreguidelines-pro-bounds-pointer-arithmetic) createInterpreter(Args(argv ? argv + 1 : argv, argv + argc)); m_version = get_stdopt(); + m_language = get_language(); redirect_output(); init_preamble(); init_magic(); @@ -340,7 +378,7 @@ __get_cxx_version () return xeus::create_info_reply( "xeus-cpp", XEUS_CPP_VERSION, - "C++", + m_language, m_version, "text/x-c++src", ".cpp",