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