1 #ifndef LIBPROPELLER_PRINTSTREAM_H_ 2 #define LIBPROPELLER_PRINTSTREAM_H_ 4 #include "libpropeller/numbers/numbers.h" 5 #include "libpropeller/streaminterface/streaminterface.h" 11 template<
class OutputType>
61 int Format(
const char * formatString, ...) {
63 va_start(list, formatString);
64 int result =
Format(formatString, list);
78 int Format(
const char * formatString, va_list list) {
79 if (formatString == NULL) {
85 for (
int stringIndex = 0; formatString[stringIndex] != 0; stringIndex++) {
87 if (formatString[stringIndex] ==
'%') {
93 if (formatString[stringIndex] ==
'0') {
97 if (formatString[stringIndex] >=
'1' and formatString[stringIndex] <=
'9') {
98 char paddingBuffer[5];
119 while (formatString[stringIndex] >=
'0' and formatString[stringIndex] <=
'9') {
120 paddingBuffer[paddingIndex++] = formatString[stringIndex];
124 paddingBuffer[paddingIndex] = 0;
136 if (formatString[stringIndex] == 0) {
140 if (formatString[stringIndex] ==
'd' || formatString[stringIndex] ==
'i') {
141 int number = va_arg(list,
int);
144 if (padZero ==
true) {
147 for (
int i = padAmount - digits; i > 0; --i) {
157 bytesWritten += digits;
158 }
else if (formatString[stringIndex] ==
'x' || formatString[stringIndex] ==
'X') {
159 int number = va_arg(list,
int);
162 for (
int i = padAmount - digits; i > 0; --i) {
172 bytesWritten += digits;
173 }
else if (formatString[stringIndex] ==
'c') {
174 char character = (char) (va_arg(list,
int));
177 }
else if (formatString[stringIndex] ==
's') {
178 char *
string = (
char *) (va_arg(list,
int));
179 while (*
string != 0) {
183 }
else if (formatString[stringIndex] ==
'%') {
189 os->Put(formatString[stringIndex]);
200 #endif // LIBPROPELLER_PRINTSTREAM_H_ int Format(const char *formatString,...)
static char * Hex(int number, const int num_digits, char result_string[]=NULL)
static char * Dec(int number, char result_string[]=NULL)
static char * ZeroPad(char *resultString, int minDigits, bool countSign=false)
static int HexDigits(const int n)
int Format(const char *formatString, va_list list)
static int DecDigits(int number)