From a84f1d13c06d7b5fd58044dea84b84d9d5df7eef Mon Sep 17 00:00:00 2001
From: Lava Block <the@lava-block.com>
Date: Wed, 19 Feb 2020 04:48:29 +0100
Subject: [PATCH] instance::create_param::check

---
 liblava/base/instance.cpp | 64 +++++++++++++++++++--------------------
 liblava/base/instance.hpp |  6 ++--
 2 files changed, 36 insertions(+), 34 deletions(-)

diff --git a/liblava/base/instance.cpp b/liblava/base/instance.cpp
index 9f5504aa..bf7c5144 100644
--- a/liblava/base/instance.cpp
+++ b/liblava/base/instance.cpp
@@ -38,7 +38,7 @@ bool instance::create(create_param& param, debug_config::ref d, app_info::ref i)
             param.extensions.push_back(VK_EXT_DEBUG_UTILS_EXTENSION_NAME);
     }
 
-    if (!param.check()) {
+    if (!check(param)) {
 
         log()->error("create instance param");
         return false;
@@ -108,37 +108,6 @@ void instance::destroy() {
     vk_instance = nullptr;
 }
 
-bool instance::create_param::check() const {
-
-    auto layer_properties = enumerate_layer_properties();
-    for (auto const& layer_name : layers) {
-
-        auto itr = std::find_if(layer_properties.begin(), layer_properties.end(), 
-                            [&](VkLayerProperties const& extProp) {
-
-                                return strcmp(layer_name, extProp.layerName) == 0;
-                            });
-
-        if (itr == layer_properties.end())
-            return false;
-    }
-
-    auto extensions_properties = enumerate_extension_properties();
-    for (auto const& ext_name : extensions) {
-
-        auto itr = std::find_if(extensions_properties.begin(), extensions_properties.end(),
-                            [&](VkExtensionProperties const& extProp) {
-
-                                return strcmp(ext_name, extProp.extensionName) == 0;
-                            });
-
-        if (itr == extensions_properties.end())
-            return false;
-    }
-
-    return true;
-}
-
 static VKAPI_ATTR VkBool32 VKAPI_CALL validation_callback(VkDebugUtilsMessageSeverityFlagBitsEXT message_severity,
         VkDebugUtilsMessageTypeFlagsEXT message_type, const VkDebugUtilsMessengerCallbackDataEXT* callback_data, void* user_data) {
 
@@ -253,3 +222,34 @@ internal_version instance::get_version() {
 }
 
 } // lava
+
+bool lava::check(instance::create_param::ref param) {
+
+    auto layer_properties = instance::enumerate_layer_properties();
+    for (auto const& layer_name : param.layers) {
+
+        auto itr = std::find_if(layer_properties.begin(), layer_properties.end(),
+                            [&](VkLayerProperties const& extProp) {
+
+                                return strcmp(layer_name, extProp.layerName) == 0;
+                            });
+
+        if (itr == layer_properties.end())
+            return false;
+    }
+
+    auto extensions_properties = instance::enumerate_extension_properties();
+    for (auto const& ext_name : param.extensions) {
+
+        auto itr = std::find_if(extensions_properties.begin(), extensions_properties.end(),
+                            [&](VkExtensionProperties const& extProp) {
+
+                                return strcmp(ext_name, extProp.extensionName) == 0;
+                            });
+
+        if (itr == extensions_properties.end())
+            return false;
+    }
+
+    return true;
+}
diff --git a/liblava/base/instance.hpp b/liblava/base/instance.hpp
index d8ea637b..88199084 100644
--- a/liblava/base/instance.hpp
+++ b/liblava/base/instance.hpp
@@ -12,10 +12,10 @@ struct instance : no_copy_no_move {
 
     struct create_param {
 
+        using ref = create_param const&;
+
         names layers{};
         names extensions{};
-
-        bool check() const;
     };
 
     struct debug_config {
@@ -87,4 +87,6 @@ private:
     VkDebugUtilsMessengerEXT debug_messenger = 0;
 };
 
+bool check(instance::create_param::ref param);
+
 } // lava
-- 
GitLab