defines.h Source File

- Main Page
- Tutorials
- Functions
- Release Notes
- Examples

defines.h
Go to the documentation of this file.
1 /*******************************************************
2 * Copyright (c) 2014, ArrayFire
3 * All rights reserved.
4 *
5 * This file is distributed under 3-clause BSD license.
6 * The complete license agreement can be obtained at:
7 * http://arrayfire.com/licenses/BSD-3-Clause
8 ********************************************************/
9
10 #pragma once
11
12 #if defined(_WIN32) || defined(_MSC_VER)
13 // http://msdn.microsoft.com/en-us/library/b0084kay(v=VS.80).aspx
14 // http://msdn.microsoft.com/en-us/library/3y1sfaz2%28v=VS.80%29.aspx
15 #ifdef AFDLL // libaf
16 #define AFAPI __declspec(dllexport)
17 #else
18 #define AFAPI __declspec(dllimport)
19 #endif
20
21 // bool
22 #ifndef __cplusplus
23 #define bool unsigned char
24 #define false 0
25 #define true 1
26 #endif
27 #define __PRETTY_FUNCTION__ __FUNCSIG__
28 #define SIZE_T_FRMT_SPECIFIER "%Iu"
29 #define DEPRECATED(msg) __declspec(deprecated( msg ))
30 #else
31 #define AFAPI __attribute__((visibility("default")))
32 #include <stdbool.h>
33 #define SIZE_T_FRMT_SPECIFIER "%zu"
34 #if __GNUC__ >= 4 && __GNUC_MINOR > 4
35 #define DEPRECATED(msg) __attribute__((deprecated( msg )))
36 #else
37 #define DEPRECATED(msg) __attribute__((deprecated))
38 #endif
39
40 #endif
41
42 // Known 64-bit x86 and ARM architectures use long long
43 #if defined(__x86_64__) || defined(_M_X64) || defined(_WIN64) || defined(__aarch64__) || defined(__LP64__) // 64-bit Architectures
44 typedef long long dim_t;
45 // Known 32-bit x86 and ARM architectures use int
46 #elif defined(__i386__) || defined(_M_IX86) || defined(__arm__) || defined(_M_ARM) // 32-bit x86 Architecture
47 typedef int dim_t;
48 // All other platforms use long long
49 #else
50 typedef long long dim_t;
51 #endif
52
53 #if defined(__x86_64__) || defined(_M_X64) || defined(__i386__) || defined(_M_IX86) || defined(_WIN64)
54 #define USE_CPUID
55 #endif
56
57 #include <stdlib.h>
58
59 typedef long long intl;
60 typedef unsigned long long uintl;
61
62 #include <af/version.h>
63 #ifndef AF_API_VERSION
64 #define AF_API_VERSION AF_API_VERSION_CURRENT
65 #endif
66
67 typedef enum {
71 AF_SUCCESS = 0,
72
73 // 100-199 Errors in environment
74
78 AF_ERR_NO_MEM = 101,
79
83 AF_ERR_DRIVER = 102,
84
88 AF_ERR_RUNTIME = 103,
89
90 // 200-299 Errors in input parameters
91
95 AF_ERR_INVALID_ARRAY = 201,
96
100 AF_ERR_ARG = 202,
101
105 AF_ERR_SIZE = 203,
106
110 AF_ERR_TYPE = 204,
111
115 AF_ERR_DIFF_TYPE = 205,
116
120 AF_ERR_BATCH = 207,
121
122
123 #if AF_API_VERSION >= 33
124 AF_ERR_DEVICE = 208,
128 #endif
129
130 // 300-399 Errors for missing software features
131
135 AF_ERR_NOT_SUPPORTED = 301,
136
140 AF_ERR_NOT_CONFIGURED = 302,
141
142 #if AF_API_VERSION >= 32
143 AF_ERR_NONFREE = 303,
147 #endif
148
149 // 400-499 Errors for missing hardware features
150
154 AF_ERR_NO_DBL = 401,
155
160 AF_ERR_NO_GFX = 402,
161
162 // 500-599 Errors specific to heterogenous API
163
164 #if AF_API_VERSION >= 32
165 AF_ERR_LOAD_LIB = 501,
169 #endif
170
171 #if AF_API_VERSION >= 32
172 AF_ERR_LOAD_SYM = 502,
176 #endif
177
178 #if AF_API_VERSION >= 32
179 AF_ERR_ARR_BKND_MISMATCH = 503,
183 #endif
184
185 // 900-999 Errors from upstream libraries and runtimes
186
191 AF_ERR_INTERNAL = 998,
192
196 AF_ERR_UNKNOWN = 999
197 } af_err;
198
199 typedef enum {
200 f32,
201 c32,
202 f64,
203 c64,
204 b8 ,
205 s32,
206 u32,
207 u8 ,
208 s64,
209 u64,
210 #if AF_API_VERSION >= 32
211 s16,
212 #endif
213 #if AF_API_VERSION >= 32
214 u16,
215 #endif
216 } af_dtype;
217
218 typedef enum {
219 afDevice,
220 afHost,
221 } af_source;
222
223 #define AF_MAX_DIMS 4
224
225 // A handle for an internal array object
226 typedef void * af_array;
227
228 typedef enum {
229 AF_INTERP_NEAREST,
230 AF_INTERP_LINEAR,
231 AF_INTERP_BILINEAR,
232 AF_INTERP_CUBIC,
233 AF_INTERP_LOWER
234 } af_interp_type;
235
236 typedef enum {
240 AF_PAD_ZERO = 0,
241
245 AF_PAD_SYM
246 } af_border_type;
247
248 typedef enum {
252 AF_CONNECTIVITY_4 = 4,
253
257 AF_CONNECTIVITY_8 = 8
258 } af_connectivity;
259
260 typedef enum {
261
265 AF_CONV_DEFAULT,
266
270 AF_CONV_EXPAND,
271 } af_conv_mode;
272
273 typedef enum {
274 AF_CONV_AUTO,
275 AF_CONV_SPATIAL,
276 AF_CONV_FREQ,
277 } af_conv_domain;
278
279 typedef enum {
280 AF_SAD = 0,
281 AF_ZSAD,
282 AF_LSAD,
283 AF_SSD,
284 AF_ZSSD,
285 AF_LSSD,
286 AF_NCC,
287 AF_ZNCC,
288 AF_SHD
289 } af_match_type;
290
291 #if AF_API_VERSION >= 31
292 typedef enum {
293 AF_YCC_601 = 601,
294 AF_YCC_709 = 709,
295 AF_YCC_2020 = 2020
296 } af_ycc_std;
297 #endif
298
299 typedef enum {
300 AF_GRAY = 0,
301 AF_RGB,
302 AF_HSV,
303 #if AF_API_VERSION >= 31
304 AF_YCbCr
305 #endif
306 } af_cspace_t;
307
308 typedef enum {
309 AF_MAT_NONE = 0,
310 AF_MAT_TRANS = 1,
311 AF_MAT_CTRANS = 2,
312 AF_MAT_CONJ = 4,
313 AF_MAT_UPPER = 32,
314 AF_MAT_LOWER = 64,
315 AF_MAT_DIAG_UNIT = 128,
316 AF_MAT_SYM = 512,
317 AF_MAT_POSDEF = 1024,
318 AF_MAT_ORTHOG = 2048,
319 AF_MAT_TRI_DIAG = 4096,
320 AF_MAT_BLOCK_DIAG = 8192
321 } af_mat_prop;
322
323 typedef enum {
324 AF_NORM_VECTOR_1,
325 AF_NORM_VECTOR_INF,
326 AF_NORM_VECTOR_2,
327 AF_NORM_VECTOR_P,
328 AF_NORM_MATRIX_1,
329 AF_NORM_MATRIX_INF,
330 AF_NORM_MATRIX_2,
331 AF_NORM_MATRIX_L_PQ,
332
333 AF_NORM_EUCLID = AF_NORM_VECTOR_2,
334 } af_norm_type;
335
336 typedef enum {
337 AF_COLORMAP_DEFAULT = 0,
338 AF_COLORMAP_SPECTRUM= 1,
339 AF_COLORMAP_COLORS = 2,
340 AF_COLORMAP_RED = 3,
341 AF_COLORMAP_MOOD = 4,
342 AF_COLORMAP_HEAT = 5,
343 AF_COLORMAP_BLUE = 6
344 } af_colormap;
345
346 #if AF_API_VERSION >= 31
347 typedef enum {
348 AF_FIF_BMP = 0,
349 AF_FIF_ICO = 1,
350 AF_FIF_JPEG = 2,
351 AF_FIF_JNG = 3,
352 AF_FIF_PNG = 13,
353 AF_FIF_PPM = 14,
354 AF_FIF_PPMRAW = 15,
355 AF_FIF_TIFF = 18,
356 AF_FIF_PSD = 20,
357 AF_FIF_HDR = 26,
358 AF_FIF_EXR = 29,
359 AF_FIF_JP2 = 31,
360 AF_FIF_RAW = 34
361 } af_image_format;
362 #endif
363
364 #if AF_API_VERSION >= 32
365 typedef enum {
366 AF_HOMOGRAPHY_RANSAC = 0,
367 AF_HOMOGRAPHY_LMEDS = 1
368 } af_homography_type;
369 #endif
370
371 #if AF_API_VERSION >= 32
372 // These enums should be 2^x
373 typedef enum {
374 AF_BACKEND_DEFAULT = 0,
375 AF_BACKEND_CPU = 1,
376 AF_BACKEND_CUDA = 2,
377 AF_BACKEND_OPENCL = 4,
378 } af_backend;
379 #endif
380
381 // Below enum is purely added for example purposes
382 // it doesn't and shoudn't be used anywhere in the
383 // code. No Guarantee's provided if it is used.
384 typedef enum {
385 AF_ID = 0
386 } af_someenum_t;
387
388 #if AF_API_VERSION >=32
389 typedef enum {
390 AF_MARKER_NONE = 0,
391 AF_MARKER_POINT = 1,
392 AF_MARKER_CIRCLE = 2,
393 AF_MARKER_SQUARE = 3,
394 AF_MARKER_TRIANGLE = 4,
395 AF_MARKER_CROSS = 5,
396 AF_MARKER_PLUS = 6,
397 AF_MARKER_STAR = 7
398 } af_marker_type;
399 #endif
400
401 #ifdef __cplusplus
402 namespace af
403 {
404 typedef af_dtype dtype;
405 typedef af_source source;
406 typedef af_interp_type interpType;
407 typedef af_border_type borderType;
408 typedef af_connectivity connectivity;
409 typedef af_match_type matchType;
410 typedef af_cspace_t CSpace;
411 typedef af_someenum_t SomeEnum; // Purpose of Addition: How to add Function example
412 typedef af_mat_prop trans;
413 typedef af_conv_mode convMode;
414 typedef af_conv_domain convDomain;
415 typedef af_mat_prop matProp;
416 typedef af_colormap ColorMap;
417 typedef af_norm_type normType;
418 #if AF_API_VERSION >= 31
419 typedef af_ycc_std YCCStd;
420 #endif
421 #if AF_API_VERSION >= 31
422 typedef af_image_format imageFormat;
423 #endif
424 #if AF_API_VERSION >= 32
425 typedef af_backend Backend;
426 #endif
427 #if AF_API_VERSION >= 32
428 typedef af_marker_type markerType;
429 #endif
430 }
431
432 #endif
AF_ERR_NO_MEM
The system or device ran out of memory.
Definition: defines.h:78
af::source
af_source source
Definition: defines.h:405
af_ycc_std
af_ycc_std
Definition: defines.h:292
AF_MAT_SYM
Matrix is symmetric.
Definition: defines.h:316
AF_NORM_MATRIX_2
returns the max singular value). Currently NOT SUPPORTED
Definition: defines.h:330
AF_SSD
Match based on Sum of Squared Differences (SSD)
Definition: defines.h:283
af::SomeEnum
af_someenum_t SomeEnum
Definition: defines.h:411
af_backend
af_backend
Definition: defines.h:373
af::ColorMap
af_colormap ColorMap
Definition: defines.h:416
AF_INTERP_CUBIC
Cubic Interpolation.
Definition: defines.h:232
AF_MAT_ORTHOG
Matrix is orthogonal.
Definition: defines.h:318
AF_INTERP_LINEAR
Linear Interpolation.
Definition: defines.h:230
af
Definition: algorithm.h:14
AF_ID
Definition: defines.h:385
afDevice
Device pointer.
Definition: defines.h:219
AF_FIF_RAW
FreeImage Enum for RAW Camera Image File.
Definition: defines.h:360
AF_FIF_JNG
FreeImage Enum for JPEG Network Graphics File.
Definition: defines.h:351
AF_BACKEND_CPU
CPU a.k.a sequential algorithms.
Definition: defines.h:375
AF_SUCCESS
The function returned successfully.
Definition: defines.h:71
af_norm_type
af_norm_type
Definition: defines.h:323
af_border_type
af_border_type
Definition: defines.h:236
AF_YCC_709
ITU-R BT.709 standard.
Definition: defines.h:294
AF_ERR_DIFF_TYPE
The type of the input arrays are not compatible.
Definition: defines.h:115
AF_CONV_EXPAND
Output of the convolution is signal_len + filter_len - 1.
Definition: defines.h:270
AF_FIF_BMP
FreeImage Enum for Bitmap File.
Definition: defines.h:348
AF_COLORMAP_BLUE
Blue hue map.
Definition: defines.h:343
AF_MAT_UPPER
Matrix is upper triangular.
Definition: defines.h:313
AF_YCbCr
3-channel YCbCr
Definition: defines.h:304
AF_MAT_DIAG_UNIT
Matrix diagonal contains unitary values.
Definition: defines.h:315
AF_CONV_DEFAULT
Output of the convolution is the same size as input.
Definition: defines.h:265
AF_COLORMAP_MOOD
Mood map.
Definition: defines.h:341
s32
32-bit signed integral values
Definition: defines.h:205
AF_ERR_BATCH
Function does not support GFOR / batch mode.
Definition: defines.h:120
af::YCCStd
af_ycc_std YCCStd
Definition: defines.h:419
AF_MAT_POSDEF
Matrix is positive definite.
Definition: defines.h:317
AF_ERR_NOT_SUPPORTED
The option is not supported.
Definition: defines.h:135
AF_FIF_ICO
FreeImage Enum for Windows Icon File.
Definition: defines.h:349
AF_BACKEND_DEFAULT
Default backend order: OpenCL -> CUDA -> CPU.
Definition: defines.h:374
AF_BACKEND_CUDA
CUDA Compute Backend.
Definition: defines.h:376
AF_ZSAD
Match based on Zero mean SAD.
Definition: defines.h:281
s64
64-bit signed integral values
Definition: defines.h:208
s16
16-bit signed integral values
Definition: defines.h:211
AF_ZSSD
Match based on Zero mean SSD.
Definition: defines.h:284
AF_GRAY
Grayscale.
Definition: defines.h:300
AF_ZNCC
Match based on Zero mean NCC.
Definition: defines.h:287
u16
16-bit unsigned integral values
Definition: defines.h:214
af::Backend
af_backend Backend
Definition: defines.h:425
AF_MAT_NONE
Default.
Definition: defines.h:309
af_interp_type
af_interp_type
Definition: defines.h:228
AF_LSSD
Match based on Locally scaled SSD.
Definition: defines.h:285
AF_FIF_JPEG
FreeImage Enum for JPEG File.
Definition: defines.h:350
AF_MAT_CTRANS
Data needs to be conjugate tansposed.
Definition: defines.h:311
f64
64-bit complex floating point values
Definition: defines.h:202
AF_MARKER_NONE
Definition: defines.h:390
AF_MARKER_POINT
Definition: defines.h:391
AF_ERR_LOAD_SYM
There was an error when loading the symbols.
Definition: defines.h:175
AF_NCC
Match based on Normalized Cross Correlation (NCC)
Definition: defines.h:286
AF_NORM_VECTOR_P
treats the input as a vector and returns the p-norm
Definition: defines.h:327
af::imageFormat
af_image_format imageFormat
Definition: defines.h:422
af_homography_type
af_homography_type
Definition: defines.h:365
af_conv_domain
af_conv_domain
Definition: defines.h:273
AF_FIF_PSD
FreeImage Enum for Adobe Photoshop File.
Definition: defines.h:356
af_colormap
af_colormap
Definition: defines.h:336
AF_HOMOGRAPHY_LMEDS
Computes homography using Least Median of Squares.
Definition: defines.h:367
AF_MAT_CONJ
Data needs to be conjugate.
Definition: defines.h:312
AF_NORM_MATRIX_INF
return the max of row sums
Definition: defines.h:329
AF_FIF_PPM
FreeImage Enum for Portable Pixelmap (ASCII) File.
Definition: defines.h:353
AF_ERR_RUNTIME
There was an error with the runtime environment.
Definition: defines.h:88
AF_PAD_SYM
Out of bound values are symmetric over the edge.
Definition: defines.h:245
AF_MARKER_SQUARE
Definition: defines.h:393
AF_COLORMAP_SPECTRUM
Spectrum map.
Definition: defines.h:338
AF_HSV
3-channel HSV
Definition: defines.h:302
af_connectivity
af_connectivity
Definition: defines.h:248
AF_HOMOGRAPHY_RANSAC
Computes homography using RANSAC.
Definition: defines.h:366
AF_NORM_MATRIX_L_PQ
returns Lpq-norm
Definition: defines.h:331
AF_FIF_JP2
FreeImage Enum for JPEG-2000 File.
Definition: defines.h:359
af_err
af_err
Definition: defines.h:67
AF_LSAD
Match based on Locally scaled SAD.
Definition: defines.h:282
AF_ERR_TYPE
The type is not suppported by this function.
Definition: defines.h:110
af_source
af_source
Definition: defines.h:218
AF_CONNECTIVITY_4
Connectivity includes neighbors, North, East, South and West of current pixel.
Definition: defines.h:252
u64
64-bit unsigned integral values
Definition: defines.h:209
af_someenum_t
af_someenum_t
Definition: defines.h:384
af_conv_mode
af_conv_mode
Definition: defines.h:260
AF_YCC_601
ITU-R BT.601 (formerly CCIR 601) standard.
Definition: defines.h:293
AF_PAD_ZERO
Out of bound values are 0.
Definition: defines.h:240
AF_INTERP_BILINEAR
Bilinear Interpolation.
Definition: defines.h:231
AF_ERR_NO_DBL
This device does not support double.
Definition: defines.h:154
c64
64-bit complex floating point values
Definition: defines.h:203
dim_t
long long dim_t
Definition: defines.h:50
AF_ERR_NO_GFX
This build of ArrayFire was not built with graphics or this device does not support graphics...
Definition: defines.h:160
AF_ERR_LOAD_LIB
There was an error when loading the libraries.
Definition: defines.h:168
AF_BACKEND_OPENCL
OpenCL Compute Backend.
Definition: defines.h:377
AF_ERR_NOT_CONFIGURED
This build of ArrayFire does not support this feature.
Definition: defines.h:140
AF_ERR_ARR_BKND_MISMATCH
There was a mismatch between the input array and the active backend.
Definition: defines.h:182
af_marker_type
af_marker_type
Definition: defines.h:389
AF_FIF_TIFF
FreeImage Enum for Tagged Image File Format File.
Definition: defines.h:355
AF_CONV_AUTO
ArrayFire automatically picks the right convolution algorithm.
Definition: defines.h:274
c32
32-bit complex floating point values
Definition: defines.h:201
af::matProp
af_mat_prop matProp
Definition: defines.h:415
AF_MARKER_STAR
Definition: defines.h:397
af::normType
af_norm_type normType
Definition: defines.h:417
AF_NORM_VECTOR_INF
treats the input as a vector and returns the max of absolute values
Definition: defines.h:325
AF_MAT_BLOCK_DIAG
Matrix is block diagonal.
Definition: defines.h:320
AF_ERR_DRIVER
There was an error in the device driver.
Definition: defines.h:83
AF_CONNECTIVITY_8
Connectivity includes 4-connectivity neigbors and also those on Northeast, Northwest, Southeast and Southwest.
Definition: defines.h:257
AF_ERR_NONFREE
This build of ArrayFire is not compiled with "nonfree" algorithms.
Definition: defines.h:146
af::convDomain
af_conv_domain convDomain
Definition: defines.h:414
AF_NORM_EUCLID
The default. Same as AF_NORM_VECTOR_2.
Definition: defines.h:333
u8
8-bit unsigned integral values
Definition: defines.h:207
af::borderType
af_border_type borderType
Definition: defines.h:407
AF_FIF_EXR
FreeImage Enum for ILM OpenEXR File.
Definition: defines.h:358
AF_CONV_SPATIAL
Perform convolution in spatial domain.
Definition: defines.h:275
AF_CONV_FREQ
Perform convolution in frequency domain.
Definition: defines.h:276
AF_SHD
Match based on Sum of Hamming Distances (SHD)
Definition: defines.h:288
AF_SAD
Match based on Sum of Absolute Differences (SAD)
Definition: defines.h:280
AF_MAT_TRANS
Data needs to be transposed.
Definition: defines.h:310
AF_NORM_MATRIX_1
return the max of column sums
Definition: defines.h:328
af::trans
af_mat_prop trans
Definition: defines.h:412
AF_ERR_ARG
One of the function arguments is incorrect.
Definition: defines.h:100
AF_INTERP_NEAREST
Nearest Interpolation.
Definition: defines.h:229
uintl
unsigned long long uintl
Definition: defines.h:60
AF_RGB
3-channel RGB
Definition: defines.h:301
af_mat_prop
af_mat_prop
Definition: defines.h:308
AF_ERR_INVALID_ARRAY
The input array is not a valid af_array object.
Definition: defines.h:95
u32
32-bit unsigned integral values
Definition: defines.h:206
AF_FIF_HDR
FreeImage Enum for High Dynamic Range File.
Definition: defines.h:357
af_cspace_t
af_cspace_t
Definition: defines.h:299
AF_COLORMAP_DEFAULT
Default grayscale map.
Definition: defines.h:337
AF_MAT_LOWER
Matrix is lower triangular.
Definition: defines.h:314
AF_FIF_PNG
FreeImage Enum for Portable Network Graphics File.
Definition: defines.h:352
AF_FIF_PPMRAW
FreeImage Enum for Portable Pixelmap (Binary) File.
Definition: defines.h:354
af_array
void * af_array
Definition: defines.h:226
af_image_format
af_image_format
Definition: defines.h:347
AF_MARKER_PLUS
Definition: defines.h:396
af::matchType
af_match_type matchType
Definition: defines.h:409
AF_MAT_TRI_DIAG
Matrix is tri diagonal.
Definition: defines.h:319
af::CSpace
af_cspace_t CSpace
Definition: defines.h:410
f32
32-bit floating point values
Definition: defines.h:200
AF_NORM_VECTOR_2
treats the input as a vector and returns euclidean norm
Definition: defines.h:326
AF_COLORMAP_HEAT
Heat map.
Definition: defines.h:342
AF_ERR_DEVICE
Input does not belong to the current device.
Definition: defines.h:127
AF_MARKER_CIRCLE
Definition: defines.h:392
AF_NORM_VECTOR_1
treats the input as a vector and returns the sum of absolute values
Definition: defines.h:324
version.h
b8
8-bit boolean values
Definition: defines.h:204
AF_INTERP_LOWER
Floor Indexed.
Definition: defines.h:233
afHost
Host pointer.
Definition: defines.h:220
af::markerType
af_marker_type markerType
Definition: defines.h:428
af_dtype
af_dtype
Definition: defines.h:199
af::interpType
af_interp_type interpType
Definition: defines.h:406
af_match_type
af_match_type
Definition: defines.h:279
AF_COLORMAP_RED
Red hue map.
Definition: defines.h:340
AF_ERR_INTERNAL
There was an internal error either in ArrayFire or in a project upstream.
Definition: defines.h:191
AF_MARKER_CROSS
Definition: defines.h:395
AF_MARKER_TRIANGLE
Definition: defines.h:394
af::convMode
af_conv_mode convMode
Definition: defines.h:413
AF_ERR_UNKNOWN
Unknown Error.
Definition: defines.h:196
af::dtype
af_dtype dtype
Definition: defines.h:404
intl
long long intl
Definition: defines.h:59
AF_COLORMAP_COLORS
Colors.
Definition: defines.h:339
AF_ERR_SIZE
The size is incorrect.
Definition: defines.h:105
af::connectivity
af_connectivity connectivity
Definition: defines.h:408
AF_YCC_2020
ITU-R BT.2020 standard.
Definition: defines.h:295