diff options
author | Perry Hung <iperry@alum.mit.edu> | 2010-04-25 18:08:56 -0400 |
---|---|---|
committer | Perry Hung <iperry@alum.mit.edu> | 2010-04-25 18:08:56 -0400 |
commit | 62552a6f3f93223682f9df2df2614411f7e3d54c (patch) | |
tree | 05f71e01c98ac341c029b2a050b796f1be3de8b5 /core/Print.cpp | |
parent | 7ea059f945003c90ab56b1e6f762df9ae29ddf3c (diff) | |
download | librambutan-62552a6f3f93223682f9df2df2614411f7e3d54c.tar.gz librambutan-62552a6f3f93223682f9df2df2614411f7e3d54c.zip |
Refactoring:
The 'core' directory has now been renamed to 'wirish.' Wirish is our
version of the Arduino Wiring language.
Diffstat (limited to 'core/Print.cpp')
-rw-r--r-- | core/Print.cpp | 215 |
1 files changed, 0 insertions, 215 deletions
diff --git a/core/Print.cpp b/core/Print.cpp deleted file mode 100644 index da461ae..0000000 --- a/core/Print.cpp +++ /dev/null @@ -1,215 +0,0 @@ -/* - Print.cpp - Base class that provides print() and println() - Copyright (c) 2008 David A. Mellis. 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 - - Modified 23 November 2006 by David A. Mellis - */ - -#include <stdio.h> -#include <string.h> -#include <math.h> -#include "wiring.h" - -#include "Print.h" - -// Public Methods ////////////////////////////////////////////////////////////// - -/* default implementation: may be overridden */ -void Print::write(const char *str) -{ - while (*str) - write(*str++); -} - -/* default implementation: may be overridden */ -void Print::write(const uint8 *buffer, uint32 size) -{ - while (size--) - write(*buffer++); -} - -void Print::print(uint8 b) -{ - this->write(b); -} - -void Print::print(char c) -{ - print((byte) c); -} - -void Print::print(const char str[]) -{ - write(str); -} - -void Print::print(int n) -{ - print((long) n); -} - -void Print::print(unsigned int n) -{ - print((unsigned long) n); -} - -void Print::print(long n) -{ - if (n < 0) { - print('-'); - n = -n; - } - printNumber(n, 10); -} - -void Print::print(unsigned long n) -{ - printNumber(n, 10); -} - -void Print::print(long n, int base) -{ - if (base == 0) - print((char) n); - else if (base == 10) - print(n); - else - printNumber(n, base); -} - -void Print::print(double n) -{ - printFloat(n, 2); -} - -void Print::println(void) -{ - print('\r'); - print('\n'); -} - -void Print::println(char c) -{ - print(c); - println(); -} - -void Print::println(const char c[]) -{ - print(c); - println(); -} - -void Print::println(uint8 b) -{ - print(b); - println(); -} - -void Print::println(int n) -{ - print(n); - println(); -} - -void Print::println(unsigned int n) -{ - print(n); - println(); -} - -void Print::println(long n) -{ - print(n); - println(); -} - -void Print::println(unsigned long n) -{ - print(n); - println(); -} - -void Print::println(long n, int base) -{ - print(n, base); - println(); -} - -void Print::println(double n) -{ - print(n); - println(); -} - -// Private Methods ///////////////////////////////////////////////////////////// - -void Print::printNumber(unsigned long n, uint8 base) -{ - unsigned char buf[8 * sizeof(long)]; // Assumes 8-bit chars. - unsigned long i = 0; - - if (n == 0) { - print('0'); - return; - } - - while (n > 0) { - buf[i++] = n % base; - n /= base; - } - - for (; i > 0; i--) - print((char) (buf[i - 1] < 10 ? - '0' + buf[i - 1] : - 'A' + buf[i - 1] - 10)); -} - -void Print::printFloat(double number, uint8 digits) -{ - // Handle negative numbers - if (number < 0.0) - { - print('-'); - number = -number; - } - - // Round correctly so that print(1.999, 2) prints as "2.00" - double rounding = 0.5; - for (uint8 i=0; i<digits; ++i) - rounding /= 10.0; - - number += rounding; - - // Extract the integer part of the number and print it - unsigned long int_part = (unsigned long)number; - double remainder = number - (double)int_part; - print(int_part); - - // Print the decimal point, but only if there are digits beyond - if (digits > 0) - print("."); - - // Extract digits from the remainder one at a time - while (digits-- > 0) - { - remainder *= 10.0; - int toPrint = int(remainder); - print(toPrint); - remainder -= toPrint; - } -} |