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