Declarations for core functions supporting printf(3c) and related capabilities.
More...
#include <stdarg.h>Go to the source code of this file.
Typedefs | |
| typedef int(* | embtextf_putchar_fn )(int) |
Functions | |
| int | embtextf_vuprintf (embtextf_putchar_fn write_char, const char *format, va_list args) |
| int | embtextf_uprintf (embtextf_putchar_fn emit_char, const char *fmt,...) |
Declarations for core functions supporting printf(3c) and related capabilities.
This header declares configuration options and supporting material for a printf(3c) variant that emits formatted data through a per-character callback, such as putchar(3). It can be used as the basis for routines that produce formatted output on LCDs, into character buffers, or over other communications links that can provide character-oriented interface.
The formatting capabilities of embtextf_vuprintf() are intended to be compatible with the standard C library format string interpretation, with only a few restrictions, including:
Within those limitations, all standard format flags are supported:
| Flag character | Conditional on | Comments |
|---|---|---|
# | EMBTEXTF_ENABLE_VUPRINTF_ALTERNATE_FORM | Emit prefix for octal and hex values |
0 | Zero pad output | |
- | Left justify | |
| (space) | Leave blank before positive number | |
+ | Always emit sign before converted value |
Field width and (optionally) precision are supported for integer and string conversions:
| Example | Conditional on | Comments |
|---|---|---|
%4d | width, pad output to 4 characters | |
%*d | width, pad output to width passed as argument | |
%.3d | EMBTEXTF_ENABLE_VUPRINTF_PRECISION | precision, minimum 3 number of digits in conversion |
%.*d | EMBTEXTF_ENABLE_VUPRINTF_PRECISION | precision, minimum number of digits in conversion passed as argument |
Some length modifiers are supported for integer conversion:
| Example | Conditional on | Comments |
|---|---|---|
%d | expect input type int | |
%ld | EMBTEXTF_ENABLE_VUPRINTF_LONG | expect input type long |
%lld | EMBTEXTF_ENABLE_VUPRINTF_LONGLONG | expect input type long long |
Many conversion specifiers, excluding floating point, are supported:
| Example | Conditional on | Comments |
|---|---|---|
d i | Signed decimal | |
o | EMBTEXTF_ENABLE_VUPRINTF_OCTAL | Octal |
u | Unsigned decimal | |
x X | Hexadecimal (lower or upper case alphabetics) | |
s | Null-terminated text input | |
c | Character value of int | |
p | EMBTEXTF_ENABLE_VUPRINTF_INTPTR | Pointer output |
When format specifiers are not recognized by the infrastructure the unrecognized characters are emitted as output.
| typedef int(* embtextf_putchar_fn)(int) |
Type of function required by embtextf_vuprintf() for emitting characters. putchar(3) is the template.
| int embtextf_uprintf | ( | embtextf_putchar_fn | emit_char, |
| const char * | fmt, | ||
| ... | |||
| ) |
Variadic print-via-callback function
This uses the standard va_arg facility to extract arguments and delegate the formatting to embtextf_vuprintf().
| emit_char | as with embtextf_vuprintf() |
| fmt | as with embtextf_vuprintf() |
| int embtextf_vuprintf | ( | embtextf_putchar_fn | write_char, |
| const char * | format, | ||
| va_list | args | ||
| ) |
Format text collected by a variadic function.
| write_char | the function used to emit formatted characters. The interface supports using putchar for this. |
| format | a standard C format string |
| args | aggregated arguments as collected using the stdarg.h macros. |
1.8.2