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