liba 0.1.15
An algorithm library based on C/C++
 
Loading...
Searching...
No Matches
algorithm library
Collaboration diagram for algorithm library:

Topics

 floating-point number
 
 AVL binary search tree
 
 basic buffer library
 
 complex number
 
 Cyclic Redundancy Check
 
 fuzzy operator
 
 hash function
 
 High Pass Filter
 
 linear algebra functions
 
 circular doubly linked list
 
 Low Pass Filter
 
 mathematical algorithm library
 
 membership function
 
 note frequency table
 
 proportional integral derivative controller
 
 fuzzy proportional integral derivative controller
 
 single neuron proportional integral derivative controller
 
 polynomial
 
 basic queue library
 
 red–black binary search tree
 
 regression
 
 singly linked list
 
 basic string library
 
 transfer function
 
 bell-shaped velocity trajectory
 
 cubic polynomial trajectory
 
 quintic polynomial trajectory
 
 hepta polynomial trajectory
 
 trapezoidal velocity trajectory
 
 Unicode Transformation Format
 
 basic vector library
 
 algorithm library version
 

Data Structures

union  a_cast
 

Macros

#define A_ORDER_LITTLE   1234
 byte order of little endian architecture
 
#define A_ORDER_BIG   4321
 byte order of big endian architecture
 
#define A_BYTE_ORDER   1234
 byte order of architecture
 
#define A_SIZE_POINTER   4
 size of void pointer
 
#define A_BUILD_ASSERT(x)
 assert a build-time dependency, as an expression
 
#define A_BUILD_BUG_ON(x)
 assert a build-time dependency, as an expression
 
#define a_cast_r(T, x)
 
#define a_cast_d(T, x)
 
#define a_cast_s(T, x)
 
#define a_cast_c(T, x)
 
#define A_CAST_3(a, b, c)
 
#define A_CAST_2(a, b)
 
#define A_CAST_1(a)
 
#define A_NULL   NULL
 
#define a_void_c(x)
 static cast to a_void
 
#define a_void_(_, x)
 
#define a_void   void
 incomplete type or no parameter or no return value
 
#define A_TRUE   true
 
#define A_FALSE   false
 
#define A_BOOL   bool
 
#define a_bool_c(x)
 static cast to a_bool
 
#define A_INT   int
 
#define A_INT_MAX   INT_MAX
 
#define A_INT_MIN   INT_MIN
 
#define a_int_c(x)
 static cast to a_int
 
#define a_int_(_, x)
 
#define A_UINT   unsigned int
 
#define A_UINT_MAX   UINT_MAX
 
#define a_uint_c(x)
 static cast to a_uint
 
#define a_uint_(_, x)
 
#define A_SHRT   short
 
#define A_SHRT_MAX   SHRT_MAX
 
#define A_SHRT_MIN   SHRT_MIN
 
#define a_shrt_c(x)
 static cast to a_shrt
 
#define a_shrt_(_, x)
 
#define A_USHRT   unsigned short
 
#define A_USHRT_MAX   USHRT_MAX
 
#define a_ushrt_c(x)
 static cast to a_ushrt
 
#define a_ushrt_(_, x)
 
#define A_LONG   long
 
#define A_LONG_MIN   LONG_MIN
 
#define A_LONG_MAX   LONG_MAX
 
#define a_long_c(x)
 static cast to a_long
 
#define a_long_(_, x)
 
#define A_ULONG   unsigned long
 
#define A_ULONG_MAX   ULONG_MAX
 
#define a_ulong_c(x)
 static cast to a_ulong
 
#define a_ulong_(_, x)
 
#define A_BYTE   unsigned char
 
#define A_BYTE_MAX   UCHAR_MAX
 
#define a_byte_c(x)
 static cast to a_byte
 
#define a_byte_(_, x)
 
#define A_C8   char
 
#define A_C8_MAX   CHAR_MAX
 
#define A_C8_MIN   CHAR_MIN
 
#define a_c8_c(x)
 static cast to a_c8
 
#define a_c8_(_, x)
 
#define A_I8   signed char
 
#define A_I8_C(X)
 
#define A_I8_MAX   A_I8_C(0x7F)
 
#define A_I8_MIN   A_I8_C(~0x7F)
 
#define a_i8_c(x)
 static cast to a_i8
 
#define a_i8_(_, x)
 
#define A_U8   unsigned char
 
#define A_U8_C(X)
 
#define A_U8_MAX   A_U8_C(0xFF)
 
#define a_u8_c(x)
 static cast to a_u8
 
#define a_u8_(_, x)
 
#define A_PRI8
 
#define A_SCN8   "hh"
 
#define A_I16   short
 
#define A_I16_C(X)
 
#define A_I16_MAX   A_I16_C(0x7FFF)
 
#define A_I16_MIN   A_I16_C(~0x7FFF)
 
#define a_i16_c(x)
 static cast to a_i16
 
#define a_i16_(_, x)
 
#define A_U16   unsigned short
 
#define A_U16_C(X)
 
