29#include <unordered_map> 
   32#include "dpctl4pybind11.hpp" 
   34namespace ext::validation
 
   36using array_ptr = 
const dpctl::tensor::usm_ndarray *;
 
   37using array_names = std::unordered_map<array_ptr, std::string>;
 
   38using dpctl::tensor::type_dispatch::typenum_t;
 
   40std::string name_of(
const array_ptr &arr, 
const array_names &names);
 
   42void check_writable(
const std::vector<array_ptr> &arrays,
 
   43                    const array_names &names);
 
   44void check_c_contig(
const std::vector<array_ptr> &arrays,
 
   45                    const array_names &names);
 
   46void check_queue(
const std::vector<array_ptr> &arrays,
 
   47                 const array_names &names,
 
   48                 const sycl::queue &exec_q);
 
   50void check_no_overlap(
const array_ptr &inputs,
 
   51                      const array_ptr &outputs,
 
   52                      const array_names &names);
 
   53void check_no_overlap(
const std::vector<array_ptr> &inputs,
 
   54                      const std::vector<array_ptr> &outputs,
 
   55                      const array_names &names);
 
   57void check_num_dims(
const array_ptr &arr,
 
   59                    const array_names &names);
 
   60void check_num_dims(
const std::vector<array_ptr> &arrays,
 
   62                    const array_names &names);
 
   63void check_max_dims(
const array_ptr &arr,
 
   64                    const size_t max_ndim,
 
   65                    const array_names &names);
 
   67void check_size_at_least(
const array_ptr &arr,
 
   69                         const array_names &names);
 
   71void check_has_dtype(
const array_ptr &arr,
 
   72                     const typenum_t dtype,
 
   73                     const array_names &names);
 
   75void check_same_dtype(
const array_ptr &arr1,
 
   76                      const array_ptr &arr2,
 
   77                      const array_names &names);
 
   79void check_same_size(
const array_ptr &arr1,
 
   80                     const array_ptr &arr2,
 
   81                     const array_names &names);
 
   82void check_same_size(
const std::vector<array_ptr> &arrays,
 
   83                     const array_names &names);
 
   85void common_checks(
const std::vector<array_ptr> &inputs,
 
   86                   const std::vector<array_ptr> &outputs,
 
   87                   const array_names &names);
 
   90#include "ext/details/validation_utils_internal.hpp"