summaryrefslogtreecommitdiff
path: root/source/kit/input_buffer.h
diff options
context:
space:
mode:
Diffstat (limited to 'source/kit/input_buffer.h')
-rw-r--r--source/kit/input_buffer.h61
1 files changed, 32 insertions, 29 deletions
diff --git a/source/kit/input_buffer.h b/source/kit/input_buffer.h
index a40ec99..0114e3c 100644
--- a/source/kit/input_buffer.h
+++ b/source/kit/input_buffer.h
@@ -3,49 +3,52 @@
#include "string_builder.h"
#include "input_stream.h"
-#include "status.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct {
- kit_status_t status;
- i64 offset;
- void *internal;
+ kit_is_handle_t upstream;
kit_str_builder_t data;
-} kit_ib_t;
+} kit_input_buffer_t;
-typedef i8 (*kit_ib_read_condition_fn)(kit_str_t data, void *context);
+typedef struct {
+ s32 status;
+ i64 offset;
+ i64 size;
+ kit_input_buffer_t *buffer;
+} kit_ib_token_t;
+
+typedef b8 (*kit_ib_read_condition_fn)(kit_str_t data, void *context);
-kit_ib_t kit_ib_wrap(kit_is_handle_t upstream,
- kit_allocator_t *alloc);
+kit_input_buffer_t kit_ib_wrap(kit_is_handle_t upstream,
+ kit_allocator_t *alloc);
-kit_ib_t kit_ib_copy(kit_ib_t buf);
+void kit_ib_destroy(kit_input_buffer_t *buf);
-kit_ib_t kit_ib_read(kit_ib_t buf, i64 size);
+kit_ib_token_t kit_ib_token(kit_input_buffer_t *buf);
-kit_ib_t kit_ib_any(kit_ib_t buf, kit_str_t data);
+kit_str_t kit_ib_str(kit_ib_token_t tok);
-kit_ib_t kit_ib_none(kit_ib_t buf, kit_str_t data);
+kit_ib_token_t kit_ib_read(kit_ib_token_t tok, i64 size);
-kit_ib_t kit_ib_exact(kit_ib_t buf, kit_str_t data);
+kit_ib_token_t kit_ib_any(kit_ib_token_t tok, kit_str_t data);
-kit_ib_t kit_ib_until(kit_ib_t buf, kit_str_t data);
+kit_ib_token_t kit_ib_none(kit_ib_token_t tok, kit_str_t data);
-kit_ib_t kit_ib_while(kit_ib_t buf,
- kit_ib_read_condition_fn condition,
- void *context);
+kit_ib_token_t kit_ib_exact(kit_ib_token_t tok, kit_str_t data);
-void kit_ib_destroy(kit_ib_t buf);
+kit_ib_token_t kit_ib_until(kit_ib_token_t tok, kit_str_t data);
-#define KIT_IB_WRAP(upstream) kit_ib_wrap(upstream, NULL)
+kit_ib_token_t kit_ib_while(kit_ib_token_t buf,
+ kit_ib_read_condition_fn condition,
+ void *context);
-#define KIT_IB_SKIP(buf_, proc_, ...) \
- do { \
- kit_ib_t temp_buf_ = (buf_); \
- (buf_) = proc_((buf_), __VA_ARGS__); \
- kit_ib_destroy((temp_buf_)); \
+#define KIT_IB_SKIP(buf_, proc_, ...) \
+ do { \
+ kit_ib_token_t temp_buf_ = (buf_); \
+ (buf_) = proc_((buf_), __VA_ARGS__); \
} while (0)
#ifdef __cplusplus
@@ -53,19 +56,19 @@ void kit_ib_destroy(kit_ib_t buf);
#endif
#ifndef KIT_DISABLE_SHORT_NAMES
-# define ib_t kit_ib_t
+# define input_buffer_t kit_input_buffer_t
+# define ib_token_t kit_ib_token_t
# define ib_read_condition_fn kit_ib_read_condition_fn
# define ib_wrap kit_ib_wrap
-# define ib_copy kit_ib_copy
+# define ib_destroy kit_ib_destroy
+# define ib_token kit_ib_token
+# define ib_str kit_ib_str
# define ib_read kit_ib_read
# define ib_any kit_ib_any
# define ib_none kit_ib_none
# define ib_exact kit_ib_exact
# define ib_until kit_ib_until
# define ib_while kit_ib_while
-# define ib_destroy kit_ib_destroy
-
-# define IB_WRAP KIT_IB_WRAP
# define IB_SKIP KIT_IB_SKIP
#endif