#define A_U16_MAX   A_U16_C(0xFFFF)
 
#define a_u16_c(x)
 static cast to a_u16
 
#define a_u16_(_, x)
 
#define A_PRI16
 
#define A_SCN16   "h"
 
#define A_I32   long
 
#define A_I32_C(X)
 
#define A_I32_MAX   A_I32_C(0x7FFFFFFF)
 
#define A_I32_MIN   A_I32_C(~0x7FFFFFFF)
 
#define a_i32_c(x)
 static cast to a_i32
 
#define a_i32_(_, x)
 
#define A_U32   unsigned long
 
#define A_U32_C(X)
 
#define A_U32_MAX   A_U32_C(0xFFFFFFFF)
 
#define a_u32_c(x)
 static cast to a_u32
 
#define a_u32_(_, x)
 
#define A_PRI32   "l"
 
#define A_SCN32   "l"
 
#define A_I64   long
 
#define A_I64_C(X)
 
#define A_I64_MAX   A_I64_C(0x7FFFFFFFFFFFFFFF)
 
#define A_I64_MIN   A_I64_C(~0x7FFFFFFFFFFFFFFF)
 
#define a_i64_c(x)
 static cast to a_i64
 
#define a_i64_(_, x)
 
#define A_U64   unsigned long
 
#define A_U64_C(X)
 
#define A_U64_MAX   A_U64_C(0xFFFFFFFFFFFFFFFF)
 
#define a_u64_c(x)
 static cast to a_u64
 
#define a_u64_(_, x)
 
#define A_PRI64   "l"
 
#define A_SCN64   "l"
 
#define A_IMAX   A_I64
 
#define A_IMAX_C(X)
 
#define A_IMAX_MAX   A_I64_MAX
 
#define A_IMAX_MIN   A_I64_MIN
 
#define a_imax_c(x)
 static cast to a_imax
 
#define a_imax_(_, x)
 
#define A_UMAX   A_U64
 
#define A_UMAX_C(X)
 
#define A_UMAX_MAX   A_U64_MAX
 
#define a_umax_c(x)
 static cast to a_umax
 
#define a_umax_(_, x)
 
#define A_PRIMAX   A_PRI64
 
#define A_SCNMAX   A_SCN64
 
#define A_IPTR   A_I32
 
#define A_IPTR_MAX   A_I32_MAX
 
#define A_IPTR_MIN   A_I32_MIN
 
#define a_iptr_c(x)
 static cast to a_iptr
 
#define a_iptr_(_, x)
 
#define A_UPTR   A_U32
 
#define A_UPTR_MAX   A_U32_MAX
 
#define a_uptr_c(x)
 static cast to a_uptr
 
#define a_uptr_(_, x)
 
#define A_PRIPTR   A_PRI32
 
#define A_SCNPTR   A_SCN32
 
#define A_DIFF   ptrdiff_t
 
#define A_DIFF_MAX   A_I32_MAX
 
#define A_DIFF_MIN   A_I32_MIN
 
#define a_diff_c(x)
 static cast to a_diff
 
#define a_diff_(_, x)
 
#define A_PRIt   "t"
 
#define A_SCNt   "t"
 
#define A_SIZE   size_t
 
#define A_SIZE_MAX   A_U32_MAX
 
#define a_size_c(x)
 static cast to a_size
 
#define a_size_(_, x)
 
#define A_PRIz   "z"
 
#define A_SCNz   "z"
 
#define A_F16_NNAN   A_U16_C(0xFE00)
 
#define A_F16_PNAN   A_U16_C(0x7E00)
 
#define A_F16_NINF   A_U16_C(0xFC00)
 
#define A_F16_PINF   A_U16_C(0x7C00)
 
#define A_F32   float
 
#define A_F32_C(X)
 
#define A_F32_F(F)
 
#define A_F32_DIG   FLT_DIG
 
#define A_F32_EPSILON   FLT_EPSILON
 
#define A_F32_MANT_DIG   FLT_MANT_DIG
 
#define A_F32_MAX   FLT_MAX
 
#define A_F32_MAX_10_EXP   FLT_MAX_10_EXP
 
#define A_F32_MAX_EXP   FLT_MAX_EXP
 
#define A_F32_MIN   FLT_MIN
 
#define A_F32_MIN_10_EXP   FLT_MIN_10_EXP
 
#define A_F32_MIN_EXP   FLT_MIN_EXP
 
#define A_F32_INF   a_cast_s(a_f32, A_F64_INF)
 
#define A_F32_NAN   (A_F32_C(0.0) * A_F32_INF)
 
#define A_F32_NNAN   A_U32_C(0xFFC00000)
 
#define A_F32_PNAN   A_U32_C(0x7FC00000)
 
#define A_F32_NINF   A_U32_C(0xFF800000)
 
#define A_F32_PINF   A_U32_C(0x7F800000)
 
#define a_f32_c(x)
 static cast to a_f32
 
#define a_f32_(_, x)
 
#define A_F64   double
 
#define A_F64_C(X)
 
#define A_F64_F(F)
 
