diff --git a/src/utils.h b/src/utils.h index 478e4592..777e48c8 100644 --- a/src/utils.h +++ b/src/utils.h @@ -2,17 +2,17 @@ // Copyright (c) 2018 Yuxuan Shui #pragma once #include -#include -#include -#include -#include #include +#include +#include #include +#include +#include #include #include "compiler.h" -#define ARR_SIZE(arr) (sizeof(arr)/sizeof(arr[0])) +#define ARR_SIZE(arr) (sizeof(arr) / sizeof(arr[0])) #ifdef __FAST_MATH__ #warning Use of -ffast-math can cause rendering error or artifacts, \ @@ -24,8 +24,9 @@ __attribute__((optnone)) #else __attribute__((optimize("-fno-fast-math"))) #endif -static inline bool safe_isnan(double a) { - return isnan(a); +static inline bool +safe_isnan(double a) { + return isnan(a); } /** @@ -36,43 +37,40 @@ static inline bool safe_isnan(double a) { * @param max maximum value * @return normalized value */ -static inline int attr_const -normalize_i_range(int i, int min, int max) { - if (i > max) return max; - if (i < min) return min; - return i; +static inline int attr_const normalize_i_range(int i, int min, int max) { + if (i > max) + return max; + if (i < min) + return min; + return i; } /** * Select the larger integer of two. */ -static inline int attr_const -max_i(int a, int b) { - return (a > b ? a : b); +static inline int attr_const max_i(int a, int b) { + return (a > b ? a : b); } /** * Select the smaller integer of two. */ -static inline int attr_const -min_i(int a, int b) { - return (a > b ? b : a); +static inline int attr_const min_i(int a, int b) { + return (a > b ? b : a); } /** * Select the larger long integer of two. */ -static inline long attr_const -max_l(long a, long b) { - return (a > b ? a : b); +static inline long attr_const max_l(long a, long b) { + return (a > b ? a : b); } /** * Select the smaller long integer of two. */ -static inline long attr_const -min_l(long a, long b) { - return (a > b ? b : a); +static inline long attr_const min_l(long a, long b) { + return (a > b ? b : a); } /** @@ -83,11 +81,12 @@ min_l(long a, long b) { * @param max maximum value * @return normalized value */ -static inline double attr_const -normalize_d_range(double d, double min, double max) { - if (d > max) return max; - if (d < min) return min; - return d; +static inline double attr_const normalize_d_range(double d, double min, double max) { + if (d > max) + return max; + if (d < min) + return min; + return d; } /** @@ -96,39 +95,39 @@ normalize_d_range(double d, double min, double max) { * @param d double value to normalize * @return normalized value */ -static inline double attr_const -normalize_d(double d) { - return normalize_d_range(d, 0.0, 1.0); +static inline double attr_const normalize_d(double d) { + return normalize_d_range(d, 0.0, 1.0); } -void report_allocation_failure(const char *func, const char *file, unsigned int line); +void attr_noret report_allocation_failure(const char *func, const char *file, + unsigned int line); /** * @brief Quit if the passed-in pointer is empty. */ static inline void * allocchk_(const char *func_name, const char *file, unsigned int line, void *ptr) { - if (unlikely(!ptr)) { - report_allocation_failure(func_name, file, line); - } - return ptr; + if (unlikely(!ptr)) { + report_allocation_failure(func_name, file, line); + } + return ptr; } /// @brief Wrapper of allocchk_(). #define allocchk(ptr) allocchk_(__func__, __FILE__, __LINE__, ptr) /// @brief Wrapper of malloc(). -#define cmalloc(type) ((type *) allocchk(malloc(sizeof(type)))) +#define cmalloc(type) ((type *)allocchk(malloc(sizeof(type)))) /// @brief Wrapper of malloc() that takes a size #define cvalloc(size) allocchk(malloc(size)) /// @brief Wrapper of calloc(). -#define ccalloc(nmemb, type) ((type *) allocchk(calloc((nmemb), sizeof(type)))) +#define ccalloc(nmemb, type) ((type *)allocchk(calloc((nmemb), sizeof(type)))) /// @brief Wrapper of ealloc(). -#define crealloc(ptr, nmemb) \ - ((__typeof__(ptr)) allocchk(realloc((ptr), (nmemb) * sizeof(*(ptr))))) +#define crealloc(ptr, nmemb) \ + ((__typeof__(ptr))allocchk(realloc((ptr), (nmemb) * sizeof(*(ptr))))) /// RC_TYPE generates a reference counted type from `type` /// @@ -148,38 +147,40 @@ allocchk_(const char *func_name, const char *file, unsigned int line, void *ptr) /// reference to the object /// `name`_unref: decrement the reference counter. take a `type **` /// because it needs to nullify the reference. -#define RC_TYPE(type, name, ctor, dtor, Q) \ -typedef struct { \ - type inner; \ - int ref_count; \ -} name##_internal_t; \ -typedef type name##_t; \ -Q type *name##_new(void) { \ - name##_internal_t *ret = cmalloc(name##_internal_t); \ - ctor((type *)ret); \ - ret->ref_count = 1; \ - return (type *)ret; \ -} \ -Q type *name##_ref(type *a) { \ - __auto_type b = (name##_internal_t *)a; \ - b->ref_count++; \ - return a; \ -} \ -Q void name##_unref(type **a) { \ - __auto_type b = (name##_internal_t *)*a; \ - if (!b) \ - return; \ - b->ref_count--; \ - if (!b->ref_count) {\ - dtor((type *)b); \ - free(b); \ - } \ - *a = NULL; \ -} +#define RC_TYPE(type, name, ctor, dtor, Q) \ + typedef struct { \ + type inner; \ + int ref_count; \ + } name##_internal_t; \ + typedef type name##_t; \ + Q type *name##_new(void) { \ + name##_internal_t *ret = cmalloc(name##_internal_t); \ + ctor((type *)ret); \ + ret->ref_count = 1; \ + return (type *)ret; \ + } \ + Q type *name##_ref(type *a) { \ + __auto_type b = (name##_internal_t *)a; \ + b->ref_count++; \ + return a; \ + } \ + Q void name##_unref(type **a) { \ + __auto_type b = (name##_internal_t *)*a; \ + if (!b) \ + return; \ + b->ref_count--; \ + if (!b->ref_count) { \ + dtor((type *)b); \ + free(b); \ + } \ + *a = NULL; \ + } /// Generate prototypes for functions generated by RC_TYPE -#define RC_TYPE_PROTO(type, name) \ -typedef type name##_t; \ -type *name##_new(void); \ -void name##_ref(type *a); \ -void name##_unref(type **a); +#define RC_TYPE_PROTO(type, name) \ + typedef type name##_t; \ + type *name##_new(void); \ + void name##_ref(type *a); \ + void name##_unref(type **a); + +// vim: set noet sw=8 ts=8 :