[gnoduino: 36/237] Added Printable interface class to allow printing of classes such as IPAddress



commit a40dd15f72f847d9bc015019b9752498fe75a281
Author: amcewen <amcewen bcs org uk>
Date:   Fri Apr 1 21:10:38 2011 +0100

    Added Printable interface class to allow printing of classes such as IPAddress

 arduino/cores/arduino/Print.cpp   |   11 +++++++++++
 arduino/cores/arduino/Print.h     |    3 +++
 arduino/cores/arduino/Printable.h |   32 ++++++++++++++++++++++++++++++++
 3 files changed, 46 insertions(+), 0 deletions(-)
---
diff --git a/arduino/cores/arduino/Print.cpp b/arduino/cores/arduino/Print.cpp
index 4ee556d..f5e77e0 100755
--- a/arduino/cores/arduino/Print.cpp
+++ b/arduino/cores/arduino/Print.cpp
@@ -101,6 +101,11 @@ void Print::print(double n, int digits)
   printFloat(n, digits);
 }
 
+void Print::print(const Printable& x)
+{
+  x.printTo(*this);
+}
+
 void Print::println(void)
 {
   print('\r');
@@ -161,6 +166,12 @@ void Print::println(double n, int digits)
   println();
 }
 
+void Print::println(const Printable& x)
+{
+  print(x);
+  println();
+}
+
 // Private Methods /////////////////////////////////////////////////////////////
 
 void Print::printNumber(unsigned long n, uint8_t base)
diff --git a/arduino/cores/arduino/Print.h b/arduino/cores/arduino/Print.h
index b092ae5..d2014bf 100755
--- a/arduino/cores/arduino/Print.h
+++ b/arduino/cores/arduino/Print.h
@@ -24,6 +24,7 @@
 #include <stdio.h> // for size_t
 
 #include "WString.h"
+#include "Printable.h"
 
 #define DEC 10
 #define HEX 16
@@ -50,6 +51,7 @@ class Print
     void print(long, int = DEC);
     void print(unsigned long, int = DEC);
     void print(double, int = 2);
+    void print(const Printable&);
 
     void println(const String &s);
     void println(const char[]);
@@ -60,6 +62,7 @@ class Print
     void println(long, int = DEC);
     void println(unsigned long, int = DEC);
     void println(double, int = 2);
+    void println(const Printable&);
     void println(void);
 };
 
diff --git a/arduino/cores/arduino/Printable.h b/arduino/cores/arduino/Printable.h
new file mode 100644
index 0000000..fc64858
--- /dev/null
+++ b/arduino/cores/arduino/Printable.h
@@ -0,0 +1,32 @@
+/*
+  Printable.h - Interface class that allows printing of complex types
+  Copyright (c) 2011 Adrian McEwen.  All right reserved.
+
+  This library is free software; you can redistribute it and/or
+  modify it under the terms of the GNU Lesser General Public
+  License as published by the Free Software Foundation; either
+  version 2.1 of the License, or (at your option) any later version.
+
+  This library is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+  Lesser General Public License for more details.
+
+  You should have received a copy of the GNU Lesser General Public
+  License along with this library; if not, write to the Free Software
+  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+
+#ifndef Printable_h
+#define Printable_h
+
+class Print;
+
+class Printable
+{
+  public:
+    virtual void printTo(Print& p) const =0;
+};
+
+#endif
+



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]