C++ API Reference RNBO: src/platforms/stdlib/RNBO_PlatformInterfaceStdLib.h Source File

RNBO: src/platforms/stdlib/RNBO_PlatformInterfaceStdLib.h Source File

1 #ifndef RNBO_PLATFORM_INTERFACE_STD_H
2 #define RNBO_PLATFORM_INTERFACE_STD_H
3 
4 #include "RNBO_PlatformInterface.h"
5 #include "src/RNBO_DynamicSymbolRegistry.h"
6 
7 #include <iostream>
8 #include <cstring>
9 
10 namespace RNBO {
11 
13  {
14  public:
16  {
17  Platform::set(this);
18  }
19 
20  ~PlatformInterfaceStdLib() override
21  {
22 
23  }
24 
25  void printMessage(const char* message) override
26  {
27  std::cout << message << std::endl;
28  }
29 
30  // memory allocation
31  void* malloc(size_t bytes) override
32  {
33  return ::malloc(bytes);
34  }
35 
36  void* calloc(size_t num, size_t size) override
37  {
38  return ::calloc(num, size);
39  }
40 
41  void* realloc(void* ptr, size_t bytes) override
42  {
43  //::realloc doesn't like zero sized allocations
44  if (bytes == 0) {
45  if (ptr)
46  ::free(ptr);
47  return nullptr;
48  }
49  return ::realloc(ptr, bytes);
50  }
51 
52  void free(void* ptr) override
53  {
54  return ::free(ptr);
55  }
56 
57  void* memcpy(void* dest, const void* src, size_t n) override
58  {
59  return ::memcpy(dest, src, n);
60  }
61 
62  void* memmove(void* dest, const void* src, size_t n) override
63  {
64  return ::memmove(dest, src, n);
65  }
66 
67  void* memset(void *dest, int value, size_t n) override
68  {
69  return ::memset(dest, value, n);
70  }
71 
72  size_t strlen(const char *s) override
73  {
74  return ::strlen(s);
75  }
76 
77  int strcmp(const char* s1, const char* s2) override
78  {
79  return ::strcmp(s1, s2);
80  }
81 
82  char *strcpy(char *dest, const char *src) override
83  {
84  return ::strcpy(dest, src);
85  }
86 
87  // string formatting
88  void toString(char* str, size_t maxlen, number val) override
89  {
90  snprintf(str, maxlen, "%f", double(val));
91  }
92 
93  void toString(char* str, size_t maxlen, int val) override
94  {
95  snprintf(str, maxlen, "%d", val);
96  }
97 
98  void toString(char* str, size_t maxlen, unsigned int val) override
99  {
100  snprintf(str, maxlen, "%u", val);
101  }
102 
103  void toString(char* str, size_t maxlen, long val) override
104  {
105  snprintf(str, maxlen, "%ld", val);
106  }
107 
108  void toString(char* str, size_t maxlen, long long val) override
109  {
110  snprintf(str, maxlen, "%lld", val);
111  }
112 
113  void toString(char* str, size_t maxlen, unsigned long val) override
114  {
115  snprintf(str, maxlen, "%lu", val);
116  }
117 
118  void toString(char* str, size_t maxlen, unsigned long long val) override
119  {
120  snprintf(str, maxlen, "%llu", val);
121  }
122 
123  void toString(char* str, size_t maxlen, void* val) override
124  {
125  snprintf(str, maxlen, "%p", val);
126  }
127 
128  void abort() override {
129  ::abort();
130  }
131 
132  void error(RuntimeError e, const char* msg) override {
133  switch (e) {
134  case RuntimeError::OutOfRange:
135  throw std::out_of_range(msg);
136  default:
137  throw std::runtime_error(msg);
138  }
139  }
140 
141  void assertTrue(bool v, const char* msg) override {
142  if (!v) {
143  throw std::runtime_error(msg);
144  }
145  }
146  };
147 
148 } // namespace RNBO
149 
150 #endif