diff options
Diffstat (limited to 'pit/include')
| -rw-r--r-- | pit/include/lcq/pit/runtime/dump.h | 5 | ||||
| -rw-r--r-- | pit/include/lcq/pit/utils.h | 7 |
2 files changed, 12 insertions, 0 deletions
diff --git a/pit/include/lcq/pit/runtime/dump.h b/pit/include/lcq/pit/runtime/dump.h index 600604e..40b2a70 100644 --- a/pit/include/lcq/pit/runtime/dump.h +++ b/pit/include/lcq/pit/runtime/dump.h @@ -22,4 +22,9 @@ i64 pit_dump(pit_runtime *rt, char *buf, i64 len, pit_value v, bool readable); i64 pit_dump_to_stdout(pit_runtime *rt, char *buf, i64 len, pit_value v, bool readable); void pit_dump_to_file(pit_runtime *rt, void *vf, pit_value v, bool readable); +i64 pit_dump_printf_callback(va_list ap, char *buf, size_t len, void *data); +i64 pit_vsnprintf(pit_runtime *rt, char *buf, i64 len, char *format, va_list ap); +i64 pit_snprintf(pit_runtime *rt, char *buf, i64 len, char *format, ...); +i64 pit_fprintf(pit_runtime *rt, void *vf, char *format, ...); + #endif diff --git a/pit/include/lcq/pit/utils.h b/pit/include/lcq/pit/utils.h index 929472a..d45758f 100644 --- a/pit/include/lcq/pit/utils.h +++ b/pit/include/lcq/pit/utils.h @@ -44,6 +44,13 @@ static inline u8 *pit_libc_string_memcpy(u8 *dest, u8 *src, size_t n) { for (; i < n; ++i) dest[i] = src[i]; return dest; } + +/* printf */ +typedef struct { + char specifier; + i64 (*callback)(va_list ap, char *buf, size_t len, void *data); +} pit_printf_handler; +int pit_vsnprintf_helper(char *buf, size_t len, char *format, va_list ap, pit_printf_handler *handlers, i64 handlers_len, void *data); int pit_libc_string_vsnprintf(char *str, size_t size, char *format, va_list ap); int pit_libc_string_snprintf(char *buf, size_t len, char *format, ...); |