#define A_F64_DIG   DBL_DIG
 
#define A_F64_EPSILON   DBL_EPSILON
 
#define A_F64_MANT_DIG   DBL_MANT_DIG
 
#define A_F64_MAX   DBL_MAX
 
#define A_F64_MAX_10_EXP   DBL_MAX_10_EXP
 
#define A_F64_MAX_EXP   DBL_MAX_EXP
 
#define A_F64_MIN   DBL_MIN
 
#define A_F64_MIN_10_EXP   DBL_MIN_10_EXP
 
#define A_F64_MIN_EXP   DBL_MIN_EXP
 
#define A_F64_INF   (DBL_MAX * DBL_MAX)
 
#define A_F64_NAN   (A_F64_C(0.0) * A_F64_INF)
 
#define A_F64_NNAN   A_U64_C(0xFFF8000000000000)
 
#define A_F64_PNAN   A_U64_C(0x7FF8000000000000)
 
#define A_F64_NINF   A_U64_C(0xFFF0000000000000)
 
#define A_F64_PINF   A_U64_C(0x7FF0000000000000)
 
#define a_f64_c(x)
 static cast to a_f64
 
#define a_f64_(_, x)
 
#define A_SQ(x)
 square of x, \( x^2 \)
 
#define A_ABS(x)
 absolute value of x, \( |x| \)
 
#define A_ABS_(f, g)
 absolute value of f-g, \( |f-g| \)
 
#define A_MIN(x, y)
 minimum value between x and y
 
#define A_MAX(x, y)
 maximum value between x and y
 
#define A_SGN(x)
 signum function, \( \texttt{sgn}(x)=\begin{cases}+1&x>0\\0&0\\-1&x<0\end{cases} \)
 
#define A_SGN_(f, g)
 signum function, \( \texttt{sgn}(f,g)=\begin{cases}+1&f>g\\0&f=g\\-1&f<g\end{cases} \)
 
#define A_SAT(x, min, max)
 saturation value of x, \( \texttt{sat}(x,min,max)=\begin{cases}min&min>x\\max&x>max\\x&else\end{cases} \)
 
#define A_LEN(a)
 number of elements in a visible array
 
#define a_offsetof(type, member)
 offset of a structure member
 
#define a_container_of(ptr, type, member)
 container of a structure member
 
#define a_size_down(a, n)
 round down size n to be a multiple of a
 
#define a_size_up(a, n)
 round up size n to be a multiple of a
 
#define a_align_down(a, p)
 round pointer p down to the closest a, aligned address <= p
 
#define a_align_up(a, p)
 round pointer p up to the closest a, aligned address >= p
 
#define a_forenum(I, i, n)
 iterate from 0 to n and not include n
 
#define A_FORENUM(I, i, n)
 
#define a_forenum_reverse(I, i, n)
 iterate from n to 0 and not include n
 
#define A_FORENUM_REVERSE(I, i, n)
 
#define a_foreach(T, S, it, ptr, num)
 iterate over an array
 
#define A_FOREACH(T, it, at, ptr, num)
 
#define a_forsafe(T, S, it, ptr, num)
 iterate over an array
 
#define A_FORSAFE(T, it, at, ptr, num)
 
#define a_foreach_reverse(T, S, it, ptr, num)
 iterate over an array in reverse
 
#define A_FOREACH_REVERSE(T, it, at, ptr, num)
 
#define a_forsafe_reverse(T, S, it, ptr, num)
 iterate over an array in reverse
 
#define A_FORSAFE_REVERSE(T, it, at, ptr, num)
 
#define a_iterate(T, S, it, ptr, end)
 iterate over an array
 
#define A_ITERATE(T, it, at, ptr, end)
 
#define a_iterate_reverse(T, S, it, ptr, end)
 iterate over an array in reverse
 
#define A_ITERATE_REVERSE(T, it, at, ptr, end)
 
#define A_ALLOC(alloc, addr, size)
 declare allocation function
 
#define a_new(T, ptr, num)
 
#define a_die(ptr)
 

Typedefs

typedef bool a_bool
 type, capable of holding one of the two values: 1 and 0
 
typedef int a_int
 signed integer type is guaranteed to be at least 16 bits
 
typedef unsigned int a_uint
 unsigned integer type is guaranteed to be at least 16 bits
 
typedef short a_shrt
 signed integer type is guaranteed to be at least 16 bits
 
typedef unsigned short a_ushrt
 unsigned integer type is guaranteed to be at least 16 bits
 
typedef long a_long
 signed integer type is guaranteed to be at least 32 bits
 
typedef unsigned long a_ulong
 unsigned integer type is guaranteed to be at least 32 bits
 
typedef unsigned char a_byte
 type for unsigned character representation
 
typedef char a_c8
 type for character representation
 
typedef signed char a_i8
 signed integer type with width of exactly 8 bits
 
typedef unsigned char a_u8
 unsigned integer type with width of exactly 8 bits
 
typedef short a_i16
 signed integer type with width of exactly 16 bits
 
