liba 0.1.15
An algorithm library based on C/C++
Loading...
Searching...
No Matches
a.h File Reference

algorithm library More...

#include <stddef.h>
#include <limits.h>
#include <float.h>
Include dependency graph for a.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

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, 1e300 * 1e300)
#define A_F32_NAN   a_cast_s(A_F32, A_F32_INF * 0)
#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   a_cast_s(double, A_F32_INF)
#define A_F64_NAN   a_cast_s(double, A_F32_NAN)
#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_REAL_TYPE   A_REAL_DOUBLE
 floating-point number bytes
#define A_REAL_SINGLE   0x04
#define A_REAL_DOUBLE   0x08
#define A_REAL_EXTEND   0x10
#define A_REAL   double
 floating-point number stored using double
#define A_REAL_DIG   DBL_DIG
#define A_REAL_EPSILON   DBL_EPSILON
#define A_REAL_MANT_DIG   DBL_MANT_DIG
#define A_REAL_MAX   DBL_MAX
#define A_REAL_MAX_10_EXP   DBL_MAX_10_EXP
#define A_REAL_MAX_EXP   DBL_MAX_EXP
#define A_REAL_MIN   DBL_MIN
#define A_REAL_MIN_10_EXP   DBL_MIN_10_EXP
#define A_REAL_MIN_EXP   DBL_MIN_EXP
#define A_REAL_C(X)
 expands to a floating-point constant expression having the value specified by its argument and the type floating-point number
#define A_REAL_F(F)
 expands to a floating-point function expression having the value specified by its argument and the type floating-point number
#define A_REAL_PRI
 format constants for the fprintf family of functions
#define A_REAL_SCN   "l"
 format constants for the fscanf family of functions
#define A_REAL_TOL   1e-6
#define A_REAL_EPS   1e-12
#define a_str2num   strtod
#define A_REAL_INF   a_cast_s(A_REAL, A_F32_INF)
#define A_REAL_NAN   a_cast_s(A_REAL, A_F32_NAN)
#define a_real_c(x)
 static cast to floating-point number
#define a_real_(_, 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 double a_real
 compiler built-in floating-point number type
typedef union a_cast a_cast

Enumerations

enum  a_return_code {
  A_SUCCESS , A_FAILURE , A_INVALID , A_OBOUNDS ,
  A_OMEMORY
}
 enumeration for return values

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

algorithm library