Reduct  v1.0.4-3-gdaf0d70
A functional and immutable language.
Loading...
Searching...
No Matches
defs.h File Reference
#include <assert.h>
#include <math.h>
#include <setjmp.h>
#include <stdarg.h>
#include <stddef.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
Include dependency graph for defs.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define REDUCT_API
 
#define _CRT_SECURE_NO_WARNINGS
 
#define REDUCT_NULL   NULL
 
#define REDUCT_ASSERT(_cond)   assert(_cond)
 
#define REDUCT_MALLOC(_size)   malloc(_size)
 
#define REDUCT_CALLOC(_nmemb, _size)   calloc(_nmemb, _size)
 
#define REDUCT_REALLOC(_ptr, _size)   realloc(_ptr, _size)
 
#define REDUCT_FREE(_ptr)   free(_ptr)
 
#define REDUCT_MEMSET(_ptr, _val, _size)   memset(_ptr, _val, _size)
 
#define REDUCT_MEMCPY(_dest, _src, _size)   memcpy(_dest, _src, _size)
 
#define REDUCT_MEMCMP(_s1, _s2, _size)   memcmp(_s1, _s2, _size)
 
#define REDUCT_STRNCPY(dest, src, n)   strncpy(dest, src, n)
 
#define REDUCT_STRCMP(s1, s2)   strcmp(s1, s2)
 
#define REDUCT_STRLEN(s)   strlen(s)
 
#define REDUCT_SETJMP(_env)   setjmp(_env)
 
#define REDUCT_LONGJMP(_env, _val)   longjmp(_env, _val)
 
#define REDUCT_FOPEN(_path, _mode)   fopen(_path, _mode)
 
#define REDUCT_FCLOSE(_file)   fclose(_file)
 
#define REDUCT_FREAD(_ptr, _size, _nmemb, _file)   fread(_ptr, _size, _nmemb, _file)
 
#define REDUCT_FWRITE(_ptr, _size, _nmemb, _file)   fwrite(_ptr, _size, _nmemb, _file)
 
#define REDUCT_FGETC(_file)   fgetc(_file)
 
#define REDUCT_FPRINTF   fprintf
 
#define REDUCT_SNPRINTF   snprintf
 
#define REDUCT_VSNPRINTF   vsnprintf
 
#define REDUCT_STDIN   stdin
 
#define REDUCT_STDOUT   stdout
 
#define REDUCT_STDERR   stderr
 
#define REDUCT_TIME()   time(REDUCT_NULL)
 
#define REDUCT_CLOCK()   clock()
 
#define REDUCT_GETENV(_name)   getenv(_name)
 
#define REDUCT_FLOOR(_x)   floor(_x)
 
#define REDUCT_CEIL(_x)   ceil(_x)
 
#define REDUCT_ROUND(_x)   round(_x)
 
#define REDUCT_POW(_x, _y)   pow(_x, _y)
 
#define REDUCT_EXP(_x)   exp(_x)
 
#define REDUCT_LOG(_x)   log(_x)
 
#define REDUCT_SQRT(_x)   sqrt(_x)
 
#define REDUCT_SIN(_x)   sin(_x)
 
#define REDUCT_COS(_x)   cos(_x)
 
#define REDUCT_TAN(_x)   tan(_x)
 
#define REDUCT_ASIN(_x)   asin(_x)
 
#define REDUCT_ACOS(_x)   acos(_x)
 
#define REDUCT_ATAN(_x)   atan(_x)
 
#define REDUCT_ATAN2(_y, _x)   atan2(_y, _x)
 
#define REDUCT_SINH(_x)   sinh(_x)
 
#define REDUCT_COSH(_x)   cosh(_x)
 
#define REDUCT_TANH(_x)   tanh(_x)
 
#define REDUCT_ASINH(_x)   asinh(_x)
 
#define REDUCT_ACOSH(_x)   acosh(_x)
 
#define REDUCT_ATANH(_x)   atanh(_x)
 
#define REDUCT_FABS(_x)   fabs(_x)
 
#define REDUCT_RAND()   rand()
 
#define REDUCT_SRAND(_seed)   srand(_seed)
 
#define REDUCT_RAND_MAX   RAND_MAX
 
#define REDUCT_VA_START(_ap, _last)   va_start(_ap, _last)
 
