8 #ifndef _RNBO_PlatformInterface_H_
9 #define _RNBO_PlatformInterface_H_
13 #if !defined(RNBO_PLATFORM_ASSERT_WARN)
15 #define RNBO_PLATFORM_ASSERT_WARN 0
17 #define RNBO_PLATFORM_ASSERT_WARN 1
21 #if !defined(RNBO_PLATFORM_ERROR_WARN)
23 #define RNBO_PLATFORM_ERROR_WARN 0
25 #define RNBO_PLATFORM_ERROR_WARN 1
42 class PlatformInterface;
44 using PlatformInterfacePtr = PlatformInterface*;
69 theInstance = platformInterface;
74 enum class RuntimeError {
86 void resetWarnings() {
87 #if RNBO_PLATFORM_ERROR_WARN==1
90 #if RNBO_PLATFORM_ASSERT_WARN==1
91 mAssertWarned =
false;
129 virtual void*
calloc(
size_t num,
size_t size) = 0;
141 virtual void*
realloc(
void* ptr,
size_t bytes) = 0;
148 virtual void free(
void* ptr) = 0;
161 virtual void*
memcpy(
void* dest,
const void* src,
size_t n) = 0;
175 virtual void*
memmove(
void* dest,
const void* src,
size_t n) = 0;
186 virtual void*
memset(
void *dest,
int value,
size_t n) = 0;
195 virtual size_t strlen(
const char* s) = 0;
207 virtual int strcmp(
const char* s1,
const char* s2) = 0;
217 virtual char*
strcpy(
char* dest,
const char* src) = 0;
220 virtual void toString(
char* str,
size_t maxlen,
number val) = 0;
221 virtual void toString(
char* str,
size_t maxlen,
int val) = 0;
222 virtual void toString(
char* str,
size_t maxlen,
unsigned int val) = 0;
223 virtual void toString(
char* str,
size_t maxlen,
long val) = 0;
224 virtual void toString(
char* str,
size_t maxlen,
long long val) = 0;
225 virtual void toString(
char* str,
size_t maxlen,
unsigned long val) = 0;
226 virtual void toString(
char* str,
size_t maxlen,
unsigned long long val) = 0;
227 virtual void toString(
char* str,
size_t maxlen,
void* val) = 0;
229 virtual void abort() = 0;
234 virtual void error(RuntimeError e,
const char* str) = 0;
241 template <
typename T>
242 T errorOrDefault(RuntimeError e,
const char* str, T def) {
243 #if RNBO_PLATFORM_ERROR_WARN==1
246 if (once(mErrorWarned)) {
255 template <
typename T>
256 T assertTrueOrDefault(
bool v,
const char* str, T def) {
257 #if RNBO_PLATFORM_ASSERT_WARN==1
259 if (!v && once(mAssertWarned)) {
268 #if RNBO_PLATFORM_ASSERT_WARN==1 || RNBO_PLATFORM_ERROR_WARN==1
275 #if RNBO_PLATFORM_ASSERT_WARN==1
276 bool mAssertWarned =
false;
278 #if RNBO_PLATFORM_ERROR_WARN==1
279 bool mErrorWarned =
false;
285 #endif // #ifndef _RNBO_PlatformInterface_H_