summaryrefslogtreecommitdiff
path: root/kit/input_stream.h
diff options
context:
space:
mode:
Diffstat (limited to 'kit/input_stream.h')
-rw-r--r--kit/input_stream.h41
1 files changed, 41 insertions, 0 deletions
diff --git a/kit/input_stream.h b/kit/input_stream.h
new file mode 100644
index 0000000..3442ee4
--- /dev/null
+++ b/kit/input_stream.h
@@ -0,0 +1,41 @@
+#ifndef KIT_INPUT_STREAM_H
+#define KIT_INPUT_STREAM_H
+
+#include "allocator.h"
+#include "string_ref.h"
+
+#include <stdio.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef i64 (*kit_is_read_fn)(void *state, kit_str_t destination);
+
+typedef struct {
+ void *state;
+ kit_is_read_fn read;
+} kit_is_handle_t;
+
+kit_is_handle_t kit_is_wrap_string(kit_str_t string,
+ kit_allocator_t *alloc);
+
+kit_is_handle_t kit_is_wrap_file(FILE *f, kit_allocator_t *alloc);
+
+void kit_is_destroy(kit_is_handle_t in);
+
+#define KIT_IS_READ(in, destination) \
+ (in).read((in).state, (destination))
+
+#ifdef __cplusplus
+}
+#endif
+
+#define is_read_fn kit_is_read_fn
+#define is_handle_t kit_is_handle_t
+#define is_wrap_string kit_is_wrap_string
+#define is_wrap_file kit_is_wrap_file
+#define is_destroy kit_is_destroy
+#define IS_READ KIT_IS_READ
+
+#endif