typedef unsigned short a_u16
 unsigned integer type with width of exactly 16 bits
 
typedef long a_i32
 signed integer type with width of exactly 32 bits
 
typedef unsigned long a_u32
 unsigned integer type with width of exactly 32 bits
 
typedef long a_i64
 signed integer type with width of exactly 64 bits
 
typedef unsigned long a_u64
 unsigned integer type with width of exactly 64 bits
 
typedef long a_imax
 maximum-width signed integer type
 
typedef unsigned long a_umax
 maximum-width unsigned integer type
 
typedef long a_iptr
 signed integer type capable of holding a pointer to void
 
typedef unsigned long a_uptr
 unsigned integer type capable of holding a pointer to void
 
typedef ptrdiff_t a_diff
 signed integer type returned when subtracting two pointers
 
typedef size_t a_size
 unsigned integer type returned by the sizeof operator
 
typedef float a_f32
 single precision floating point type. Matches IEEE-754 binary32 format if supported.
 
typedef double a_f64
 double precision floating point type. Matches IEEE-754 binary64 format if supported.
 
typedef union a_cast a_cast
 

Enumerations

enum  { A_SUCCESS , A_FAILURE , A_INVALID }
 enumeration for return values More...
 

Functions

a_u8 a_u8_rev (a_u8 x)
 reverse the bits in an 8-bit unsigned integer
 
a_u16 a_u16_rev (a_u16 x)
 reverse the bits in a 16-bit unsigned integer
 
a_u16 a_u16_getl (void const *b)
 
a_u16 a_u16_getb (void const *b)
 
void a_u16_setl (void *b, a_u16 x)
 
void a_u16_setb (void *b, a_u16 x)
 
a_u32 a_u32_rev (a_u32 x)
 reverse the bits in a 32-bit unsigned integer
 
a_u32 a_u32_getl (void const *b)
 
a_u32 a_u32_getb (void const *b)
 
void a_u32_setl (void *b, a_u32 x)
 
void a_u32_setb (void *b, a_u32 x)
 
a_u64 a_u64_rev (a_u64 x)
 reverse the bits in a 64-bit unsigned integer
 
a_u64 a_u64_getl (void const *b)
 
a_u64 a_u64_getb (void const *b)
 
void a_u64_setl (void *b, a_u64 x)
 
void a_u64_setb (void *b, a_u64 x)
 
void * a_copy (void *__restrict dst, void const *__restrict src, a_size siz)
 copy one buffer to another
 
void * a_move (void *dst, void const *src, a_size siz)
 move one buffer to another
 
void * a_fill (void *ptr, a_size siz, int val)
 fill a buffer with a character
 
void * a_zero (void *ptr, a_size siz)
 fill a buffer with zero
 
void a_swap (void *lhs, void *rhs, a_size siz)
 swap two different memory blocks of the same size
 
void * a_alloc_ (void *addr, a_size size)
 default allocation function
 

Variables

void *(* a_alloc )(void *addr, a_size size)
 allocation function pointer
 

Detailed Description

Macro Definition Documentation

◆ A_ABS

#define A_ABS ( x)
Value:
((x) < 0 ? -(x) : (x))

absolute value of x, \( |x| \)

◆ A_ABS_

#define A_ABS_ ( f,
g )
Value:
((f) < (g) ? (g) - (f) : (f) - (g))

absolute value of f-g, \( |f-g| \)

◆ a_align_down

#define a_align_down ( a,
p )
Value:
a_cast_r(void *, a_cast_r(a_uptr, p) & ~a_cast_s(a_uptr, (a) - 1))
unsigned long a_uptr
unsigned integer type capable of holding a pointer to void
Definition a.h:738

round pointer p down to the closest a, aligned address <= p

◆ a_align_up

#define a_align_up ( a,
p )
Value:
a_cast_r(void *, (a_cast_r(a_uptr, p) + (a) - 1) & ~a_cast_s(a_uptr, (a) - 1))

round pointer p up to the closest a, aligned address >= p

◆ A_ALLOC

#define A_ALLOC ( alloc,
addr,
size )
Value:
void *alloc(void *addr, a_size size)
size_t a_size
unsigned integer type returned by the sizeof operator
Definition a.h:823

declare allocation function

◆ a_bool_c

#define a_bool_c ( x)
Value:
(!!(x))

static cast to a_bool

◆ A_BUILD_ASSERT

#define A_BUILD_ASSERT ( x)
Value:
(void)(sizeof(char[1 - 2 * !(x)]))

assert a build-time dependency, as an expression

◆ A_BUILD_BUG_ON

#define A_BUILD_BUG_ON ( x)
Value:
(void)(sizeof(char[1 - 2 * !!(x)]))

assert a build-time dependency, as an expression

◆ a_byte_

#define a_byte_ ( _,
x )
Value:
a_cast_s(a_byte _, x)
unsigned char a_byte
type for unsigned character representation
Definition a.h:400

◆ a_byte_c

#define a_byte_c ( x)
Value:
a_cast_s(a_byte, x)

static cast to a_byte

◆ a_c8_

