[Mesa-dev] [PATCH 1/1] clover: Use switch when creating kernel arguments

Jan Vesely jan.vesely at rutgers.edu
Tue Dec 2 12:12:16 PST 2014


This way we get a warning when an enum value is not handled

Signed-off-by: Jan Vesely <jan.vesely at rutgers.edu>
---
 src/gallium/state_trackers/clover/core/kernel.cpp | 45 ++++++++++-------------
 1 file changed, 20 insertions(+), 25 deletions(-)

diff --git a/src/gallium/state_trackers/clover/core/kernel.cpp b/src/gallium/state_trackers/clover/core/kernel.cpp
index e07d14d..9ddc244 100644
--- a/src/gallium/state_trackers/clover/core/kernel.cpp
+++ b/src/gallium/state_trackers/clover/core/kernel.cpp
@@ -293,38 +293,33 @@ namespace {
 
 std::unique_ptr<kernel::argument>
 kernel::argument::create(const module::argument &marg) {
-      if (marg.type == module::argument::scalar)
-         return std::unique_ptr<kernel::argument>(
-            new scalar_argument(marg.size));
+   switch(marg.type)
+   {
+   case module::argument::scalar:
+      return std::unique_ptr<kernel::argument>(new scalar_argument(marg.size));
 
-      else if (marg.type == module::argument::global)
-         return std::unique_ptr<kernel::argument>(
-            new global_argument);
+   case module::argument::global:
+      return std::unique_ptr<kernel::argument>(new global_argument);
 
-      else if (marg.type == module::argument::local)
-         return std::unique_ptr<kernel::argument>(
-            new local_argument);
+   case module::argument::local:
+      return std::unique_ptr<kernel::argument>(new local_argument);
 
-      else if (marg.type == module::argument::constant)
-         return std::unique_ptr<kernel::argument>(
-            new constant_argument);
+   case module::argument::constant:
+      return std::unique_ptr<kernel::argument>(new constant_argument);
 
-      else if (marg.type == module::argument::image2d_rd ||
-               marg.type == module::argument::image3d_rd)
-         return std::unique_ptr<kernel::argument>(
-            new image_rd_argument);
+   case module::argument::image2d_rd:
+   case module::argument::image3d_rd:
+      return std::unique_ptr<kernel::argument>(new image_rd_argument);
 
-      else if (marg.type == module::argument::image2d_wr ||
-               marg.type == module::argument::image3d_wr)
-         return std::unique_ptr<kernel::argument>(
-            new image_wr_argument);
+   case module::argument::image2d_wr:
+   case module::argument::image3d_wr:
+      return std::unique_ptr<kernel::argument>(new image_wr_argument);
 
-      else if (marg.type == module::argument::sampler)
-         return std::unique_ptr<kernel::argument>(
-            new sampler_argument);
+   case module::argument::sampler:
+      return std::unique_ptr<kernel::argument>(new sampler_argument);
 
-      else
-         throw error(CL_INVALID_KERNEL_DEFINITION);
+   }
+   throw error(CL_INVALID_KERNEL_DEFINITION);
 }
 
 kernel::argument::argument() : _set(false) {
-- 
1.9.3



More information about the mesa-dev mailing list