add INLINE macro for less mouthful static-inline declarations

This commit is contained in:
Andrei Alexeyev 2019-08-03 19:47:21 +03:00
parent f7b2031e7f
commit 583f0dbf26
No known key found for this signature in database
GPG key ID: 363707CD4C7FE8A4
9 changed files with 45 additions and 44 deletions

View file

@ -40,7 +40,7 @@ typedef enum EndingID {
ENDING(ENDING_BAD_2) \
ENDING(ENDING_BAD_3) \
static inline attr_must_inline bool ending_is_good(EndingID end) {
INLINE bool ending_is_good(EndingID end) {
#define ENDING(e) (end == (e)) ||
return (
GOOD_ENDINGS
@ -48,7 +48,7 @@ static inline attr_must_inline bool ending_is_good(EndingID end) {
#undef ENDING
}
static inline attr_must_inline bool ending_is_bad(EndingID end) {
INLINE bool ending_is_bad(EndingID end) {
#define ENDING(e) (end == (e)) ||
return (
BAD_ENDINGS

View file

@ -109,7 +109,7 @@ struct EntityInterface {
ENTITY_INTERFACE_BASE(EntityInterface);
};
static inline attr_must_inline const char* ent_type_name(EntityType type) {
INLINE const char* ent_type_name(EntityType type) {
switch(type) {
#define ENT_TYPE(typename, id) case id: return #id;
ENT_TYPES

View file

@ -31,7 +31,7 @@ void htutil_init(void);
* Hash function for 32-bit integers
* NOTE: assuming hash_t stays uint32_t, this function has no collisions.
*/
static inline attr_must_inline hash_t htutil_hashfunc_uint32(uint32_t x) {
INLINE hash_t htutil_hashfunc_uint32(uint32_t x) {
x = ((x >> 16) ^ x) * 0x45d9f3b;
x = ((x >> 16) ^ x) * 0x45d9f3b;
x = (x >> 16) ^ x;
@ -43,7 +43,7 @@ static inline attr_must_inline hash_t htutil_hashfunc_uint32(uint32_t x) {
*
* Hash function for 64-bit integers.
*/
static inline attr_must_inline hash_t htutil_hashfunc_uint64(uint64_t x) {
INLINE hash_t htutil_hashfunc_uint64(uint64_t x) {
x = (x ^ (x >> 30)) * UINT64_C(0xbf58476d1ce4e5b9);
x = (x ^ (x >> 27)) * UINT64_C(0x94d049bb133111eb);
x = x ^ (x >> 31);

View file

@ -18,7 +18,7 @@ static uint64_t prev_hires_time;
static uint64_t prev_hires_freq;
static uint64_t fast_path_mul;
static inline attr_must_inline void set_freq(uint64_t freq) {
INLINE void set_freq(uint64_t freq) {
prev_hires_freq = freq;
lldiv_t d = lldiv(HRTIME_RESOLUTION, freq);
fast_path_mul = d.quot * (d.rem == 0);

View file

@ -736,22 +736,22 @@ VertexAttribFormat* r_vertex_attrib_format_interleaved(
* Small convenience wrappers
*/
static inline attr_must_inline
INLINE
void r_enable(RendererCapability cap) {
r_capability(cap, true);
}
static inline attr_must_inline
INLINE
void r_disable(RendererCapability cap) {
r_capability(cap, false);
}
static inline attr_must_inline
INLINE
ShaderProgram* r_shader_get(const char *name) {
return get_resource_data(RES_SHADER_PROGRAM, name, RESF_DEFAULT | RESF_UNSAFE);
}
static inline attr_must_inline
INLINE
ShaderProgram* r_shader_get_optional(const char *name) {
ShaderProgram *prog = get_resource_data(RES_SHADER_PROGRAM, name, RESF_OPTIONAL | RESF_UNSAFE);
@ -762,86 +762,86 @@ ShaderProgram* r_shader_get_optional(const char *name) {
return prog;
}
static inline attr_must_inline
INLINE
Texture* r_texture_get(const char *name) {
return get_resource_data(RES_TEXTURE, name, RESF_DEFAULT | RESF_UNSAFE);
}
static inline attr_must_inline
INLINE
void r_mat_translate(float x, float y, float z) {
r_mat_translate_v((vec3) { x, y, z });
}
static inline attr_must_inline
INLINE
void r_mat_rotate(float angle, float nx, float ny, float nz) {
r_mat_rotate_v(angle, (vec3) { nx, ny, nz });
}
static inline attr_must_inline
INLINE
void r_mat_rotate_deg(float angle_degrees, float nx, float ny, float nz) {
r_mat_rotate_v(angle_degrees * 0.017453292519943295, (vec3) { nx, ny, nz });
}
static inline attr_must_inline
INLINE
void r_mat_rotate_deg_v(float angle_degrees, vec3 v) {
r_mat_rotate_v(angle_degrees * 0.017453292519943295, v);
}
static inline attr_must_inline
INLINE
void r_mat_scale(float sx, float sy, float sz) {
r_mat_scale_v((vec3) { sx, sy, sz });
}
static inline attr_must_inline
INLINE
void r_color(const Color *c) {
r_color4(c->r, c->g, c->b, c->a);
}
static inline attr_must_inline
INLINE
void r_color3(float r, float g, float b) {
r_color4(r, g, b, 1.0);
}
static inline attr_must_inline attr_nonnull(1)
INLINE attr_nonnull(1)
void r_shader(const char *prog) {
r_shader_ptr(r_shader_get(prog));
}
static inline attr_must_inline
INLINE
Uniform* r_shader_current_uniform(const char *name) {
return r_shader_uniform(r_shader_current(), name);
}
static inline attr_must_inline
INLINE
void r_clear(ClearBufferFlags flags, const Color *colorval, float depthval) {
r_framebuffer_clear(r_framebuffer_current(), flags, colorval, depthval);
}
static inline attr_must_inline attr_nonnull(1)
INLINE attr_nonnull(1)
void r_draw_model(const char *model) {
r_draw_model_ptr(get_resource_data(RES_MODEL, model, RESF_UNSAFE), 0, 0);
}
static inline attr_must_inline attr_nonnull(1)
INLINE attr_nonnull(1)
void r_draw_model_instanced(const char *model, uint instances, uint base_instance) {
r_draw_model_ptr(get_resource_data(RES_MODEL, model, RESF_UNSAFE), instances, base_instance);
}
static inline attr_must_inline
INLINE
r_capability_bits_t r_capability_bit(RendererCapability cap) {
r_capability_bits_t idx = cap;
assert(idx < NUM_RCAPS);
return (1 << idx);
}
static inline attr_must_inline
INLINE
r_feature_bits_t r_feature_bit(RendererFeature feat) {
r_feature_bits_t idx = feat;
assert(idx < NUM_RFEATS);
return (1 << idx);
}
static inline attr_must_inline
INLINE
bool r_supports(RendererFeature feature) {
return r_features() & r_feature_bit(feature);
}

View file

@ -257,11 +257,12 @@ typedef complex max_align_t;
#define attr_designated_init
#endif
#define INLINE static inline attr_must_inline __attribute__((gnu_inline, artificial))
#ifdef NDEBUG
#define _ensure_aligned(ptr, alignment) (ptr)
#else
static inline attr_must_inline
void* _ensure_aligned(void *ptr, size_t alignment) {
INLINE void *_ensure_aligned(void *ptr, size_t alignment) {
assert(((uintptr_t)ptr & (alignment - 1)) == 0);
return ptr;
}

View file

@ -17,13 +17,13 @@ void* memdup(const void *src, size_t size);
void inherit_missing_pointers(uint num, void *dest[num], void *const base[num]);
bool is_main_thread(void);
static inline attr_must_inline uint32_t float_to_bits(float f) {
INLINE uint32_t float_to_bits(float f) {
union { uint32_t i; float f; } u;
u.f = f;
return u.i;
}
static inline attr_must_inline float bits_to_float(uint32_t i) {
INLINE float bits_to_float(uint32_t i) {
union { uint32_t i; float f; } u;
u.i = i;
return u.f;

View file

@ -74,52 +74,52 @@ bool point_in_ellipse(complex p, Ellipse e) attr_const;
double lineseg_circle_intersect(LineSegment seg, Circle c) attr_const;
bool lineseg_ellipse_intersect(LineSegment seg, Ellipse e) attr_const;
static inline attr_must_inline attr_const
INLINE attr_const
double rect_x(Rect r) {
return creal(r.top_left);
}
static inline attr_must_inline attr_const
INLINE attr_const
double rect_y(Rect r) {
return cimag(r.top_left);
}
static inline attr_must_inline attr_const
INLINE attr_const
double rect_width(Rect r) {
return creal(r.bottom_right) - creal(r.top_left);
}
static inline attr_must_inline attr_const
INLINE attr_const
double rect_height(Rect r) {
return cimag(r.bottom_right) - cimag(r.top_left);
}
static inline attr_must_inline attr_const
INLINE attr_const
double rect_top(Rect r) {
return cimag(r.top_left);
}
static inline attr_must_inline attr_const
INLINE attr_const
double rect_bottom(Rect r) {
return cimag(r.bottom_right);
}
static inline attr_must_inline attr_const
INLINE attr_const
double rect_left(Rect r) {
return creal(r.top_left);
}
static inline attr_must_inline attr_const
INLINE attr_const
double rect_right(Rect r) {
return creal(r.bottom_right);
}
static inline attr_must_inline attr_const
INLINE attr_const
double rect_area(Rect r) {
return rect_width(r) * rect_height(r);
}
static inline attr_must_inline
INLINE
void rect_move(Rect *r, complex pos) {
complex vector = pos - r->top_left;
r->top_left += vector;

View file

@ -297,7 +297,7 @@ typedef struct int128_bits {
uint64_t lo;
} int128_bits_t;
static inline attr_must_inline attr_unused
INLINE attr_unused
void udiv_128_64(int128_bits_t divident, uint64_t divisor, uint64_t *out_quotient) {
/*
if(!divident.hi) {
@ -341,7 +341,7 @@ void udiv_128_64(int128_bits_t divident, uint64_t divisor, uint64_t *out_quotien
*out_quotient = quotient;
}
static inline attr_must_inline attr_unused
INLINE attr_unused
void umul_128_64(uint64_t multiplicant, uint64_t multiplier, int128_bits_t *result) {
#if defined(__GNUC__) && (defined(__x86_64) || defined(__x86_64__))
__asm__ (
@ -371,7 +371,7 @@ void umul_128_64(uint64_t multiplicant, uint64_t multiplier, int128_bits_t *resu
#endif
}
static inline attr_must_inline attr_unused
INLINE attr_unused
uint64_t _umuldiv64_slow(uint64_t x, uint64_t multiplier, uint64_t divisor) {
int128_bits_t intermediate;
uint64_t result;
@ -382,7 +382,7 @@ uint64_t _umuldiv64_slow(uint64_t x, uint64_t multiplier, uint64_t divisor) {
#include "util.h"
static inline attr_must_inline
INLINE
uint64_t _umuldiv64(uint64_t x, uint64_t multiplier, uint64_t divisor) {
#if defined(TAISEI_BUILDCONF_HAVE_INT128)
__extension__ typedef unsigned __int128 uint128_t;