#define a_c8_ ( _,
x )
Value:
a_cast_s(a_c8 _, x)
char a_c8
type for character representation
Definition a.h:409

◆ a_c8_c

#define a_c8_c ( x)
Value:
a_cast_s(a_c8, x)

static cast to a_c8

◆ A_CAST_1

#define A_CAST_1 ( a)
Value:
#a

◆ A_CAST_2

#define A_CAST_2 ( a,
b )
Value:
a##b

◆ A_CAST_3

#define A_CAST_3 ( a,
b,
c )
Value:
a##b##c

◆ a_cast_c

#define a_cast_c ( T,
x )
Value:
const_cast<T>(x)

◆ a_cast_d

#define a_cast_d ( T,
x )
Value:
dynamic_cast<T>(x)

◆ a_cast_r

#define a_cast_r ( T,
x )
Value:
reinterpret_cast<T>(x)

◆ a_cast_s

#define a_cast_s ( T,
x )
Value:
static_cast<T>(x)

◆ a_container_of

#define a_container_of ( ptr,
type,
member )
Value:
a_cast_r(type *, a_cast_r(a_uptr, ptr) - a_offsetof(type, member))
#define a_offsetof(type, member)
offset of a structure member
Definition a.h:1097

container of a structure member

Parameters
ptrpointer to a member variable
typestructure type
membermember variable

◆ a_die

#define a_die ( ptr)
Value:
a_alloc(ptr, 0)
void *(* a_alloc)(void *addr, a_size size)
allocation function pointer
Definition a.h:1519

◆ a_diff_

#define a_diff_ ( _,
x )
Value:
a_cast_s(a_diff _, x)
ptrdiff_t a_diff
signed integer type returned when subtracting two pointers
Definition a.h:780

◆ a_diff_c

#define a_diff_c ( x)
Value:
a_cast_s(a_diff, x)

static cast to a_diff

◆ a_f32_

#define a_f32_ ( _,
x )
Value:
a_cast_s(a_f32 _, x)
float a_f32
single precision floating point type. Matches IEEE-754 binary32 format if supported.
Definition a.h:877

◆ A_F32_C

#define A_F32_C ( X)
Value:
A_CAST_2(X, F)

◆ a_f32_c

#define a_f32_c ( x)
Value:
a_cast_s(a_f32, x)

static cast to a_f32

◆ A_F32_F

#define A_F32_F ( F)
Value:
A_CAST_2(F, f)

◆ a_f64_

#define a_f64_ ( _,
x )
Value:
a_cast_s(a_f64 _, x)
double a_f64
double precision floating point type. Matches IEEE-754 binary64 format if supported.
Definition a.h:901

◆ A_F64_C

#define A_F64_C ( X)
Value:
X

◆ a_f64_c

#define a_f64_c ( x)
Value:
a_cast_s(a_f64, x)

static cast to a_f64

◆ A_F64_F

#define A_F64_F ( F)
Value:
F

◆ A_FOREACH

#define A_FOREACH ( T,
it,
at,
ptr,
num )
Value:
for (it = a_cast_s(T, ptr), at = it + (num); it < at; ++it)

◆ a_foreach

#define a_foreach ( T,
S,
it,
ptr,
num )
Value:
for (T S it = a_cast_s(T S, ptr), S it##_ = it + (num); it < it##_; ++it)

iterate over an array

Parameters
Tthe prefix of the element type
Sthe suffix of the element type
itpointer to the current element
ptrstarting address of this array
numnumber of elements in this array

◆ A_FOREACH_REVERSE

#define A_FOREACH_REVERSE ( T,
it,
at,
ptr,
num )
Value:
for (at = a_cast_s(T, ptr) - 1, it = at + (num); it > at; --it)

◆ a_foreach_reverse

#define a_foreach_reverse ( T,
S,
it,
ptr,
num )
Value:
for (T S it##_ = a_cast_s(T S, ptr) - 1, S it = it##_ + (num); it > it##_; --it)

iterate over an array in reverse

Parameters
Tthe prefix of the element type
Sthe suffix of the element type
itpointer to the current element
ptrstarting address of this array
numnumber of elements in this array

◆ A_FORENUM

#define A_FORENUM ( I,
i,
n )
Value:
for (i = 0; i < a_cast_s(I, n); ++i)

◆ a_forenum

#define a_forenum ( I,
i,
n )
Value:
for (I i = 0; i < (n); ++i)

iterate from 0 to n and not include n

Parameters
Iindex type of the iteration
iindex variable of the iteration
nfinal value of the iteration

◆ A_FORENUM_REVERSE

#define A_FORENUM_REVERSE ( I,
i,
n )
Value:
for (i = a_cast_s(I, n); i-- > 0;)

◆ a_forenum_reverse

#define a_forenum_reverse ( I,
i,
n )
Value:
for (I i = (n); i-- > 0;)

iterate from n to 0 and not include n

Parameters
Iindex type of the iteration
iindex variable of the iteration
nfinal value of the iteration

◆ A_FORSAFE

