From 3b60cee5765b5e571319c483e210e252eca27dd3 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Fri, 23 Aug 2019 11:40:12 -0400 Subject: [PATCH] hecl/Compilers: Make name strings constexpr Same behavior (as of C++17), without the need to duplicate the variable name. --- hecl/include/hecl/Compilers.hpp | 22 +++++++++++----------- hecl/lib/Compilers.cpp | 17 ----------------- 2 files changed, 11 insertions(+), 28 deletions(-) diff --git a/hecl/include/hecl/Compilers.hpp b/hecl/include/hecl/Compilers.hpp index 6c214559e..7c714eb75 100644 --- a/hecl/include/hecl/Compilers.hpp +++ b/hecl/include/hecl/Compilers.hpp @@ -12,35 +12,35 @@ using PlatformEnum = boo::IGraphicsDataFactory::Platform; struct Null {}; struct OpenGL { static constexpr PlatformEnum Enum = PlatformEnum::OpenGL; - static const char* Name; + static constexpr char Name[] = "OpenGL"; #if BOO_HAS_GL using Context = boo::GLDataFactory::Context; #endif }; struct D3D11 { static constexpr PlatformEnum Enum = PlatformEnum::D3D11; - static const char* Name; + static constexpr char Name[] = "D3D11"; #if _WIN32 using Context = boo::D3D11DataFactory::Context; #endif }; struct Metal { static constexpr PlatformEnum Enum = PlatformEnum::Metal; - static const char* Name; + static constexpr char Name[] = "Metal"; #if BOO_HAS_METAL using Context = boo::MetalDataFactory::Context; #endif }; struct Vulkan { static constexpr PlatformEnum Enum = PlatformEnum::Vulkan; - static const char* Name; + static constexpr char Name[] = "Vulkan"; #if BOO_HAS_VULKAN using Context = boo::VulkanDataFactory::Context; #endif }; struct NX { static constexpr PlatformEnum Enum = PlatformEnum::NX; - static const char* Name; + static constexpr char Name[] = "NX"; #if BOO_HAS_NX using Context = boo::NXDataFactory::Context; #endif @@ -51,27 +51,27 @@ namespace PipelineStage { using StageEnum = boo::PipelineStage; struct Null { static constexpr StageEnum Enum = StageEnum::Null; - static const char* Name; + static constexpr char Name[] = "Null"; }; struct Vertex { static constexpr StageEnum Enum = StageEnum::Vertex; - static const char* Name; + static constexpr char Name[] = "Vertex"; }; struct Fragment { static constexpr StageEnum Enum = StageEnum::Fragment; - static const char* Name; + static constexpr char Name[] = "Fragment"; }; struct Geometry { static constexpr StageEnum Enum = StageEnum::Geometry; - static const char* Name; + static constexpr char Name[] = "Geometry"; }; struct Control { static constexpr StageEnum Enum = StageEnum::Control; - static const char* Name; + static constexpr char Name[] = "Control"; }; struct Evaluation { static constexpr StageEnum Enum = StageEnum::Evaluation; - static const char* Name; + static constexpr char Name[] = "Evaluation"; }; } // namespace PipelineStage diff --git a/hecl/lib/Compilers.cpp b/hecl/lib/Compilers.cpp index 1f29236eb..bbac68cec 100644 --- a/hecl/lib/Compilers.cpp +++ b/hecl/lib/Compilers.cpp @@ -17,23 +17,6 @@ extern pD3DCompile D3DCompilePROC; namespace hecl { logvisor::Module Log("hecl::Compilers"); -namespace PlatformType { -const char* OpenGL::Name = "OpenGL"; -const char* Vulkan::Name = "Vulkan"; -const char* D3D11::Name = "D3D11"; -const char* Metal::Name = "Metal"; -const char* NX::Name = "NX"; -} // namespace PlatformType - -namespace PipelineStage { -const char* Null::Name = "Null"; -const char* Vertex::Name = "Vertex"; -const char* Fragment::Name = "Fragment"; -const char* Geometry::Name = "Geometry"; -const char* Control::Name = "Control"; -const char* Evaluation::Name = "Evaluation"; -} // namespace PipelineStage - template struct ShaderCompiler {};