bzr branch
http://bzr.ed.am/elec/propeller-clock
59
by edam
removed ulibc, fixed button, added text rendering |
1 |
/* |
2 |
PString.cpp - Lightweight printable string class |
|
3 |
Copyright (c) 2009-2012 Mikal Hart. All right reserved. |
|
4 |
||
5 |
This library is free software; you can redistribute it and/or |
|
6 |
modify it under the terms of the GNU Lesser General Public |
|
7 |
License as published by the Free Software Foundation; either |
|
8 |
version 2.1 of the License, or (at your option) any later version. |
|
9 |
||
10 |
This library is distributed in the hope that it will be useful, |
|
11 |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
12 |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
13 |
Lesser General Public License for more details. |
|
14 |
||
15 |
You should have received a copy of the GNU Lesser General Public |
|
16 |
License along with this library; if not, write to the Free Software |
|
17 |
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
|
18 |
*/ |
|
19 |
||
20 |
#include "PString.h" |
|
21 |
#include "Arduino.h" |
|
22 |
||
23 |
void PString::begin() |
|
24 |
{ |
|
25 |
_cur = _buf; |
|
26 |
if (_size > 0) |
|
27 |
_buf[0] = '\0'; |
|
28 |
} |
|
29 |
||
30 |
void PString::begin(char *buf, size_t size) |
|
31 |
{ |
|
32 |
_buf = buf; |
|
33 |
_size = size; |
|
34 |
_cur = _buf + strlen(_buf); |
|
35 |
} |
|
36 |
||
37 |
#if defined(ARDUINO) && ARDUINO >= 100 |
|
38 |
size_t PString::write(uint8_t b) |
|
39 |
#else |
|
40 |
void PString::write(uint8_t b) |
|
41 |
#endif |
|
42 |
{ |
|
43 |
if (_cur + 1 < _buf + _size) |
|
44 |
{ |
|
45 |
*_cur++ = (char)b; |
|
46 |
*_cur = '\0'; |
|
47 |
#if defined(ARDUINO) && ARDUINO >= 100 |
|
48 |
return 1; |
|
49 |
#endif |
|
50 |
} |
|
51 |
||
52 |
#if defined(ARDUINO) && ARDUINO >= 100 |
|
53 |
return 0; |
|
54 |
#endif |
|
55 |
} |
|
56 |
||
57 |
int PString::format(char *str, ...) |
|
58 |
{ |
|
59 |
va_list argptr; |
|
60 |
va_start(argptr, str); |
|
61 |
int ret = vsnprintf(_cur, _size - (_cur - _buf), str, argptr); |
|
62 |
if (_size) |
|
63 |
while (*_cur) |
|
64 |
++_cur; |
|
65 |
return ret; |
|
66 |
} |
|
67 |
||
68 |