2018-09-26 17:39:17 +00:00
|
|
|
#include <stdarg.h>
|
2019-06-02 07:20:10 +00:00
|
|
|
#include <stddef.h>
|
2016-09-30 06:18:51 +00:00
|
|
|
|
2017-01-26 10:20:30 +00:00
|
|
|
#pragma once
|
2016-10-04 22:05:34 +00:00
|
|
|
|
2019-05-20 09:47:33 +00:00
|
|
|
#define LOVR_VERSION_MAJOR 0
|
2019-10-15 01:21:07 +00:00
|
|
|
#define LOVR_VERSION_MINOR 13
|
2019-05-20 09:47:33 +00:00
|
|
|
#define LOVR_VERSION_PATCH 0
|
2019-10-15 01:21:07 +00:00
|
|
|
#define LOVR_VERSION_ALIAS "Very Velociraptor"
|
2019-05-20 09:47:33 +00:00
|
|
|
|
2019-01-04 10:18:21 +00:00
|
|
|
#ifdef _WIN32
|
|
|
|
#define LOVR_EXPORT __declspec(dllexport)
|
2019-05-20 11:05:39 +00:00
|
|
|
#define LOVR_NORETURN __declspec(noreturn)
|
|
|
|
#define LOVR_THREAD_LOCAL __declspec(thread)
|
2019-06-03 03:35:52 +00:00
|
|
|
#define LOVR_ALIGN(n) __declspec(align(n))
|
2019-06-03 13:27:41 +00:00
|
|
|
#define LOVR_INLINE __inline
|
2019-12-05 21:39:04 +00:00
|
|
|
#define LOVR_RESTRICT __restrict
|
2019-01-04 10:18:21 +00:00
|
|
|
#else
|
2019-04-20 23:17:49 +00:00
|
|
|
#define LOVR_EXPORT __attribute__((visibility("default")))
|
2019-05-20 11:05:39 +00:00
|
|
|
#define LOVR_NORETURN __attribute__((noreturn))
|
|
|
|
#define LOVR_THREAD_LOCAL __thread
|
2019-06-03 03:35:52 +00:00
|
|
|
#define LOVR_ALIGN(n) __attribute__((aligned(n)))
|
2019-06-03 13:27:41 +00:00
|
|
|
#define LOVR_INLINE inline
|
2019-12-05 21:39:04 +00:00
|
|
|
#define LOVR_RESTRICT restrict
|
2019-01-18 16:44:03 +00:00
|
|
|
#endif
|
2018-12-13 03:35:18 +00:00
|
|
|
|
2019-06-21 04:43:40 +00:00
|
|
|
#ifndef M_PI
|
|
|
|
#define M_PI 3.14159265358979
|
|
|
|
#endif
|
|
|
|
|
2018-09-27 18:45:43 +00:00
|
|
|
#define MAX(a, b) (a > b ? a : b)
|
|
|
|
#define MIN(a, b) (a < b ? a : b)
|
|
|
|
#define CLAMP(x, min, max) MAX(min, MIN(max, x))
|
2019-04-21 01:42:25 +00:00
|
|
|
#define ALIGN(p, n) ((uintptr_t) (p) & -n)
|
2019-05-20 11:15:24 +00:00
|
|
|
#define CHECK_SIZEOF(T) int(*_o)[sizeof(T)]=1
|
2018-11-25 02:04:27 +00:00
|
|
|
|
2019-04-05 12:08:03 +00:00
|
|
|
typedef struct Color { float r, g, b, a; } Color;
|
2017-08-02 08:25:56 +00:00
|
|
|
|
2019-06-02 07:20:10 +00:00
|
|
|
typedef void errorFn(void*, const char*, va_list);
|
|
|
|
|
|
|
|
extern LOVR_THREAD_LOCAL errorFn* lovrErrorCallback;
|
2019-05-20 11:05:39 +00:00
|
|
|
extern LOVR_THREAD_LOCAL void* lovrErrorUserdata;
|
2017-08-10 07:08:29 +00:00
|
|
|
|
2019-06-02 07:20:10 +00:00
|
|
|
void lovrSetErrorCallback(errorFn* callback, void* context);
|
2019-05-20 11:05:39 +00:00
|
|
|
void LOVR_NORETURN lovrThrow(const char* format, ...);
|
2019-04-05 09:50:11 +00:00
|
|
|
|
|
|
|
#define lovrAssert(c, ...) if (!(c)) { lovrThrow(__VA_ARGS__); }
|