Skip to content

Commit 7808b73

Browse files
authored
Use Cpp::GetLanguage to set language (#462)
1 parent 88ae231 commit 7808b73

2 files changed

Lines changed: 41 additions & 1 deletion

File tree

include/xeus-cpp/xinterpreter.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,8 @@ namespace xcpp
7979

8080
std::string m_version;
8181

82+
std::string m_language;
83+
8284
xmagics_manager xmagics;
8385
xpreamble_manager preamble_manager;
8486

src/xinterpreter.cpp

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,43 @@ __get_cxx_version ()
128128
return std::to_string(cxx_version);
129129
}
130130

131+
// FIXME: This function should be upstreamed to CppInterOp. See
132+
// https://github.com/compiler-research/CppInterOp/issues/879
133+
static std::string get_language()
134+
{
135+
switch (Cpp::GetLanguage(nullptr))
136+
{
137+
case Cpp::InterpreterLanguage::Unknown:
138+
return "Unknown";
139+
case Cpp::InterpreterLanguage::Asm:
140+
return "Asm";
141+
case Cpp::InterpreterLanguage::CIR:
142+
return "CIR";
143+
case Cpp::InterpreterLanguage::LLVM_IR:
144+
return "LLVM_IR";
145+
case Cpp::InterpreterLanguage::C:
146+
return "C";
147+
case Cpp::InterpreterLanguage::CPlusPlus:
148+
return "C++";
149+
case Cpp::InterpreterLanguage::ObjC:
150+
return "ObjC";
151+
case Cpp::InterpreterLanguage::ObjCPlusPlus:
152+
return "ObjC++";
153+
case Cpp::InterpreterLanguage::OpenCL:
154+
return "OpenCL";
155+
case Cpp::InterpreterLanguage::OpenCLCXX:
156+
return "OpenCLCXX";
157+
case Cpp::InterpreterLanguage::CUDA:
158+
return "CUDA";
159+
case Cpp::InterpreterLanguage::HIP:
160+
return "HIP";
161+
case Cpp::InterpreterLanguage::HLSL:
162+
return "HLSL";
163+
}
164+
165+
return "unknown";
166+
}
167+
131168
interpreter::interpreter(int argc, const char* const* argv) :
132169
xmagics()
133170
, p_cout_strbuf(nullptr)
@@ -138,6 +175,7 @@ __get_cxx_version ()
138175
//NOLINTNEXTLINE (cppcoreguidelines-pro-bounds-pointer-arithmetic)
139176
createInterpreter(Args(argv ? argv + 1 : argv, argv + argc));
140177
m_version = get_stdopt();
178+
m_language = get_language();
141179
redirect_output();
142180
init_preamble();
143181
init_magic();
@@ -340,7 +378,7 @@ __get_cxx_version ()
340378
return xeus::create_info_reply(
341379
"xeus-cpp",
342380
XEUS_CPP_VERSION,
343-
"C++",
381+
m_language,
344382
m_version,
345383
"text/x-c++src",
346384
".cpp",

0 commit comments

Comments
 (0)