From d4e5049d5da7a17ac061b077615fed97d0b845d8 Mon Sep 17 00:00:00 2001
From: Tobias Frisch <tfrisch@uni-koblenz.de>
Date: Thu, 10 Jun 2021 11:27:55 +0200
Subject: [PATCH] [#36] Fixed cross-include by outsourcing the enum class

Signed-off-by: Tobias Frisch <tfrisch@uni-koblenz.de>
---
 config/Sources.cmake              |  4 +++-
 include/vkcv/DescriptorConfig.hpp |  6 ++++--
 include/vkcv/ShaderProgram.hpp    | 11 +----------
 include/vkcv/ShaderStage.hpp      | 15 +++++++++++++++
 4 files changed, 23 insertions(+), 13 deletions(-)
 create mode 100644 include/vkcv/ShaderStage.hpp

diff --git a/config/Sources.cmake b/config/Sources.cmake
index a5b2ddae..7632d7d8 100644
--- a/config/Sources.cmake
+++ b/config/Sources.cmake
@@ -32,7 +32,9 @@ set(vkcv_sources
 
 		${vkcv_include}/vkcv/SwapChain.hpp
 		${vkcv_source}/vkcv/SwapChain.cpp
-
+		
+		${vkcv_include}/vkcv/ShaderStage.hpp
+		
 		${vkcv_include}/vkcv/ShaderProgram.hpp
 		${vkcv_source}/vkcv/ShaderProgram.cpp
 
diff --git a/include/vkcv/DescriptorConfig.hpp b/include/vkcv/DescriptorConfig.hpp
index 5f33c9ad..c6d0dfd1 100644
--- a/include/vkcv/DescriptorConfig.hpp
+++ b/include/vkcv/DescriptorConfig.hpp
@@ -1,8 +1,10 @@
 #pragma once
-#include <vkcv/ShaderProgram.hpp>
-#include <vkcv/Handles.hpp>
+
 #include <vulkan/vulkan.hpp>
 
+#include "vkcv/Handles.hpp"
+#include "vkcv/ShaderStage.hpp"
+
 namespace vkcv
 {
     struct DescriptorSet
diff --git a/include/vkcv/ShaderProgram.hpp b/include/vkcv/ShaderProgram.hpp
index a5586ab7..ce28cccf 100644
--- a/include/vkcv/ShaderProgram.hpp
+++ b/include/vkcv/ShaderProgram.hpp
@@ -13,20 +13,11 @@
 #include <vulkan/vulkan.hpp>
 #include <spirv_cross.hpp>
 #include "vkcv/VertexLayout.hpp"
+#include "vkcv/ShaderStage.hpp"
 #include "vkcv/DescriptorConfig.hpp"
 
 namespace vkcv {
 
-    enum class ShaderStage
-    {
-        VERTEX,
-        TESS_CONTROL,
-        TESS_EVAL,
-        GEOMETRY,
-        FRAGMENT,
-        COMPUTE
-    };
-
     struct Shader
     {
         std::vector<char> shaderCode;
diff --git a/include/vkcv/ShaderStage.hpp b/include/vkcv/ShaderStage.hpp
new file mode 100644
index 00000000..dca395bd
--- /dev/null
+++ b/include/vkcv/ShaderStage.hpp
@@ -0,0 +1,15 @@
+#pragma once
+
+namespace vkcv {
+	
+	enum class ShaderStage
+	{
+		VERTEX,
+		TESS_CONTROL,
+		TESS_EVAL,
+		GEOMETRY,
+		FRAGMENT,
+		COMPUTE
+	};
+
+}
-- 
GitLab