clover: Use switch when creating kernel arguments.
authorJan Vesely <jan.vesely@rutgers.edu>
Sat, 6 Dec 2014 00:05:30 +0000 (19:05 -0500)
committerFrancisco Jerez <currojerez@riseup.net>
Wed, 10 Dec 2014 13:48:20 +0000 (15:48 +0200)
This way we get a warning if an enum value is not handled.

v2: codestyle

Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
Reviewed-by: Francisco Jerez <currojerez@riseup.net>
src/gallium/state_trackers/clover/core/kernel.cpp

index e07d14d39f760293daf6c5237e60702dbaa56b34..442762c4773c0fbe9a2084950cd15662bcb3ece6 100644 (file)
@@ -293,38 +293,32 @@ 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) {