#ifndef BH_INTERNAL_BUFFER_H #define BH_INTERNAL_BUFFER_H #include "bh.h" #include struct bh_buffer_s { bh_io_t base; char *data; size_t capacity; size_t size; size_t at; int mode; }; int bh_buffer_init(bh_buffer_t *buffer); #define bh_buffer_destroy(buffer) \ bh_io_destroy((bh_io_t *)(buffer)) void bh_buffer_destroy_base(bh_buffer_t *buffer); int bh_buffer_open_base(bh_buffer_t *buffer, int mode); void bh_buffer_close_base(bh_buffer_t *buffer); int bh_buffer_is_open_base(bh_buffer_t *buffer); size_t bh_buffer_read_base(bh_buffer_t *buffer, char *data, size_t size); size_t bh_buffer_write_base(bh_buffer_t *buffer, const char *data, size_t size); void bh_buffer_flush_base(bh_buffer_t *buffer); int bh_buffer_seek_base(bh_buffer_t *buffer, bh_off_t pos, int dir); bh_off_t bh_buffer_size_base(bh_buffer_t *buffer); bh_off_t bh_buffer_tell_base(bh_buffer_t *buffer); bh_off_t bh_buffer_available_base(bh_buffer_t *buffer); void bh_buffer_clear_base(bh_buffer_t *buffer); #endif /* BH_INTERNAL_BUFFER_H */