summaryrefslogtreecommitdiff
path: root/pit/include
diff options
context:
space:
mode:
Diffstat (limited to 'pit/include')
-rw-r--r--pit/include/lcq/pit/runtime/dump.h5
-rw-r--r--pit/include/lcq/pit/utils.h7
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, ...);