diff options
| author | bnewbold <bnewbold@robocracy.org> | 2010-03-31 08:52:45 +0800 | 
|---|---|---|
| committer | iperry <iperry@gmail.com> | 2010-03-31 09:43:10 +0800 | 
| commit | 1d3861ef93f8423176c6010ab606abdab00a7cbd (patch) | |
| tree | 5c95101e295bcfdd7f9f4292ce9204ddf7e7f662 /src/wiring/Print.cpp | |
| parent | 8d6bf3b196c2a0bc1adda4a04669e54fdc5b65cb (diff) | |
| download | librambutan-1d3861ef93f8423176c6010ab606abdab00a7cbd.tar.gz librambutan-1d3861ef93f8423176c6010ab606abdab00a7cbd.zip | |
Major hierarchy reorganization; see README.
copy-to-ide and Makefile updated to conform; .gitignore added;
LICENSE added
Diffstat (limited to 'src/wiring/Print.cpp')
| -rw-r--r-- | src/wiring/Print.cpp | 215 | 
1 files changed, 0 insertions, 215 deletions
| diff --git a/src/wiring/Print.cpp b/src/wiring/Print.cpp deleted file mode 100644 index efe3eef..0000000 --- a/src/wiring/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_t *buffer, size_t size) -{ -  while (size--) -    write(*buffer++); -} - -void Print::print(uint8_t 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_t 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_t 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_t 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_t 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; -  } -} | 
