aboutsummaryrefslogtreecommitdiffstats
path: root/wiretap/buffer.h
diff options
context:
space:
mode:
Diffstat (limited to 'wiretap/buffer.h')
-rw-r--r--wiretap/buffer.h34
1 files changed, 34 insertions, 0 deletions
diff --git a/wiretap/buffer.h b/wiretap/buffer.h
new file mode 100644
index 0000000000..1354b910de
--- /dev/null
+++ b/wiretap/buffer.h
@@ -0,0 +1,34 @@
+/*
+ buffer.h
+ --------
+
+*/
+
+#define SOME_FUNCTIONS_ARE_DEFINES
+
+typedef struct Buffer {
+
+ char *data;
+ unsigned int allocated;
+ unsigned int start;
+ unsigned int first_free;
+
+} Buffer;
+
+void buffer_init(Buffer* buffer, unsigned int space);
+void buffer_free(Buffer* buffer);
+void buffer_assure_space(Buffer* buffer, unsigned int space);
+void buffer_append(Buffer* buffer, char *from, unsigned int bytes);
+void buffer_remove_start(Buffer* buffer, unsigned int bytes);
+
+#ifdef SOME_FUNCTIONS_ARE_DEFINES
+ #define buffer_increase_length(buffer,bytes) (buffer)->first_free += (bytes)
+ #define buffer_length(buffer) ((buffer)->first_free - (buffer)->start)
+ #define buffer_start_ptr(buffer) ((buffer)->data + (buffer)->start)
+ #define buffer_end_ptr(buffer) ((buffer)->data + (buffer)->first_free)
+#else
+ void buffer_increase_length(Buffer* buffer, unsigned int bytes);
+ unsigned int buffer_length(Buffer* buffer);
+ char* buffer_start_ptr(Buffer* buffer);
+ char* buffer_end_ptr(Buffer* buffer);
+#endif