From a9bfe650038afea8b751175cac16f6027345e45f Mon Sep 17 00:00:00 2001 From: Nicholas Date: Sat, 20 Nov 2021 10:53:19 -0800 Subject: Chore: reorganize libutf and libfmt into base I found the split to be arbitrary. Better to include the functionality in the standard library. I also split the headers to allow for more granular inclusion (but the library is still monolithic). The only ugliness is the circular dependency introduced with libutf's generated functions. We put explicit prereqs with the necessary object files instead. --- include/libfmt.h | 73 -------------------------------------------------------- 1 file changed, 73 deletions(-) delete mode 100644 include/libfmt.h (limited to 'include/libfmt.h') diff --git a/include/libfmt.h b/include/libfmt.h deleted file mode 100644 index 4c187fd..0000000 --- a/include/libfmt.h +++ /dev/null @@ -1,73 +0,0 @@ -#pragma once - -typedef struct fmt·State fmt·State; - -struct fmt·State -{ - struct{ - char *beg; - char *cur; - char *end; - } buffer; - int n; - - va_list args; - rune verb; - ulong flag; - int width; - int prec; - char *thousands, *groups, *decimal; - - void *file; - int (*flush)(fmt·State *); - struct { - void *heap; - mem·Reallocator mem; - }; -}; - -#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, ...); -void fmt·panic(char *fmt, ...); - -int fmt·sprint(char *buf, char *fmt, ...); -int fmt·nsprint(int len, char *buf, char *fmt, ...); -char *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·vnsprint(int len, char *buf, char *fmt, va_list args); -char *fmt·vesprint(char *buf, char *end, char *fmt, va_list args); - -/* low-level interface: used for custom printing verbs */ -int fmt·open(int fd, int len, char *buf, fmt·State *); // creates a buffer on a file -int fmt·make(mem·Reallocator mem, void *heap, fmt·State *); // creates an in-memory buffer -void fmt·free(fmt·State *); // releases an in-memory buffer - -int fmt·do(fmt·State *, char *fmt); -int fmt·write(fmt·State *, char *fmt, ...); -int fmt·vwrite(fmt·State *, char *fmt, va_list args); -int fmt·install(int c, int (*format)(fmt·State *)); -- cgit v1.2.1