1 /** Simple printf implementation
2 Again a stub - will use the std one later...
11 static void _printn(unsigned u, unsigned base, char issigned, void (*emitter)(), void *pData)
13 const char *_hex = "0123456789ABCDEF";
14 if (issigned && ((int)u < 0)) {
15 (*emitter)('-', pData);
16 u = (unsigned)-((int)u);
19 _printn(u/base, base, 0, emitter, pData);
20 (*emitter)(_hex[u%base], pData);
23 static void _printf(const char *format, void (*emitter)(), void *pData, va_list va)
29 char c = va_arg(va, char);
35 unsigned u = va_arg(va, unsigned);
36 _printn(u, 10, 0, emitter, pData);
41 unsigned u = va_arg(va, unsigned);
42 _printn(u, 10, 1, emitter, pData);
47 unsigned u = va_arg(va, unsigned);
48 _printn(u, 16, 0, emitter, pData);
53 char *s = va_arg(va, char *);
55 (*emitter)(*s, pData);
62 (*emitter)(*format, pData);
70 static void _char_emitter(char c, void *pData)
72 /* PENDING: Make the compiler happy. */
78 int printf(const char *format, ...)
83 _printf(format, _char_emitter, NULL, va);
84 _printf(format, _char_emitter, NULL, va);
86 /* PENDING: What to return? */