#define REDUCT_VA_END(_ap)   va_end(_ap)
 
#define REDUCT_VA_COPY(_dest, _src)   va_copy(_dest, _src)
 
#define REDUCT_LIKELY(_x)   (_x)
 
#define REDUCT_UNLIKELY(_x)   (_x)
 
#define REDUCT_NORETURN
 
#define REDUCT_ALWAYS_INLINE
 
#define REDUCT_MIN(_a, _b)   ((_a) < (_b) ? (_a) : (_b))
 
#define REDUCT_MAX(_a, _b)   ((_a) > (_b) ? (_a) : (_b))
 
#define REDUCT_UNUSED(_x)   ((void)(_x))
 
#define REDUCT_PI   3.14159265358979323846
 PI constant.
 
#define REDUCT_E   2.7182818284590452354
 E constant.
 
#define REDUCT_INF
 INFINITY constant.
 
#define REDUCT_NAN
 NAN constant.
 
#define REDUCT_PATH_MAX   512
 Maximum path length for Reduct.
 
#define REDUCT_CONTAINER_OF(_ptr, _type, _member)   ((_type*)((char*)(_ptr) - offsetof(_type, _member)))
 Container of macro.
 
#define REDUCT_STACK_BUFFER_SIZE   256
 The size of temporary stack allocated buffers.
 
#define REDUCT_SCRATCH_BUFFER(_name, _size)
 Scratch buffer macro.
 
#define REDUCT_SCRATCH_BUFFER_FREE(_name)
 Scratch buffer free macro.
 

Typedefs

typedef jmp_buf reduct_jmp_buf_t
 
typedef FILE * reduct_file_t
 
typedef va_list reduct_va_list
 
typedef int64_t reduct_int64_t
 
typedef uint64_t reduct_uint64_t
 
typedef int32_t reduct_int32_t
 
typedef uint32_t reduct_uint32_t
 
typedef int16_t reduct_int16_t
 
typedef uint16_t reduct_uint16_t
 
typedef int8_t reduct_int8_t
 
typedef uint8_t reduct_uint8_t
 
typedef size_t reduct_size_t
 
typedef int reduct_int_t
 
typedef double reduct_float_t
 
typedef reduct_uint64_t reduct_handle_t
 Handle type.
 

Enumerations

enum  reduct_bool_t { REDUCT_TRUE = 1 , REDUCT_FALSE = 0 }
 Boolean type. More...
 

Macro Definition Documentation

◆ REDUCT_API

#define REDUCT_API

Definition at line 7 of file defs.h.

◆ _CRT_SECURE_NO_WARNINGS

#define _CRT_SECURE_NO_WARNINGS

Definition at line 11 of file defs.h.

◆ REDUCT_NULL

#define REDUCT_NULL   NULL

Definition at line 23 of file defs.h.

◆ REDUCT_ASSERT

#define REDUCT_ASSERT (   _cond)    assert(_cond)

Definition at line 25 of file defs.h.

◆ REDUCT_MALLOC

#define REDUCT_MALLOC (   _size)    malloc(_size)

Definition at line 27 of file defs.h.

◆ REDUCT_CALLOC

#define REDUCT_CALLOC (   _nmemb,
  _size 
)    calloc(_nmemb, _size)

Definition at line 28 of file defs.h.

◆ REDUCT_REALLOC

#define REDUCT_REALLOC (   _ptr,
  _size 
)    realloc(_ptr, _size)

Definition at line 29 of file defs.h.

◆ REDUCT_FREE

#define REDUCT_FREE (   _ptr)    free(_ptr)

Definition at line 30 of file defs.h.

◆ REDUCT_MEMSET

#define REDUCT_MEMSET (   _ptr,
  _val,
  _size 
)    memset(_ptr, _val, _size)

Definition at line 32 of file defs.h.

◆ REDUCT_MEMCPY

#define REDUCT_MEMCPY (   _dest,
  _src,
  _size 
)    memcpy(_dest, _src, _size)

Definition at line 33 of file defs.h.

◆ REDUCT_MEMCMP

#define REDUCT_MEMCMP (   _s1,
  _s2,
  _size 
)    memcmp(_s1, _s2, _size)

Definition at line 34 of file defs.h.

◆ REDUCT_STRNCPY

