My Project
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 #include <stdlib.h>
54 
55 typedef long long intl;
56 typedef unsigned long long uintl;
57 
58 #include <af/version.h>
59 #ifndef AF_API_VERSION
60 #define AF_API_VERSION AF_API_VERSION_CURRENT
61 #endif
62 
63 typedef enum {
68 
69  // 100-199 Errors in environment
70 
75 
80 
85 
86  // 200-299 Errors in input parameters
87 
92 
96  AF_ERR_ARG = 202,
97 
101  AF_ERR_SIZE = 203,
102 
106  AF_ERR_TYPE = 204,
107 
112 
117 
118 
119 #if AF_API_VERSION >= 33
120  AF_ERR_DEVICE = 208,
124 #endif
125 
126  // 300-399 Errors for missing software features
127 
132 
137 
138 #if AF_API_VERSION >= 32
139  AF_ERR_NONFREE = 303,
143 #endif
144 
145  // 400-499 Errors for missing hardware features
146 
151 
157 
158  // 500-599 Errors specific to heterogenous API
159 
160 #if AF_API_VERSION >= 32
161  AF_ERR_LOAD_LIB = 501,
165 #endif
166 
167 #if AF_API_VERSION >= 32
168  AF_ERR_LOAD_SYM = 502,
172 #endif
173 
174 #if AF_API_VERSION >= 32
179 #endif
180 
181  // 900-999 Errors from upstream libraries and runtimes
182 
188 
193 } af_err;
194 
195 typedef enum {
196  f32,
197  c32,
198  f64,
199  c64,
200  b8 ,
201  s32,
202  u32,
203  u8 ,
204  s64,
205  u64,
206 #if AF_API_VERSION >= 32
207  s16,
208 #endif
209 #if AF_API_VERSION >= 32
210  u16,
211 #endif
212 } af_dtype;
213 
214 typedef enum {
217 } af_source;
218 
219 #define AF_MAX_DIMS 4
220 
221 // A handle for an internal array object
222 typedef void * af_array;
223 
224 typedef enum {
231 
232 typedef enum {
237 
243 
244 typedef enum {
249 
255 
256 typedef enum {
257 
262 
267 } af_conv_mode;
268 
269 typedef enum {
274 
275 typedef enum {
276  AF_SAD = 0,
285 } af_match_type;
286 
287 #if AF_API_VERSION >= 31
288 typedef enum {
289  AF_YCC_601 = 601,
290  AF_YCC_709 = 709,
291  AF_YCC_2020 = 2020
292 } af_ycc_std;
293 #endif
294 
295 typedef enum {
296  AF_GRAY = 0,
299 #if AF_API_VERSION >= 31
301 #endif
302 } af_cspace_t;
303 
304 typedef enum {
312  AF_MAT_SYM = 512,
313  AF_MAT_POSDEF = 1024,
314  AF_MAT_ORTHOG = 2048,
317 } af_mat_prop;
318 
319 typedef enum {
328 
330 } af_norm_type;
331 
332 typedef enum {
340 } af_colormap;
341 
342 #if AF_API_VERSION >= 31
343 typedef enum {
348  AF_FIF_PNG = 13,
349  AF_FIF_PPM = 14,
351  AF_FIF_TIFF = 18,
352  AF_FIF_PSD = 20,
353  AF_FIF_HDR = 26,
354  AF_FIF_EXR = 29,
355  AF_FIF_JP2 = 31,
358 #endif
359 
360 #if AF_API_VERSION >= 32
361 typedef enum {
365 #endif
366 
367 #if AF_API_VERSION >= 32
368 // These enums should be 2^x
369 typedef enum {
374 } af_backend;
375 #endif
376 
377 // Below enum is purely added for example purposes
378 // it doesn't and shoudn't be used anywhere in the
379 // code. No Guarantee's provided if it is used.
380 typedef enum {
381  AF_ID = 0
382 } af_someenum_t;
383 
384 #if AF_API_VERSION >=32
385 typedef enum {
395 #endif
396 
397 #ifdef __cplusplus
398 namespace af
399 {
400  typedef af_dtype dtype;
401  typedef af_source source;
407  typedef af_someenum_t SomeEnum; // Purpose of Addition: How to add Function example
414 #if AF_API_VERSION >= 31
416 #endif
417 #if AF_API_VERSION >= 31
419 #endif
420 #if AF_API_VERSION >= 32
422 #endif
423 #if AF_API_VERSION >= 32
425 #endif
426 }
427 
428 #endif
af::matchType
af_match_type matchType
Definition: defines.h:405
AF_CONV_FREQ
@ AF_CONV_FREQ
Perform convolution in frequency domain.
Definition: defines.h:272
af::CSpace
af_cspace_t CSpace
Definition: defines.h:406
af_marker_type
af_marker_type
Definition: defines.h:385
AF_MAT_TRANS
@ AF_MAT_TRANS
Data needs to be transposed.
Definition: defines.h:306
AF_FIF_JPEG
@ AF_FIF_JPEG
FreeImage Enum for JPEG File.
Definition: defines.h:346
version.h
af_source
af_source
Definition: defines.h:214
AF_NCC
@ AF_NCC
Match based on Normalized Cross Correlation (NCC)
Definition: defines.h:282
AF_MARKER_POINT
@ AF_MARKER_POINT
Definition: defines.h:387
AF_INTERP_NEAREST
@ AF_INTERP_NEAREST
Nearest Interpolation.
Definition: defines.h:225
af_conv_mode
af_conv_mode
Definition: defines.h:256
AF_ERR_NOT_CONFIGURED
@ AF_ERR_NOT_CONFIGURED
This build of ArrayFire does not support this feature.
Definition: defines.h:136
AF_FIF_PSD
@ AF_FIF_PSD
FreeImage Enum for Adobe Photoshop File.
Definition: defines.h:352
AF_FIF_HDR
@ AF_FIF_HDR
FreeImage Enum for High Dynamic Range File.
Definition: defines.h:353
AF_NORM_VECTOR_INF
@ AF_NORM_VECTOR_INF
treats the input as a vector and returns the max of absolute values
Definition: defines.h:321
AF_PAD_SYM
@ AF_PAD_SYM
Out of bound values are symmetric over the edge.
Definition: defines.h:241
AF_FIF_PNG
@ AF_FIF_PNG
FreeImage Enum for Portable Network Graphics File.
Definition: defines.h:348
AF_COLORMAP_DEFAULT
@ AF_COLORMAP_DEFAULT
Default grayscale map.
Definition: defines.h:333
dim_t
long long dim_t
Definition: defines.h:50
AF_MAT_LOWER
@ AF_MAT_LOWER
Matrix is lower triangular.
Definition: defines.h:310
AF_CONNECTIVITY_8
@ AF_CONNECTIVITY_8
Connectivity includes 4-connectivity neigbors and also those on Northeast, Northwest,...
Definition: defines.h:253
AF_COLORMAP_SPECTRUM
@ AF_COLORMAP_SPECTRUM
Spectrum map.
Definition: defines.h:334
AF_SSD
@ AF_SSD
Match based on Sum of Squared Differences (SSD)
Definition: defines.h:279
AF_BACKEND_DEFAULT
@ AF_BACKEND_DEFAULT
Default backend order: OpenCL -> CUDA -> CPU.
Definition: defines.h:370
AF_MARKER_CIRCLE
@ AF_MARKER_CIRCLE
Definition: defines.h:388
af::Backend
af_backend Backend
Definition: defines.h:421
AF_COLORMAP_HEAT
@ AF_COLORMAP_HEAT
Heat map.
Definition: defines.h:338
af::convMode
af_conv_mode convMode
Definition: defines.h:409
AF_ERR_DEVICE
@ AF_ERR_DEVICE
Input does not belong to the current device.
Definition: defines.h:123
AF_ZSSD
@ AF_ZSSD
Match based on Zero mean SSD.
Definition: defines.h:280
AF_ERR_TYPE
@ AF_ERR_TYPE
The type is not suppported by this function.
Definition: defines.h:106
AF_FIF_RAW
@ AF_FIF_RAW
FreeImage Enum for RAW Camera Image File.
Definition: defines.h:356
AF_CONV_SPATIAL
@ AF_CONV_SPATIAL
Perform convolution in spatial domain.
Definition: defines.h:271
af::dtype
af_dtype dtype
Definition: defines.h:400
u64
@ u64
64-bit unsigned integral values
Definition: defines.h:205
AF_LSSD
@ AF_LSSD
Match based on Locally scaled SSD.
Definition: defines.h:281
AF_SAD
@ AF_SAD
Match based on Sum of Absolute Differences (SAD)
Definition: defines.h:276
afHost
@ afHost
Host pointer.
Definition: defines.h:216
af
Definition: algorithm.h:14
AF_NORM_MATRIX_1
@ AF_NORM_MATRIX_1
return the max of column sums
Definition: defines.h:324
af_mat_prop
af_mat_prop
Definition: defines.h:304
AF_ERR_UNKNOWN
@ AF_ERR_UNKNOWN
Unknown Error.
Definition: defines.h:192
af::connectivity
af_connectivity connectivity
Definition: defines.h:404
AF_ERR_ARG
@ AF_ERR_ARG
One of the function arguments is incorrect.
Definition: defines.h:96
AF_ERR_NO_GFX
@ AF_ERR_NO_GFX
This build of ArrayFire was not built with graphics or this device does not support graphics.
Definition: defines.h:156
af_cspace_t
af_cspace_t
Definition: defines.h:295
AF_ERR_LOAD_LIB
@ AF_ERR_LOAD_LIB
There was an error when loading the libraries.
Definition: defines.h:164
af::source
af_source source
Definition: defines.h:401
AF_BACKEND_OPENCL
@ AF_BACKEND_OPENCL
OpenCL Compute Backend.
Definition: defines.h:373
AF_FIF_BMP
@ AF_FIF_BMP
FreeImage Enum for Bitmap File.
Definition: defines.h:344
af::ColorMap
af_colormap ColorMap
Definition: defines.h:412
AF_MARKER_STAR
@ AF_MARKER_STAR
Definition: defines.h:393
AF_YCbCr
@ AF_YCbCr
3-channel YCbCr
Definition: defines.h:300
AF_FIF_TIFF
@ AF_FIF_TIFF
FreeImage Enum for Tagged Image File Format File.
Definition: defines.h:351
AF_CONV_AUTO
@ AF_CONV_AUTO
ArrayFire automatically picks the right convolution algorithm.
Definition: defines.h:270
AF_FIF_PPMRAW
@ AF_FIF_PPMRAW
FreeImage Enum for Portable Pixelmap (Binary) File.
Definition: defines.h:350
AF_CONV_DEFAULT
@ AF_CONV_DEFAULT
Output of the convolution is the same size as input.
Definition: defines.h:261
uintl
unsigned long long uintl
Definition: defines.h:56
AF_ERR_DRIVER
@ AF_ERR_DRIVER
There was an error in the device driver.
Definition: defines.h:79
AF_NORM_MATRIX_2
@ AF_NORM_MATRIX_2
returns the max singular value). Currently NOT SUPPORTED
Definition: defines.h:326
AF_HOMOGRAPHY_RANSAC
@ AF_HOMOGRAPHY_RANSAC
Computes homography using RANSAC.
Definition: defines.h:362
AF_ERR_NONFREE
@ AF_ERR_NONFREE
This build of ArrayFire is not compiled with "nonfree" algorithms.
Definition: defines.h:142
AF_MAT_TRI_DIAG
@ AF_MAT_TRI_DIAG
Matrix is tri diagonal.
Definition: defines.h:315
AF_NORM_MATRIX_L_PQ
@ AF_NORM_MATRIX_L_PQ
returns Lpq-norm
Definition: defines.h:327
AF_NORM_EUCLID
@ AF_NORM_EUCLID
The default. Same as AF_NORM_VECTOR_2.
Definition: defines.h:329
AF_INTERP_CUBIC
@ AF_INTERP_CUBIC
Cubic Interpolation.
Definition: defines.h:228
AF_FIF_JP2
@ AF_FIF_JP2
FreeImage Enum for JPEG-2000 File.
Definition: defines.h:355
u8
@ u8
8-bit unsigned integral values
Definition: defines.h:203
af_array
void * af_array
Definition: defines.h:222
AF_MAT_ORTHOG
@ AF_MAT_ORTHOG
Matrix is orthogonal.
Definition: defines.h:314
af_match_type
af_match_type
Definition: defines.h:275
af_image_format
af_image_format
Definition: defines.h:343
afDevice
@ afDevice
Device pointer.
Definition: defines.h:215
AF_NORM_VECTOR_1
@ AF_NORM_VECTOR_1
treats the input as a vector and returns the sum of absolute values
Definition: defines.h:320
AF_FIF_EXR
@ AF_FIF_EXR
FreeImage Enum for ILM OpenEXR File.
Definition: defines.h:354
intl
long long intl
Definition: defines.h:55
b8
@ b8
8-bit boolean values
Definition: defines.h:200
AF_FIF_JNG
@ AF_FIF_JNG
FreeImage Enum for JPEG Network Graphics File.
Definition: defines.h:347
AF_ERR_INTERNAL
@ AF_ERR_INTERNAL
There was an internal error either in ArrayFire or in a project upstream.
Definition: defines.h:187
AF_SHD
@ AF_SHD
Match based on Sum of Hamming Distances (SHD)
Definition: defines.h:284
AF_YCC_709
@ AF_YCC_709
ITU-R BT.709 standard.
Definition: defines.h:290
af::borderType
af_border_type borderType
Definition: defines.h:403
AF_COLORMAP_COLORS
@ AF_COLORMAP_COLORS
Colors.
Definition: defines.h:335
AF_CONV_EXPAND
@ AF_CONV_EXPAND
Output of the convolution is signal_len + filter_len - 1.
Definition: defines.h:266
AF_INTERP_BILINEAR
@ AF_INTERP_BILINEAR
Bilinear Interpolation.
Definition: defines.h:227
AF_ERR_SIZE
@ AF_ERR_SIZE
The size is incorrect.
Definition: defines.h:101
af::normType
af_norm_type normType
Definition: defines.h:413
af_dtype
af_dtype
Definition: defines.h:195
f64
@ f64
64-bit complex floating point values
Definition: defines.h:198
af::convDomain
af_conv_domain convDomain
Definition: defines.h:410
af_backend
af_backend
Definition: defines.h:369
AF_YCC_2020
@ AF_YCC_2020
ITU-R BT.2020 standard.
Definition: defines.h:291
AF_MAT_BLOCK_DIAG
@ AF_MAT_BLOCK_DIAG
Matrix is block diagonal.
Definition: defines.h:316
AF_ERR_NO_MEM
@ AF_ERR_NO_MEM
The system or device ran out of memory.
Definition: defines.h:74
af::YCCStd
af_ycc_std YCCStd
Definition: defines.h:415
s32
@ s32
32-bit signed integral values
Definition: defines.h:201
AF_NORM_MATRIX_INF
@ AF_NORM_MATRIX_INF
return the max of row sums
Definition: defines.h:325
AF_NORM_VECTOR_2
@ AF_NORM_VECTOR_2
treats the input as a vector and returns euclidean norm
Definition: defines.h:322
AF_ERR_NOT_SUPPORTED
@ AF_ERR_NOT_SUPPORTED
The option is not supported.
Definition: defines.h:131
AF_ID
@ AF_ID
Definition: defines.h:381
af_ycc_std
af_ycc_std
Definition: defines.h:288
af_norm_type
af_norm_type
Definition: defines.h:319
af::trans
af_mat_prop trans
Definition: defines.h:408
AF_INTERP_LOWER
@ AF_INTERP_LOWER
Floor Indexed.
Definition: defines.h:229
s16
@ s16
16-bit signed integral values
Definition: defines.h:207
AF_SUCCESS
@ AF_SUCCESS
The function returned successfully.
Definition: defines.h:67
AF_LSAD
@ AF_LSAD
Match based on Locally scaled SAD.
Definition: defines.h:278
AF_COLORMAP_RED
@ AF_COLORMAP_RED
Red hue map.
Definition: defines.h:336
AF_ZNCC
@ AF_ZNCC
Match based on Zero mean NCC.
Definition: defines.h:283
u16
@ u16
16-bit unsigned integral values
Definition: defines.h:210
AF_MARKER_CROSS
@ AF_MARKER_CROSS
Definition: defines.h:391
AF_MARKER_TRIANGLE
@ AF_MARKER_TRIANGLE
Definition: defines.h:390
af::imageFormat
af_image_format imageFormat
Definition: defines.h:418
AF_RGB
@ AF_RGB
3-channel RGB
Definition: defines.h:297
AF_NORM_VECTOR_P
@ AF_NORM_VECTOR_P
treats the input as a vector and returns the p-norm
Definition: defines.h:323
AF_MARKER_NONE
@ AF_MARKER_NONE
Definition: defines.h:386
AF_COLORMAP_BLUE
@ AF_COLORMAP_BLUE
Blue hue map.
Definition: defines.h:339
AF_ERR_NO_DBL
@ AF_ERR_NO_DBL
This device does not support double.
Definition: defines.h:150
AF_ERR_LOAD_SYM
@ AF_ERR_LOAD_SYM
There was an error when loading the symbols.
Definition: defines.h:171
u32
@ u32
32-bit unsigned integral values
Definition: defines.h:202
AF_HOMOGRAPHY_LMEDS
@ AF_HOMOGRAPHY_LMEDS
Computes homography using Least Median of Squares.
Definition: defines.h:363
af_border_type
af_border_type
Definition: defines.h:232
AF_FIF_PPM
@ AF_FIF_PPM
FreeImage Enum for Portable Pixelmap (ASCII) File.
Definition: defines.h:349
AF_COLORMAP_MOOD
@ AF_COLORMAP_MOOD
Mood map.
Definition: defines.h:337
AF_MAT_SYM
@ AF_MAT_SYM
Matrix is symmetric.
Definition: defines.h:312
AF_ERR_RUNTIME
@ AF_ERR_RUNTIME
There was an error with the runtime environment.
Definition: defines.h:84
AF_MAT_POSDEF
@ AF_MAT_POSDEF
Matrix is positive definite.
Definition: defines.h:313
AF_MARKER_SQUARE
@ AF_MARKER_SQUARE
Definition: defines.h:389
AF_BACKEND_CUDA
@ AF_BACKEND_CUDA
CUDA Compute Backend.
Definition: defines.h:372
AF_ZSAD
@ AF_ZSAD
Match based on Zero mean SAD.
Definition: defines.h:277
af::markerType
af_marker_type markerType
Definition: defines.h:424
af::interpType
af_interp_type interpType
Definition: defines.h:402
AF_GRAY
@ AF_GRAY
Grayscale.
Definition: defines.h:296
AF_CONNECTIVITY_4
@ AF_CONNECTIVITY_4
Connectivity includes neighbors, North, East, South and West of current pixel.
Definition: defines.h:248
AF_ERR_DIFF_TYPE
@ AF_ERR_DIFF_TYPE
The type of the input arrays are not compatible.
Definition: defines.h:111
AF_MAT_NONE
@ AF_MAT_NONE
Default.
Definition: defines.h:305
af_conv_domain
af_conv_domain
Definition: defines.h:269
AF_MAT_CTRANS
@ AF_MAT_CTRANS
Data needs to be conjugate tansposed.
Definition: defines.h:307
AF_YCC_601
@ AF_YCC_601
ITU-R BT.601 (formerly CCIR 601) standard.
Definition: defines.h:289
af::matProp
af_mat_prop matProp
Definition: defines.h:411
AF_MAT_UPPER
@ AF_MAT_UPPER
Matrix is upper triangular.
Definition: defines.h:309
AF_PAD_ZERO
@ AF_PAD_ZERO
Out of bound values are 0.
Definition: defines.h:236
af_interp_type
af_interp_type
Definition: defines.h:224
c64
@ c64
64-bit complex floating point values
Definition: defines.h:199
c32
@ c32
32-bit complex floating point values
Definition: defines.h:197
AF_MAT_DIAG_UNIT
@ AF_MAT_DIAG_UNIT
Matrix diagonal contains unitary values.
Definition: defines.h:311
AF_ERR_ARR_BKND_MISMATCH
@ AF_ERR_ARR_BKND_MISMATCH
There was a mismatch between the input array and the active backend.
Definition: defines.h:178
AF_MAT_CONJ
@ AF_MAT_CONJ
Data needs to be conjugate.
Definition: defines.h:308
af_connectivity
af_connectivity
Definition: defines.h:244
af::SomeEnum
af_someenum_t SomeEnum
Definition: defines.h:407
AF_ERR_INVALID_ARRAY
@ AF_ERR_INVALID_ARRAY
The input array is not a valid af_array object.
Definition: defines.h:91
af_homography_type
af_homography_type
Definition: defines.h:361
af_err
af_err
Definition: defines.h:63
AF_HSV
@ AF_HSV
3-channel HSV
Definition: defines.h:298
AF_ERR_BATCH
@ AF_ERR_BATCH
Function does not support GFOR / batch mode.
Definition: defines.h:116
AF_MARKER_PLUS
@ AF_MARKER_PLUS
Definition: defines.h:392
AF_INTERP_LINEAR
@ AF_INTERP_LINEAR
Linear Interpolation.
Definition: defines.h:226
af_colormap
af_colormap
Definition: defines.h:332
AF_FIF_ICO
@ AF_FIF_ICO
FreeImage Enum for Windows Icon File.
Definition: defines.h:345
af_someenum_t
af_someenum_t
Definition: defines.h:380
f32
@ f32
32-bit floating point values
Definition: defines.h:196
AF_BACKEND_CPU
@ AF_BACKEND_CPU
CPU a.k.a sequential algorithms.
Definition: defines.h:371
s64
@ s64
64-bit signed integral values
Definition: defines.h:204