diff options
author | Jean-Francois Mauguit <jfmauguit@mac.com> | 2024-09-24 09:03:25 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-09-24 09:03:25 -0400 |
commit | bab614c421ed7ae329d26bf028c4a3b1d2450f5a (patch) | |
tree | 12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/pfc/grow_buf.h | |
parent | 4bde6044fddf053f31795b9eaccdd2a5a527d21f (diff) | |
parent | 20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (diff) | |
download | winamp-bab614c421ed7ae329d26bf028c4a3b1d2450f5a.tar.gz |
Merge pull request #5 from WinampDesktop/community
Merge to main
Diffstat (limited to 'Src/pfc/grow_buf.h')
-rw-r--r-- | Src/pfc/grow_buf.h | 42 |
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 |