diff options
Diffstat (limited to 'source/core')
| -rw-r--r-- | source/core/slang-type-convert-util.cpp | 41 | ||||
| -rw-r--r-- | source/core/slang-type-convert-util.h | 21 |
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 |
