#pragma once typedef struct fmt·State fmt·State; struct fmt·State { struct{ char *beg; char *cur; char *end; } buffer; int (*flush)(fmt·State *); int n; va_list args; rune verb; ulong flag; int width; int prec; }; #define iota(x) (1 << (x)) enum { fmt·Width = iota(0), fmt·Left = iota(1), fmt·Prec = iota(2), fmt·Sharp = iota(3), fmt·Space = iota(4), fmt·Sign = iota(5), fmt·Apost = iota(6), fmt·Zero = iota(7), fmt·Unsigned = iota(8), fmt·Short = iota(9), fmt·Long = iota(10), fmt·Vlong = iota(11), fmt·Comma = iota(12), fmt·Byte = iota(13), fmt·Ldouble = iota(14), fmt·Flag = iota(15), }; #undef iota /* normal printing interface */ int fmt·print(char *fmt, ...); int fmt·fprint(int fd, char *fmt, ...); int fmt·sprint(char *buf, char *fmt, ...); int fmt·nsprint(int len, char *buf, char *fmt, ...); int fmt·esprint(char *buf, char *end, char *fmt, ...); int fmt·vprint(char *fmt, va_list args); int fmt·vfprint(int fd, char *fmt, va_list args); int fmt·vwrite(char *buf, char *fmt, va_list args); int fmt·vnwrite(int len, char *buf, char *fmt, va_list args); int fmt·vewrite(char *buf, char *end, char *fmt, va_list args); /* low-level interface: custom printing verbs */ int fmt·do(fmt·State *, char *fmt); int fmt·put(fmt·State *, char *fmt, ...); int fmt·vput(fmt·State *, char *fmt, va_list args); int fmt·install(fmt·State *, int (*put)(fmt·State*)); int fmt·flush(fmt·State *);