#define REDUCT_STRNCPY (   dest,
  src,
 
)    strncpy(dest, src, n)

Definition at line 36 of file defs.h.

◆ REDUCT_STRCMP

#define REDUCT_STRCMP (   s1,
  s2 
)    strcmp(s1, s2)

Definition at line 37 of file defs.h.

◆ REDUCT_STRLEN

#define REDUCT_STRLEN (   s)    strlen(s)

Definition at line 38 of file defs.h.

◆ REDUCT_SETJMP

#define REDUCT_SETJMP (   _env)    setjmp(_env)

Definition at line 41 of file defs.h.

◆ REDUCT_LONGJMP

#define REDUCT_LONGJMP (   _env,
  _val 
)    longjmp(_env, _val)

Definition at line 42 of file defs.h.

◆ REDUCT_FOPEN

#define REDUCT_FOPEN (   _path,
  _mode 
)    fopen(_path, _mode)

Definition at line 45 of file defs.h.

◆ REDUCT_FCLOSE

#define REDUCT_FCLOSE (   _file)    fclose(_file)

Definition at line 46 of file defs.h.

◆ REDUCT_FREAD

#define REDUCT_FREAD (   _ptr,
  _size,
  _nmemb,
  _file 
)    fread(_ptr, _size, _nmemb, _file)

Definition at line 47 of file defs.h.

◆ REDUCT_FWRITE

#define REDUCT_FWRITE (   _ptr,
  _size,
  _nmemb,
  _file 
)    fwrite(_ptr, _size, _nmemb, _file)

Definition at line 48 of file defs.h.

◆ REDUCT_FGETC

#define REDUCT_FGETC (   _file)    fgetc(_file)

Definition at line 49 of file defs.h.

◆ REDUCT_FPRINTF

#define REDUCT_FPRINTF   fprintf

Definition at line 50 of file defs.h.

◆ REDUCT_SNPRINTF

#define REDUCT_SNPRINTF   snprintf

Definition at line 51 of file defs.h.

◆ REDUCT_VSNPRINTF

#define REDUCT_VSNPRINTF   vsnprintf

Definition at line 52 of file defs.h.

◆ REDUCT_STDIN

#define REDUCT_STDIN   stdin

Definition at line 53 of file defs.h.

◆ REDUCT_STDOUT

#define REDUCT_STDOUT   stdout

Definition at line 54 of file defs.h.

◆ REDUCT_STDERR

#define REDUCT_STDERR   stderr

Definition at line 55 of file defs.h.

◆ REDUCT_TIME

#define REDUCT_TIME ( )    time(REDUCT_NULL)

Definition at line 57 of file defs.h.

◆ REDUCT_CLOCK

#define REDUCT_CLOCK ( )    clock()

Definition at line 58 of file defs.h.

◆ REDUCT_GETENV

#define REDUCT_GETENV (   _name)    getenv(_name)

Definition at line 59 of file defs.h.

◆ REDUCT_FLOOR

#define REDUCT_FLOOR (   _x)    floor(_x)

Definition at line 61 of file defs.h.

◆ REDUCT_CEIL

#define REDUCT_CEIL (   _x)    ceil(_x)

Definition at line 62 of file defs.h.

◆ REDUCT_ROUND

#define REDUCT_ROUND (   _x)    round(_x)

Definition at line 63 of file defs.h.

◆ REDUCT_POW

#define REDUCT_POW (   _x,
  _y 
)    pow(_x, _y)

Definition at line 64 of file defs.h.

◆ REDUCT_EXP

#define REDUCT_EXP (   _x)    exp(_x)

Definition at line 65 of file defs.h.

◆ REDUCT_LOG

#define REDUCT_LOG (   _x)    log(_x)

Definition at line 66 of file defs.h.

◆ REDUCT_SQRT

#define REDUCT_SQRT (   _x)    sqrt(_x)

Definition at line 67 of file defs.h.

◆ REDUCT_SIN

#define REDUCT_SIN (   _x)    sin(_x)

Definition at line 68 of file defs.h.

◆ REDUCT_COS

#define REDUCT_COS (   _x)    cos(_x)

Definition at line 69 of file defs.h.

◆ REDUCT_TAN

#define REDUCT_TAN (   _x)    tan(_x)

Definition at line 70 of file defs.h.

◆ REDUCT_ASIN

