| @@ -21,6 +21,8 @@ | |||
| #ifndef Printable_h | |||
| #define Printable_h | |||
| #ifdef __cplusplus | |||
| #include "new.h" | |||
| class Print; | |||
| @@ -38,3 +40,4 @@ class Printable | |||
| #endif | |||
| #endif | |||
| #endif | |||
| @@ -1,18 +1,28 @@ | |||
| #include <new.h> | |||
| #include "new.h" | |||
| void * operator new(size_t size) | |||
| { | |||
| return malloc(size); | |||
| } | |||
| void * operator new[](size_t size) | |||
| { | |||
| return malloc(size); | |||
| } | |||
| void operator delete(void * ptr) | |||
| { | |||
| free(ptr); | |||
| } | |||
| } | |||
| void operator delete[](void * ptr) | |||
| { | |||
| free(ptr); | |||
| } | |||
| int __cxa_guard_acquire(__guard *g) {return !*(char *)(g);}; | |||
| void __cxa_guard_release (__guard *g) {*(char *)g = 1;}; | |||
| void __cxa_guard_abort (__guard *) {}; | |||
| //int __cxa_guard_acquire(__guard *g) {return !*(char *)(g);}; | |||
| //void __cxa_guard_release (__guard *g) {*(char *)g = 1;}; | |||
| //void __cxa_guard_abort (__guard *) {}; | |||
| void __cxa_pure_virtual(void) {}; | |||
| //void __cxa_pure_virtual(void) {}; | |||
| @@ -5,18 +5,22 @@ | |||
| #ifndef NEW_H | |||
| #define NEW_H | |||
| #ifdef __cplusplus | |||
| #include <stdlib.h> | |||
| void * operator new(size_t size); | |||
| void operator delete(void * ptr); | |||
| void * operator new[](size_t size); | |||
| void operator delete(void * ptr); | |||
| void operator delete[](void * ptr); | |||
| __extension__ typedef int __guard __attribute__((mode (__DI__))); | |||
| extern "C" int __cxa_guard_acquire(__guard *); | |||
| extern "C" void __cxa_guard_release (__guard *); | |||
| extern "C" void __cxa_guard_abort (__guard *); | |||
| extern "C" void __cxa_pure_virtual(void); | |||
| #endif | |||
| #endif // __cplusplus | |||
| #endif | |||
| @@ -22,20 +22,7 @@ | |||
| #ifdef __cplusplus | |||
| #include <stdlib.h> | |||
| inline void * operator new(unsigned int size) __attribute__((always_inline, unused)); | |||
| inline void * operator new(unsigned int size) | |||
| { | |||
| return malloc(size); | |||
| } | |||
| inline void operator delete(void * ptr) __attribute__((always_inline, unused)); | |||
| inline void operator delete(void * ptr) | |||
| { | |||
| free(ptr); | |||
| } | |||
| #include "new.h" | |||
| class Print; | |||
| @@ -0,0 +1,28 @@ | |||
| #include "new.h" | |||
| void * operator new(size_t size) | |||
| { | |||
| return malloc(size); | |||
| } | |||
| void * operator new[](size_t size) | |||
| { | |||
| return malloc(size); | |||
| } | |||
| void operator delete(void * ptr) | |||
| { | |||
| free(ptr); | |||
| } | |||
| void operator delete[](void * ptr) | |||
| { | |||
| free(ptr); | |||
| } | |||
| //int __cxa_guard_acquire(__guard *g) {return !*(char *)(g);}; | |||
| //void __cxa_guard_release (__guard *g) {*(char *)g = 1;}; | |||
| //void __cxa_guard_abort (__guard *) {}; | |||
| //void __cxa_pure_virtual(void) {}; | |||
| @@ -0,0 +1,26 @@ | |||
| /* Header to define new/delete operators as they aren't provided by avr-gcc by default | |||
| Taken from http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=59453 | |||
| */ | |||
| #ifndef NEW_H | |||
| #define NEW_H | |||
| #ifdef __cplusplus | |||
| #include <stdlib.h> | |||
| void * operator new(size_t size); | |||
| void * operator new[](size_t size); | |||
| void operator delete(void * ptr); | |||
| void operator delete[](void * ptr); | |||
| __extension__ typedef int __guard __attribute__((mode (__DI__))); | |||
| extern "C" int __cxa_guard_acquire(__guard *); | |||
| extern "C" void __cxa_guard_release (__guard *); | |||
| extern "C" void __cxa_guard_abort (__guard *); | |||
| extern "C" void __cxa_pure_virtual(void); | |||
| #endif // __cplusplus | |||
| #endif | |||