Strong Exception Guarantee
| 65 | |
| 66 | // Strong Exception Guarantee |
| 67 | af_err af_create_array(af_array *result, const void *const data, |
| 68 | const unsigned ndims, const dim_t *const dims, |
| 69 | const af_dtype type) { |
| 70 | try { |
| 71 | af_array out; |
| 72 | AF_CHECK(af_init()); |
| 73 | |
| 74 | dim4 d = verifyDims(ndims, dims); |
| 75 | |
| 76 | switch (type) { |
| 77 | case f32: |
| 78 | out = createHandleFromData(d, static_cast<const float *>(data)); |
| 79 | break; |
| 80 | case c32: |
| 81 | out = |
| 82 | createHandleFromData(d, static_cast<const cfloat *>(data)); |
| 83 | break; |
| 84 | case f64: |
| 85 | out = |
| 86 | createHandleFromData(d, static_cast<const double *>(data)); |
| 87 | break; |
| 88 | case c64: |
| 89 | out = |
| 90 | createHandleFromData(d, static_cast<const cdouble *>(data)); |
| 91 | break; |
| 92 | case b8: |
| 93 | out = createHandleFromData(d, static_cast<const char *>(data)); |
| 94 | break; |
| 95 | case s32: |
| 96 | out = createHandleFromData(d, static_cast<const int *>(data)); |
| 97 | break; |
| 98 | case u32: |
| 99 | out = createHandleFromData(d, static_cast<const uint *>(data)); |
| 100 | break; |
| 101 | case s8: |
| 102 | out = createHandleFromData(d, static_cast<const schar *>(data)); |
| 103 | break; |
| 104 | case u8: |
| 105 | out = createHandleFromData(d, static_cast<const uchar *>(data)); |
| 106 | break; |
| 107 | case s64: |
| 108 | out = createHandleFromData(d, static_cast<const intl *>(data)); |
| 109 | break; |
| 110 | case u64: |
| 111 | out = createHandleFromData(d, static_cast<const uintl *>(data)); |
| 112 | break; |
| 113 | case s16: |
| 114 | out = createHandleFromData(d, static_cast<const short *>(data)); |
| 115 | break; |
| 116 | case u16: |
| 117 | out = |
| 118 | createHandleFromData(d, static_cast<const ushort *>(data)); |
| 119 | break; |
| 120 | case f16: |
| 121 | out = createHandleFromData(d, static_cast<const half *>(data)); |
| 122 | break; |
| 123 | default: TYPE_ERROR(4, type); |
| 124 | } |