summaryrefslogtreecommitdiff
path: root/src/piece-table.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/piece-table.h')
-rw-r--r--src/piece-table.h32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/piece-table.h b/src/piece-table.h
new file mode 100644
index 0000000..94ab072
--- /dev/null
+++ b/src/piece-table.h
@@ -0,0 +1,32 @@
+#ifndef PIECE_TABLE_H
+#define PIECE_TABLE_H
+
+#include <malloc.h>
+#include <stddef.h>
+#include "buffer.h"
+
+struct piece {
+ char *start;
+ size_t length;
+ struct piece *next;
+ struct piece *prev;
+};
+
+typedef struct piece piece;
+
+typedef struct {
+ fixed_buffer orig;
+ growable_buffer add;
+ piece *sentinel;
+ size_t length;
+
+ piece *cached;
+ size_t cached_offset;
+} piece_table;
+
+bool init_piece_table(piece_table *pt, char *orig);
+void free_piece_table(piece_table *pt);
+
+void free_piece_list(piece *pt);
+
+#endif // PIECE_TABLE_H