1 /** Simple printf implementation
2 Again a stub - will use the std one later...
13 STATIC void _printn(unsigned u, unsigned base, char issigned, void (*emitter)(char, void *), void *pData)
15 const char *_hex = "0123456789ABCDEF";
16 if (issigned && ((int)u < 0)) {
17 (*emitter)('-', pData);
18 u = (unsigned)-((int)u);
21 _printn(u/base, base, 0, emitter, pData);
22 (*emitter)(_hex[u%base], pData);
25 STATIC void _printf(const char *format, void (*emitter)(char, void *), void *pData, va_list va)
31 char c = (char)va_arg(va, int);
37 unsigned u = va_arg(va, unsigned);
38 _printn(u, 10, 0, emitter, pData);
43 unsigned u = va_arg(va, unsigned);
44 _printn(u, 10, 1, emitter, pData);
49 unsigned u = va_arg(va, unsigned);
50 _printn(u, 16, 0, emitter, pData);
55 char *s = va_arg(va, char *);
57 (*emitter)(*s, pData);
64 (*emitter)(*format, pData);
72 STATIC void _char_emitter(char c, void *pData)
74 /* PENDING: Make the compiler happy. */
80 int printf(const char *format, ...)
85 _printf(format, _char_emitter, NULL, va);
87 /* PENDING: What to return? */