#define A_FORSAFE ( T,
it,
at,
ptr,
num )
Value:
for (it = a_cast_s(T, ptr), at = (num) ? it + (num) : it; it < at; ++it)

◆ a_forsafe

#define a_forsafe ( T,
S,
it,
ptr,
num )
Value:
for (T S it = a_cast_s(T S, ptr), S it##_ = (num) ? it + (num) : it; it < it##_; ++it)

iterate over an array

Parameters
Tthe prefix of the element type
Sthe suffix of the element type
itpointer to the current element
ptrstarting address of this array
numnumber of elements in this array

◆ A_FORSAFE_REVERSE

#define A_FORSAFE_REVERSE ( T,
it,
at,
ptr,
num )
Value:
for (at = (num) ? a_cast_s(T, ptr) - 1 : a_cast_s(T, ptr), \
it = (num) ? at + (num) : at; \
it > at; --it)

◆ a_forsafe_reverse

#define a_forsafe_reverse ( T,
S,
it,
ptr,
num )
Value:
for (T S it##_ = (num) ? a_cast_s(T S, ptr) - 1 : a_cast_s(T S, ptr), \
S it = (num) ? it##_ + (num) : it##_; \
it > it##_; --it)

iterate over an array in reverse

Parameters
Tthe prefix of the element type
Sthe suffix of the element type
itpointer to the current element
ptrstarting address of this array
numnumber of elements in this array

◆ a_i16_

#define a_i16_ ( _,
x )
Value:
a_cast_s(a_i16 _, x)
short a_i16
signed integer type with width of exactly 16 bits
Definition a.h:469

◆ A_I16_C

#define A_I16_C ( X)
Value:
X

◆ a_i16_c

#define a_i16_c ( x)
Value:
a_cast_s(a_i16, x)

static cast to a_i16

◆ a_i32_

#define a_i32_ ( _,
x )
Value:
a_cast_s(a_i32 _, x)
long a_i32
signed integer type with width of exactly 32 bits
Definition a.h:519

◆ A_I32_C

#define A_I32_C ( X)
Value:
A_CAST_2(X, L)

◆ a_i32_c

#define a_i32_c ( x)
Value:
a_cast_s(a_i32, x)

static cast to a_i32

◆ a_i64_

#define a_i64_ ( _,
x )
Value:
a_cast_s(a_i64 _, x)
long a_i64
signed integer type with width of exactly 64 bits
Definition a.h:589

◆ A_I64_C

#define A_I64_C ( X)
Value:
A_CAST_2(X, L)

◆ a_i64_c

#define a_i64_c ( x)
Value:
a_cast_s(a_i64, x)

static cast to a_i64

◆ a_i8_

#define a_i8_ ( _,
x )
Value:
a_cast_s(a_i8 _, x)
signed char a_i8
signed integer type with width of exactly 8 bits
Definition a.h:427

◆ A_I8_C

#define A_I8_C ( X)
Value:
X

◆ a_i8_c

#define a_i8_c ( x)
Value:
a_cast_s(a_i8, x)

static cast to a_i8

◆ a_imax_

#define a_imax_ ( _,
x )
Value:
a_cast_s(a_imax _, x)
long a_imax
maximum-width signed integer type
Definition a.h:669

◆ A_IMAX_C

#define A_IMAX_C ( X)
Value:
A_I64_C(X)

◆ a_imax_c

#define a_imax_c ( x)
Value:
a_cast_s(a_imax, x)

static cast to a_imax

◆ a_int_

#define a_int_ ( _,
x )
Value:
a_cast_s(a_int _, x)
int a_int
signed integer type is guaranteed to be at least 16 bits
Definition a.h:329

◆ a_int_c

#define a_int_c ( x)
Value:
a_cast_s(a_int, x)

static cast to a_int

◆ a_iptr_

#define a_iptr_ ( _,
x )
Value:
a_cast_s(a_iptr _, x)
long a_iptr
signed integer type capable of holding a pointer to void
Definition a.h:718

◆ a_iptr_c

#define a_iptr_c ( x)
Value:
a_cast_s(a_iptr, x)

static cast to a_iptr

◆ A_ITERATE

#define A_ITERATE ( T,
it,
at,
ptr,
end )
Value:
for (it = a_cast_s(T, ptr), at = a_cast_s(T, end); it < at; ++it)

◆ a_iterate

#define a_iterate ( T,
S,
it,
ptr,
end )
Value:
for (T S it = a_cast_s(T S, ptr), S it##_ = a_cast_s(T S, end); it < it##_; ++it)

iterate over an array

Parameters
Tthe prefix of the element type
Sthe suffix of the element type
itpointer to the current element
ptrstarting address of this array
endthe end address of this array

◆ A_ITERATE_REVERSE

#define A_ITERATE_REVERSE ( T,
it,
at,
ptr,
end )
Value:
for (it = a_cast_s(T, end) - 1, at = a_cast_s(T, ptr) - 1; it > at; --it)

◆ a_iterate_reverse

