@@ -84,7 +84,8 @@ namespace af
8484 switch (src) {
8585 case afHost: AF_THROW (af_create_array (arr, (const void * const )ptr, 4 , my_dims, ty)); break ;
8686 case afDevice: AF_THROW (af_device_array (arr, (const void * )ptr, 4 , my_dims, ty)); break ;
87- default : AF_THROW (AF_ERR_INVALID_ARG);
87+ default : AF_THROW_MSG (" Can not create array from the requested source pointer" ,
88+ AF_ERR_INVALID_ARG);
8889 }
8990 }
9091
@@ -647,31 +648,32 @@ namespace af
647648 AF_THROW (af_eval (get ()));
648649 }
649650
650- #define INSTANTIATE (T ) \
651- template <> AFAPI T *array::host () const \
652- { \
653- if (type () != (af::dtype)dtype_traits<T>::af_type) { \
654- AF_THROW (AF_ERR_INVALID_TYPE); \
655- } \
656- \
657- T *res = new T[elements ()]; \
658- AF_THROW (af_get_data_ptr ((void *)res, get ())); \
659- \
660- return res; \
661- } \
662- template <> AFAPI T array::scalar () const \
663- { \
664- T *h_ptr = host<T>(); \
665- T scalar = h_ptr[0 ]; \
666- delete[] h_ptr; \
667- return scalar; \
668- } \
669- template <> AFAPI T* array::device () const \
670- { \
671- void *ptr = NULL ; \
672- AF_THROW (af_get_device_ptr (&ptr, get (), true )); \
673- return (T *)ptr; \
674- } \
651+ #define INSTANTIATE (T ) \
652+ template <> AFAPI T *array::host () const \
653+ { \
654+ if (type () != (af::dtype)dtype_traits<T>::af_type) { \
655+ AF_THROW_MSG (" Requested type does'nt match with array" , \
656+ AF_ERR_INVALID_TYPE); \
657+ } \
658+ \
659+ T *res = new T[elements ()]; \
660+ AF_THROW (af_get_data_ptr ((void *)res, get ())); \
661+ \
662+ return res; \
663+ } \
664+ template <> AFAPI T array::scalar () const \
665+ { \
666+ T *h_ptr = host<T>(); \
667+ T scalar = h_ptr[0 ]; \
668+ delete[] h_ptr; \
669+ return scalar; \
670+ } \
671+ template <> AFAPI T* array::device () const \
672+ { \
673+ void *ptr = NULL ; \
674+ AF_THROW (af_get_device_ptr (&ptr, get (), true )); \
675+ return (T *)ptr; \
676+ } \
675677
676678 INSTANTIATE (cdouble)
677679 INSTANTIATE (cfloat)
0 commit comments