#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 |