#define a_iterate_reverse ( T,
S,
it,
ptr,
end )
Value:
for (T S it = a_cast_s(T S, end) - 1, S it##_ = a_cast_s(T S, ptr) - 1; it > it##_; --it)

iterate over an array in reverse

Parameters
Tthe prefix of the element type
Sthe suffix of the element type
itpointer to the current element
ptrstarting address of this array
endthe end address of this array

◆ A_LEN

#define A_LEN ( a)
Value:
(sizeof(a) / sizeof(*(a)))

number of elements in a visible array

Parameters
amust be a visible array

◆ a_long_

#define a_long_ ( _,
x )
Value:
a_cast_s(a_long _, x)
long a_long
signed integer type is guaranteed to be at least 32 bits
Definition a.h:363

◆ a_long_c

#define a_long_c ( x)
Value:
a_cast_s(a_long, x)

static cast to a_long

◆ A_MAX

#define A_MAX ( x,
y )
Value:
(((x) > (y)) ? (x) : (y))

maximum value between x and y

◆ A_MIN

#define A_MIN ( x,
y )
Value:
(((x) < (y)) ? (x) : (y))

minimum value between x and y

◆ a_new

#define a_new ( T,
ptr,
num )
Value:
a_cast_s(T *, a_alloc(ptr, sizeof(T) * (num)))

◆ a_offsetof

#define a_offsetof ( type,
member )
Value:
a_cast_r(a_size, &a_cast_r(type *, 0)->member)

offset of a structure member

Parameters
typestructure type
membermember variable

◆ A_SAT

#define A_SAT ( x,
min,
max )
Value:
((min) < (x) ? (x) < (max) ? (x) : (max) : (min))

saturation value of x, \( \texttt{sat}(x,min,max)=\begin{cases}min&min>x\\max&x>max\\x&else\end{cases} \)

◆ A_SGN

#define A_SGN ( x)
Value:
((0 < (x)) - ((x) < 0))

signum function, \( \texttt{sgn}(x)=\begin{cases}+1&x>0\\0&0\\-1&x<0\end{cases} \)

◆ A_SGN_

#define A_SGN_ ( f,
g )
Value:
(((f) > (g)) - ((f) < (g)))

signum function, \( \texttt{sgn}(f,g)=\begin{cases}+1&f>g\\0&f=g\\-1&f<g\end{cases} \)

◆ a_shrt_

#define a_shrt_ ( _,
x )
Value:
a_cast_s(a_shrt _, x)
short a_shrt
signed integer type is guaranteed to be at least 16 bits
Definition a.h:346

◆ a_shrt_c

#define a_shrt_c ( x)
Value:
a_cast_s(a_shrt, x)

static cast to a_shrt

◆ a_size_

#define a_size_ ( _,
x )
Value:
a_cast_s(a_size _, x)

◆ a_size_c

#define a_size_c ( x)
Value:
a_cast_s(a_size, x)

static cast to a_size

◆ a_size_down

#define a_size_down ( a,
n )
Value:
(a_cast_s(a_size, n) & ~a_cast_s(a_size, (a) - 1))

round down size n to be a multiple of a

◆ a_size_up

#define a_size_up ( a,
n )
Value:
((a_cast_s(a_size, n) + (a) - 1) & ~a_cast_s(a_size, (a) - 1))

round up size n to be a multiple of a

◆ A_SQ

#define A_SQ ( x)
Value:
((x) * (x))

square of x, \( x^2 \)

◆ a_u16_

#define a_u16_ ( _,
x )
Value:
a_cast_s(a_u16 _, x)
unsigned short a_u16
unsigned integer type with width of exactly 16 bits
Definition a.h:486

◆ A_U16_C

#define A_U16_C ( X)
Value:
X

◆ a_u16_c

#define a_u16_c ( x)
Value:
a_cast_s(a_u16, x)

static cast to a_u16

◆ a_u32_

#define a_u32_ ( _,
x )
Value:
a_cast_s(a_u32 _, x)
unsigned long a_u32
unsigned integer type with width of exactly 32 bits
Definition a.h:538

◆ A_U32_C

#define A_U32_C ( X)
Value:
A_CAST_2(X, UL)

◆ a_u32_c

#define a_u32_c ( x)
Value:
a_cast_s(a_u32, x)

static cast to a_u32

◆ a_u64_

#define a_u64_ ( _,
x )
Value:
a_cast_s(a_u64 _, x)
unsigned long a_u64
unsigned integer type with width of exactly 64 bits
Definition a.h:627

◆ A_U64_C

#define A_U64_C ( X)
Value:
A_CAST_2(X, UL)

◆ a_u64_c

#define a_u64_c ( x)
Value:
a_cast_s(a_u64, x)

static cast to a_u64

◆ a_u8_

#define a_u8_ ( _,
x )
Value:
a_cast_s(a_u8 _, x)
unsigned char a_u8
unsigned integer type with width of exactly 8 bits
Definition a.h:442

◆ A_U8_C

#define A_U8_C ( X)
Value:
X

◆ a_u8_c

