Printable interface
parent
31513b6310
commit
9196e4c40a
|
@ -9,3 +9,70 @@ size_t Print::write(const uint8_t *buffer, size_t size)
|
|||
}
|
||||
return n;
|
||||
}
|
||||
|
||||
size_t Print::print(int i)
|
||||
{
|
||||
size_t len = 0;
|
||||
if (i < 0) len += print('-');
|
||||
i = (unsigned int) i << 1;
|
||||
i = (unsigned int) i >> 1;
|
||||
len += printNumber(i, 10);
|
||||
}
|
||||
|
||||
size_t Print::print(const Printable& x)
|
||||
{
|
||||
return x.printTo(*this);
|
||||
}
|
||||
|
||||
size_t Print::println(void)
|
||||
{
|
||||
return write("\r\n");
|
||||
}
|
||||
|
||||
size_t Print::println(const char* str)
|
||||
{
|
||||
size_t n = print(str);
|
||||
n += println();
|
||||
return n;
|
||||
}
|
||||
|
||||
size_t Print::println(char c)
|
||||
{
|
||||
size_t n = print(c);
|
||||
n += println();
|
||||
return n;
|
||||
}
|
||||
|
||||
size_t Print::println(int i)
|
||||
{
|
||||
size_t n = print(i);
|
||||
n += println();
|
||||
return n;
|
||||
}
|
||||
|
||||
size_t Print::println(const Printable& x)
|
||||
{
|
||||
size_t n = x.printTo(*this);
|
||||
n += println();
|
||||
return n;
|
||||
}
|
||||
|
||||
size_t Print::printNumber(unsigned long n, uint8_t base)
|
||||
{
|
||||
char buf[8 * sizeof(long) + 1]; // Assumes 8-bit chars plus zero byte.
|
||||
char *str = &buf[sizeof(buf) - 1];
|
||||
|
||||
*str = '\0';
|
||||
|
||||
// prevent crash if called with base == 1
|
||||
if (base < 2) base = 10;
|
||||
|
||||
do {
|
||||
char c = n % base;
|
||||
n /= base;
|
||||
|
||||
*--str = c < 10 ? c + '0' : c + 'A' - 10;
|
||||
} while(n);
|
||||
|
||||
return write(str);
|
||||
}
|
||||
|
|
14
test/Print.h
14
test/Print.h
|
@ -2,6 +2,7 @@
|
|||
#include "stdlib.h"
|
||||
#include "stdint.h"
|
||||
#include "string.h"
|
||||
#include "Printable.h"
|
||||
|
||||
class Print
|
||||
{
|
||||
|
@ -19,4 +20,17 @@ class Print
|
|||
virtual int availableForWrite() { return 0; }
|
||||
|
||||
virtual void flush() {}
|
||||
|
||||
size_t print(const char* str) { return write(str); }
|
||||
size_t print(char c ) { return write(c); }
|
||||
size_t print(int);
|
||||
size_t print(const Printable&);
|
||||
|
||||
size_t println(void);
|
||||
size_t println(const char* );
|
||||
size_t println(char);
|
||||
size_t println(int);
|
||||
size_t println(const Printable&);
|
||||
|
||||
size_t printNumber(unsigned long n, uint8_t base);
|
||||
};
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
#pragma once
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
class Print;
|
||||
|
||||
class Printable {
|
||||
public:
|
||||
virtual size_t printTo(Print& p) const = 0;
|
||||
};
|
Loading…
Reference in New Issue