2017-03-11 10:19:33 +00:00
|
|
|
#include "lib/vec/vec.h"
|
2018-02-23 05:01:34 +00:00
|
|
|
#include "lib/tinycthread/tinycthread.h"
|
2017-08-02 08:25:56 +00:00
|
|
|
#include <stdint.h>
|
2017-01-22 02:00:32 +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
|
|
|
|
2017-08-10 07:08:29 +00:00
|
|
|
#define lovrAssert(c, ...) if (!(c)) { lovrThrow(__VA_ARGS__); }
|
2018-07-25 02:14:29 +00:00
|
|
|
#define lovrAlloc(T, destructor) (T*) _lovrAlloc(#T, sizeof(T), destructor)
|
2016-11-14 23:48:17 +00:00
|
|
|
|
2017-01-22 02:00:32 +00:00
|
|
|
typedef vec_t(unsigned int) vec_uint_t;
|
2016-11-19 07:41:23 +00:00
|
|
|
|
|
|
|
typedef struct ref {
|
|
|
|
int count;
|
2018-07-25 02:14:29 +00:00
|
|
|
const char* type;
|
|
|
|
void (*free)(void*);
|
2016-11-19 07:41:23 +00:00
|
|
|
} Ref;
|
|
|
|
|
2017-08-02 08:25:56 +00:00
|
|
|
typedef struct {
|
2017-11-21 05:47:25 +00:00
|
|
|
float r, g, b, a;
|
2017-08-02 08:25:56 +00:00
|
|
|
} Color;
|
|
|
|
|
2018-04-26 03:07:28 +00:00
|
|
|
extern _Thread_local void* lovrErrorContext;
|
2017-08-10 07:08:29 +00:00
|
|
|
|
|
|
|
void lovrThrow(const char* format, ...);
|
2016-11-26 07:32:48 +00:00
|
|
|
void lovrSleep(double seconds);
|
2018-07-25 02:14:29 +00:00
|
|
|
void* _lovrAlloc(const char* type, size_t size, void (*destructor)(void*));
|
2018-02-26 08:59:03 +00:00
|
|
|
void lovrRetain(void* object);
|
|
|
|
void lovrRelease(void* object);
|
2018-07-07 20:54:53 +00:00
|
|
|
void* lovrLoadLibrary(const char* filename);
|
|
|
|
void* lovrLoadSymbol(void* library, const char* symbol);
|
|
|
|
void lovrCloseLibrary(void* library);
|
2017-02-06 09:54:11 +00:00
|
|
|
size_t utf8_decode(const char *s, const char *e, unsigned *pch);
|
2018-03-21 21:48:46 +00:00
|
|
|
uint32_t nextPo2(uint32_t x);
|