summaryrefslogtreecommitdiff
path: root/source/core
diff options
context:
space:
mode:
Diffstat (limited to 'source/core')
-rw-r--r--source/core/slang-type-convert-util.cpp41
-rw-r--r--source/core/slang-type-convert-util.h21
2 files changed, 62 insertions, 0 deletions
diff --git a/source/core/slang-type-convert-util.cpp b/source/core/slang-type-convert-util.cpp
new file mode 100644
index 000000000..fbf385319
--- /dev/null
+++ b/source/core/slang-type-convert-util.cpp
@@ -0,0 +1,41 @@
+
+#include "slang-type-convert-util.h"
+
+namespace Slang
+{
+
+/* static */SlangSourceLanguage TypeConvertUtil::getSourceLanguageFromTarget(SlangCompileTarget target)
+{
+ switch (target)
+ {
+ case SLANG_GLSL:
+ case SLANG_GLSL_VULKAN:
+ case SLANG_GLSL_VULKAN_ONE_DESC:
+ {
+ return SLANG_SOURCE_LANGUAGE_GLSL;
+ }
+ case SLANG_HLSL: return SLANG_SOURCE_LANGUAGE_HLSL;
+ case SLANG_C_SOURCE: return SLANG_SOURCE_LANGUAGE_C;
+ case SLANG_CPP_SOURCE: return SLANG_SOURCE_LANGUAGE_CPP;
+ case SLANG_CUDA_SOURCE: return SLANG_SOURCE_LANGUAGE_CUDA;
+ default: break;
+ }
+ return SLANG_SOURCE_LANGUAGE_UNKNOWN;
+}
+
+/* static */SlangCompileTarget TypeConvertUtil::getCompileTargetFromSourceLanguage(SlangSourceLanguage lang)
+{
+ switch (lang)
+ {
+ case SLANG_SOURCE_LANGUAGE_GLSL: return SLANG_GLSL;
+ case SLANG_SOURCE_LANGUAGE_HLSL: return SLANG_HLSL;
+ case SLANG_SOURCE_LANGUAGE_C: return SLANG_C_SOURCE;
+ case SLANG_SOURCE_LANGUAGE_CPP: return SLANG_CPP_SOURCE;
+ case SLANG_SOURCE_LANGUAGE_CUDA: return SLANG_CUDA_SOURCE;
+ }
+
+ return SLANG_TARGET_UNKNOWN;
+}
+
+}
+
diff --git a/source/core/slang-type-convert-util.h b/source/core/slang-type-convert-util.h
new file mode 100644
index 000000000..00b47a154
--- /dev/null
+++ b/source/core/slang-type-convert-util.h
@@ -0,0 +1,21 @@
+#ifndef SLANG_CORE_TYPE_CONVERT_UTIL_H
+#define SLANG_CORE_TYPE_CONVERT_UTIL_H
+
+#include "../../slang.h"
+
+namespace Slang
+{
+
+/// Utility class for simple conversions between types
+struct TypeConvertUtil
+{
+ /// Convert a target into it's equivalent language if ones available. If not returns SOURCE_LANGUAGE_UNKNOWN
+ static SlangSourceLanguage getSourceLanguageFromTarget(SlangCompileTarget target);
+
+ /// Convert a language into the equivalent target. If not available returns SLANG_TARGET_UNKNOWN
+ static SlangCompileTarget getCompileTargetFromSourceLanguage(SlangSourceLanguage lang);
+};
+
+}
+
+#endif // SLANG_CORE_TYPE_TEXT_UTIL_H