aboutsummaryrefslogtreecommitdiff
path: root/Src/pfc/grow_buf.h
diff options
context:
space:
mode:
authorJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
committerJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
commit20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch)
tree12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/pfc/grow_buf.h
parent537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff)
downloadwinamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz
Initial community commit
Diffstat (limited to 'Src/pfc/grow_buf.h')
-rw-r--r--Src/pfc/grow_buf.h42
1 files changed, 42 insertions, 0 deletions
diff --git a/Src/pfc/grow_buf.h b/Src/pfc/grow_buf.h
new file mode 100644
index 00000000..ab039ff8
--- /dev/null
+++ b/Src/pfc/grow_buf.h
@@ -0,0 +1,42 @@
+#ifndef _PFC_GROW_BUF_H_
+#define _PFC_GROW_BUF_H_
+
+class grow_buf
+{
+private:
+ void * ptr;
+ int size,used;
+ void makespace(int);
+public:
+ grow_buf(int init_size = 0)
+ {
+ if (init_size<8) init_size=8;
+ size = 0;
+ used = 0;
+ ptr = 0;
+ makespace(init_size);
+ }
+
+ ~grow_buf() {reset();}
+
+ inline const void * get_ptr_c() const {return ptr;}
+ inline void * get_ptr() {return ptr;}
+ inline int get_size() const {return used;}
+ inline void truncate(int z) {if (z<used) used=z;}
+
+ void * finish();
+ void reset();
+
+ bool write(const void * data, size_t bytes);
+ void write_ptr(const void * data, int bytes,int offset);
+
+ inline void write_byte(BYTE b) {write(&b,1);}
+ inline void write_word(WORD w) {write(&w,2);}
+ inline void write_dword(DWORD dw) {write(&dw,4);}
+ inline void write_byte_ptr(BYTE b,int ptr) {write_ptr(&b,1,ptr);}
+ inline void write_word_ptr(WORD w,int ptr) {write_ptr(&w,2,ptr);}
+ inline void write_dword_ptr(DWORD dw,int ptr) {write_ptr(&dw,4,ptr);}
+};
+
+
+#endif \ No newline at end of file