Skip to content

Commit 165250a

Browse files
committed
Use Cpp::GetLanguage to set language
1 parent 506b645 commit 165250a

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
@@ -102,6 +102,43 @@ __get_cxx_version ()
102102
return std::to_string(cxx_version);
103103
}
104104

105+
// FIXME: This function should be upstreamed to CppInterOp. See
106+
// https://github.com/compiler-research/CppInterOp/issues/879
107+
static std::string get_language()
108+
{
109+
switch (Cpp::GetLanguage(nullptr))
110+
{
111+
case Cpp::InterpreterLanguage::Unknown:
112+
return "Unknown";
113+
case Cpp::InterpreterLanguage::Asm:
114+
return "Asm";
115+
case Cpp::InterpreterLanguage::CIR:
116+
return "CIR";
117+
case Cpp::InterpreterLanguage::LLVM_IR:
118+
return "LLVM_IR";
119+
case Cpp::InterpreterLanguage::C:
120+
return "C";
121+
case Cpp::InterpreterLanguage::CPlusPlus:
122+
return "C++";
123+
case Cpp::InterpreterLanguage::ObjC:
124+
return "ObjC";
125+
case Cpp::InterpreterLanguage::ObjCPlusPlus:
126+
return "ObjC++";
127+
case Cpp::InterpreterLanguage::OpenCL:
128+
return "OpenCL";
129+
case Cpp::InterpreterLanguage::OpenCLCXX:
130+
return "OpenCLCXX";
131+
case Cpp::InterpreterLanguage::CUDA:
132+
return "CUDA";
133+
case Cpp::InterpreterLanguage::HIP:
134+
return "HIP";
135+
case Cpp::InterpreterLanguage::HLSL:
136+
return "HLSL";
137+
}
138+
139+
return "unknown";
140+
}
141+
105142
interpreter::interpreter(int argc, const char* const* argv) :
106143
xmagics()
107144
, p_cout_strbuf(nullptr)
@@ -112,6 +149,7 @@ __get_cxx_version ()
112149
//NOLINTNEXTLINE (cppcoreguidelines-pro-bounds-pointer-arithmetic)
113150
createInterpreter(Args(argv ? argv + 1 : argv, argv + argc));
114151
m_version = get_stdopt();
152+
m_language = get_language();
115153
redirect_output();
116154
init_preamble();
117155
init_magic();
@@ -314,7 +352,7 @@ __get_cxx_version ()
314352
return xeus::create_info_reply(
315353
"xeus-cpp",
316354
XEUS_CPP_VERSION,
317-
"C++",
355+
m_language,
318356
m_version,
319357
"text/x-c++src",
320358
".cpp",

0 commit comments

Comments
 (0)