#define REDUCT_ASIN (   _x)    asin(_x)

Definition at line 71 of file defs.h.

◆ REDUCT_ACOS

#define REDUCT_ACOS (   _x)    acos(_x)

Definition at line 72 of file defs.h.

◆ REDUCT_ATAN

#define REDUCT_ATAN (   _x)    atan(_x)

Definition at line 73 of file defs.h.

◆ REDUCT_ATAN2

#define REDUCT_ATAN2 (   _y,
  _x 
)    atan2(_y, _x)

Definition at line 74 of file defs.h.

◆ REDUCT_SINH

#define REDUCT_SINH (   _x)    sinh(_x)

Definition at line 75 of file defs.h.

◆ REDUCT_COSH

#define REDUCT_COSH (   _x)    cosh(_x)

Definition at line 76 of file defs.h.

◆ REDUCT_TANH

#define REDUCT_TANH (   _x)    tanh(_x)

Definition at line 77 of file defs.h.

◆ REDUCT_ASINH

#define REDUCT_ASINH (   _x)    asinh(_x)

Definition at line 78 of file defs.h.

◆ REDUCT_ACOSH

#define REDUCT_ACOSH (   _x)    acosh(_x)

Definition at line 79 of file defs.h.

◆ REDUCT_ATANH

#define REDUCT_ATANH (   _x)    atanh(_x)

Definition at line 80 of file defs.h.

◆ REDUCT_FABS

#define REDUCT_FABS (   _x)    fabs(_x)

Definition at line 81 of file defs.h.

◆ REDUCT_RAND

#define REDUCT_RAND ( )    rand()

Definition at line 83 of file defs.h.

◆ REDUCT_SRAND

#define REDUCT_SRAND (   _seed)    srand(_seed)

Definition at line 84 of file defs.h.

◆ REDUCT_RAND_MAX

#define REDUCT_RAND_MAX   RAND_MAX

Definition at line 85 of file defs.h.

◆ REDUCT_VA_START

#define REDUCT_VA_START (   _ap,
  _last 
)    va_start(_ap, _last)

Definition at line 87 of file defs.h.

◆ REDUCT_VA_END

#define REDUCT_VA_END (   _ap)    va_end(_ap)

Definition at line 88 of file defs.h.

◆ REDUCT_VA_COPY

#define REDUCT_VA_COPY (   _dest,
  _src 
)    va_copy(_dest, _src)

Definition at line 89 of file defs.h.

◆ REDUCT_LIKELY

#define REDUCT_LIKELY (   _x)    (_x)

Definition at line 117 of file defs.h.

◆ REDUCT_UNLIKELY

#define REDUCT_UNLIKELY (   _x)    (_x)

Definition at line 118 of file defs.h.

◆ REDUCT_NORETURN

#define REDUCT_NORETURN

Definition at line 119 of file defs.h.

◆ REDUCT_ALWAYS_INLINE

#define REDUCT_ALWAYS_INLINE

Definition at line 120 of file defs.h.

◆ REDUCT_MIN

#define REDUCT_MIN (   _a,
  _b 
)    ((_a) < (_b) ? (_a) : (_b))

Definition at line 123 of file defs.h.

◆ REDUCT_MAX

#define REDUCT_MAX (   _a,
  _b 
)    ((_a) > (_b) ? (_a) : (_b))

Definition at line 124 of file defs.h.

◆ REDUCT_UNUSED

#define REDUCT_UNUSED (   _x)    ((void)(_x))

Definition at line 126 of file defs.h.

◆ REDUCT_PI

#define REDUCT_PI   3.14159265358979323846

PI constant.

Definition at line 143 of file defs.h.

◆ REDUCT_E

#define REDUCT_E   2.7182818284590452354

E constant.

Definition at line 148 of file defs.h.

◆ REDUCT_INF

#define REDUCT_INF
Value:
(((union { \
}){0x7FF0000000000000ULL}) \
.f)
double reduct_float_t
Definition defs.h:102
uint64_t reduct_uint64_t
Definition defs.h:93

INFINITY constant.

Definition at line 153 of file defs.h.

◆ REDUCT_NAN

#define REDUCT_NAN
Value:
(((union { \
}){0x7FF8000000000000ULL}) \
.f)

NAN constant.