#define a_u8_c ( x)
Value:
a_cast_s(a_u8, x)

static cast to a_u8

◆ a_uint_

#define a_uint_ ( _,
x )
Value:
a_cast_s(a_uint _, x)
unsigned int a_uint
unsigned integer type is guaranteed to be at least 16 bits
Definition a.h:337

◆ a_uint_c

#define a_uint_c ( x)
Value:
a_cast_s(a_uint, x)

static cast to a_uint

◆ a_ulong_

#define a_ulong_ ( _,
x )
Value:
a_cast_s(a_ulong _, x)
unsigned long a_ulong
unsigned integer type is guaranteed to be at least 32 bits
Definition a.h:371

◆ a_ulong_c

#define a_ulong_c ( x)
Value:
a_cast_s(a_ulong, x)

static cast to a_ulong

◆ a_umax_

#define a_umax_ ( _,
x )
Value:
a_cast_s(a_umax _, x)
unsigned long a_umax
maximum-width unsigned integer type
Definition a.h:684

◆ A_UMAX_C

#define A_UMAX_C ( X)
Value:
A_U64_C(X)

◆ a_umax_c

#define a_umax_c ( x)
Value:
a_cast_s(a_umax, x)

static cast to a_umax

◆ a_uptr_

#define a_uptr_ ( _,
x )
Value:
a_cast_s(a_uptr _, x)

◆ a_uptr_c

#define a_uptr_c ( x)
Value:
a_cast_s(a_uptr, x)

static cast to a_uptr

◆ a_ushrt_

#define a_ushrt_ ( _,
x )
Value:
a_cast_s(a_ushrt _, x)
unsigned short a_ushrt
unsigned integer type is guaranteed to be at least 16 bits
Definition a.h:354

◆ a_ushrt_c

#define a_ushrt_c ( x)
Value:
a_cast_s(a_ushrt, x)

static cast to a_ushrt

◆ a_void_

#define a_void_ ( _,
x )
Value:
a_cast_s(void _, x)

◆ a_void_c

#define a_void_c ( x)
Value:
a_cast_s(void, x)

static cast to a_void

Enumeration Type Documentation

◆ anonymous enum

anonymous enum

enumeration for return values

Enumerator
A_SUCCESS 

return success

A_FAILURE 

return failure

A_INVALID 

return invalid

Function Documentation

◆ a_alloc_()

void * a_alloc_ ( void * addr,
a_size size )

default allocation function

Parameters
[in]addraddress of memory block
[in]sizenew size of memory block
Returns
new address of memory block or null

◆ a_copy()

void * a_copy ( void *__restrict dst,
void const *__restrict src,
a_size siz )

copy one buffer to another

Parameters
[in]dstpointer to the object to copy to
[in]srcpointer to the object to copy from
[in]siznumber of bytes to copy
Returns
a copy of dest

◆ a_fill()

void * a_fill ( void * ptr,
a_size siz,
int val )

fill a buffer with a character

Parameters
[in]ptrpointer to the object to fill
[in]siznumber of bytes to fill
[in]valfill byte
Returns
a copy of dest

◆ a_move()

void * a_move ( void * dst,
void const * src,
a_size siz )

move one buffer to another

Parameters
[in]dstpointer to the object to copy to
[in]srcpointer to the object to copy from
[in]siznumber of bytes to copy
Returns
a copy of dest

◆ a_swap()

void a_swap ( void * lhs,
void * rhs,
a_size siz )

swap two different memory blocks of the same size

Parameters
[in,out]lhspoints to memory block on the left
[in,out]rhspoints to memory block on the right
[in]sizthe size of memory block being swapped

◆ a_u16_rev()

a_u16 a_u16_rev ( a_u16 x)

reverse the bits in a 16-bit unsigned integer

Parameters
xa 16-bit unsigned integer to be reversed
Returns
reversed 16-bit unsigned integer

◆ a_u32_rev()

a_u32 a_u32_rev ( a_u32 x)

reverse the bits in a 32-bit unsigned integer

Parameters
xa 32-bit unsigned integer to be reversed
Returns
reversed 32-bit unsigned integer

◆ a_u64_rev()

a_u64 a_u64_rev ( a_u64 x)

reverse the bits in a 64-bit unsigned integer

Parameters
xa 64-bit unsigned integer to be reversed
Returns
reversed 64-bit unsigned integer

◆ a_u8_rev()

a_u8 a_u8_rev ( a_u8 x)

reverse the bits in an 8-bit unsigned integer

Parameters
xan 8-bit unsigned integer to be reversed
Returns
reversed 8-bit unsigned integer

◆ a_zero()

void * a_zero ( void * ptr,
a_size siz )

fill a buffer with zero

Parameters
[in]ptrpointer to the object to fill
[in]siznumber of bytes to fill
Returns
a copy of dest

Variable Documentation

◆ a_alloc

void *(* a_alloc) (void *addr, a_size size) ( void * addr,
a_size size )

allocation function pointer

Parameters
[in]addraddress of memory block
[in]sizenew size of memory block
Returns
new address of memory block or null