mirror of
https://github.com/arduino/Arduino.git
synced 2025-01-18 07:52:14 +01:00
Added virtual destructor to Printable, which also requires new and delete operators to be added
This commit is contained in:
parent
facbd279b6
commit
35a78b15ea
@ -20,6 +20,8 @@
|
|||||||
#ifndef Printable_h
|
#ifndef Printable_h
|
||||||
#define Printable_h
|
#define Printable_h
|
||||||
|
|
||||||
|
#include <new.h>
|
||||||
|
|
||||||
class Print;
|
class Print;
|
||||||
|
|
||||||
/** The Printable class provides a way for new classes to allow themselves to be printed.
|
/** The Printable class provides a way for new classes to allow themselves to be printed.
|
||||||
@ -31,6 +33,7 @@ class Print;
|
|||||||
class Printable
|
class Printable
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
virtual ~Printable() {};
|
||||||
virtual void printTo(Print& p) const =0;
|
virtual void printTo(Print& p) const =0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
18
hardware/arduino/cores/arduino/new.cpp
Normal file
18
hardware/arduino/cores/arduino/new.cpp
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
#include <new.h>
|
||||||
|
|
||||||
|
void * operator new(size_t size)
|
||||||
|
{
|
||||||
|
return malloc(size);
|
||||||
|
}
|
||||||
|
|
||||||
|
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) {};
|
||||||
|
|
22
hardware/arduino/cores/arduino/new.h
Normal file
22
hardware/arduino/cores/arduino/new.h
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
/* 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
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
void * operator new(size_t size);
|
||||||
|
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
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user