clover: Add allow_empty_tag.
authorEdB <edb+mesa@sigluy.net>
Sat, 11 Oct 2014 22:58:39 +0000 (01:58 +0300)
committerFrancisco Jerez <currojerez@riseup.net>
Mon, 20 Oct 2014 07:35:10 +0000 (10:35 +0300)
To allow empty objs() list checks.

Reviewed-by: Francisco Jerez <currojerez@riseup.net>
src/gallium/state_trackers/clover/core/object.hpp

index daad06848b4af0a691950437a7d2a6f83018f0fe..e3a5ab7fafd1f30a8096f20f725ea97faf28e5da 100644 (file)
@@ -55,6 +55,7 @@ namespace clover {
    };
 
    struct default_tag;
+   struct allow_empty_tag;
    struct wait_list_tag;
    struct property_list_tag;
 
@@ -95,6 +96,23 @@ namespace clover {
          }
       };
 
+      template<typename D>
+      struct descriptor_traits<allow_empty_tag, D> {
+         typedef typename D::object_type object_type;
+
+         static void
+         validate(D *d) {
+            if (!d || d->dispatch != &_dispatch)
+               throw invalid_object_error<object_type>();
+         }
+
+         static void
+         validate_list(D *const *ds, size_t n) {
+            if (bool(ds) != bool(n))
+               throw error(CL_INVALID_VALUE);
+         }
+      };
+
       template<typename D>
       struct descriptor_traits<wait_list_tag, D> {
          typedef typename D::object_type object_type;