Definition at line 163 of file defs.h.

◆ REDUCT_PATH_MAX

#define REDUCT_PATH_MAX   512

Maximum path length for Reduct.

Definition at line 173 of file defs.h.

◆ REDUCT_CONTAINER_OF

#define REDUCT_CONTAINER_OF (   _ptr,
  _type,
  _member 
)    ((_type*)((char*)(_ptr) - offsetof(_type, _member)))

Container of macro.

Used to get the pointer to a structure from a pointer to one of its members.

Parameters
_ptrThe pointer to the member.
_typeThe type of the structure.
_memberThe name of the member.

Definition at line 184 of file defs.h.

◆ REDUCT_STACK_BUFFER_SIZE

#define REDUCT_STACK_BUFFER_SIZE   256

The size of temporary stack allocated buffers.

Definition at line 191 of file defs.h.

◆ REDUCT_SCRATCH_BUFFER

#define REDUCT_SCRATCH_BUFFER (   _name,
  _size 
)
Value:
char _name##Stack[REDUCT_STACK_BUFFER_SIZE]; \
char* _name = ((reduct_size_t)(_size) + 1 <= REDUCT_STACK_BUFFER_SIZE) \
? _name##Stack \
: (char*)REDUCT_MALLOC((reduct_size_t)(_size) + 1); \
if (_name == REDUCT_NULL) \
{ \
REDUCT_ERROR_INTERNAL(reduct, "out of memory"); \
}
#define REDUCT_MALLOC(_size)
Definition defs.h:27
size_t reduct_size_t
Definition defs.h:100
#define REDUCT_STACK_BUFFER_SIZE
The size of temporary stack allocated buffers.
Definition defs.h:191
#define REDUCT_NULL
Definition defs.h:23

Scratch buffer macro.

Will allocate a buffer on the stack if its small enough, otherwise it will create a heap allocated buffer.

Parameters
_nameThe name of the buffer pointer.
_sizeThe size of the buffer to allocate.

Definition at line 201 of file defs.h.

◆ REDUCT_SCRATCH_BUFFER_FREE

#define REDUCT_SCRATCH_BUFFER_FREE (   _name)
Value:
if (_name != _name##Stack) \
{ \
REDUCT_FREE(_name); \
}

Scratch buffer free macro.

Frees a scratch buffer if it was heap allocated.

Parameters
_nameThe name of the buffer pointer.

Definition at line 218 of file defs.h.

Typedef Documentation

◆ reduct_jmp_buf_t

typedef jmp_buf reduct_jmp_buf_t

Definition at line 40 of file defs.h.

◆ reduct_file_t

typedef FILE* reduct_file_t

Definition at line 44 of file defs.h.

◆ reduct_va_list

typedef va_list reduct_va_list

Definition at line 90 of file defs.h.

◆ reduct_int64_t

typedef int64_t reduct_int64_t

Definition at line 92 of file defs.h.

◆ reduct_uint64_t

typedef uint64_t reduct_uint64_t

Definition at line 93 of file defs.h.

◆ reduct_int32_t

typedef int32_t reduct_int32_t

Definition at line 94 of file defs.h.

◆ reduct_uint32_t

typedef uint32_t reduct_uint32_t

Definition at line 95 of file defs.h.

◆ reduct_int16_t

typedef int16_t reduct_int16_t

Definition at line 96 of file defs.h.

◆ reduct_uint16_t

typedef uint16_t reduct_uint16_t

Definition at line 97 of file defs.h.

◆ reduct_int8_t

typedef int8_t reduct_int8_t

Definition at line 98 of file defs.h.

◆ reduct_uint8_t

typedef uint8_t reduct_uint8_t

Definition at line 99 of file defs.h.

◆ reduct_size_t

typedef size_t reduct_size_t

Definition at line 100 of file defs.h.

◆ reduct_int_t

typedef int reduct_int_t

Definition at line 101 of file defs.h.

◆ reduct_float_t

typedef double reduct_float_t

Definition at line 102 of file defs.h.

◆ reduct_handle_t

Handle type.

Definition at line 189 of file defs.h.

Enumeration Type Documentation

◆ reduct_bool_t

Boolean type.

Equivalent to bool.

Enumerator
REDUCT_TRUE 
REDUCT_FALSE 

Definition at line 134 of file defs.h.