[gnoduino: 38/237] Added virtual destructor to Printable, which also requires new and delete operators to be added
- From: Lucian Langa <lucilanga src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnoduino: 38/237] Added virtual destructor to Printable, which also requires new and delete operators to be added
- Date: Sat, 31 Mar 2012 20:18:01 +0000 (UTC)
commit d29d87af045294f6e33b1bad0adae8d958411581
Author: amcewen <amcewen bcs org uk>
Date: Sun Apr 10 11:34:40 2011 +0100
Added virtual destructor to Printable, which also requires new and delete operators to be added
arduino/cores/arduino/Printable.h | 3 +++
arduino/cores/arduino/new.cpp | 18 ++++++++++++++++++
arduino/cores/arduino/new.h | 22 ++++++++++++++++++++++
3 files changed, 43 insertions(+), 0 deletions(-)
---
diff --git a/arduino/cores/arduino/Printable.h b/arduino/cores/arduino/Printable.h
index e5d7732..5ff6077 100644
--- a/arduino/cores/arduino/Printable.h
+++ b/arduino/cores/arduino/Printable.h
@@ -20,6 +20,8 @@
#ifndef Printable_h
#define Printable_h
+#include <new.h>
+
class Print;
/** The Printable class provides a way for new classes to allow themselves to be printed.
@@ -31,6 +33,7 @@ class Print;
class Printable
{
public:
+ virtual ~Printable() {};
virtual void printTo(Print& p) const =0;
};
diff --git a/arduino/cores/arduino/new.cpp b/arduino/cores/arduino/new.cpp
new file mode 100644
index 0000000..0f6d422
--- /dev/null
+++ b/arduino/cores/arduino/new.cpp
@@ -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) {};
+
diff --git a/arduino/cores/arduino/new.h b/arduino/cores/arduino/new.h
new file mode 100644
index 0000000..cd940ce
--- /dev/null
+++ b/arduino/cores/arduino/new.h
@@ -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
+
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]