| #ifndef Printable_h | #ifndef Printable_h | ||||
| #define Printable_h | #define Printable_h | ||||
| #ifdef __cplusplus | |||||
| #include "new.h" | #include "new.h" | ||||
| class Print; | class Print; | ||||
| #endif | #endif | ||||
| #endif | #endif | ||||
| #endif |
| #include <new.h> | |||||
| #include "new.h" | |||||
| void * operator new(size_t size) | void * operator new(size_t size) | ||||
| { | { | ||||
| return malloc(size); | return malloc(size); | ||||
| } | } | ||||
| void * operator new[](size_t size) | |||||
| { | |||||
| return malloc(size); | |||||
| } | |||||
| void operator delete(void * ptr) | void operator delete(void * ptr) | ||||
| { | { | ||||
| free(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) {}; | |||||
| #ifndef NEW_H | #ifndef NEW_H | ||||
| #define NEW_H | #define NEW_H | ||||
| #ifdef __cplusplus | |||||
| #include <stdlib.h> | #include <stdlib.h> | ||||
| void * operator new(size_t size); | 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__))); | __extension__ typedef int __guard __attribute__((mode (__DI__))); | ||||
| extern "C" int __cxa_guard_acquire(__guard *); | extern "C" int __cxa_guard_acquire(__guard *); | ||||
| extern "C" void __cxa_guard_release (__guard *); | extern "C" void __cxa_guard_release (__guard *); | ||||
| extern "C" void __cxa_guard_abort (__guard *); | extern "C" void __cxa_guard_abort (__guard *); | ||||
| extern "C" void __cxa_pure_virtual(void); | extern "C" void __cxa_pure_virtual(void); | ||||
| #endif | |||||
| #endif // __cplusplus | |||||
| #endif |
| #ifdef __cplusplus | #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; | class Print; | ||||
| #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) {}; | |||||
| /* 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 |